31 #ifndef DOXYGEN_SHOULD_SKIP_THIS 34 # define GUM_COMPLETE_PROJECTION_PATTERN_ALLOWED 1 40 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectMaxMultiDimArray 41 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) \ 43 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL \ 44 std::numeric_limits< GUM_SCALAR >::min() 46 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 47 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 48 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 50 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME projectMaxMultiDimArray 51 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) \ 53 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL \ 54 std::numeric_limits< GUM_SCALAR >::min() 56 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME 57 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 58 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 60 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME \ 61 projectMaxMultiDimArray4Pointers 62 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) \ 63 if (*(y) > *(x)) *(x) = *(y) 64 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL \ 65 std::numeric_limits< GUM_SCALAR >::min() 67 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME 68 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 69 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 71 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME \ 72 projectMaxMultiDimArray4Pointers 73 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) \ 74 if (*(y) > *(x)) *(x) = *(y) 75 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL \ 76 std::numeric_limits< GUM_SCALAR >::min() 78 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME 79 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 80 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 84 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectMinMultiDimArray 85 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) \ 87 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL \ 88 std::numeric_limits< GUM_SCALAR >::max() 90 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 91 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 92 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 94 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME projectMinMultiDimArray 95 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) \ 97 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL \ 98 std::numeric_limits< GUM_SCALAR >::max() 100 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME 101 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 102 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 104 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME \ 105 projectMinMultiDimArray4Pointers 106 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) \ 107 if (*(x) > *(y)) *(x) = *(y) 108 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL \ 109 std::numeric_limits< GUM_SCALAR >::max() 111 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME 112 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 113 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 115 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME \ 116 projectMinMultiDimArray4Pointers 117 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) \ 118 if (*(x) > *(y)) *(x) = *(y) 119 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL \ 120 std::numeric_limits< GUM_SCALAR >::max() 122 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME 123 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 124 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 128 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectSumMultiDimArray 129 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) x += y 130 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)0 132 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 133 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 134 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 136 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME projectSumMultiDimArray 137 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) x += y 138 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)0 140 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME 141 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 142 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 144 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME \ 145 projectSumMultiDimArray4Pointers 146 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) *(x) += *(y) 147 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)0 149 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME 150 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 151 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 153 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME \ 154 projectSumMultiDimArray4Pointers 155 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) *(x) += *(y) 156 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)0 158 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME 159 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 160 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 164 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectProductMultiDimArray 165 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) (x) *= (y) 166 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)1 168 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 169 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 170 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 172 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME \ 173 projectProductMultiDimArray 174 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) (x) *= (y) 175 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)1 177 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_IMPL2ARRAY_NAME 178 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 179 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 181 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME \ 182 projectProductMultiDimArray4Pointers 183 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) (*x) *= (*y) 184 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)1 186 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_NAME 187 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 188 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 190 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME \ 191 projectProductMultiDimArray4Pointers 192 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) (*x) *= (*y) 193 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)1 195 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_POINTER_IMPL2ARRAY_NAME 196 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 197 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 203 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectMax 204 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME "max" 206 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 207 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME 210 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectMin 211 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME "min" 213 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 214 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME 217 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectSum 218 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME "sum" 220 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 221 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME 224 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectProduct 225 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME "product" 227 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 228 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_FUNC_NAME 232 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectMaxMultiDimImplementation 233 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) \ 235 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL \ 236 std::numeric_limits< GUM_SCALAR >::min() 238 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 239 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 240 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 242 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectMinMultiDimImplementation 243 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) \ 245 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL \ 246 std::numeric_limits< GUM_SCALAR >::max() 248 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 249 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 250 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 252 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME projectSumMultiDimImplementation 253 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) x += y 254 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)0 256 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 257 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 258 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 260 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME \ 261 projectProductMultiDimImplementation 262 # define GUM_MULTI_DIM_COMPLETE_PROJECTION(x, y) x *= y 263 # define GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL (GUM_SCALAR)1 265 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NAME 266 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION 267 # undef GUM_MULTI_DIM_COMPLETE_PROJECTION_NEUTRAL 276 template <
typename GUM_SCALAR >
278 static bool first_init =
true;
283 std::string MultiDimArrayString(
"MultiDimArray");
284 std::string BaseNameString(
"MultiDimImplementation");
287 registerCompleteProjection< GUM_SCALAR >(
289 registerCompleteProjection< GUM_SCALAR >(
291 registerCompleteProjection< GUM_SCALAR >(
293 registerCompleteProjection< GUM_SCALAR >(
297 registerCompleteProjection< GUM_SCALAR >(
298 "max", BaseNameString, &projectMaxMultiDimImplementation);
299 registerCompleteProjection< GUM_SCALAR >(
300 "min", BaseNameString, &projectMinMultiDimImplementation);
301 registerCompleteProjection< GUM_SCALAR >(
302 "sum", BaseNameString, &projectSumMultiDimImplementation);
303 registerCompleteProjection< GUM_SCALAR >(
304 "product", BaseNameString, &projectProductMultiDimImplementation);
309 template <
typename GUM_SCALAR >
311 static bool first_init =
true;
316 std::string MultiDimArrayString(
"MultiDimArray");
317 std::string BaseNameString(
"MultiDimImplementation");
320 registerCompleteProjection< GUM_SCALAR* >(
322 registerCompleteProjection< GUM_SCALAR* >(
324 registerCompleteProjection< GUM_SCALAR* >(
326 registerCompleteProjection< GUM_SCALAR* >(
334 # undef GUM_COMPLETE_PROJECTION_PATTERN_ALLOWED GUM_SCALAR * projectMinMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR * > *table, Instantiation *instantiation=0)
A specialized function for projecting a multiDimArray using a Min operator.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
GUM_SCALAR projectMinMultiDimArray(const MultiDimArray< GUM_SCALAR > *table, Instantiation *instantiation=0)
A specialized function for projecting a multiDimArray using a Min operator.
GUM_SCALAR projectMaxMultiDimArray(const MultiDimArray< GUM_SCALAR > *table, Instantiation *instantiation=0)
A specialized function for projecting a multiDimArray using a Max operator.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
GUM_SCALAR * projectMaxMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR * > *table, Instantiation *instantiation=0)
A specialized function for projecting a multiDimArray using a Max operator.
void completeProjections4MultiDimInit()
the function used to register all the complete projection operators on multidimImplementations over n...
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.
GUM_SCALAR projectProductMultiDimArray(const MultiDimArray< GUM_SCALAR > *table, Instantiation *instantiation=0)
a function for projecting a multiDimArray using a Product operatorThe function projects a table over ...
void pointerCompleteProjections4MultiDimInit()
The function used to register all the complete projections on multidimImplementations over pointers t...
GUM_SCALAR projectSumMultiDimArray(const MultiDimArray< GUM_SCALAR > *table, Instantiation *instantiation=0)
a specialized function for projecting a multiDimArray using a Sum operatorThe function projects a tab...
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
GUM_SCALAR * projectProductMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR * > *table, Instantiation *instantiation=0)
a function for projecting a multiDimArray using a Product operatorThe function projects a table over ...
GUM_SCALAR * projectSumMultiDimArray4Pointers(const MultiDimArray< GUM_SCALAR * > *table, Instantiation *instantiation=0)
a specialized function for projecting a multiDimArray using a Sum operatorThe function projects a tab...