1 // File: ModelAPI_Feature.hxx
2 // Created: 21 Mar 2014
3 // Author: Mikhail PONIKAROV
5 #ifndef ModelAPI_Feature_HeaderFile
6 #define ModelAPI_Feature_HeaderFile
9 #include "ModelAPI_PluginManager.h"
15 class ModelAPI_Document;
17 /**\class ModelAPI_Feature
19 * \brief Functionality of the model object: to update result,
20 * to initialize attributes, etc.
22 class ModelAPI_Feature
24 std::shared_ptr<ModelAPI_Data> myData; ///< manager of the data model of a feature
27 /// Returns the kind of a feature (like "Point")
28 MODELAPI_EXPORT virtual const std::string& getKind() = 0;
30 /// Returns to which group in the document must be added feature
31 MODELAPI_EXPORT virtual const std::string& getGroup() = 0;
33 /// Request for initialization of data model of the feature: adding all attributes
34 MODELAPI_EXPORT virtual void initAttributes() = 0;
36 /// Computes or recomputes the result
37 MODELAPI_EXPORT virtual void execute() = 0;
39 /// Returns the data manager of this feature
40 MODELAPI_EXPORT virtual std::shared_ptr<ModelAPI_Data> data() {return myData;}
42 /// Must return document where the new feature must be added to
43 /// By default it is current document
44 MODELAPI_EXPORT virtual std::shared_ptr<ModelAPI_Document> documentToAdd()
45 {return ModelAPI_PluginManager::get()->currentDocument();}
47 /// To virtually destroy the fields of successors
48 virtual ~ModelAPI_Feature() {}
51 /// Use plugin manager for features creation: this method is
52 /// defined here only for SWIG-wrapping
56 /// Sets the data manager of an object (document does)
57 MODELAPI_EXPORT void setData(std::shared_ptr<ModelAPI_Data> theData) {myData = theData;}
58 friend class Model_Document;