X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelAPI%2FModelAPI_Document.h;h=9070718b48974151d3b0a4ea2332f65438340f71;hb=7f5d3b6de3d879b6a11389c06a6f183b2fa5a1b2;hp=50209d63ebfcbfecb31510da7dcc579b4ad11a11;hpb=10e3997cef183d4737df5ee0ac2118cbd960b1c0;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_Document.h b/src/ModelAPI/ModelAPI_Document.h index 50209d63e..9070718b4 100644 --- a/src/ModelAPI/ModelAPI_Document.h +++ b/src/ModelAPI/ModelAPI_Document.h @@ -7,11 +7,10 @@ #include #include -#include +#include #include class ModelAPI_Feature; -class ModelAPI_Iterator; /// Common groups identifiers /// Group of parameters @@ -20,14 +19,14 @@ static const std::string PARAMETERS_GROUP = "Parameters"; static const std::string CONSTRUCTIONS_GROUP = "Construction"; /// Group of parts static const std::string PARTS_GROUP = "Parts"; +/// All created fetaures of the document (a history) +static const std::string FEATURES_GROUP = "Features"; /**\class Model_Document * \ingroup DataModel - * \brief Document for internal data structure of any object storage. Corresponds to the SALOME study. - * Document contains all data of te SALOME Study specific to this module - * that must be written into the HDF file. + * \brief Document for internal data structure of any object storage. + * Document contains all data that must be stored/retrived in the file. * Also it provides acces to this data: open/save, transactions management etc. - * to provide access to all stored data. */ class ModelAPI_Document { @@ -68,27 +67,30 @@ public: //! Adds to the document the new feature of the given feature id //! \param creates feature and puts it in the document - MODELAPI_EXPORT virtual std::shared_ptr addFeature(std::string theID) = 0; + MODELAPI_EXPORT virtual boost::shared_ptr addFeature(std::string theID) = 0; - ///! Adds a new sub-document by the identifier, or returns existing one if it is already exist - MODELAPI_EXPORT virtual std::shared_ptr subDocument(std::string theDocID) = 0; + //! Removes the feature from the document + MODELAPI_EXPORT virtual void removeFeature(boost::shared_ptr theFeature) = 0; - ///! Creates an iterator of the features by the specific groups - MODELAPI_EXPORT virtual std::shared_ptr featuresIterator( - const std::string theGroup) = 0; + ///! Adds a new sub-document by the identifier, or returns existing one if it is already exist + MODELAPI_EXPORT virtual boost::shared_ptr + subDocument(std::string theDocID) = 0; ///! Returns the id of hte document MODELAPI_EXPORT virtual const std::string& id() const = 0; //! Returns the feature in the group by the index (started from zero) - MODELAPI_EXPORT virtual std::shared_ptr - feature(const std::string& theGroupID, const int theIndex) = 0; + //! \param theGroupID group that contains a feature + //! \param theIndex zero-based index of feature in the group + //! \param isOperation if it is true, returns feature (not Object) + MODELAPI_EXPORT virtual boost::shared_ptr + feature(const std::string& theGroupID, const int theIndex, const bool isOperation = false) = 0; - //! Returns the index of feature in the group (zero based) - MODELAPI_EXPORT virtual int featureIndex(std::shared_ptr theFeature) = 0; + //! Returns the number of features in the group + MODELAPI_EXPORT virtual int size(const std::string& theGroupID) = 0; - ///! Returns the vector of groups already added to the document - MODELAPI_EXPORT virtual const std::vector& getGroups() const = 0; + /// To virtually destroy the fields of successors + virtual ~ModelAPI_Document() {} protected: /// Only for SWIG wrapping it is here @@ -96,4 +98,9 @@ protected: {} }; + +//! Pointer on document object +typedef boost::shared_ptr DocumentPtr; + + #endif