28 #ifndef DOXYGEN_SHOULD_SKIP_THIS 31 # define GUM_PROJECTION_PATTERN_ALLOWED 1
33 # include <agrum/tools/core/functors.h> 34 # include <agrum/tools/multidim/utils/operators/projectionRegister4MultiDim.h> 38 # define GUM_MULTI_DIM_PROJECTION_NAME projectMaxMultiDimArray 39 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 40 # define GUM_MULTI_DIM_PROJECTION(x, y) 42 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::min() 43 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 44 # undef GUM_MULTI_DIM_PROJECTION_NAME 45 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 46 # undef GUM_MULTI_DIM_PROJECTION 47 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 49 # define GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME projectMaxMultiDimArray 50 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 51 # define GUM_MULTI_DIM_PROJECTION(x, y) 53 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::min() 54 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 55 # undef GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME 56 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 57 # undef GUM_MULTI_DIM_PROJECTION 58 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 60 # define GUM_MULTI_DIM_PROJECTION_POINTER_NAME projectMaxMultiDimArray4Pointers 61 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 62 # define GUM_MULTI_DIM_PROJECTION(x, y) 63 if (*(y) > *(x)) *(x) = *(y) 64 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::min() 65 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 66 # undef GUM_MULTI_DIM_PROJECTION_POINTER_NAME 67 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 68 # undef GUM_MULTI_DIM_PROJECTION 69 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 71 # define GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME 72 projectMaxMultiDimArray4Pointers 73 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 74 # define GUM_MULTI_DIM_PROJECTION(x, y) 75 if (*(y) > *(x)) *(x) = *(y) 76 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::min() 77 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 78 # undef GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME 79 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 80 # undef GUM_MULTI_DIM_PROJECTION 81 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 85 # define GUM_MULTI_DIM_PROJECTION_NAME projectMinMultiDimArray 86 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 87 # define GUM_MULTI_DIM_PROJECTION(x, y) 89 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::max() 90 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 91 # undef GUM_MULTI_DIM_PROJECTION_NAME 92 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 93 # undef GUM_MULTI_DIM_PROJECTION 94 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 96 # define GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME projectMinMultiDimArray 97 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 98 # define GUM_MULTI_DIM_PROJECTION(x, y) 100 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::max() 101 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 102 # undef GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME 103 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 104 # undef GUM_MULTI_DIM_PROJECTION 105 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 107 # define GUM_MULTI_DIM_PROJECTION_POINTER_NAME projectMinMultiDimArray4Pointers 108 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 109 # define GUM_MULTI_DIM_PROJECTION(x, y) 110 if (*(x) > *(y)) *(x) = *(y) 111 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::max() 112 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 113 # undef GUM_MULTI_DIM_PROJECTION_POINTER_NAME 114 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 115 # undef GUM_MULTI_DIM_PROJECTION 116 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 118 # define GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME 119 projectMinMultiDimArray4Pointers 120 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 121 # define GUM_MULTI_DIM_PROJECTION(x, y) 122 if (*(x) > *(y)) *(x) = *(y) 123 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::max() 124 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 125 # undef GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME 126 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 127 # undef GUM_MULTI_DIM_PROJECTION 128 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 132 # define GUM_MULTI_DIM_PROJECTION_NAME projectSumMultiDimArray 133 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 134 # define GUM_MULTI_DIM_PROJECTION(x, y) x += y 135 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)0
136 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 137 # undef GUM_MULTI_DIM_PROJECTION_NAME 138 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 139 # undef GUM_MULTI_DIM_PROJECTION 140 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 142 # define GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME projectSumMultiDimArray 143 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 144 # define GUM_MULTI_DIM_PROJECTION(x, y) x += y 145 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)0
146 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 147 # undef GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME 148 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 149 # undef GUM_MULTI_DIM_PROJECTION 150 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 152 # define GUM_MULTI_DIM_PROJECTION_POINTER_NAME projectSumMultiDimArray4Pointers 153 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 154 # define GUM_MULTI_DIM_PROJECTION(x, y) *(x) += *(y) 155 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)0
156 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 157 # undef GUM_MULTI_DIM_PROJECTION_POINTER_NAME 158 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 159 # undef GUM_MULTI_DIM_PROJECTION 160 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 162 # define GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME 163 projectSumMultiDimArray4Pointers 164 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 165 # define GUM_MULTI_DIM_PROJECTION(x, y) *(x) += *(y) 166 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)0
167 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 168 # undef GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME 169 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 170 # undef GUM_MULTI_DIM_PROJECTION 171 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 175 # define GUM_MULTI_DIM_PROJECTION_NAME projectProductMultiDimArray 176 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 177 # define GUM_MULTI_DIM_PROJECTION(x, y) (x) *= (y) 178 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)1
179 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 180 # undef GUM_MULTI_DIM_PROJECTION_NAME 181 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 182 # undef GUM_MULTI_DIM_PROJECTION 183 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 185 # define GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME projectProductMultiDimArray 186 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 187 # define GUM_MULTI_DIM_PROJECTION(x, y) (x) *= (y) 188 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)1
189 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 190 # undef GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME 191 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 192 # undef GUM_MULTI_DIM_PROJECTION 193 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 195 # define GUM_MULTI_DIM_PROJECTION_POINTER_NAME 196 projectProductMultiDimArray4Pointers 197 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 198 # define GUM_MULTI_DIM_PROJECTION(x, y) (*x) *= (*y) 199 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)1
200 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 201 # undef GUM_MULTI_DIM_PROJECTION_POINTER_NAME 202 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 203 # undef GUM_MULTI_DIM_PROJECTION 204 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 206 # define GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME 207 projectProductMultiDimArray4Pointers 208 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 209 # define GUM_MULTI_DIM_PROJECTION(x, y) (*x) *= (*y) 210 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)1
211 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 212 # undef GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME 213 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 214 # undef GUM_MULTI_DIM_PROJECTION 215 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 219 # define GUM_MULTI_DIM_PROJECTION_OPERATOR Maximizes 220 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL 221 (-1
* std::numeric_limits< GUM_SCALAR >::max()) 223 # define GUM_MULTI_DIM_PROJECTION_NAME projectMaxMultiDimFunctionGraph 224 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 225 # undef GUM_MULTI_DIM_PROJECTION_NAME 227 # define GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME 228 projectMaxMultiDimFunctionGraph 229 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 230 # undef GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME 232 # undef GUM_MULTI_DIM_PROJECTION_OPERATOR 233 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 237 # define GUM_MULTI_DIM_PROJECTION_OPERATOR Minimizes 238 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::max() 240 # define GUM_MULTI_DIM_PROJECTION_NAME projectMinMultiDimFunctionGraph 241 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 242 # undef GUM_MULTI_DIM_PROJECTION_NAME 244 # define GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME 245 projectMinMultiDimFunctionGraph 246 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 247 # undef GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME 249 # undef GUM_MULTI_DIM_PROJECTION_OPERATOR 250 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 254 # define GUM_MULTI_DIM_PROJECTION_OPERATOR std::plus 255 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)0
257 # define GUM_MULTI_DIM_PROJECTION_NAME projectSumMultiDimFunctionGraph 258 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 259 # undef GUM_MULTI_DIM_PROJECTION_NAME 261 # define GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME 262 projectSumMultiDimFunctionGraph 263 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 264 # undef GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME 266 # undef GUM_MULTI_DIM_PROJECTION_OPERATOR 267 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 271 # define GUM_MULTI_DIM_PROJECTION_OPERATOR std::multiplies 272 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)1
274 # define GUM_MULTI_DIM_PROJECTION_NAME projectProductMultiDimFunctionGraph 275 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 276 # undef GUM_MULTI_DIM_PROJECTION_NAME 278 # define GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME 279 projectProductMultiDimFunctionGraph 280 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 281 # undef GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME 283 # undef GUM_MULTI_DIM_PROJECTION_OPERATOR 284 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 301 # define GUM_MULTI_DIM_PROJECTION_NAME projectMax 302 # define GUM_MULTI_DIM_PROJECTION_FUNC_NAME "max" 303 # define GUM_MULTI_DIM_SYMMETRIC_PROJECTION 304 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimImplementation.h> 305 # undef GUM_MULTI_DIM_PROJECTION_NAME 306 # undef GUM_MULTI_DIM_PROJECTION_FUNC_NAME 307 # undef GUM_MULTI_DIM_SYMMETRIC_PROJECTION 310 # define GUM_MULTI_DIM_PROJECTION_NAME projectMin 311 # define GUM_MULTI_DIM_PROJECTION_FUNC_NAME "min" 312 # define GUM_MULTI_DIM_SYMMETRIC_PROJECTION 313 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimImplementation.h> 314 # undef GUM_MULTI_DIM_PROJECTION_NAME 315 # undef GUM_MULTI_DIM_PROJECTION_FUNC_NAME 316 # undef GUM_MULTI_DIM_SYMMETRIC_PROJECTION 319 # define GUM_MULTI_DIM_PROJECTION_NAME projectSum 320 # define GUM_MULTI_DIM_PROJECTION_FUNC_NAME "sum" 321 # define GUM_MULTI_DIM_SYMMETRIC_PROJECTION 322 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimImplementation.h> 323 # undef GUM_MULTI_DIM_PROJECTION_NAME 324 # undef GUM_MULTI_DIM_PROJECTION_FUNC_NAME 325 # undef GUM_MULTI_DIM_SYMMETRIC_PROJECTION 328 # define GUM_MULTI_DIM_PROJECTION_NAME projectProduct 329 # define GUM_MULTI_DIM_PROJECTION_FUNC_NAME "product" 330 # define GUM_MULTI_DIM_SYMMETRIC_PROJECTION 331 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimImplementation.h> 332 # undef GUM_MULTI_DIM_PROJECTION_NAME 333 # undef GUM_MULTI_DIM_PROJECTION_FUNC_NAME 334 # undef GUM_MULTI_DIM_SYMMETRIC_PROJECTION 338 # define GUM_MULTI_DIM_PROJECTION_NAME projectMaxMultiDimImplementation 339 # define GUM_MULTI_DIM_PROJECTION(x, y) ((x) > (y) ? (x) : (y)) 340 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::min() 341 # include <agrum/tools/multidim/utils/patterns/projectionPattern4BaseName.h> 342 # undef GUM_MULTI_DIM_PROJECTION_NAME 343 # undef GUM_MULTI_DIM_PROJECTION 344 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 346 # define GUM_MULTI_DIM_PROJECTION_NAME projectMinMultiDimImplementation 347 # define GUM_MULTI_DIM_PROJECTION(x, y) ((x) > (y) ? (y) : (x)) 348 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::max() 349 # include <agrum/tools/multidim/utils/patterns/projectionPattern4BaseName.h> 350 # undef GUM_MULTI_DIM_PROJECTION_NAME 351 # undef GUM_MULTI_DIM_PROJECTION 352 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 354 # define GUM_MULTI_DIM_PROJECTION_NAME projectSumMultiDimImplementation 355 # define GUM_MULTI_DIM_PROJECTION(x, y) ((x) + (y)) 356 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)0
357 # include <agrum/tools/multidim/utils/patterns/projectionPattern4BaseName.h> 358 # undef GUM_MULTI_DIM_PROJECTION_NAME 359 # undef GUM_MULTI_DIM_PROJECTION 360 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 362 # define GUM_MULTI_DIM_PROJECTION_NAME projectProductMultiDimImplementation 363 # define GUM_MULTI_DIM_PROJECTION(x, y) ((x) * (y)) 364 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)1
365 # include <agrum/tools/multidim/utils/patterns/projectionPattern4BaseName.h> 366 # undef GUM_MULTI_DIM_PROJECTION_NAME 367 # undef GUM_MULTI_DIM_PROJECTION 368 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 376 template <
typename GUM_SCALAR >
378 static bool first_init =
true;
383 std::string MultiDimArrayString(
"MultiDimArray");
384 std::string MultiDimFunctionGraphString(
"MultiDimFunctionGraph");
385 std::string BaseNameString(
"MultiDimImplementation");
388 registerProjection< GUM_SCALAR >(
"max",
390 &projectMaxMultiDimArray);
391 registerProjection< GUM_SCALAR >(
"min",
393 &projectMinMultiDimArray);
394 registerProjection< GUM_SCALAR >(
"sum",
396 &projectSumMultiDimArray);
397 registerProjection< GUM_SCALAR >(
"product",
399 &projectProductMultiDimArray);
402 registerProjection< GUM_SCALAR >(
"max",
403 MultiDimFunctionGraphString,
404 &projectMaxMultiDimFunctionGraph);
405 registerProjection< GUM_SCALAR >(
"min",
406 MultiDimFunctionGraphString,
407 &projectMinMultiDimFunctionGraph);
408 registerProjection< GUM_SCALAR >(
"sum",
409 MultiDimFunctionGraphString,
410 &projectSumMultiDimFunctionGraph);
411 registerProjection< GUM_SCALAR >(
"product",
412 MultiDimFunctionGraphString,
413 &projectProductMultiDimFunctionGraph);
416 registerProjection< GUM_SCALAR >(
"max",
418 &projectMaxMultiDimImplementation);
419 registerProjection< GUM_SCALAR >(
"min",
421 &projectMinMultiDimImplementation);
422 registerProjection< GUM_SCALAR >(
"sum",
424 &projectSumMultiDimImplementation);
425 registerProjection< GUM_SCALAR >(
"product",
427 &projectProductMultiDimImplementation);
432 template <
typename GUM_SCALAR >
434 static bool first_init =
true;
439 std::string MultiDimArrayString(
"MultiDimArray");
440 std::string BaseNameString(
"MultiDimImplementation");
443 registerProjection< GUM_SCALAR* >(
"max",
445 &projectMaxMultiDimArray4Pointers);
446 registerProjection< GUM_SCALAR* >(
"min",
448 &projectMinMultiDimArray4Pointers);
449 registerProjection< GUM_SCALAR* >(
"sum",
451 &projectSumMultiDimArray4Pointers);
452 registerProjection< GUM_SCALAR* >(
"product",
454 &projectProductMultiDimArray4Pointers);
461 # undef GUM_PROJECTION_PATTERN_ALLOWED INLINE void emplace(Args &&... args)
void projections4MultiDimInit()
the function used to register all the projection operators on multidimImplementations over non-pointe...
void pointerProjections4MultiDimInit()
the function used to register all the projections on multidimImplementations over pointers types...