#define ModelAPI_Object_H_
#include "ModelAPI.h"
+#include "ModelAPI_Data.h"
#include <boost/shared_ptr.hpp>
class ModelAPI_Object
{
boost::shared_ptr<ModelAPI_Data> myData; ///< manager of the data model of a feature
- boost::shared_ptr<ModelAPI_Document> myDoc; ///< document this feature belongs to
+ boost::shared_ptr<ModelAPI_Document> myDoc; ///< document this object belongs to
public:
/// By default object is displayed in the object browser.
virtual bool isInHistory()
}
/// Returns the data manager of this object: attributes
- virtual boost::shared_ptr<ModelAPI_Data> data()
+ virtual boost::shared_ptr<ModelAPI_Data> data() const
{
return myData;
}
}
/// Returns document this feature belongs to
- virtual boost::shared_ptr<ModelAPI_Document> document()
+ virtual boost::shared_ptr<ModelAPI_Document> document() const
{
return myDoc;
}
/// Returns the group identifier of this object
virtual std::string groupName() = 0;
+ /// Called on change of any argument-attribute of this object
+ MODELAPI_EXPORT virtual void attributeChanged()
+ {}
+
+ /// To use virtuality for destructors
+ virtual ~ModelAPI_Object() {}
+
protected:
/// Sets the data manager of an object (document does)
virtual void setData(boost::shared_ptr<ModelAPI_Data> theData)
myDoc = theDoc;
}
+ /// removes all fields from this feature
+ MODELAPI_EXPORT virtual void erase() {
+ if (myData) myData->erase();
+ setData(DataPtr());
+ }
+
friend class Model_Document;
+
};
typedef boost::shared_ptr<ModelAPI_Object> ObjectPtr;