Salome HOME
Extrusion fix
[modules/shaper.git] / src / ModelAPI / ModelAPI_Data.h
index dfc6ee32af3359791efbc29ccb5ca74c278bd27d..05dc2be644771e2b21e80311250421a2d14eb311 100644 (file)
@@ -7,6 +7,10 @@
 #ifndef ModelAPI_Data_H_
 #define ModelAPI_Data_H_
 
+#ifdef _WINDOWS // to avoid too long decorated name warning 
+#pragma warning( disable : 4503 )
+#endif
+
 #include "ModelAPI.h"
 #include <string>
 #include <list>
@@ -20,6 +24,7 @@ class ModelAPI_AttributeDouble;
 class ModelAPI_AttributeReference;
 class ModelAPI_AttributeRefAttr;
 class ModelAPI_AttributeRefList;
+class ModelAPI_AttributeRefAttrList;
 class ModelAPI_AttributeBoolean;
 class ModelAPI_AttributeString;
 class ModelAPI_Document;
@@ -73,6 +78,9 @@ class MODELAPI_EXPORT ModelAPI_Data
   virtual std::shared_ptr<ModelAPI_AttributeRefAttr> refattr(const std::string& theID) = 0;
   /// Returns the attribute that contains list of references to features
   virtual std::shared_ptr<ModelAPI_AttributeRefList> reflist(const std::string& theID) = 0;
+  /// Returns the attribute that contains list of references to features or reference to
+  /// an attribute of a feature
+  virtual std::shared_ptr<ModelAPI_AttributeRefAttrList> refattrlist(const std::string& theID) = 0;
   /// Returns the attribute that contains boolean value
   virtual std::shared_ptr<ModelAPI_AttributeBoolean> boolean(const std::string& theID) = 0;
   /// Returns the attribute that contains boolean value
@@ -141,7 +149,7 @@ class MODELAPI_EXPORT ModelAPI_Data
   virtual void referencesToObjects(
     std::list<std::pair<std::string, std::list<std::shared_ptr<ModelAPI_Object> > > >& theRefs) =0;
 
-  /// Copies all atributes content into theTarget data
+  /// Copies all attributes content into theTarget data
   virtual void copyTo(std::shared_ptr<ModelAPI_Data> theTarget) = 0;
 
   /// Returns the invalid data pointer (to avoid working with NULL shared ptrs in swig)
@@ -154,9 +162,14 @@ class MODELAPI_EXPORT ModelAPI_Data
   /// This method is called by the updater.
   virtual void setUpdateID(const int theID) = 0;
 
-  /// Returns true if the given object is owner of this data (needed for correct erase of object
-  /// with duplicated data)
-  virtual bool isOwner(ModelAPI_Object* theOwner) = 0;
+  /// Returns the owner of htis data
+  virtual std::shared_ptr<ModelAPI_Object> owner() = 0;
+
+  /// Returns true if the object is deleted, but some data is still keept in memory
+  virtual bool isDeleted() = 0;
+
+  /// Sets true if the object is deleted, but some data is still keept in memory
+  virtual void setIsDeleted(const bool theFlag) = 0;
 
  protected:
   /// Objects are created for features automatically