33 #ifndef GUM_MULTIDIM_ADRESSABLE_H 34 #define GUM_MULTIDIM_ADRESSABLE_H 39 #include <agrum/agrum.h> 41 #include <agrum/tools/multidim/instantiation.h> 58 class MultiDimAdressable:
public MultiDimInterface {
73 MultiDimAdressable(
const MultiDimAdressable& from);
74 MultiDimAdressable& operator=(
const MultiDimAdressable& from);
79 MultiDimAdressable(MultiDimAdressable&&)
noexcept;
80 MultiDimAdressable& operator=(MultiDimAdressable&& from)
noexcept;
86 ~MultiDimAdressable() override;
98 virtual MultiDimAdressable& getMasterRef() = 0;
105 virtual const MultiDimAdressable& getMasterRef()
const = 0;
112 virtual bool registerSlave(Instantiation& i) = 0;
119 virtual bool unregisterSlave(Instantiation& i) = 0;
128 virtual void changeNotification(
const Instantiation& i,
129 const DiscreteVariable*
const var,
138 virtual void setFirstNotification(
const Instantiation& i) = 0;
144 virtual void setLastNotification(
const Instantiation& i) = 0;
150 virtual void setIncNotification(
const Instantiation& i) = 0;
156 virtual void setDecNotification(
const Instantiation& i) = 0;
162 virtual void setChangeNotification(
const Instantiation& i) = 0;
169 virtual std::string toString(
const Instantiation* i)
const = 0;
176 #ifndef GUM_NO_INLINE 177 # include <agrum/tools/multidim/implementations/multiDimAdressable_inl.h>