- //! Adds to the document the new object of the given group id
- //! \param theFeature a feature object that will be connected to the document in this method
- //! \param theGroupID identifier of the groups of objects (must be greater than zero)
- MODELAPI_EXPORT virtual void AddObject(std::shared_ptr<ModelAPI_Feature> theFeature,
- const int theGroupID) = 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)
+ //! \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<ModelAPI_Feature>
+ feature(const std::string& theGroupID, const int theIndex, const bool isOperation = false) = 0;
+
+ //! Returns the number of features in the group
+ MODELAPI_EXPORT virtual int size(const std::string& theGroupID) = 0;
+
+ /// To virtually destroy the fields of successors
+ virtual ~ModelAPI_Document() {}