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 = -std::numeric_limits< GUM_SCALAR >::infinity(),
61 GUM_SCALAR upper_bound = std::numeric_limits< GUM_SCALAR >::infinity());
64 ContinuousVariable(
const ContinuousVariable< GUM_SCALAR >& from);
67 template <
typename TX_VAL >
68 ContinuousVariable(
const ContinuousVariable< TX_VAL >& from);
71 ContinuousVariable(ContinuousVariable< GUM_SCALAR >&& from);
74 virtual ~ContinuousVariable();
78 virtual ContinuousVariable< GUM_SCALAR >* clone()
const;
90 ContinuousVariable< GUM_SCALAR >& operator=(
const ContinuousVariable< GUM_SCALAR >& from);
93 template <
typename TX_VAL >
94 ContinuousVariable< GUM_SCALAR >& operator=(
const ContinuousVariable< TX_VAL >& from);
97 ContinuousVariable< GUM_SCALAR >& operator=(ContinuousVariable< GUM_SCALAR >&& from);
103 GUM_SCALAR operator[](
const std::string& str)
const;
115 GUM_SCALAR lowerBound()
const;
118 virtual double lowerBoundAsDouble()
const;
121 GUM_SCALAR upperBound()
const;
124 virtual double upperBoundAsDouble()
const;
129 void setLowerBound(
const GUM_SCALAR& new_bound);
134 virtual void setLowerBoundFromDouble(
const double new_bound);
139 void setUpperBound(
const GUM_SCALAR& new_bound);
144 virtual void setUpperBoundFromDouble(
const double new_bound);
152 virtual std::string label(
const GUM_SCALAR& value)
const;
155 bool belongs(
const GUM_SCALAR& value)
const;
158 virtual const std::string domain()
const;
161 virtual VarType varType()
const;
164 std::string toString()
const;
167 std::string toStringWithDescription()
const;
174 GUM_SCALAR _lower_bound_;
177 GUM_SCALAR _upper_bound_;
179 template <
typename TX_VAL >
180 friend class ContinuousVariable;
185 template <
typename T_VAL >
186 std::ostream& operator<<(std::ostream&,
const ContinuousVariable< T_VAL >&);
191 float ContinuousVariable<
float >::operator[](
const std::string& str)
const;
194 double ContinuousVariable<
double >::operator[](
const std::string& str)
const;
200 #include <agrum/tools/variables/continuousVariable_tpl.h> 202 #ifndef GUM_NO_INLINE 203 # include <agrum/tools/variables/continuousVariable_inl.h>