Salome HOME
registerNotObligatory is not necessary if this property is set in XML.
[modules/shaper.git] / src / ModelAPI / ModelAPI_Expression.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        ModelAPI_Expression.h
4 // Created:     5 Aug 2015
5 // Author:      Sergey POKHODENKO
6
7 #ifndef ModelAPI_Expression_H_
8 #define ModelAPI_Expression_H_
9
10 #include "ModelAPI.h"
11
12 #include <memory>
13 #include <set>
14 #include <string>
15
16 /**\class ModelAPI_Expression
17  * \ingroup DataModel
18  * \brief Expression for calculated values.
19  */
20 class ModelAPI_Expression
21 {
22  public:
23   /// To virtually destroy the fields of successors
24   MODELAPI_EXPORT virtual ~ModelAPI_Expression();
25
26   /// Returns true if attribute was initialized by some value
27   MODELAPI_EXPORT virtual bool isInitialized();
28
29   /// Makes attribute initialized
30   MODELAPI_EXPORT virtual void setInitialized();
31
32   /// Sets the text of this Expression
33   MODELAPI_EXPORT virtual void setText(const std::string& theText) = 0;
34
35   /// Returns the text of this Expression
36   MODELAPI_EXPORT virtual std::string text() const = 0;
37
38   /// Allows to set expression (text) as invalid (by the parameters listener)
39   MODELAPI_EXPORT virtual void setInvalid(const bool theFlag) = 0;
40
41   /// Returns true if text is invalid
42   MODELAPI_EXPORT virtual bool isInvalid() = 0;
43
44   /// Allows to set expression (text) error (by the parameters listener)
45   MODELAPI_EXPORT virtual void setError(const std::string& theError) = 0;
46
47   /// Returns an expression error
48   MODELAPI_EXPORT virtual std::string error() = 0;
49
50   /// Defines the used parameters (by the parameters listener)
51   MODELAPI_EXPORT virtual void setUsedParameters(const std::set<std::string>& theUsedParameters) = 0;
52
53   /// Returns the used parameters
54   MODELAPI_EXPORT virtual std::set<std::string> usedParameters() const = 0;
55
56  protected:
57   /// Objects are created for features automatically
58   MODELAPI_EXPORT ModelAPI_Expression();
59
60   bool myIsInitialized; ///< is some value assigned to this attribute
61
62   friend class Model_Data;
63 };
64
65
66 /**\class ModelAPI_ExpressionDouble
67  * \ingroup DataModel
68  * \brief Expression for calculated double values.
69  */
70 class ModelAPI_ExpressionDouble : public virtual ModelAPI_Expression
71 {
72  public:
73   /// Defines the double value
74   MODELAPI_EXPORT virtual void setValue(const double theValue) = 0;
75
76   /// Returns the double value
77   MODELAPI_EXPORT virtual double value() = 0;
78
79  protected:
80   /// Objects are created for features automatically
81   MODELAPI_EXPORT ModelAPI_ExpressionDouble();
82
83   friend class Model_Data;
84 };
85
86
87 /**\class ModelAPI_ExpressionInteger
88  * \ingroup DataModel
89  * \brief Expression for calculated integer values.
90  */
91 class ModelAPI_ExpressionInteger : public virtual ModelAPI_Expression
92 {
93  public:
94   /// Defines the integer value
95   MODELAPI_EXPORT virtual void setValue(const int theValue) = 0;
96
97   /// Returns the integer value
98   MODELAPI_EXPORT virtual int value() = 0;
99
100  protected:
101   /// Objects are created for features automatically
102   MODELAPI_EXPORT ModelAPI_ExpressionInteger();
103
104   friend class Model_Data;
105 };
106
107
108 //! Smart pointers for objects
109 typedef std::shared_ptr<ModelAPI_Expression> ExpressionPtr;
110 typedef std::shared_ptr<ModelAPI_ExpressionDouble> ExpressionDoublePtr;
111 typedef std::shared_ptr<ModelAPI_ExpressionInteger> ExpressionIntegerPtr;
112
113 #endif