29 #ifndef GUM_PARTIAL_INSTANTIATION_4_MULTI_DIM_H 30 #define GUM_PARTIAL_INSTANTIATION_4_MULTI_DIM_H 32 #include <agrum/tools/core/hashTable.h> 33 #include <agrum/tools/core/set.h> 34 #include <agrum/tools/variables/discreteVariable.h> 41 template <
typename GUM_SCALAR >
42 class MultiDimImplementation;
44 template <
typename GUM_SCALAR >
47 template <
typename GUM_SCALAR >
68 template <
typename GUM_SCALAR >
71 const HashTable<
const DiscreteVariable*, Idx >& inst_vars);
92 template <
typename GUM_SCALAR >
93 MultiDimImplementation< GUM_SCALAR >*
95 const HashTable<
const DiscreteVariable*, Idx >& inst_vars);
116 template <
typename GUM_SCALAR >
119 const HashTable<
const DiscreteVariable*, Idx >& inst_vars);
140 template <
typename GUM_SCALAR >
142 const MultiDimImplementation< GUM_SCALAR* >* table,
143 const HashTable<
const DiscreteVariable*, Idx >& inst_vars);
153 template <
typename GUM_SCALAR >
154 MultiDimImplementation< GUM_SCALAR >*
156 const HashTable<
const DiscreteVariable*, Idx >& inst_vars);
166 template <
typename GUM_SCALAR >
167 MultiDimImplementation< GUM_SCALAR >*
169 const HashTable<
const DiscreteVariable*, Idx >& inst_vars);
180 template <
typename GUM_SCALAR >
187 template <
typename GUM_SCALAR >
208 template <
typename GUM_SCALAR >
213 void init() { partialInstantiation4MultiDimInit< GUM_SCALAR >(); };
235 template <
typename GUM_SCALAR >
240 void init() { pointerPartialInstantiation4MultiDimInit< GUM_SCALAR >(); };
246 #include <agrum/tools/multidim/utils/partialInstantiation4MultiDim_tpl.h> void init()
Initialize the partial instantiation functions.
INLINE void emplace(Args &&... args)
void init()
Initialize the partial instantiation functions.
MultiDimArray< GUM_SCALAR *> * partialInstantiationMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR * > *table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
A specialized function for instantiating variables in a MultiDimArray.
void pointerPartialInstantiation4MultiDimInit()
The function used to register all the instantiations on multidimImplementations over pointers types...
MultiDimArray< GUM_SCALAR > * partialInstantiationMultiDimArray(const MultiDimArray< GUM_SCALAR > *table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
A specialized function for instantiating variables in a multiDimArray.
Multidimensional matrix stored as an array in memory.
MultiDimImplementation< GUM_SCALAR > * partialInstantiation(const MultiDimImplementation< GUM_SCALAR > &table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
Instantiate variables in a MultiDimImplementation.
Decorator design pattern in order to separate implementations from multidimensional matrix concepts...
MultiDimImplementation< GUM_SCALAR > * partialInstantiationMultiDimArray(const MultiDimImplementation< GUM_SCALAR > *table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
A specialized function for instantiating variables in a MultiDimImplementation.
MultiDimImplementation< GUM_SCALAR > * partialInstantiation(const MultiDimDecorator< GUM_SCALAR > &table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
Instantiate variables in a MultiDimDecorator.
void partialInstantiation4MultiDimInit()
The function used to register all the instantiation operators on multidimImplementations over non-poi...
MultiDimImplementation< GUM_SCALAR *> * partialInstantiationMultiDimArray4Pointers(const MultiDimImplementation< GUM_SCALAR * > *table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
A specialized function for instantiating variables in a MultiDimArray.
A class used to register instantiation functions over non-pointers types.