]> SALOME platform Git repositories - modules/shaper.git/blob - src/ModelAPI/ModelAPI_Expression.h
Salome HOME
Added the system of reinitialization of attributes instead of re-creation of them...
[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   /// Reinitializes the internal state of the attribute (may be needed on undo/redo, abort, etc)
60   MODELAPI_EXPORT virtual void reinit() = 0;
61
62   bool myIsInitialized; ///< is some value assigned to this attribute
63
64   friend class Model_Data;
65   friend class Model_AttributeDouble;
66   friend class Model_AttributeInteger;
67   friend class GeomData_Point;
68   friend class GeomData_Point2D;
69 };
70
71
72 /**\class ModelAPI_ExpressionDouble
73  * \ingroup DataModel
74  * \brief Expression for calculated double values.
75  */
76 class ModelAPI_ExpressionDouble : public virtual ModelAPI_Expression
77 {
78  public:
79   /// Defines the double value
80   MODELAPI_EXPORT virtual void setValue(const double theValue) = 0;
81
82   /// Returns the double value
83   MODELAPI_EXPORT virtual double value() = 0;
84
85  protected:
86   /// Objects are created for features automatically
87   MODELAPI_EXPORT ModelAPI_ExpressionDouble();
88
89   friend class Model_Data;
90 };
91
92
93 /**\class ModelAPI_ExpressionInteger
94  * \ingroup DataModel
95  * \brief Expression for calculated integer values.
96  */
97 class ModelAPI_ExpressionInteger : public virtual ModelAPI_Expression
98 {
99  public:
100   /// Defines the integer value
101   MODELAPI_EXPORT virtual void setValue(const int theValue) = 0;
102
103   /// Returns the integer value
104   MODELAPI_EXPORT virtual int value() = 0;
105
106  protected:
107   /// Objects are created for features automatically
108   MODELAPI_EXPORT ModelAPI_ExpressionInteger();
109
110   friend class Model_Data;
111 };
112
113
114 //! Smart pointers for objects
115 typedef std::shared_ptr<ModelAPI_Expression> ExpressionPtr;
116 typedef std::shared_ptr<ModelAPI_ExpressionDouble> ExpressionDoublePtr;
117 typedef std::shared_ptr<ModelAPI_ExpressionInteger> ExpressionIntegerPtr;
118
119 #endif