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* >&
119 variablesSequence()
const = 0;
128 virtual const DiscreteVariable& variable(Idx i)
const = 0;
138 virtual const DiscreteVariable& variable(
const std::string& name)
const = 0;
146 virtual Idx pos(
const DiscreteVariable& v)
const = 0;
153 virtual bool contains(
const DiscreteVariable& v)
const = 0;
159 virtual bool empty()
const = 0;
173 void replace(
const DiscreteVariable& x,
const DiscreteVariable& y);
187 virtual void replace_(
const DiscreteVariable* x,
const DiscreteVariable* y)
209 MultiDimInterface& operator<<(MultiDimInterface& c,
const DiscreteVariable& v);
218 MultiDimInterface& operator>>(MultiDimInterface& c,
const DiscreteVariable& v);
222 #ifndef GUM_NO_INLINE 223 # include <agrum/tools/multidim/implementations/multiDimInterface_inl.h>