28 #ifndef GUM_CONTINUOUS_VARIABLE_H 29 #define GUM_CONTINUOUS_VARIABLE_H 36 #include <agrum/agrum.h> 37 #include <agrum/tools/variables/IContinuousVariable.h> 45 template <
typename GUM_SCALAR =
float >
46 class ContinuousVariable:
public IContinuousVariable {
58 ContinuousVariable(
const std::string& aName,
59 const std::string& aDesc,
60 GUM_SCALAR lower_bound
61 = -std::numeric_limits< GUM_SCALAR >::infinity(),
62 GUM_SCALAR upper_bound
63 = std::numeric_limits< GUM_SCALAR >::infinity());
66 ContinuousVariable(
const ContinuousVariable< GUM_SCALAR >& from);
69 template <
typename TX_VAL >
70 ContinuousVariable(
const ContinuousVariable< TX_VAL >& from);
73 ContinuousVariable(ContinuousVariable< GUM_SCALAR >&& from);
76 virtual ~ContinuousVariable();
80 virtual ContinuousVariable< GUM_SCALAR >* clone()
const;
92 ContinuousVariable< GUM_SCALAR >&
93 operator=(
const ContinuousVariable< GUM_SCALAR >& from);
96 template <
typename TX_VAL >
97 ContinuousVariable< GUM_SCALAR >&
98 operator=(
const ContinuousVariable< TX_VAL >& from);
101 ContinuousVariable< GUM_SCALAR >&
102 operator=(ContinuousVariable< GUM_SCALAR >&& from);
108 GUM_SCALAR operator[](
const std::string& str)
const;
120 GUM_SCALAR lowerBound()
const;
123 virtual double lowerBoundAsDouble()
const;
126 GUM_SCALAR upperBound()
const;
129 virtual double upperBoundAsDouble()
const;
134 void setLowerBound(
const GUM_SCALAR& new_bound);
139 virtual void setLowerBoundFromDouble(
const double new_bound);
144 void setUpperBound(
const GUM_SCALAR& new_bound);
149 virtual void setUpperBoundFromDouble(
const double new_bound);
157 virtual std::string label(
const GUM_SCALAR& value)
const;
160 bool belongs(
const GUM_SCALAR& value)
const;
163 virtual const std::string domain()
const;
166 virtual VarType varType()
const;
169 std::string toString()
const;
172 std::string toStringWithDescription()
const;
179 GUM_SCALAR lower_bound__;
182 GUM_SCALAR upper_bound__;
184 template <
typename TX_VAL >
185 friend class ContinuousVariable;
190 template <
typename T_VAL >
191 std::ostream& operator<<(std::ostream&,
const ContinuousVariable< T_VAL >&);
196 float ContinuousVariable<
float >::operator[](
const std::string& str)
const;
199 double ContinuousVariable<
double >::operator[](
const std::string& str)
const;
205 #include <agrum/tools/variables/continuousVariable_tpl.h> 207 #ifndef GUM_NO_INLINE 208 # include <agrum/tools/variables/continuousVariable_inl.h>