aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
gum::MultiDimInterface Class Referenceabstract

Interface for all classes addressing in a multiDim fashion. More...

#include <agrum/base/multidim/multiDimInterface.h>

Inheritance diagram for gum::MultiDimInterface:

Public Member Functions

virtual ~MultiDimInterface ()
 Class destructor.
Accessors / Modifiers
virtual Idx nbrDim () const =0
 Returns the number of vars in the multidimensional container.
virtual Size domainSize () const =0
 Returns the product of the variables domain size.
virtual void add (const DiscreteVariable &v)=0
 Adds a new var to the variables of the multidimensional matrix.
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*.
virtual const DiscreteVariablevariable (Idx i) const =0
 Returns a const ref to the ith var.
virtual const DiscreteVariablevariable (const std::string &name) const =0
 Returns the variable with the name.
virtual Idx pos (const DiscreteVariable &v) const =0
 Returns the index of a variable.
virtual bool contains (const DiscreteVariable &v) const =0
 Returns true if var is in *this.
virtual bool empty () const =0
 Returns true if no var is in *this.
void replace (const DiscreteVariable &x, const DiscreteVariable &y)
 Replace variables in this multidim.

Protected Member Functions

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.

Detailed Description

Interface for all classes addressing in a multiDim fashion.

This class is a base interface for Instantiation and for all classes addressed by a Instantiation (mainly: MultiDimContainer and hence for all dimensionnal containers). Its purpose is to deal with the dimensions.

Definition at line 82 of file multiDimInterface.h.

Constructor & Destructor Documentation

◆ ~MultiDimInterface()

virtual gum::MultiDimInterface::~MultiDimInterface ( )
inlinevirtual

Class destructor.

Warning
No constructor : interface only.

Definition at line 88 of file multiDimInterface.h.

88{};

Member Function Documentation

◆ add()

virtual void gum::MultiDimInterface::add ( const DiscreteVariable & v)
pure virtual

Adds a new var to the variables of the multidimensional matrix.

See also
operator<<(MultiDimInterface& c, const DiscreteVariable& v)
Warning
Note that the variable passed in argument is not duplicated, that is, only a pointer toward the variable is kept by the MultiDimInterface.
Parameters
vThe new var.
Exceptions
DuplicateElementRaised if the variable already belongs to the sequence of variables.
OperationNotAllowedRaised if this object is non mutable.

Implemented in gum::Instantiation, gum::MultiDimArray< GUM_SCALAR >, gum::MultiDimBijArray< GUM_SCALAR >, gum::MultiDimBucket< GUM_SCALAR >, gum::MultiDimDecorator< GUM_SCALAR >, gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >, gum::MultiDimFunctionGraph< bool >, gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< double >, gum::MultiDimFunctionGraph< double, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< gum::ActionSet, gum::SetTerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< Size >, gum::MultiDimFunctionGraph< Size, ExactTerminalNodePolicy >, gum::MultiDimImplementation< GUM_SCALAR >, gum::MultiDimImplementation< bool >, gum::MultiDimImplementation< double >, gum::MultiDimImplementation< gum::ActionSet >, gum::MultiDimImplementation< GUM_SCALAR > *(*)(const MultiDimImplementation< GUM_SCALAR > *, const HashTable< const DiscreteVariable *, Idx > &), gum::MultiDimImplementation< GUM_SCALAR > *(*)(const MultiDimImplementation< GUM_SCALAR > *, const MultiDimImplementation< GUM_SCALAR > *), gum::MultiDimImplementation< Size >, gum::MultiDimImplementation< std::string >, gum::MultiDimSparse< GUM_SCALAR >, gum::MultiDimWithOffset< GUM_SCALAR >, and gum::VariableSet &)< GUM_SCALAR >.

Referenced by gum::operator<<().

Here is the caller graph for this function:

◆ contains()

◆ domainSize()

◆ empty()

◆ erase()

virtual void gum::MultiDimInterface::erase ( const DiscreteVariable & v)
pure virtual

Removes a var from the variables of the multidimensional matrix.

See also
operator>>(MultiDimInterface& c, const DiscreteVariable& v)
Exceptions
OperationNotAllowedRaised if this object is non mutable.
NotFoundRaised if v does not belong to this.

