Salome HOME
Fix for the issue #1605 : optimization of undo/redo and abort processing
[modules/shaper.git] / src / Model / Model_Expression.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        Model_Expression.h
4 // Created:     5 Aug 2015
5 // Author:      Sergey POKHODENKO
6
7 #ifndef Model_Expression_H_
8 #define Model_Expression_H_
9
10 #include "Model.h"
11 #include "ModelAPI_Expression.h"
12
13 #include <TDataStd_Comment.hxx>
14 #include <TDataStd_ExtStringList.hxx>
15 #include <TDataStd_Integer.hxx>
16 #include <TDataStd_Name.hxx>
17 #include <TDataStd_Real.hxx>
18
19 #include <TDF_Label.hxx>
20
21 /**\class Model_Expression
22  * \ingroup DataModel
23  * \brief Implementation of ModelAPI_Expression.
24  */
25 class Model_Expression : public virtual ModelAPI_Expression
26 {
27  public:
28   /// Sets the text of this Expression
29   MODEL_EXPORT virtual void setText(const std::string& theText);
30
31   /// Returns the text of this Expression
32   MODEL_EXPORT virtual std::string text() const;
33
34   /// Allows to set expression (text) error (by the parameters listener)
35   MODEL_EXPORT virtual void setError(const std::string& theError);
36
37   /// Returns an expression error
38   MODEL_EXPORT virtual std::string error();
39
40   /// Defines the used parameters (by the parameters listener)
41   MODEL_EXPORT virtual void setUsedParameters(const std::set<std::string>& theUsedParameters);
42
43   /// Returns the used parameters
44   MODEL_EXPORT virtual std::set<std::string> usedParameters() const;
45
46  protected:
47   /// Initializes attributes
48   Model_Expression(TDF_Label& theLabel);
49
50   Handle_TDataStd_Name myText; ///< Text representation of the attribute (may differ for parameters)
51   Handle_TDataStd_Comment myError; ///< Error of expression of the text attribute
52   Handle_TDataStd_ExtStringList myUsedParameters; ///< Parameters used in expression
53
54   friend class Model_Data;
55 };
56
57
58 /**\class Model_ExpressionDouble
59  * \ingroup DataModel
60  * \brief Implementation of ModelAPI_ExpressionDouble.
61  */
62 class Model_ExpressionDouble :
63     public Model_Expression, // implementation inheritance
64     public ModelAPI_ExpressionDouble
65 {
66  public:
67   /// Sets the text of this Expression
68   MODEL_EXPORT virtual void setText(const std::string& theText) {
69     Model_Expression::setText(theText);
70   };
71
72   /// Returns the text of this Expression
73   MODEL_EXPORT virtual std::string text() const {
74     return Model_Expression::text();
75   };
76
77   /// Allows to set expression (text) error (by the parameters listener)
78   MODEL_EXPORT virtual void setError(const std::string& theError) {
79     Model_Expression::setError(theError);
80   };
81
82   /// Returns an expression error
83   MODEL_EXPORT virtual std::string error() {
84     return Model_Expression::error();
85   };
86
87   /// Defines the used parameters (by the parameters listener)
88   MODEL_EXPORT virtual void setUsedParameters(const std::set<std::string>& theUsedParameters) {
89     Model_Expression::setUsedParameters(theUsedParameters);
90   };
91
92   /// Returns the used parameters
93   MODEL_EXPORT virtual std::set<std::string> usedParameters() const {
94     return Model_Expression::usedParameters();
95   };
96
97   /// Defines the double value
98   MODEL_EXPORT virtual void setValue(const double theValue);
99
100   /// Returns the double value
101   MODEL_EXPORT virtual double value();
102
103   /// Allows to set expression (text) as invalid (by the parameters listener)
104   MODEL_EXPORT virtual void setInvalid(const bool theFlag);
105
106   /// Returns true if text is invalid
107   MODEL_EXPORT virtual bool isInvalid();
108
109  protected:
110   /// Initializes attributes
111   Model_ExpressionDouble(TDF_Label& theLabel);
112
113   friend class Model_Data;
114
115  private:
116   Handle_TDataStd_Real myReal; ///< double is Real attribute
117 };
118
119
120 /**\class Model_ExpressionInteger
121  * \ingroup DataModel
122  * \brief Implementation of ModelAPI_ExpressionInteger.
123  */
124 class Model_ExpressionInteger :
125     public Model_Expression, // implementation inheritance
126     public ModelAPI_ExpressionInteger
127 {
128  public:
129   /// Sets the text of this Expression
130   MODEL_EXPORT virtual void setText(const std::string& theText) {
131     Model_Expression::setText(theText);
132   };
133
134   /// Returns the text of this Expression
135   MODEL_EXPORT virtual std::string text() const {
136     return Model_Expression::text();
137   };
138
139   /// Allows to set expression (text) error (by the parameters listener)
140   MODEL_EXPORT virtual void setError(const std::string& theError) {
141     Model_Expression::setError(theError);
142   };
143
144   /// Returns an expression error
145   MODEL_EXPORT virtual std::string error() {
146     return Model_Expression::error();
147   };
148
149   /// Defines the used parameters (by the parameters listener)
150   MODEL_EXPORT virtual void setUsedParameters(const std::set<std::string>& theUsedParameters) {
151     Model_Expression::setUsedParameters(theUsedParameters);
152   };
153
154   /// Returns the used parameters
155   MODEL_EXPORT virtual std::set<std::string> usedParameters() const {
156     return Model_Expression::usedParameters();
157   };
158
159   /// Defines the integer value
160   MODEL_EXPORT virtual void setValue(const int theValue);
161
162   /// Returns the integer value
163   MODEL_EXPORT virtual int value();
164
165   /// Allows to set expression (text) as invalid (by the parameters listener)
166   MODEL_EXPORT virtual void setInvalid(const bool theFlag);
167
168   /// Returns true if text is invalid
169   MODEL_EXPORT virtual bool isInvalid();
170
171  protected:
172   /// Initializes attributes
173   Model_ExpressionInteger(TDF_Label& theLabel);
174
175   friend class Model_Data;
176
177  private:
178   Handle_TDataStd_Integer myInteger;
179 };
180
181 #endif // Model_Expression_H_