4 #include "copy_general.hpp"
60 template<
typename Tsrc,
typename Tdst>
87 template<
typename T,
size_t N1>
96 static inline void meta_copy_(
const T src[N1], T dst[N1])
98 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
106 template<
typename Tsrc,
typename Tdst,
size_t N1>
117 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
125 template<
typename Tsrc,
typename Tdst,
size_t N1>
136 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
144 template<
typename Tsrc,
typename Tdst,
size_t N1>
155 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
163 template<
typename T,
size_t N1,
size_t N2>
172 static inline void meta_copy_(
const T src[N1][N2], T dst[N1][N2])
174 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
176 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
185 template<
typename Tsrc,
typename Tdst,
size_t N1,
size_t N2>
196 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
198 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
207 template<
typename Tsrc,
typename Tdst,
size_t N1,
size_t N2>
218 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
220 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
231 template<
typename Tsrc,
typename Tdst,
size_t N1,
size_t N2>
240 static inline void meta_copy_d_(
const Tsrc src[N1][N2], Tdst dst[N1][N2])
242 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
244 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
253 template<
typename T,
size_t N1,
size_t N2,
size_t N3>
262 static inline void meta_copy_(
const T src[N1][N2][N3], T dst[N1][N2][N3])
264 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
266 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
268 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
278 template<
typename T,
size_t N1,
size_t N2,
size_t N3,
size_t N4>
287 static inline void meta_copy_(
const T src[N1][N2][N3][N4], T dst[N1][N2][N3][N4])
289 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
291 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
293 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
295 for (
size_t i4 = 0 ; i4 < N4 ; i4++)
306 template<
typename T,
size_t N1,
size_t N2,
size_t N3,
size_t N4,
size_t N5>
315 static inline void meta_copy_(
const T src[N1][N2][N3][N4][N5], T dst[N1][N2][N3][N4][N5])
317 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
319 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
321 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
323 for (
size_t i4 = 0 ; i4 < N4 ; i4++)
325 for (
size_t i5 = 0 ; i5 < N5 ; i5++)
337 template<
typename T,
size_t N1,
size_t N2,
size_t N3,
size_t N4,
size_t N5,
size_t N6>
346 static inline void meta_copy_(
const T src[N1][N2][N3][N4][N5][N6], T dst[N1][N2][N3][N4][N5][N6])
348 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
350 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
352 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
354 for (
size_t i4 = 0 ; i4 < N4 ; i4++)
356 for (
size_t i5 = 0 ; i5 < N5 ; i5++)
358 for (
size_t i6 = 0 ; i6 < N6 ; i6++)
360 copy_general<T>(src[i1][i2][i3][i4][i5][i6],dst[i1][i2][i3][i4][i5][i6]);
371 template<
typename T,
size_t N1,
size_t N2,
size_t N3,
size_t N4,
size_t N5,
size_t N6,
size_t N7>
380 static inline void meta_copy_(
const T src[N1][N2][N3][N4][N5][N6][N7], T dst[N1][N2][N3][N4][N5][N6][N7])
382 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
384 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
386 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
388 for (
size_t i4 = 0 ; i4 < N4 ; i4++)
390 for (
size_t i5 = 0 ; i5 < N5 ; i5++)
392 for (
size_t i6 = 0 ; i6 < N6 ; i6++)
394 for (
size_t i7 = 0 ; i7 < N7 ; i7++)
396 copy_general<T>(src[i1][i2][i3][i4][i5][i6][i7],dst[i1][i2][i3][i4][i5][i6][i7]);
408 template<
typename T,
size_t N1,
size_t N2,
size_t N3,
size_t N4,
size_t N5,
size_t N6,
size_t N7,
size_t N8>
417 static inline void meta_copy_(
const T src[N1][N2][N3][N4][N5][N6][N7][N8], T dst[N1][N2][N3][N4][N5][N6][N7][N8])
419 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
421 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
423 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
425 for (
size_t i4 = 0 ; i4 < N4 ; i4++)
427 for (
size_t i5 = 0 ; i5 < N5 ; i5++)
429 for (
size_t i6 = 0 ; i6 < N6 ; i6++)
431 for (
size_t i7 = 0 ; i7 < N7 ; i7++)
433 for (
size_t i8 = 0 ; i8 < N8 ; i8++)
435 copy_general<T>(src[i1][i2][i3][i4][i5][i6][i7][i8],dst[i1][i2][i3][i4][i5][i6][i7][i8]);
448 template<
typename T,
size_t N1,
size_t N2,
size_t N3,
size_t N4,
size_t N5,
size_t N6,
size_t N7,
size_t N8,
size_t N9>
457 static inline void meta_copy_(
const T src[N1][N2][N3][N4][N5][N6][N7][N8][N9], T dst[N1][N2][N3][N4][N5][N6][N7][N8][N9])
459 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
461 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
463 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
465 for (
size_t i4 = 0 ; i4 < N4 ; i4++)
467 for (
size_t i5 = 0 ; i5 < N5 ; i5++)
469 for (
size_t i6 = 0 ; i6 < N6 ; i6++)
471 for (
size_t i7 = 0 ; i7 < N7 ; i7++)
473 for (
size_t i8 = 0 ; i8 < N8 ; i8++)
475 for (
size_t i9 = 0 ; i9 < N9 ; i9++)
477 copy_general<T>(src[i1][i2][i3][i4][i5][i6][i7][i8][i9],dst[i1][i2][i3][i4][i5][i6][i7][i8][i9]);
491 template<
typename T,
size_t N1,
size_t N2,
size_t N3,
size_t N4,
size_t N5,
size_t N6,
size_t N7,
size_t N8,
size_t N9,
size_t N10>
492 struct meta_copy<T[N1][N2][N3][N4][N5][N6][N7][N8][N9][N10]>
500 static inline void meta_copy_(
const T src[N1][N2][N3][N4][N5][N6][N7][N8][N9][N10], T dst[N1][N2][N3][N4][N5][N6][N7][N8][N9][N10])
502 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
504 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
506 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
508 for (
size_t i4 = 0 ; i4 < N4 ; i4++)
510 for (
size_t i5 = 0 ; i5 < N5 ; i5++)
512 for (
size_t i6 = 0 ; i6 < N6 ; i6++)
514 for (
size_t i7 = 0 ; i7 < N7 ; i7++)
516 for (
size_t i8 = 0 ; i8 < N8 ; i8++)
518 for (
size_t i9 = 0 ; i9 < N9 ; i9++)
520 for (
size_t i10 = 0 ; i10 < N10 ; i10++)
522 copy_general<T>(src[i1][i2][i3][i4][i5][i6][i7][i8][i9][i10],dst[i1][i2][i3][i4][i5][i6][i7][i8][i9][i10]);
560 template<
template<
typename,
typename>
class op,
typename T>
588 template<
template<
typename,
typename>
class op,
typename T,
size_t N1>
599 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
607 template<
template<
typename,
typename>
class op,
typename T,
size_t N1,
size_t N2>
618 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
620 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
630 template<
template<
typename,
typename>
class op,
typename T,
size_t N1,
size_t N2,
size_t N3>
639 static inline void meta_copy_op_(
const T src[N1][N2][N3], T dst[N1][N2][N3])
641 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
643 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
645 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
655 template<
template<
typename,
typename>
class op,
typename Tsrc,
typename Tdst>
682 template<
template<
typename,
typename>
class op,
typename Tsrc,
typename Tdst,
size_t N1>
693 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
701 template<
template<
typename,
typename>
class op,
typename Tsrc,
typename Tdst,
size_t N1>
712 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
720 template<
template<
typename,
typename>
class op,
typename Tsrc,
typename Tdst,
size_t N1>
731 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
structure to copy aggregates applying an operation
structure to copy aggregates