30 #ifndef GUM_COMPLETE_PROJECTION_REGISTER_4_MULTI_DIM_H 31 #define GUM_COMPLETE_PROJECTION_REGISTER_4_MULTI_DIM_H 37 #include <agrum/tools/core/hashTable.h> 38 #include <agrum/tools/core/set.h> 39 #include <agrum/tools/multidim/instantiation.h> 40 #include <agrum/tools/variables/discreteVariable.h> 45 template <
typename GUM_SCALAR >
46 class MultiDimImplementation;
64 template <
typename GUM_SCALAR >
65 class CompleteProjectionRegister4MultiDim {
68 typedef GUM_SCALAR (*CompleteProjectionPtr)(
69 const MultiDimImplementation< GUM_SCALAR >*,
70 Instantiation* instantiation);
99 void insert(
const std::string& projection_name,
100 const std::string& type_multidim,
101 CompleteProjectionPtr newFunction);
117 void erase(
const std::string& projection_name,
118 const std::string& type_multidim);
134 bool exists(
const std::string& projection_name,
135 const std::string& type_multidim)
const;
153 CompleteProjectionPtr get(
const std::string& projection_name,
154 const std::string& type_multidim)
const;
169 static CompleteProjectionRegister4MultiDim& Register();
180 CompleteProjectionRegister4MultiDim();
183 CompleteProjectionRegister4MultiDim(
184 const CompleteProjectionRegister4MultiDim&);
187 ~CompleteProjectionRegister4MultiDim();
192 typedef HashTable< std::string, CompleteProjectionPtr > CompleteProjectionSet;
203 HashTable< std::string, CompleteProjectionSet* > set__;
208 template <
typename GUM_SCALAR >
209 void registerCompleteProjection(
const std::string& projection_name,
210 const std::string& type_multidim,
211 typename CompleteProjectionRegister4MultiDim<
212 GUM_SCALAR >::CompleteProjectionPtr function);
217 #include <agrum/tools/multidim/utils/operators/completeProjectionRegister4MultiDim_tpl.h>