28 #ifndef GUM_DISCRETE_VARIABLE_H 29 #define GUM_DISCRETE_VARIABLE_H 34 #include <agrum/agrum.h> 36 #include <agrum/tools/core/hashFunc.h> 37 #include <agrum/tools/variables/variable.h> 59 class DiscreteVariable:
public Variable {
68 DiscreteVariable(
const std::string& aName,
const std::string& aDesc);
78 DiscreteVariable(
const DiscreteVariable& aDRV);
82 virtual ~DiscreteVariable();
87 virtual DiscreteVariable* clone()
const = 0;
102 virtual Size domainSize()
const = 0;
105 std::vector< std::string > labels()
const;
108 virtual double numerical(Idx indice)
const = 0;
112 virtual VarType varType()
const = 0;
124 DiscreteVariable& operator=(
const DiscreteVariable& aRV);
127 virtual bool operator==(
const DiscreteVariable& aRV)
const;
131 virtual bool operator!=(
const DiscreteVariable& aRV)
const;
139 Idx operator[](
const std::string& label)
const {
return index(label); };
140 virtual Idx index(
const std::string& label)
const = 0;
146 virtual std::string label(Idx i)
const = 0;
149 std::string toString()
const;
152 std::string toStringWithDescription()
const;
155 virtual const std::string domain()
const = 0;
160 GUM_CONSTRUCTOR(DiscreteVariable);
167 std::ostream& operator<<(std::ostream&,
const DiscreteVariable&);
171 #ifndef GUM_NO_INLINE 172 # include <agrum/tools/variables/discreteVariable_inl.h>