5 #include "properties/SEProperty.h" 6 #include "utils/unitconversion/UCCommon.h" 8 #define ZERO_APPROX 1e-10 56 bool IsPositive()
const;
57 bool IsNegative()
const;
58 bool IsZero(
double limit = ZERO_APPROX)
const;
60 void SetReadOnly(
bool b);
61 bool IsReadOnly()
const;
63 double GetValue()
const;
64 void SetValue(
double d);
65 void ForceValue(
double d);
68 double IncrementValue(
double d);
70 void Average(
int cnt);
72 bool Equals(
const SEScalar& to)
const;
74 virtual void ToString(std::ostream &str)
const;
77 static unsigned long long int NaN;
78 static bool IsZero(
double value,
double limit);
79 static bool IsValue(
double target,
double value);
82 inline std::ostream& operator<< (std::ostream& out,
const SEScalar* s)
90 inline std::ostream& operator<< (std::ostream& out,
const SEScalar& s)
110 virtual bool IsValid()
const = 0;
112 virtual bool HasUnit()
const = 0;
123 virtual const CCompoundUnit* GetCompoundUnit(
const std::string& unit)
const = 0;
126 template <
typename Unit>
134 virtual void Clear();
135 virtual void Invalidate();
136 virtual bool IsValid()
const;
147 virtual void ForceValue(
double d,
const CCompoundUnit& unit);
148 virtual double IncrementValue(
double d,
const CCompoundUnit& unit);
150 virtual const CCompoundUnit* GetCompoundUnit(
const std::string& unit)
const;
157 virtual bool HasUnit()
const;
158 virtual const Unit* GetUnit()
const;
160 double GetValue()
const =
delete;
161 virtual double GetValue(
const Unit& unit)
const;
163 void SetValue(
double d) =
delete;
164 virtual void SetValue(
double d,
const Unit& unit);
166 void ForceValue(
double d) =
delete;
167 virtual void ForceValue(
double d,
const Unit& unit);
169 double IncrementValue(
double d) =
delete;
170 virtual double IncrementValue(
double d,
const Unit& unit);
172 double Increment(
const SEScalar& s) =
delete;
175 bool Equals(
const SEScalar& to)
const =
delete;
178 virtual void ToString(std::ostream &str)
const;
198 virtual bool HasScalar();
199 virtual void SetScalar(
const SEScalar& s);
201 virtual bool IsValid();
202 virtual bool IsInfinity();
204 virtual bool HasUnit();
207 virtual const CCompoundUnit* GetCompoundUnit(
const std::string& unit)
const;
209 virtual double GetValue()
const;
237 inline void ValueOverride(
SEScalar& s,
double value)
253 inline void IncrementOverride(
SEScalar& s,
double value)
269 #include "properties/SEScalar.inl" virtual double IncrementValue(double d, const CCompoundUnit &unit)
Definition: SEScalar.h:19
virtual ~NoUnit()
Definition: SEScalar.h:14
void SetReadOnly(bool b)
Definition: SEScalar.cpp:104
bool IsInfinity() const
Definition: SEScalar.h:54
bool IsReadOnly() const
Definition: SEScalar.cpp:108
double GetValue() const
Definition: SEScalar.cpp:113
virtual void Invalidate()=0
virtual void ToString(std::ostream &str) const
Definition: SEScalar.cpp:177
SEUnitScalar()
Definition: SEScalar.h:107
static unsigned long long int NaN
Definition: SEScalar.h:77
void SetValue(double d)
Definition: SEScalar.cpp:120
If you want to querry what a scalar is and don't know what scalar type you have...
Definition: SEScalar.h:191
virtual void Clear()
Definition: SEProperty.cpp:17
Definition: SEScalar.h:127
bool m_readOnly
Definition: SEScalar.h:27
Definition: SEScalar.h:10
virtual bool IsValid() const
Definition: SEScalar.cpp:76
static const NoUnit unitless
Definition: SEScalar.h:16
void Copy(const SEScalar &s)
Definition: SEScalar.cpp:58
double m_value
Definition: SEScalar.h:23
double IncrementValue(double d)
Definition: SEScalar.cpp:146
An interface to be used for gaining access to a scalar with any unit type
Definition: SEScalar.h:101
virtual ~SEGenericScalar()
Definition: SEScalar.h:196
void ForceValue(double d)
Definition: SEScalar.cpp:128
virtual void Invalidate()
Definition: SEScalar.cpp:67
virtual bool IsValid() const =0
NoUnit()
Definition: SEScalar.h:13
bool Set(const SEScalar &s)
Definition: SEScalar.cpp:44
virtual ~SEUnitScalar()
Definition: SEScalar.h:108
const SEScalar * m_Scalar
Definition: SEScalar.h:214
bool m_isnan
Definition: SEScalar.h:25
bool Set(const SEScalar &s)
friend SEGenericScalar
Definition: SEScalar.h:104
const SEUnitScalar * m_UnitScalar
Definition: SEScalar.h:215
Definition: CompoundUnit.h:39
virtual void SetValue(double d, const CCompoundUnit &unit)
Definition: PBProperties.h:76
Definition: SEProperty.h:7
bool m_isinf
Definition: SEScalar.h:26
const Unit * m_unit
Definition: SEScalar.h:181