aGrUM  0.16.0
projectionPattern4MultiDimFunctionGraph.h
Go to the documentation of this file.
1 
33 
34 // check if we allowed these patterns to be used
35 #ifndef GUM_PROJECTION_PATTERN_ALLOWED
36 
37 // #warning To use projectionPattern, you must define
38 // GUM_PROJECTION_PATTERN_ALLOWED
39 
40 #else
41 
45 
46 namespace gum {
47 
48  // a specialized function for projecting a multiDimFunctionGraph over a subset
49  // of its vars
50 
51 # ifdef GUM_MULTI_DIM_PROJECTION_NAME
52 # define GUM_MULTI_DIM_PROJECTION_TYPE GUM_SCALAR
53  template < typename GUM_SCALAR >
54  MultiDimFunctionGraph< GUM_SCALAR >* GUM_MULTI_DIM_PROJECTION_NAME(
56  const Set< const DiscreteVariable* >& delVars)
57 # endif
58 
59 
60 # ifdef GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME
61 # define GUM_MULTI_DIM_PROJECTION_TYPE GUM_SCALAR
62  template < typename GUM_SCALAR >
63  MultiDimImplementation< GUM_SCALAR >* GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME(
64  const MultiDimImplementation< GUM_SCALAR >* ttable,
65  const Set< const DiscreteVariable* >& delVars)
66 # endif
67  {
68 
69 # ifdef GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME
71  reinterpret_cast< const MultiDimFunctionGraph< GUM_SCALAR >* >(ttable);
72 # endif
73 
74  MultiDimFunctionGraphProjector< GUM_MULTI_DIM_PROJECTION_TYPE,
75  GUM_MULTI_DIM_PROJECTION_OPERATOR >
76  proj(table, delVars, GUM_MULTI_DIM_PROJECTION_NEUTRAL);
77 
78  return proj.project();
79  }
80 
81 
82 # undef GUM_MULTI_DIM_PROJECTION_TYPE
83 } // namespace gum
84 #endif /* GUM_PROJECTION_PATTERN_ALLOWED */
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.
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.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.