Salome HOME
Compsolids: initial implementation of sub-results of results on the data model level.
[modules/shaper.git] / src / ModelAPI / ModelAPI_Document.h
index 6d778360fbde1d611fc4ffb12711237d8d3431d2..6274305cac47ec7f679f84a0670c20bda2decac3 100644 (file)
@@ -7,7 +7,9 @@
 #ifndef ModelAPI_Document_H_
 #define ModelAPI_Document_H_
 
-#include <ModelAPI.h>
+#include "ModelAPI.h"
+#include "ModelAPI_Entity.h"
+
 #include <string>
 #include <memory>
 #include <vector>
@@ -30,7 +32,7 @@ class ModelAPI_Data;
  * 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.
@@ -60,6 +62,10 @@ public:
   //! \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;
 
@@ -120,6 +126,10 @@ public:
   //! 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;