]> SALOME platform Git repositories - modules/shaper.git/blob - src/ModelHighAPI/ModelHighAPI_RefAttr.h
Salome HOME
a2667cab244e7afea283c19f6d874b20e8f76082
[modules/shaper.git] / src / ModelHighAPI / ModelHighAPI_RefAttr.h
1 // Name   : ModelHighAPI_RefAttr.h
2 // Purpose: 
3 //
4 // History:
5 // 08/06/16 - Sergey POKHODENKO - Creation of the file
6
7 #ifndef SRC_MODELHIGHAPI_MODELHIGHAPI_REFATTR_H_
8 #define SRC_MODELHIGHAPI_MODELHIGHAPI_REFATTR_H_
9
10 //--------------------------------------------------------------------------------------
11 #include "ModelHighAPI.h"
12
13 #include <memory>
14 #include <string>
15
16 #include <boost/variant.hpp>
17 //--------------------------------------------------------------------------------------
18 class ModelAPI_Attribute;
19 class ModelAPI_AttributeRefAttr;
20 class ModelAPI_AttributeRefAttrList;
21 class ModelAPI_Object;
22 class ModelHighAPI_Interface;
23 //--------------------------------------------------------------------------------------
24 /**\class ModelHighAPI_RefAttr
25  * \ingroup CPPHighAPI
26  * \brief Class for filling ModelAPI_AttributeRefAttr
27  */
28 class ModelHighAPI_RefAttr
29 {
30 public:
31   /// Default constructor
32   MODELHIGHAPI_EXPORT
33   ModelHighAPI_RefAttr();
34   /// Constructor for attribute
35   MODELHIGHAPI_EXPORT
36   ModelHighAPI_RefAttr(const std::shared_ptr<ModelAPI_Attribute> & theValue);
37   /// Constructor for object
38   MODELHIGHAPI_EXPORT
39   ModelHighAPI_RefAttr(const std::shared_ptr<ModelAPI_Object> & theValue);
40   /// Constructor for Interface (use result() for object)
41   MODELHIGHAPI_EXPORT
42   ModelHighAPI_RefAttr(const std::shared_ptr<ModelHighAPI_Interface> & theValue);
43   /// Destructor
44   MODELHIGHAPI_EXPORT
45   virtual ~ModelHighAPI_RefAttr();
46
47   /// Fill attribute values
48   MODELHIGHAPI_EXPORT
49   virtual void fillAttribute(const std::shared_ptr<ModelAPI_AttributeRefAttr> & theAttribute) const;
50
51   /// Append to list attribute
52   MODELHIGHAPI_EXPORT
53   virtual void appendToList(const std::shared_ptr<ModelAPI_AttributeRefAttrList> & theAttribute) const;
54
55 private:
56   boost::variant<
57     std::shared_ptr<ModelAPI_Attribute>,
58     std::shared_ptr<ModelAPI_Object>
59   > myValue;
60 };
61
62 //--------------------------------------------------------------------------------------
63 //--------------------------------------------------------------------------------------
64 #endif /* SRC_MODELHIGHAPI_MODELHIGHAPI_REFATTR_H_ */