Salome HOME
Merge branch 'master' of newgeom:newgeom.git
[modules/shaper.git] / src / ModelAPI / ModelAPI_AttributeRefAttr.h
index d9c5f3a6041044750589e7112dd4c6ce8b7c8484..dc862f3a63d37bda21f87d2fb6fcd6f1ecedfd24 100644 (file)
@@ -2,39 +2,58 @@
 // Created:     8 May 2014
 // Author:      Mikhail PONIKAROV
 
-#ifndef ModelAPI_AttributeRefAttr_HeaderFile
-#define ModelAPI_AttributeRefAttr_HeaderFile
+#ifndef ModelAPI_AttributeRefAttr_H_
+#define ModelAPI_AttributeRefAttr_H_
 
 #include "ModelAPI_Attribute.h"
+#include "ModelAPI_Feature.h"
 
 /**\class ModelAPI_AttributeRefAttr
  * \ingroup DataModel
- * \brief Attribute that contains reference to an attribute of a feature 
- * (located in the same document).
+ * \brief Attribute that contains reference to an attribute of a feature or reference to 
+ * a feature (switchable)
  */
 
 class ModelAPI_AttributeRefAttr : public ModelAPI_Attribute
 {
-public:
-  /// Defines the attribute referenced from this attribute
-  MODELAPI_EXPORT virtual void setValue(boost::shared_ptr<ModelAPI_Attribute> theAttr) = 0;
+ public:
+  /// Returns true if this attribute references to a object (not to the attribute)
+  MODELAPI_EXPORT virtual bool isObject() = 0;
+
+  /// Defines the reference to the attribute
+  MODELAPI_EXPORT virtual void setAttr(boost::shared_ptr<ModelAPI_Attribute> theAttr) = 0;
 
   /// Returns attribute referenced from this attribute
-  MODELAPI_EXPORT virtual boost::shared_ptr<ModelAPI_Attribute> value() = 0;
+  MODELAPI_EXPORT virtual boost::shared_ptr<ModelAPI_Attribute> attr() = 0;
+
+  /// Defines the reference to the object
+  MODELAPI_EXPORT virtual void setObject(ObjectPtr theFeature) = 0;
+
+  /// Returns object referenced from this attribute
+  MODELAPI_EXPORT virtual ObjectPtr object() = 0;
 
   /// Returns the type of this class of attributes
-  MODELAPI_EXPORT static std::string type() {return "RefAttr";}
+  MODELAPI_EXPORT static std::string type()
+  {
+    return "RefAttr";
+  }
 
   /// Returns the type of this class of attributes, not static method
-  MODELAPI_EXPORT virtual std::string attributeType() {return type();}
+  MODELAPI_EXPORT virtual std::string attributeType()
+  {
+    return type();
+  }
 
   /// To virtually destroy the fields of successors
-  MODELAPI_EXPORT virtual ~ModelAPI_AttributeRefAttr() {}
+  MODELAPI_EXPORT virtual ~ModelAPI_AttributeRefAttr()
+  {
+  }
 
-protected:
+ protected:
   /// Objects are created for features automatically
   MODELAPI_EXPORT ModelAPI_AttributeRefAttr()
-  {}
+  {
+  }
 };
 
 #endif