aGrUM  0.14.2
completeProjections4MultiDim.h
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2005 by Pierre-Henri WUILLEMIN et Christophe GONZALES *
3  * {prenom.nom}_at_lip6.fr *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the *
17  * Free Software Foundation, Inc., *
18  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19  ***************************************************************************/
28 #ifndef GUM_COMPLETE_PROJECTIONS_4_MULTI_DIM_H
29 #define GUM_COMPLETE_PROJECTIONS_4_MULTI_DIM_H
30 
34 
35 namespace gum {
36 
37  // ==========================================================================
39  // ==========================================================================
41 
63  template < typename GUM_SCALAR >
64  GUM_SCALAR projectMaxMultiDimArray(const MultiDimArray< GUM_SCALAR >* table,
65  Instantiation* instantiation = 0);
66 
88  template < typename GUM_SCALAR >
89  GUM_SCALAR
90  projectMaxMultiDimArray(const MultiDimImplementation< GUM_SCALAR >* table,
91  Instantiation* instantiation = 0);
92 
114  template < typename GUM_SCALAR >
115  GUM_SCALAR*
116  projectMaxMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR* >* table,
117  Instantiation* instantiation = 0);
118 
140  template < typename GUM_SCALAR >
142  const MultiDimImplementation< GUM_SCALAR* >* table,
143  Instantiation* instantiation = 0);
144 
146  // ==========================================================================
148  // ==========================================================================
150 
172  template < typename GUM_SCALAR >
173  GUM_SCALAR projectMinMultiDimArray(const MultiDimArray< GUM_SCALAR >* table,
174  Instantiation* instantiation = 0);
175 
197  template < typename GUM_SCALAR >
198  GUM_SCALAR
199  projectMinMultiDimArray(const MultiDimImplementation< GUM_SCALAR >* table,
200  Instantiation* instantiation = 0);
201 
223  template < typename GUM_SCALAR >
224  GUM_SCALAR*
225  projectMinMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR* >* table,
226  Instantiation* instantiation = 0);
227 
249  template < typename GUM_SCALAR >
251  const MultiDimImplementation< GUM_SCALAR* >* table,
252  Instantiation* instantiation = 0);
253 
255  // ==========================================================================
257  // ==========================================================================
259 
282  template < typename GUM_SCALAR >
283  GUM_SCALAR projectSumMultiDimArray(const MultiDimArray< GUM_SCALAR >* table,
284  Instantiation* instantiation = 0);
285 
308  template < typename GUM_SCALAR >
309  GUM_SCALAR
310  projectSumMultiDimArray(const MultiDimImplementation< GUM_SCALAR >* table,
311  Instantiation* instantiation = 0);
312 
335  template < typename GUM_SCALAR >
336  GUM_SCALAR*
337  projectSumMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR* >* table,
338  Instantiation* instantiation = 0);
339 
362  template < typename GUM_SCALAR >
364  const MultiDimImplementation< GUM_SCALAR* >* table,
365  Instantiation* instantiation = 0);
366 
368  // ==========================================================================
370  // ==========================================================================
372 
394  template < typename GUM_SCALAR >
395  GUM_SCALAR projectProductMultiDimArray(const MultiDimArray< GUM_SCALAR >* table,
396  Instantiation* instantiation = 0);
397 
419  template < typename GUM_SCALAR >
420  GUM_SCALAR
421  projectProductMultiDimArray(const MultiDimImplementation< GUM_SCALAR >* table,
422  Instantiation* instantiation = 0);
423 
445  template < typename GUM_SCALAR >
447  const MultiDimArray< GUM_SCALAR* >* table, Instantiation* instantiation = 0);
448 
470  template < typename GUM_SCALAR >
472  const MultiDimImplementation< GUM_SCALAR* >* table,
473  Instantiation* instantiation = 0);
474 
476 
478  template < typename GUM_SCALAR >
479  GUM_SCALAR projectMax(const MultiDimImplementation< GUM_SCALAR >& table,
480  Instantiation* instantiation = 0);
481 
483  template < typename GUM_SCALAR >
484  GUM_SCALAR projectMin(const MultiDimImplementation< GUM_SCALAR >& table,
485  Instantiation* instantiation = 0);
486 
488  template < typename GUM_SCALAR >
489  GUM_SCALAR projectSum(const MultiDimImplementation< GUM_SCALAR >& table,
490  Instantiation* instantiation = 0);
491 
494  template < typename GUM_SCALAR >
495  GUM_SCALAR projectProduct(const MultiDimImplementation< GUM_SCALAR >& table,
496  Instantiation* instantiation = 0);
497 
498  // ==========================================================================
499  // DO NOT FORGET TO REGISTER YOUR PROJECTION FUNCTIONS AT THE END OF FILE
500  // completeProjections4MultiDim_tpl.h
501  // ==========================================================================
502 
508  template < typename GUM_SCALAR >
510 
516  template < typename GUM_SCALAR >
518 
534  template < typename GUM_SCALAR >
536  void init() { completeProjections4MultiDimInit< GUM_SCALAR >(); };
537  };
538 
554  template < typename GUM_SCALAR >
556  void init() { pointerCompleteProjections4MultiDimInit< GUM_SCALAR >(); };
557  };
558 
559 } /* namespace gum */
560 
561 // always include the templatized implementations
563 
564 #endif /* GUM_COMPLETE_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.
GUM_SCALAR projectProduct(const MultiDimImplementation< GUM_SCALAR > &table, Instantiation *instantiation=0)
the function to be used to project a MultiDimImplementation using a Product
gum is the global namespace for all aGrUM entities
Definition: agrum.h:25
Headers of gum::MultiDimImplementation.
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.
GUM_SCALAR * projectMaxMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR * > *table, Instantiation *instantiation=0)
A specialized function for projecting a multiDimArray using a Max operator.
Efficient functionals for projecting multidim tables over all their variables.
Header files of gum::Instantiation.
void completeProjections4MultiDimInit()
the function used to register all the complete projection operators on multidimImplementations over n...
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
void pointerCompleteProjections4MultiDimInit()
The function used to register all the complete projections on multidimImplementations over pointers t...
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
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...
Header of the MultiDimArray class.
a class used to register complete projections over non-pointers typesThis class is of course complete...