aGrUM  0.16.0
projections4MultiDim.h
Go to the documentation of this file.
1 
30 #ifndef GUM_PROJECTIONS_4_MULTI_DIM_H
31 #define GUM_PROJECTIONS_4_MULTI_DIM_H
32 
33 #include <agrum/core/set.h>
37 
38 namespace gum {
39 
40  // ==========================================================================
42  // ==========================================================================
44 
62  template < typename GUM_SCALAR >
63  MultiDimArray< GUM_SCALAR >*
64  projectMaxMultiDimArray(const MultiDimArray< GUM_SCALAR >* table,
65  const Set< const DiscreteVariable* >& del_vars);
66 
84  template < typename GUM_SCALAR >
85  MultiDimImplementation< GUM_SCALAR >*
86  projectMaxMultiDimArray(const MultiDimImplementation< GUM_SCALAR >* table,
87  const Set< const DiscreteVariable* >& del_vars);
88 
106  template < typename GUM_SCALAR >
107  MultiDimArray< GUM_SCALAR* >* projectMaxMultiDimArray4Pointers(
108  const MultiDimArray< GUM_SCALAR* >* table,
109  const Set< const DiscreteVariable* >& del_vars);
110 
128  template < typename GUM_SCALAR >
129  MultiDimImplementation< GUM_SCALAR* >* projectMaxMultiDimArray4Pointers(
130  const MultiDimImplementation< GUM_SCALAR* >* table,
131  const Set< const DiscreteVariable* >& del_vars);
132 
133  // @}
134  // ==========================================================================
136  // ==========================================================================
138 
156  template < typename GUM_SCALAR >
157  MultiDimArray< GUM_SCALAR >*
158  projectMinMultiDimArray(const MultiDimArray< GUM_SCALAR >* table,
159  const Set< const DiscreteVariable* >& del_vars);
160 
178  template < typename GUM_SCALAR >
179  MultiDimImplementation< GUM_SCALAR >*
180  projectMinMultiDimArray(const MultiDimImplementation< GUM_SCALAR >* table,
181  const Set< const DiscreteVariable* >& del_vars);
182 
200  template < typename GUM_SCALAR >
201  MultiDimArray< GUM_SCALAR* >* projectMinMultiDimArray4Pointers(
202  const MultiDimArray< GUM_SCALAR* >* table,
203  const Set< const DiscreteVariable* >& del_vars);
204 
222  template < typename GUM_SCALAR >
223  MultiDimImplementation< GUM_SCALAR* >* projectMinMultiDimArray4Pointers(
224  const MultiDimImplementation< GUM_SCALAR* >* table,
225  const Set< const DiscreteVariable* >& del_vars);
226 
227  // @}
228  // ==========================================================================
230  // ==========================================================================
232 
250  template < typename GUM_SCALAR >
251  MultiDimArray< GUM_SCALAR >*
252  projectSumMultiDimArray(const MultiDimArray< GUM_SCALAR >* table,
253  const Set< const DiscreteVariable* >& del_vars);
254 
272  template < typename GUM_SCALAR >
273  MultiDimImplementation< GUM_SCALAR >*
274  projectSumMultiDimArray(const MultiDimImplementation< GUM_SCALAR >* table,
275  const Set< const DiscreteVariable* >& del_vars);
276 
294  template < typename GUM_SCALAR >
295  MultiDimArray< GUM_SCALAR* >* projectSumMultiDimArray4Pointers(
296  const MultiDimArray< GUM_SCALAR* >* table,
297  const Set< const DiscreteVariable* >& del_vars);
298 
316  template < typename GUM_SCALAR >
317  MultiDimImplementation< GUM_SCALAR* >* projectSumMultiDimArray4Pointers(
318  const MultiDimImplementation< GUM_SCALAR* >* table,
319  const Set< const DiscreteVariable* >& del_vars);
320 
321  // @}
322  // ==========================================================================
324  // ==========================================================================
326 
344  template < typename GUM_SCALAR >
345  MultiDimArray< GUM_SCALAR >*
346  projectProductMultiDimArray(const MultiDimArray< GUM_SCALAR >* table,
347  const Set< const DiscreteVariable* >& del_vars);
348 
366  template < typename GUM_SCALAR >
367  MultiDimImplementation< GUM_SCALAR >*
368  projectProductMultiDimArray(const MultiDimImplementation< GUM_SCALAR >* table,
369  const Set< const DiscreteVariable* >& del_vars);
370 
388  template < typename GUM_SCALAR >
389  MultiDimArray< GUM_SCALAR* >* projectProductMultiDimArray4Pointers(
390  const MultiDimArray< GUM_SCALAR* >* table,
391  const Set< const DiscreteVariable* >& del_vars);
392 
410  template < typename GUM_SCALAR >
411  MultiDimImplementation< GUM_SCALAR* >* projectProductMultiDimArray4Pointers(
412  const MultiDimImplementation< GUM_SCALAR* >* table,
413  const Set< const DiscreteVariable* >& del_vars);
414 
415  // @}
416  // ==========================================================================
418  // ==========================================================================
420 
432  template < typename GUM_SCALAR >
433  MultiDimArray< GUM_SCALAR >* ProjectFuncMultiDimArray(
434  const MultiDimArray< GUM_SCALAR >* t1,
435  const MultiDimArray< GUM_SCALAR >* t2,
436  const GUM_SCALAR (*f)(const GUM_SCALAR&, const GUM_SCALAR&));
437 
449  template < typename GUM_SCALAR >
450  MultiDimImplementation< GUM_SCALAR >* combine2MultiDimArrays(
451  const MultiDimImplementation< GUM_SCALAR >* t1,
452  const MultiDimImplementation< GUM_SCALAR >* t2,
453  const GUM_SCALAR (*f)(const GUM_SCALAR&, const GUM_SCALAR&));
454 
455  // @}
456  // ==========================================================================
458  // ==========================================================================
460 
479  template < typename GUM_SCALAR >
482  const Set< const DiscreteVariable* >& del_vars);
483 
502  template < typename GUM_SCALAR >
503  MultiDimImplementation< GUM_SCALAR >* projectMaxMultiDimFunctionGraph(
504  const MultiDimImplementation< GUM_SCALAR >* table,
505  const Set< const DiscreteVariable* >& del_vars);
506 
507 
526  template < typename GUM_SCALAR >
529  const Set< const DiscreteVariable* >& del_vars);
530 
549  template < typename GUM_SCALAR >
550  MultiDimImplementation< GUM_SCALAR >* projectMinMultiDimFunctionGraph(
551  const MultiDimImplementation< GUM_SCALAR >* table,
552  const Set< const DiscreteVariable* >& del_vars);
553 
554 
573  template < typename GUM_SCALAR >
576  const Set< const DiscreteVariable* >& del_vars);
577 
596  template < typename GUM_SCALAR >
597  MultiDimImplementation< GUM_SCALAR >* projectSumMultiDimFunctionGraph(
598  const MultiDimImplementation< GUM_SCALAR >* table,
599  const Set< const DiscreteVariable* >& del_vars);
600 
601 
620  template < typename GUM_SCALAR >
623  const Set< const DiscreteVariable* >& del_vars);
624 
643  template < typename GUM_SCALAR >
644  MultiDimImplementation< GUM_SCALAR >* projectProductMultiDimFunctionGraph(
645  const MultiDimImplementation< GUM_SCALAR >* table,
646  const Set< const DiscreteVariable* >& del_vars);
647 
649 
651  template < typename GUM_SCALAR >
652  MultiDimImplementation< GUM_SCALAR >*
653  projectMax(const MultiDimImplementation< GUM_SCALAR >& table,
654  const Set< const DiscreteVariable* >& del_vars);
655 
657  template < typename GUM_SCALAR >
658  MultiDimImplementation< GUM_SCALAR >*
659  projectMin(const MultiDimImplementation< GUM_SCALAR >& table,
660  const Set< const DiscreteVariable* >& del_vars);
661 
663  template < typename GUM_SCALAR >
664  MultiDimImplementation< GUM_SCALAR >*
665  projectSum(const MultiDimImplementation< GUM_SCALAR >& table,
666  const Set< const DiscreteVariable* >& del_vars);
667 
670  template < typename GUM_SCALAR >
671  MultiDimImplementation< GUM_SCALAR >*
672  projectProduct(const MultiDimImplementation< GUM_SCALAR >& table,
673  const Set< const DiscreteVariable* >& del_vars);
674 
675 
676  // ==========================================================================
677  // DO NOT FORGET TO REGISTER YOUR PROJECTION FUNCTIONS AT THE END OF FILE
678  // projections4MultiDim_tpl.h
679  // ==========================================================================
680 
685  template < typename GUM_SCALAR >
687 
692  template < typename GUM_SCALAR >
694 
708  template < typename GUM_SCALAR >
710  void init() { projections4MultiDimInit< GUM_SCALAR >(); };
711  };
712 
727  template < typename GUM_SCALAR >
728  struct Projections4MultiDimInitialize< GUM_SCALAR* > {
729  void init() { pointerProjections4MultiDimInit< GUM_SCALAR >(); };
730  };
731 
732 } /* namespace gum */
733 
734 // always include the templatized implementations
736 
737 #endif /* GUM_PROJECTIONS_4_MULTI_DIM_H */
GUM_SCALAR * projectMinMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR * > *table, Instantiation *instantiation=0)
A specialized function for projecting a multiDimArray using a Min operator.
a class used to register projections over non-pointers types
GUM_SCALAR projectProduct(const MultiDimImplementation< GUM_SCALAR > &table, Instantiation *instantiation=0)
the function to be used to project a MultiDimImplementation using a Product
MultiDimFunctionGraph< GUM_SCALAR > * projectMinMultiDimFunctionGraph(const MultiDimFunctionGraph< GUM_SCALAR > *table, const Set< const DiscreteVariable * > &del_vars)
a specialized function for projecting a multiDimFunctionGraph using a Min operator ...
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.
Definition: agrum.h:25
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
GUM_SCALAR projectMinMultiDimArray(const MultiDimArray< GUM_SCALAR > *table, Instantiation *instantiation=0)
A specialized function for projecting a multiDimArray using a Min operator.
GUM_SCALAR projectMaxMultiDimArray(const MultiDimArray< GUM_SCALAR > *table, Instantiation *instantiation=0)
A specialized function for projecting a multiDimArray using a Max operator.
MultiDimFunctionGraph< GUM_SCALAR > * projectSumMultiDimFunctionGraph(const MultiDimFunctionGraph< GUM_SCALAR > *table, const Set< const DiscreteVariable * > &del_vars)
a specialized function for projecting a multiDimFunctionGraph using a summation
MultiDimImplementation< GUM_SCALAR > * combine2MultiDimArrays(const MultiDimImplementation< GUM_SCALAR > *t1, const MultiDimImplementation< GUM_SCALAR > *t2, const GUM_SCALAR(*f)(const GUM_SCALAR &, const GUM_SCALAR &))
a specialized function for functionally projecting a multiDimArray
GUM_SCALAR * projectMaxMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR * > *table, Instantiation *instantiation=0)
A specialized function for projecting a multiDimArray using a Max operator.
void projections4MultiDimInit()
the function used to register all the projection operators on multidimImplementations over non-pointe...
MultiDimArray< GUM_SCALAR > * ProjectFuncMultiDimArray(const MultiDimArray< GUM_SCALAR > *t1, const MultiDimArray< GUM_SCALAR > *t2, const GUM_SCALAR(*f)(const GUM_SCALAR &, const GUM_SCALAR &))
a specialized function for functionally projecting a multiDimArray
MultiDimFunctionGraph< GUM_SCALAR > * projectProductMultiDimFunctionGraph(const MultiDimFunctionGraph< GUM_SCALAR > *table, const Set< const DiscreteVariable * > &del_vars)
a specialized function for projecting a multiDimFunctionGraph using products
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
GUM_SCALAR projectProductMultiDimArray(const MultiDimArray< GUM_SCALAR > *table, Instantiation *instantiation=0)
a function for projecting a multiDimArray using a Product operatorThe function projects a table over ...
GUM_SCALAR projectSum(const MultiDimImplementation< GUM_SCALAR > &table, Instantiation *instantiation=0)
the function to be used to project a MultiDimImplementation using a sum
MultiDimFunctionGraph< GUM_SCALAR > * projectMaxMultiDimFunctionGraph(const MultiDimFunctionGraph< GUM_SCALAR > *table, const Set< const DiscreteVariable * > &del_vars)
a specialized function for projecting a multiDimFunctionGraph using a Max operator ...
GUM_SCALAR projectSumMultiDimArray(const MultiDimArray< GUM_SCALAR > *table, Instantiation *instantiation=0)
a specialized function for projecting a multiDimArray using a Sum operatorThe function projects a tab...
GUM_SCALAR projectMin(const MultiDimImplementation< GUM_SCALAR > &table, Instantiation *instantiation=0)
the function to be used to project a MultiDimImplementation using a Min
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
GUM_SCALAR projectMax(const MultiDimImplementation< GUM_SCALAR > &table, Instantiation *instantiation=0)
the function to be used to project a MultiDimImplementation using a Max
GUM_SCALAR * projectProductMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR * > *table, Instantiation *instantiation=0)
a function for projecting a multiDimArray using a Product operatorThe function projects a table over ...
GUM_SCALAR * projectSumMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR * > *table, Instantiation *instantiation=0)
a specialized function for projecting a multiDimArray using a Sum operatorThe function projects a tab...
void pointerProjections4MultiDimInit()
the function used to register all the projections on multidimImplementations over pointers types...
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.