29 #ifndef GUM_MULTIDIM_INTERFACE_H 30 #define GUM_MULTIDIM_INTERFACE_H 35 #include <agrum/agrum.h> 37 #include <agrum/tools/core/list.h> 38 #include <agrum/tools/core/sequence.h> 40 #include <agrum/tools/variables/discreteVariable.h> 44 #ifndef DOXYGEN_SHOULD_SKIP_THIS 64 class MultiDimInterface {
70 virtual ~MultiDimInterface(){};
81 virtual Idx nbrDim()
const = 0;
87 virtual Size domainSize()
const = 0;
103 virtual void add(
const DiscreteVariable& v) = 0;
112 virtual void erase(
const DiscreteVariable& v) = 0;
118 virtual const Sequence<
const DiscreteVariable* >& variablesSequence()
const = 0;
127 virtual const DiscreteVariable& variable(Idx i)
const = 0;
137 virtual const DiscreteVariable& variable(
const std::string& name)
const = 0;
145 virtual Idx pos(
const DiscreteVariable& v)
const = 0;
152 virtual bool contains(
const DiscreteVariable& v)
const = 0;
158 virtual bool empty()
const = 0;
172 void replace(
const DiscreteVariable& x,
const DiscreteVariable& y);
186 virtual void replace_(
const DiscreteVariable* x,
const DiscreteVariable* y) = 0;
207 MultiDimInterface& operator<<(MultiDimInterface& c,
const DiscreteVariable& v);
216 MultiDimInterface& operator>>(MultiDimInterface& c,
const DiscreteVariable& v);
220 #ifndef GUM_NO_INLINE 221 # include <agrum/tools/multidim/implementations/multiDimInterface_inl.h>