Implemented in gum::Instantiation, gum::MultiDimArray< GUM_SCALAR >, gum::MultiDimBijArray< GUM_SCALAR >, gum::MultiDimBucket< GUM_SCALAR >, gum::MultiDimDecorator< GUM_SCALAR >, gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >, gum::MultiDimFunctionGraph< bool >, gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< double >, gum::MultiDimFunctionGraph< double, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< gum::ActionSet, gum::SetTerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< Size >, gum::MultiDimFunctionGraph< Size, ExactTerminalNodePolicy >, gum::MultiDimImplementation< GUM_SCALAR >, gum::MultiDimImplementation< bool >, gum::MultiDimImplementation< double >, gum::MultiDimImplementation< gum::ActionSet >, gum::MultiDimImplementation< GUM_SCALAR > *(*)(const MultiDimImplementation< GUM_SCALAR > *, const HashTable< const DiscreteVariable *, Idx > &), gum::MultiDimImplementation< GUM_SCALAR > *(*)(const MultiDimImplementation< GUM_SCALAR > *, const MultiDimImplementation< GUM_SCALAR > *), gum::MultiDimImplementation< Size >, gum::MultiDimImplementation< std::string >, gum::MultiDimSparse< GUM_SCALAR >, gum::MultiDimWithOffset< GUM_SCALAR >, and gum::VariableSet &)< GUM_SCALAR >.

Referenced by gum::MultiDimContainer< GUM_SCALAR >::copy(), and gum::operator>>().

Here is the caller graph for this function:

◆ nbrDim()

◆ pos()

◆ replace()

INLINE void gum::MultiDimInterface::replace ( const DiscreteVariable & x,
const DiscreteVariable & y )

Replace variables in this multidim.

If x is in this MultiDim and y has the same domain size, then x will be replace by y in this MultiDim.

Parameters
xThe variable in this which will be replaced.
yThe variable replacing y.
Exceptions
NotFoundRaised if x does not belong to this MultiDim.
OperationNotAllowedIf y and x are not interchangeable.
DuplicateElementIf y is already in this MultiDim.

Definition at line 56 of file multiDimInterface_inl.h.

56 {
57 if (!contains(x)) { GUM_ERROR(NotFound, "could not find the variable") }
58
59 if (contains(y)) { GUM_ERROR(DuplicateElement, "variable " << y << " already in MultiDim") }
60
61 if (x.domainSize() != y.domainSize()) {
62 GUM_ERROR(OperationNotAllowed, "incompatible variables")
63 }
64
65 replace_(&x, &y);
66 }
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.
virtual bool contains(const DiscreteVariable &v) const =0
Returns true if var is in *this.
#define GUM_ERROR(type, msg)
Definition exceptions.h:72

References contains(), gum::DiscreteVariable::domainSize(), GUM_ERROR, and replace_().

Here is the call graph for this function:

◆ replace_()

virtual void gum::MultiDimInterface::replace_ ( const DiscreteVariable * x,
const DiscreteVariable * y )
protectedpure virtual

This is called by MultiDimContainer::replace() to proceed with the replacing between x and y.

This is called only when everything have been checked.

Parameters
xThe variable to replace in
yThe second variable to swap.

Implemented in gum::Instantiation, gum::MultiDimArray< GUM_SCALAR >, gum::MultiDimBijArray< GUM_SCALAR >, gum::MultiDimBucket< GUM_SCALAR >, gum::MultiDimDecorator< GUM_SCALAR >, gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >, gum::MultiDimFunctionGraph< bool >, gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< double >, gum::MultiDimFunctionGraph< double, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< gum::ActionSet, gum::SetTerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< Size >, gum::MultiDimFunctionGraph< Size, ExactTerminalNodePolicy >, gum::MultiDimICIModel< GUM_SCALAR >, gum::MultiDimImplementation< GUM_SCALAR >, gum::MultiDimImplementation< bool >, gum::MultiDimImplementation< double >, gum::MultiDimImplementation< gum::ActionSet >, gum::MultiDimImplementation< GUM_SCALAR > *(*)(const MultiDimImplementation< GUM_SCALAR > *, const HashTable< const DiscreteVariable *, Idx > &), gum::MultiDimImplementation< GUM_SCALAR > *(*)(const MultiDimImplementation< GUM_SCALAR > *, const MultiDimImplementation< GUM_SCALAR > *), gum::MultiDimImplementation< Size >, gum::MultiDimImplementation< std::string >, gum::MultiDimSparse< GUM_SCALAR >, and gum::VariableSet &)< GUM_SCALAR >.

Referenced by replace().

Here is the caller graph for this function:

◆ variable() [1/2]

virtual const DiscreteVariable & gum::MultiDimInterface::variable ( const std::string & name) const
pure virtual

◆ variable() [2/2]

virtual const DiscreteVariable & gum::MultiDimInterface::variable ( Idx i) const
pure virtual

◆ variablesSequence()


The documentation for this class was generated from the following files: