aGrUM  0.16.0
multiDimInterface.h
Go to the documentation of this file.
1 
30 #ifndef GUM_MULTIDIM_INTERFACE_H
31 #define GUM_MULTIDIM_INTERFACE_H
32 
33 #include <iostream>
34 #include <vector>
35 
36 #include <agrum/agrum.h>
37 
38 #include <agrum/core/list.h>
39 #include <agrum/core/sequence.h>
40 
42 
43 namespace gum {
44 
45 #ifndef DOXYGEN_SHOULD_SKIP_THIS
46  // Forward declaration.
47  class Instantiation;
48 #endif
49 
50  // ==========================================================================
51  // === MULTIDIM INTERFACE ===
52  // ==========================================================================
66  public:
71  virtual ~MultiDimInterface(){};
72 
73  // =========================================================================
75  // =========================================================================
77 
82  virtual Idx nbrDim() const = 0;
83 
88  virtual Size domainSize() const = 0;
89 
104  virtual void add(const DiscreteVariable& v) = 0;
105 
113  virtual void erase(const DiscreteVariable& v) = 0;
114 
120  variablesSequence() const = 0;
121 
129  virtual const DiscreteVariable& variable(Idx i) const = 0;
130 
139  virtual const DiscreteVariable& variable(const std::string& name) const = 0;
140 
147  virtual Idx pos(const DiscreteVariable& v) const = 0;
148 
154  virtual bool contains(const DiscreteVariable& v) const = 0;
155 
160  virtual bool empty() const = 0;
161 
174  void replace(const DiscreteVariable& x, const DiscreteVariable& y);
175 
177 
178  protected:
188  virtual void _replace(const DiscreteVariable* x,
189  const DiscreteVariable* y) = 0;
190  };
191 
211 
220 
221 } /* namespace gum */
222 
223 #ifndef GUM_NO_INLINE
225 #endif // GUM_NO_INLINE
226 
227 #endif /* GUM_MULTIDIM_INTERFACE_H */
virtual void add(const DiscreteVariable &v)=0
Adds a new var to the variables of the multidimensional matrix.
virtual bool empty() const =0
Returns true if no var is in *this.
virtual Idx nbrDim() const =0
Returns the number of vars in the multidimensional container.
virtual bool contains(const DiscreteVariable &v) const =0
Returns true if var is in *this.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual const DiscreteVariable & variable(Idx i) const =0
Returns a const ref to the ith var.
The generic class for storing (ordered) sequences of objects.
Definition: sequence.h:1022
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
std::ostream & operator<<(std::ostream &output, const BayesNet< GUM_SCALAR > &bn)
Prints map&#39;s DAG in output using the Graphviz-dot format.
Definition: BayesNet_tpl.h:605
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual Size domainSize() const =0
Returns the product of the variables domain size.
virtual ~MultiDimInterface()
Class destructor.
virtual Idx pos(const DiscreteVariable &v) const =0
Returns the index of a variable.
virtual void _replace(const DiscreteVariable *x, const DiscreteVariable *y)=0
This is called by MultiDimContainer::replace() to proceed with the replacing between x and y...
void replace(const DiscreteVariable &x, const DiscreteVariable &y)
Replace variables in this multidim.
virtual void erase(const DiscreteVariable &v)=0
Removes a var from the variables of the multidimensional matrix.
virtual const Sequence< const DiscreteVariable *> & variablesSequence() const =0
Returns a const ref to the sequence of DiscreteVariable*.
Size Idx
Type for indexes.
Definition: types.h:53
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:48
MultiDimInterface & operator>>(MultiDimInterface &c, const DiscreteVariable &v)
Removes a var from the variables of the MutliDimAdressing.