1 // File: ModelAPI_AttributeRefAttr.h
3 // Author: Mikhail PONIKAROV
5 #ifndef ModelAPI_AttributeRefAttr_HeaderFile
6 #define ModelAPI_AttributeRefAttr_HeaderFile
8 #include "ModelAPI_Attribute.h"
10 /**\class ModelAPI_AttributeRefAttr
12 * \brief Attribute that contains reference to an attribute of a feature or reference to
13 * a feature (switchable)
16 class ModelAPI_AttributeRefAttr : public ModelAPI_Attribute
19 /// Returns true if this attribute references to a feature (not to the attribute)
20 MODELAPI_EXPORT virtual bool isFeature() = 0;
22 /// Defines the reference to the attribute
23 MODELAPI_EXPORT virtual void setAttr(boost::shared_ptr<ModelAPI_Attribute> theAttr) = 0;
25 /// Returns attribute referenced from this attribute
26 MODELAPI_EXPORT virtual boost::shared_ptr<ModelAPI_Attribute> attr() = 0;
28 /// Defines the reference to the feature
29 MODELAPI_EXPORT virtual void setFeature(boost::shared_ptr<ModelAPI_Feature> theFeature) = 0;
31 /// Returns feature referenced from this attribute
32 MODELAPI_EXPORT virtual boost::shared_ptr<ModelAPI_Feature> feature() = 0;
34 /// Returns the type of this class of attributes
35 MODELAPI_EXPORT static std::string type() {return "RefAttr";}
37 /// Returns the type of this class of attributes, not static method
38 MODELAPI_EXPORT virtual std::string attributeType() {return type();}
40 /// To virtually destroy the fields of successors
41 MODELAPI_EXPORT virtual ~ModelAPI_AttributeRefAttr() {}
44 /// Objects are created for features automatically
45 MODELAPI_EXPORT ModelAPI_AttributeRefAttr()