30 #ifndef DOXYGEN_SHOULD_SKIP_THIS 33 # define GUM_COMPLETE_PROJECTION_PATTERN_ALLOWED 1
35 # include <agrum/tools/multidim/utils/operators/completeProjectionRegister4MultiDim.h> 39 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectMaxMultiDimArray 40 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) 42 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 43 std::numeric_limits< GUM_SCALAR >::min() 44 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 45 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 46 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 47 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 49 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME projectMaxMultiDimArray 50 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) 52 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 53 std::numeric_limits< GUM_SCALAR >::min() 54 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 55 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME 56 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 57 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 59 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME 60 projectMaxMultiDimArray4Pointers 61 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) 62 if (*(y) > *(x)) *(x) = *(y) 63 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 64 std::numeric_limits< GUM_SCALAR >::min() 65 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 66 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME 67 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 68 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 70 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME 71 projectMaxMultiDimArray4Pointers 72 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) 73 if (*(y) > *(x)) *(x) = *(y) 74 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 75 std::numeric_limits< GUM_SCALAR >::min() 76 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 77 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME 78 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 79 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 83 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectMinMultiDimArray 84 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) 86 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 87 std::numeric_limits< GUM_SCALAR >::max() 88 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 89 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 90 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 91 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 93 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME projectMinMultiDimArray 94 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) 96 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 97 std::numeric_limits< GUM_SCALAR >::max() 98 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 99 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME 100 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 101 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 103 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME 104 projectMinMultiDimArray4Pointers 105 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) 106 if (*(x) > *(y)) *(x) = *(y) 107 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 108 std::numeric_limits< GUM_SCALAR >::max() 109 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 110 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME 111 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 112 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 114 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME 115 projectMinMultiDimArray4Pointers 116 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) 117 if (*(x) > *(y)) *(x) = *(y) 118 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 119 std::numeric_limits< GUM_SCALAR >::max() 120 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 121 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME 122 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 123 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 127 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectSumMultiDimArray 128 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) x += y 129 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)0
130 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 131 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 132 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 133 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 135 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME projectSumMultiDimArray 136 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) x += y 137 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)0
138 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 139 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME 140 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 141 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 143 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME 144 projectSumMultiDimArray4Pointers 145 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) *(x) += *(y) 146 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)0
147 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 148 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME 149 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 150 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 152 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME 153 projectSumMultiDimArray4Pointers 154 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) *(x) += *(y) 155 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)0
156 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 157 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME 158 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 159 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 163 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectProductMultiDimArray 164 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) (x) *= (y) 165 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)1
166 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 167 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 168 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 169 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 171 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME 172 projectProductMultiDimArray 173 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) (x) *= (y) 174 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)1
175 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 176 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME 177 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 178 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 180 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME 181 projectProductMultiDimArray4Pointers 182 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) (*x) *= (*y) 183 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)1
184 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 185 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME 186 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 187 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 189 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME 190 projectProductMultiDimArray4Pointers 191 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) (*x) *= (*y) 192 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)1
193 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimArray.h> 194 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME 195 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 196 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 202 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectMax 203 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME "max" 204 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimImplementation.h> 205 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 206 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME 209 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectMin 210 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME "min" 211 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimImplementation.h> 212 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 213 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME 216 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectSum 217 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME "sum" 218 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimImplementation.h> 219 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 220 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME 223 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectProduct 224 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME "product" 225 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4MultiDimImplementation.h> 226 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 227 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME 231 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectMaxMultiDimImplementation 232 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) 234 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 235 std::numeric_limits< GUM_SCALAR >::min() 236 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4BaseName.h> 237 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 238 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 239 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 241 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectMinMultiDimImplementation 242 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) 244 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 245 std::numeric_limits< GUM_SCALAR >::max() 246 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4BaseName.h> 247 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 248 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 249 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 251 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectSumMultiDimImplementation 252 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) x += y 253 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)0
254 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4BaseName.h> 255 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 256 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 257 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 259 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 260 projectProductMultiDimImplementation 261 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) x *= y 262 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)1
263 # include <agrum/tools/multidim/utils/patterns/completeProjectionPattern4BaseName.h> 264 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 265 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 266 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 275 template <
typename GUM_SCALAR >
277 static bool first_init =
true;
282 std::string MultiDimArrayString(
"MultiDimArray");
283 std::string BaseNameString(
"MultiDimImplementation");
286 registerCompleteProjection< GUM_SCALAR >(
"max",
288 &projectMaxMultiDimArray);
289 registerCompleteProjection< GUM_SCALAR >(
"min",
291 &projectMinMultiDimArray);
292 registerCompleteProjection< GUM_SCALAR >(
"sum",
294 &projectSumMultiDimArray);
295 registerCompleteProjection< GUM_SCALAR >(
"product",
297 &projectProductMultiDimArray);
300 registerCompleteProjection< GUM_SCALAR >(
"max",
302 &projectMaxMultiDimImplementation);
303 registerCompleteProjection< GUM_SCALAR >(
"min",
305 &projectMinMultiDimImplementation);
306 registerCompleteProjection< GUM_SCALAR >(
"sum",
308 &projectSumMultiDimImplementation);
309 registerCompleteProjection< GUM_SCALAR >(
312 &projectProductMultiDimImplementation);
317 template <
typename GUM_SCALAR >
319 static bool first_init =
true;
324 std::string MultiDimArrayString(
"MultiDimArray");
325 std::string BaseNameString(
"MultiDimImplementation");
328 registerCompleteProjection< GUM_SCALAR* >(
"max",
330 &projectMaxMultiDimArray4Pointers);
331 registerCompleteProjection< GUM_SCALAR* >(
"min",
333 &projectMinMultiDimArray4Pointers);
334 registerCompleteProjection< GUM_SCALAR* >(
"sum",
336 &projectSumMultiDimArray4Pointers);
337 registerCompleteProjection< GUM_SCALAR* >(
340 &projectProductMultiDimArray4Pointers);
347 # undef GUM_COMPLETE_PROJECTION_PATTERN_ALLOWED INLINE void emplace(Args &&... args)
void completeProjections4MultiDimInit()
the function used to register all the complete projection operators on multidimImplementations over n...
void pointerCompleteProjections4MultiDimInit()
The function used to register all the complete projections on multidimImplementations over pointers t...