aGrUM  0.14.2
partialInstantiation4MultiDim.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  ***************************************************************************/
27 #ifndef GUM_PARTIAL_INSTANTIATION_4_MULTI_DIM_H
28 #define GUM_PARTIAL_INSTANTIATION_4_MULTI_DIM_H
29 
30 #include <agrum/core/hashTable.h>
31 #include <agrum/core/set.h>
33 //#include <agrum/multidim/implementations/multiDimImplementation.h>
34 //#include <agrum/multidim/implementations/multiDimArray.h>
35 //#include <agrum/multidim/implementations/multiDimDecorator.h>
36 
37 namespace gum {
38 
39  template < typename GUM_SCALAR >
40  class MultiDimImplementation;
41 
42  template < typename GUM_SCALAR >
43  class MultiDimArray;
44 
45  template < typename GUM_SCALAR >
46  class MultiDimDecorator;
47 
66  template < typename GUM_SCALAR >
67  MultiDimArray< GUM_SCALAR >* partialInstantiationMultiDimArray(
68  const MultiDimArray< GUM_SCALAR >* table,
69  const HashTable< const DiscreteVariable*, Idx >& inst_vars);
70 
90  template < typename GUM_SCALAR >
91  MultiDimImplementation< GUM_SCALAR >* partialInstantiationMultiDimArray(
92  const MultiDimImplementation< GUM_SCALAR >* table,
93  const HashTable< const DiscreteVariable*, Idx >& inst_vars);
94 
114  template < typename GUM_SCALAR >
115  MultiDimArray< GUM_SCALAR* >* partialInstantiationMultiDimArray4Pointers(
116  const MultiDimArray< GUM_SCALAR* >* table,
117  const HashTable< const DiscreteVariable*, Idx >& inst_vars);
118 
138  template < typename GUM_SCALAR >
139  MultiDimImplementation< GUM_SCALAR* >*
141  const MultiDimImplementation< GUM_SCALAR* >* table,
142  const HashTable< const DiscreteVariable*, Idx >& inst_vars);
143 
152  template < typename GUM_SCALAR >
153  MultiDimImplementation< GUM_SCALAR >* partialInstantiation(
154  const MultiDimImplementation< GUM_SCALAR >& table,
155  const HashTable< const DiscreteVariable*, Idx >& inst_vars);
156 
165  template < typename GUM_SCALAR >
166  MultiDimImplementation< GUM_SCALAR >* partialInstantiation(
167  const MultiDimDecorator< GUM_SCALAR >& table,
168  const HashTable< const DiscreteVariable*, Idx >& inst_vars);
169 
170  // ==========================================================================
171  // DO NOT FORGET TO REGISTER YOUR PARTIAL INSTANTIATION FUNCTIONS AT THE END
172  // OF FILE partialInstantiation4MultiDim_tpl.h
173  // ==========================================================================
174 
179  template < typename GUM_SCALAR >
181 
186  template < typename GUM_SCALAR >
188 
207  template < typename GUM_SCALAR >
212  void init() { partialInstantiation4MultiDimInit< GUM_SCALAR >(); };
213  };
214 
234  template < typename GUM_SCALAR >
239  void init() { pointerPartialInstantiation4MultiDimInit< GUM_SCALAR >(); };
240  };
241 
242 } /* namespace gum */
243 
244 // always include the templatized implementations
246 
247 #endif /* GUM_PARTIAL_INSTANTIATION_4_MULTI_DIM_H */
void init()
Initialize the partial instantiation functions.
Base class for discrete random variable.
Implementation for partial instantiation functions.
Sets of elements (i.e.
gum is the global namespace for all aGrUM entities
Definition: agrum.h:25
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.
MultiDimImplementation< GUM_SCALAR > * partialInstantiation(const MultiDimImplementation< GUM_SCALAR > &table, const HashTable< const DiscreteVariable *, Idx > &inst_vars)
Instantiate variables in a MultiDimImplementation.
void partialInstantiation4MultiDimInit()
The function used to register all the instantiation operators on multidimImplementations over non-poi...
Class hash tables iterators.
A class used to register instantiation functions over non-pointers types.