49#ifndef GUM_MULTI_DIM_AGGREGATOR_H
50#define GUM_MULTI_DIM_AGGREGATOR_H
83 template <
typename GUM_ELEMENT >
145 virtual std::optional< Idx >
value()
const;
146 std::string
toString()
const override;
183 const std::string&
name()
const override;
223#ifndef GUM_NO_EXTERN_TEMPLATE_CLASS
228 template <
typename GUM_ELEMENT >
Base class for discrete random variable.
Class for assigning/browsing values to tuples of discrete variables.
MultiDimContainer()
Default constructor.
MultiDimReadOnly()
Default constructor.
<agrum/base/multidim/aggregators/multiDimAggregator.h>
~MultiDimAggregator() override
Class destructor.
void setFirstNotification(const gum::Instantiation &) override
Returns the scalar parameter of this aggregator, if it has one.
GUM_ELEMENT get(const Instantiation &i) const override
Returns the scalar parameter of this aggregator, if it has one.
void setChangeNotification(const gum::Instantiation &) override
Returns the scalar parameter of this aggregator, if it has one.
bool isDecomposable() const
void setIncNotification(const gum::Instantiation &) override
Returns the scalar parameter of this aggregator, if it has one.
void changeNotification(const gum::Instantiation &, const gum::DiscreteVariable *const, gum::Idx, gum::Idx) override
Returns the scalar parameter of this aggregator, if it has one.
MultiDimAggregator()
Default constructor.
virtual Idx fold_(const DiscreteVariable &v, Idx i1, Idx i2, bool &stop_iteration) const =0
fold_ is applied on value i1 for variable v. the actual result for precedent applications is i2.
std::string toString() const override
Returns the scalar parameter of this aggregator, if it has one.
void setDecNotification(const gum::Instantiation &) override
Returns the scalar parameter of this aggregator, if it has one.
virtual Idx buildValue_(const gum::Instantiation &i) const
by default, buildValue_ uses a "fold" scheme and the user has to implement neutralElt_ and fold_ but ...
void setLastNotification(const gum::Instantiation &) override
Returns the scalar parameter of this aggregator, if it has one.
virtual std::optional< Idx > value() const
Returns the scalar parameter of this aggregator, if it has one.
Size realSize() const override
virtual Idx neutralElt_() const =0
neutralElt_() is the result value for the first application of fold_
virtual std::string aggregatorName() const =0
Returns the scalar parameter of this aggregator, if it has one.
MultiDimContainer< GUM_ELEMENT > * newFactory() const override=0
This method creates a clone of this object, withouth its content (including variable),...
void copyFrom(const MultiDimContainer< GUM_ELEMENT > &src) const override
Copy of a multiDimICIModel.
const std::string & name() const override
Returns the real name of the multiDimArray.
MultiDimAggregator(const MultiDimAggregator< GUM_ELEMENT > &from)
Copy constructor.
bool decomposable_
decomposable_ indicates if the aggregator can be decomposed
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Size Idx
Type for indexes.
Header of the MultiDimReadOnly class.
Aggregators are functional description of CPTs.
std::ostream & operator<<(std::ostream &s, const MultiDimAggregator< GUM_ELEMENT > &ag)
For friendly displaying the content of the array.
gum is the global namespace for all aGrUM entities