+ /// To use virtuality for destructors
+ MODELAPI_EXPORT virtual ~ModelAPI_Object();
+
+ /// Returns true if object must be displayed in the viewer: flag is stored in the
+ /// data model, so on undo/redo, open/save or recreation of object by history-playing it keeps
+ /// the original state in the current transaction.
+ MODELAPI_EXPORT virtual bool isDisplayed();
+
+ /// Sets the displayed/hidden state of the object. If it is changed, sends the "redisplay"
+ /// signal.
+ MODELAPI_EXPORT virtual void setDisplayed(const bool theDisplay);
+
+ protected:
+ /// This method is called just after creation of the object: it must initialize
+ /// all fields, normally initialized in the constructor
+ MODELAPI_EXPORT virtual void init() = 0;
+
+ /// Sets the data manager of an object (document does)
+ MODELAPI_EXPORT virtual void setData(std::shared_ptr<ModelAPI_Data> theData);
+
+ /// Sets the data manager of an object (document does)
+ MODELAPI_EXPORT virtual void setDoc(std::shared_ptr<ModelAPI_Document> theDoc);
+
+ /// removes all fields from this feature
+ MODELAPI_EXPORT virtual void erase();
+
+ friend class Model_Objects;
+ friend class Model_Document;
+
+};