X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelAPI%2FModelAPI_Feature.h;h=6d7955f4b1dee713b9149faa581656770c1f5155;hb=7f5d3b6de3d879b6a11389c06a6f183b2fa5a1b2;hp=fd19221b0b246c4223ec5f9eec5bac5eadb27d8c;hpb=cf6ecce56482c1e15c6381d76b553004f87d3dd3;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_Feature.h b/src/ModelAPI/ModelAPI_Feature.h index fd19221b0..6d7955f4b 100644 --- a/src/ModelAPI/ModelAPI_Feature.h +++ b/src/ModelAPI/ModelAPI_Feature.h @@ -9,9 +9,9 @@ #include "ModelAPI_PluginManager.h" #include -#include +#include -class ModelAPI_Object; +class ModelAPI_Data; class ModelAPI_Document; /**\class ModelAPI_Feature @@ -19,31 +19,50 @@ class ModelAPI_Document; * \brief Functionality of the model object: to update result, * to initialize attributes, etc. */ -class MODELAPI_EXPORT ModelAPI_Feature +class ModelAPI_Feature { - std::shared_ptr myData; ///< manager of the data model of a feature + boost::shared_ptr myData; ///< manager of the data model of a feature + boost::shared_ptr myDoc; ///< document this feature belongs to public: /// Returns the kind of a feature (like "Point") - virtual const std::string& getKind() = 0; + MODELAPI_EXPORT virtual const std::string& getKind() = 0; /// Returns to which group in the document must be added feature - virtual const std::string& getGroup() = 0; + MODELAPI_EXPORT virtual const std::string& getGroup() = 0; /// Request for initialization of data model of the feature: adding all attributes - virtual void initAttributes() = 0; + MODELAPI_EXPORT virtual void initAttributes() = 0; /// Computes or recomputes the result - virtual void execute() = 0; + MODELAPI_EXPORT virtual void execute() = 0; + + /// Returns true if this feature must be displayed in the history (top level of Part tree) + MODELAPI_EXPORT virtual bool isInHistory() {return true;} + + /// Returns true if this feature must not be created: this is just an action + /// that is not stored in the features history (like delete part). + MODELAPI_EXPORT virtual bool isAction() {return false;} /// Returns the data manager of this feature - virtual std::shared_ptr data() {return myData;} + MODELAPI_EXPORT virtual boost::shared_ptr data() {return myData;} /// Must return document where the new feature must be added to /// By default it is current document - virtual std::shared_ptr documentToAdd() + MODELAPI_EXPORT virtual boost::shared_ptr documentToAdd() {return ModelAPI_PluginManager::get()->currentDocument();} + /// Returns document this feature belongs to + MODELAPI_EXPORT virtual boost::shared_ptr document() + {return myDoc;} + + /// Returns true if feature refers to the same model data instance + MODELAPI_EXPORT virtual bool isSame(const boost::shared_ptr& theFeature) + {return theFeature.get() == this;} + + /// To virtually destroy the fields of successors + virtual ~ModelAPI_Feature() {} + protected: /// Use plugin manager for features creation: this method is /// defined here only for SWIG-wrapping @@ -51,8 +70,16 @@ protected: {} /// Sets the data manager of an object (document does) - void setData(std::shared_ptr theData) {myData = theData;} + MODELAPI_EXPORT virtual void setData(boost::shared_ptr theData) + {myData = theData;} + /// Sets the data manager of an object (document does) + MODELAPI_EXPORT void setDoc(boost::shared_ptr theDoc) {myDoc = theDoc;} + friend class Model_Document; }; +//! Pointer on feature object +typedef boost::shared_ptr FeaturePtr; + + #endif