aGrUM  0.16.0
multiDimAdressable.h
Go to the documentation of this file.
1 
34 #ifndef GUM_MULTIDIM_ADRESSABLE_H
35 #define GUM_MULTIDIM_ADRESSABLE_H
36 
37 #include <iostream>
38 #include <vector>
39 
40 #include <agrum/agrum.h>
41 
43 
44 namespace gum {
45  // =========================================================================
46  // === GUM_MULTI_DIM_ADRESSABLE ===
47  // =========================================================================
60  public:
61  // =======================================================================
63  // =======================================================================
65 
70 
76 
82 
83 
87  ~MultiDimAdressable() override;
88 
90  // =======================================================================
92  // =======================================================================
94 
99  virtual MultiDimAdressable& getMasterRef() = 0;
100 
106  virtual const MultiDimAdressable& getMasterRef() const = 0;
107 
113  virtual bool registerSlave(Instantiation& i) = 0;
114 
120  virtual bool unregisterSlave(Instantiation& i) = 0;
121 
129  virtual void changeNotification(const Instantiation& i,
130  const DiscreteVariable* const var,
131  Idx oldval,
132  Idx newval) = 0;
133 
138  virtual void setFirstNotification(const Instantiation& i) = 0;
139 
144  virtual void setLastNotification(const Instantiation& i) = 0;
145 
150  virtual void setIncNotification(const Instantiation& i) = 0;
151 
156  virtual void setDecNotification(const Instantiation& i) = 0;
157 
162  virtual void setChangeNotification(const Instantiation& i) = 0;
163 
169  virtual const std::string toString(const Instantiation* i) const = 0;
170 
172  };
173 
174 } /* namespace gum */
175 
176 #ifndef GUM_NO_INLINE
178 #endif /* GUM_NO_INLINE */
179 
180 #endif /* GUM_MULTIDIM_ADRESSABLE_H */
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual void setFirstNotification(const Instantiation &i)=0
Listen to setFirst in a given Instantiation.
virtual void setChangeNotification(const Instantiation &i)=0
Listen to an assignment of a value in a Instantiation.
virtual bool registerSlave(Instantiation &i)=0
Register i as a slave of this MultiDimAdressable.
Interface for all classes addressing in a multiDim fashion.
Base class for discrete random variable.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Definition: agrum.h:25
virtual void setIncNotification(const Instantiation &i)=0
Listen to increment in a given Instantiation.
virtual bool unregisterSlave(Instantiation &i)=0
Unregister i as a slave of this MultiDimAdressable.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
~MultiDimAdressable() override
Destructor.
MultiDimAdressable & operator=(const MultiDimAdressable &from)
Default constructor.
virtual void setLastNotification(const Instantiation &i)=0
Listen to setLast in a given Instantiation.
Abstract base class for all multi dimensionnal addressable.
Class for assigning/browsing values to tuples of discrete variables.
Definition: instantiation.h:83
virtual const std::string toString(const Instantiation *i) const =0
Return a string representation of internal data about i in this.
MultiDimAdressable()
Default constructor.
Size Idx
Type for indexes.
Definition: types.h:53
virtual void setDecNotification(const Instantiation &i)=0
Listen to increment in each recorded Instantiation.
virtual void changeNotification(const Instantiation &i, const DiscreteVariable *const var, Idx oldval, Idx newval)=0
Listen to changes in a given Instantiation.
virtual MultiDimAdressable & getMasterRef()=0
In order to insure the dereference for decorators, we need to virtualize the access to master pointer...