#ifndef ModelAPI_Document_H_
#define ModelAPI_Document_H_
-#include <ModelAPI.h>
+#include "ModelAPI.h"
+#include "ModelAPI_Entity.h"
+
#include <string>
#include <memory>
#include <vector>
* Document contains all data that must be stored/retrived in the file.
* Also it provides acces to this data: open/save, transactions management etc.
*/
-class ModelAPI_Document
+class ModelAPI_Document: public ModelAPI_Entity
{
public:
//! Returns the kind of the document: "PartSet", "Part", or something else.
//! \param theFeature a feature to be removed
virtual void removeFeature(std::shared_ptr<ModelAPI_Feature> theFeature) = 0;
+ //! Moves the feature to make it after the given one in the history.
+ virtual void moveFeature(std::shared_ptr<ModelAPI_Feature> theMoved,
+ std::shared_ptr<ModelAPI_Feature> theAfterThis) = 0;
+
///! Adds a new sub-document by the identifier, or returns existing one if it is already exist
virtual std::shared_ptr<ModelAPI_Document> subDocument(std::string theDocID) = 0;
//! Creates a part results
virtual std::shared_ptr<ModelAPI_ResultPart> createPart(
const std::shared_ptr<ModelAPI_Data>& theFeatureData, const int theIndex = 0) = 0;
+ //! Copies a part result, keeping the reference to the origin
+ virtual std::shared_ptr<ModelAPI_ResultPart> copyPart(
+ const std::shared_ptr<ModelAPI_ResultPart>& theOrigin,
+ const std::shared_ptr<ModelAPI_Data>& theFeatureData, const int theIndex = 0) = 0;
//! Creates a group results
virtual std::shared_ptr<ModelAPI_ResultGroup> createGroup(
const std::shared_ptr<ModelAPI_Data>& theFeatureData, const int theIndex = 0) = 0;