OpenFPM_pdata  4.1.0
Project that contain the implementation of distributed structures
 
Loading...
Searching...
No Matches
meta_copy.hpp
1#ifndef META_COPY_HPP
2#define META_COPY_HPP
3
4#include "copy_general.hpp"
5#include "util/cuda_util.hpp"
6#include "util/multi_array_openfpm/multi_array_ref_openfpm.hpp"
7
8
9template<typename ArrTypeView>
11{
12 int pos;
13 ArrTypeView arr;
14
15 std_array_vector_view(int pos,ArrTypeView arr)
16 :pos(pos),arr(arr)
17 {}
18
19 decltype(arr[0][0]) operator[](int comp)
20 {
21 return arr[comp][pos];
22 }
23
24 decltype(std::declval<const ArrTypeView>()[0][0]) operator[](int comp) const
25 {
26 return arr[comp][pos];
27 }
28};
29
51template<typename T>
53{
60 __device__ __host__ static inline void meta_copy_(const T & src, T & dst)
61 {
62 copy_general<T>(src,dst);
63 }
64
71 __device__ __host__ static inline void meta_copy_(const T & src, T && dst)
72 {
73 copy_general<T>(src,dst);
74 }
75};
76
83template<typename Tsrc,typename Tdst>
85{
92 __device__ __host__ static inline void meta_copy_d_(const Tsrc & src, Tdst & dst)
93 {
94 //copy_general<Tsrc>(src,dst);
95 dst = src;
96 }
97
104 __device__ __host__ static inline void meta_copy_d_(const Tsrc & src, Tdst && dst)
105 {
106 //copy_general<Tsrc>(src,dst);
107 dst = src;
108 }
109};
110
112template<typename T,size_t N1>
113struct meta_copy<T[N1]>
114{
121 __device__ __host__ static inline void meta_copy_(const T src[N1], T dst[N1])
122 {
123 for (size_t i1 = 0 ; i1 < N1 ; i1++)
124 {
125 copy_general<T>(src[i1],dst[i1]);
126 }
127 }
128
135 template<typename T2>
136 __device__ __host__ static inline void meta_copy_(const T src[N1], std_array_vector_view<T2> dst)
137 {
138 for (size_t i1 = 0 ; i1 < N1 ; i1++)
139 {
140 copy_general<T>(src[i1],dst[i1]);
141 }
142 }
143
150 template<typename v_mpl>
151 __device__ __host__ static inline void meta_copy_(const openfpm::detail::multi_array::sub_array_openfpm<T,1,v_mpl> src,
153 {
154 for (size_t i1 = 0 ; i1 < N1 ; i1++)
155 {
156 copy_general<T>(src[i1],dst[i1]);
157 }
158 }
159
166 template<typename v_mpl>
167 __device__ __host__ static inline void meta_copy_(const openfpm::detail::multi_array::sub_array_openfpm<T,1,v_mpl> src,
168 T * dst)
169 {
170 for (size_t i1 = 0 ; i1 < N1 ; i1++)
171 {
172 copy_general<T>(src[i1],dst[i1]);
173 }
174 }
175};
176
178template<typename Tsrc, typename Tdst, size_t N1>
179struct meta_copy_d<Tsrc[N1],Tdst>
180{
187 __device__ __host__ static inline void meta_copy_d_(const Tsrc src[N1], Tdst && dst)
188 {
189 for (size_t i1 = 0 ; i1 < N1 ; i1++)
190 {
191 copy_general<Tsrc>(src[i1],static_cast<Tsrc&>(dst[i1]));
192 }
193 }
194
201 __device__ __host__ static inline void meta_copy_d_(const Tsrc src[N1], Tdst & dst)
202 {
203 for (size_t i1 = 0 ; i1 < N1 ; i1++)
204 {
205 copy_general<Tsrc>(src[i1],static_cast<Tsrc&>(dst[i1]));
206 }
207 }
208};
209
211template<typename Tsrc, typename Tdst, size_t N1>
212struct meta_copy_d<Tsrc,Tdst[N1]>
213{
220 __device__ __host__ static inline void meta_copy_d_(const Tsrc & src, Tdst dst[N1])
221 {
222 for (size_t i1 = 0 ; i1 < N1 ; i1++)
223 {
224 copy_general<Tdst>(static_cast<const Tdst&>(src[i1]),dst[i1]);
225 }
226 }
227};
228
230template<typename Tsrc, typename Tdst, size_t N1>
231struct meta_copy_d<Tsrc[N1],Tdst[N1]>
232{
239 __device__ __host__ static inline void meta_copy_d_(const Tsrc src[N1], Tdst dst[N1])
240 {
241 for (size_t i1 = 0 ; i1 < N1 ; i1++)
242 {
243 copy_general<Tsrc>(src[i1],dst[i1]);
244 }
245 }
246};
247
249template<typename T,size_t N1,size_t N2>
250struct meta_copy<T[N1][N2]>
251{
258 __device__ __host__ static inline void meta_copy_(const T src[N1][N2], T dst[N1][N2])
259 {
260 for (size_t i1 = 0 ; i1 < N1 ; i1++)
261 {
262 for (size_t i2 = 0 ; i2 < N2 ; i2++)
263 {
264 copy_general<T>(src[i1][i2],dst[i1][i2]);
265 }
266 }
267 }
268
275 template<typename v_mpl>
276 __device__ __host__ static inline void meta_copy_(const openfpm::detail::multi_array::sub_array_openfpm<T,2,v_mpl> src,
278 {
279 for (size_t i1 = 0 ; i1 < N1 ; i1++)
280 {
281 for (size_t i2 = 0 ; i2 < N2 ; i2++)
282 {
283 copy_general<T>(src[i1][i2],dst[i1][i2]);
284 }
285 }
286 }
287
294 template<typename v_mpl>
295 __device__ __host__ static inline void meta_copy_(const openfpm::detail::multi_array::sub_array_openfpm<T,2,v_mpl> src,
296 T dst[N1][N2])
297 {
298 for (size_t i1 = 0 ; i1 < N1 ; i1++)
299 {
300 for (size_t i2 = 0 ; i2 < N2 ; i2++)
301 {
302 copy_general<T>(src[i1][i2],dst[i1][i2]);
303 }
304 }
305 }
306};
307
309template<typename Tsrc, typename Tdst,size_t N1,size_t N2>
310struct meta_copy_d<Tsrc[N1][N2],Tdst>
311{
312 __device__ __host__ static inline void meta_copy_d_(const Tsrc src[N1][N2], Tdst && dst)
313 {
320 for (size_t i1 = 0 ; i1 < N1 ; i1++)
321 {
322 for (size_t i2 = 0 ; i2 < N2 ; i2++)
323 {
324 copy_general<Tsrc>(src[i1][i2],static_cast<Tsrc&>(dst[i1][i2]));
325 }
326 }
327 }
328
329 __device__ __host__ static inline void meta_copy_d_(const Tsrc src[N1][N2], Tdst & dst)
330 {
337 for (size_t i1 = 0 ; i1 < N1 ; i1++)
338 {
339 for (size_t i2 = 0 ; i2 < N2 ; i2++)
340 {
341 copy_general<Tsrc>(src[i1][i2],static_cast<Tsrc&>(dst[i1][i2]));
342 }
343 }
344 }
345};
346
348template<typename Tsrc, typename Tdst, size_t N1, size_t N2>
349struct meta_copy_d<Tsrc,Tdst[N1][N2]>
350{
357 __device__ __host__ static inline void meta_copy_d_(const Tsrc & src, Tdst dst[N1][N2])
358 {
359 for (size_t i1 = 0 ; i1 < N1 ; i1++)
360 {
361 for (size_t i2 = 0 ; i2 < N2 ; i2++)
362 {
363 copy_general<Tdst>(static_cast<const Tdst&>(src[i1][i2]),dst[i1][i2]);
364 }
365 }
366 }
367};
368
369
370
372template<typename Tsrc, typename Tdst, size_t N1, size_t N2>
373struct meta_copy_d<Tsrc[N1][N2],Tdst[N1][N2]>
374{
381 __device__ __host__ static inline void meta_copy_d_(const Tsrc src[N1][N2], Tdst dst[N1][N2])
382 {
383 for (size_t i1 = 0 ; i1 < N1 ; i1++)
384 {
385 for (size_t i2 = 0 ; i2 < N2 ; i2++)
386 {
387 copy_general<Tsrc>(src[i1][i2],dst[i1][i2]);
388 }
389 }
390 }
391};
392
394template<typename T,size_t N1,size_t N2,size_t N3>
395struct meta_copy<T[N1][N2][N3]>
396{
403 static inline void meta_copy_(const T src[N1][N2][N3], T dst[N1][N2][N3])
404 {
405 for (size_t i1 = 0 ; i1 < N1 ; i1++)
406 {
407 for (size_t i2 = 0 ; i2 < N2 ; i2++)
408 {
409 for (size_t i3 = 0 ; i3 < N3 ; i3++)
410 {
411 copy_general<T>(src[i1][i2][i3],dst[i1][i2][i3]);
412 }
413 }
414 }
415 }
416};
417
419template<typename T,size_t N1,size_t N2,size_t N3,size_t N4>
420struct meta_copy<T[N1][N2][N3][N4]>
421{
428 static inline void meta_copy_(const T src[N1][N2][N3][N4], T dst[N1][N2][N3][N4])
429 {
430 for (size_t i1 = 0 ; i1 < N1 ; i1++)
431 {
432 for (size_t i2 = 0 ; i2 < N2 ; i2++)
433 {
434 for (size_t i3 = 0 ; i3 < N3 ; i3++)
435 {
436 for (size_t i4 = 0 ; i4 < N4 ; i4++)
437 {
438 copy_general<T>(src[i1][i2][i3][i4],dst[i1][i2][i3][i4]);
439 }
440 }
441 }
442 }
443 }
444};
445
447template<typename T,size_t N1,size_t N2,size_t N3,size_t N4,size_t N5>
448struct meta_copy<T[N1][N2][N3][N4][N5]>
449{
456 static inline void meta_copy_(const T src[N1][N2][N3][N4][N5], T dst[N1][N2][N3][N4][N5])
457 {
458 for (size_t i1 = 0 ; i1 < N1 ; i1++)
459 {
460 for (size_t i2 = 0 ; i2 < N2 ; i2++)
461 {
462 for (size_t i3 = 0 ; i3 < N3 ; i3++)
463 {
464 for (size_t i4 = 0 ; i4 < N4 ; i4++)
465 {
466 for (size_t i5 = 0 ; i5 < N5 ; i5++)
467 {
468 copy_general<T>(src[i1][i2][i3][i4][i5],dst[i1][i2][i3][i4][i5]);
469 }
470 }
471 }
472 }
473 }
474 }
475};
476
478template<typename T,size_t N1,size_t N2,size_t N3,size_t N4,size_t N5, size_t N6>
479struct meta_copy<T[N1][N2][N3][N4][N5][N6]>
480{
487 static inline void meta_copy_(const T src[N1][N2][N3][N4][N5][N6], T dst[N1][N2][N3][N4][N5][N6])
488 {
489 for (size_t i1 = 0 ; i1 < N1 ; i1++)
490 {
491 for (size_t i2 = 0 ; i2 < N2 ; i2++)
492 {
493 for (size_t i3 = 0 ; i3 < N3 ; i3++)
494 {
495 for (size_t i4 = 0 ; i4 < N4 ; i4++)
496 {
497 for (size_t i5 = 0 ; i5 < N5 ; i5++)
498 {
499 for (size_t i6 = 0 ; i6 < N6 ; i6++)
500 {
501 copy_general<T>(src[i1][i2][i3][i4][i5][i6],dst[i1][i2][i3][i4][i5][i6]);
502 }
503 }
504 }
505 }
506 }
507 }
508 }
509};
510
512template<typename T,size_t N1,size_t N2,size_t N3,size_t N4,size_t N5, size_t N6, size_t N7>
513struct meta_copy<T[N1][N2][N3][N4][N5][N6][N7]>
514{
521 static inline void meta_copy_(const T src[N1][N2][N3][N4][N5][N6][N7], T dst[N1][N2][N3][N4][N5][N6][N7])
522 {
523 for (size_t i1 = 0 ; i1 < N1 ; i1++)
524 {
525 for (size_t i2 = 0 ; i2 < N2 ; i2++)
526 {
527 for (size_t i3 = 0 ; i3 < N3 ; i3++)
528 {
529 for (size_t i4 = 0 ; i4 < N4 ; i4++)
530 {
531 for (size_t i5 = 0 ; i5 < N5 ; i5++)
532 {
533 for (size_t i6 = 0 ; i6 < N6 ; i6++)
534 {
535 for (size_t i7 = 0 ; i7 < N7 ; i7++)
536 {
537 copy_general<T>(src[i1][i2][i3][i4][i5][i6][i7],dst[i1][i2][i3][i4][i5][i6][i7]);
538 }
539 }
540 }
541 }
542 }
543 }
544 }
545 }
546};
547
549template<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>
550struct meta_copy<T[N1][N2][N3][N4][N5][N6][N7][N8]>
551{
558 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])
559 {
560 for (size_t i1 = 0 ; i1 < N1 ; i1++)
561 {
562 for (size_t i2 = 0 ; i2 < N2 ; i2++)
563 {
564 for (size_t i3 = 0 ; i3 < N3 ; i3++)
565 {
566 for (size_t i4 = 0 ; i4 < N4 ; i4++)
567 {
568 for (size_t i5 = 0 ; i5 < N5 ; i5++)
569 {
570 for (size_t i6 = 0 ; i6 < N6 ; i6++)
571 {
572 for (size_t i7 = 0 ; i7 < N7 ; i7++)
573 {
574 for (size_t i8 = 0 ; i8 < N8 ; i8++)
575 {
576 copy_general<T>(src[i1][i2][i3][i4][i5][i6][i7][i8],dst[i1][i2][i3][i4][i5][i6][i7][i8]);
577 }
578 }
579 }
580 }
581 }
582 }
583 }
584 }
585 }
586};
587
589template<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>
590struct meta_copy<T[N1][N2][N3][N4][N5][N6][N7][N8][N9]>
591{
598 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])
599 {
600 for (size_t i1 = 0 ; i1 < N1 ; i1++)
601 {
602 for (size_t i2 = 0 ; i2 < N2 ; i2++)
603 {
604 for (size_t i3 = 0 ; i3 < N3 ; i3++)
605 {
606 for (size_t i4 = 0 ; i4 < N4 ; i4++)
607 {
608 for (size_t i5 = 0 ; i5 < N5 ; i5++)
609 {
610 for (size_t i6 = 0 ; i6 < N6 ; i6++)
611 {
612 for (size_t i7 = 0 ; i7 < N7 ; i7++)
613 {
614 for (size_t i8 = 0 ; i8 < N8 ; i8++)
615 {
616 for (size_t i9 = 0 ; i9 < N9 ; i9++)
617 {
618 copy_general<T>(src[i1][i2][i3][i4][i5][i6][i7][i8][i9],dst[i1][i2][i3][i4][i5][i6][i7][i8][i9]);
619 }
620 }
621 }
622 }
623 }
624 }
625 }
626 }
627 }
628 }
629};
630
632template<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>
633struct meta_copy<T[N1][N2][N3][N4][N5][N6][N7][N8][N9][N10]>
634{
641 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])
642 {
643 for (size_t i1 = 0 ; i1 < N1 ; i1++)
644 {
645 for (size_t i2 = 0 ; i2 < N2 ; i2++)
646 {
647 for (size_t i3 = 0 ; i3 < N3 ; i3++)
648 {
649 for (size_t i4 = 0 ; i4 < N4 ; i4++)
650 {
651 for (size_t i5 = 0 ; i5 < N5 ; i5++)
652 {
653 for (size_t i6 = 0 ; i6 < N6 ; i6++)
654 {
655 for (size_t i7 = 0 ; i7 < N7 ; i7++)
656 {
657 for (size_t i8 = 0 ; i8 < N8 ; i8++)
658 {
659 for (size_t i9 = 0 ; i9 < N9 ; i9++)
660 {
661 for (size_t i10 = 0 ; i10 < N10 ; i10++)
662 {
663 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]);
664 }
665 }
666 }
667 }
668 }
669 }
670 }
671 }
672 }
673 }
674 }
675};
676
678
679
701template<template<typename,typename> class op, typename T>
703{
710 static inline void meta_copy_op_(const T & src, T & dst)
711 {
712 copy_general_op<op,T>(src,dst);
713 }
714
721 static inline void meta_copy_op_(const T & src, T && dst)
722 {
723 copy_general_op<op,T>(src,dst);
724 }
725};
726
728template<template<typename,typename> class op, typename T, typename vmpl>
729struct meta_copy_op<op,openfpm::detail::multi_array::sub_array_openfpm<T,1,vmpl>>
730{
738 {
739 for (size_t i1 = 0 ; i1 < boost::mpl::at<vmpl,boost::mpl::int_<0>>::type::value ; i1++)
740 {
741 copy_general_op<op,T>(src[i1],dst[i1]);
742 }
743 }
744};
745
747template<template<typename,typename> class op, typename T,size_t N1>
748struct meta_copy_op<op,T[N1]>
749{
756 static inline void meta_copy_op_(const T src[N1], T dst[N1])
757 {
758 for (size_t i1 = 0 ; i1 < N1 ; i1++)
759 {
760 copy_general_op<op,T>(src[i1],dst[i1]);
761 }
762 }
763};
764
766template<template<typename,typename> class op, typename T, typename vmpl>
767struct meta_copy_op<op,openfpm::detail::multi_array::sub_array_openfpm<T,2,vmpl>>
768{
776 {
777 for (size_t i1 = 0 ; i1 < boost::mpl::at<vmpl,boost::mpl::int_<0>>::type::value ; i1++)
778 {
779 for (size_t i2 = 0 ; i2 < boost::mpl::at<vmpl,boost::mpl::int_<1>>::type::value ; i2++)
780 {
781 copy_general_op<op,T>(src[i1][i2],dst[i1][i2]);
782 }
783 }
784 }
785};
786
788template<template<typename,typename> class op, typename T,size_t N1,size_t N2>
789struct meta_copy_op<op,T[N1][N2]>
790{
797 static inline void meta_copy_op_(const T src[N1][N2], T dst[N1][N2])
798 {
799 for (size_t i1 = 0 ; i1 < N1 ; i1++)
800 {
801 for (size_t i2 = 0 ; i2 < N2 ; i2++)
802 {
803 copy_general_op<op,T>(src[i1][i2],dst[i1][i2]);
804 }
805 }
806 }
807};
808
809
811template<template<typename,typename> class op, typename T,size_t N1,size_t N2,size_t N3>
812struct meta_copy_op<op,T[N1][N2][N3]>
813{
820 static inline void meta_copy_op_(const T src[N1][N2][N3], T dst[N1][N2][N3])
821 {
822 for (size_t i1 = 0 ; i1 < N1 ; i1++)
823 {
824 for (size_t i2 = 0 ; i2 < N2 ; i2++)
825 {
826 for (size_t i3 = 0 ; i3 < N3 ; i3++)
827 {
828 copy_general_op<op,T>(src[i1][i2][i3],dst[i1][i2][i3]);
829 }
830 }
831 }
832 }
833};
834
835
836template<template<typename,typename> class op, typename Tsrc, typename Tdst>
838{
845 __device__ __host__ static inline void meta_copy_op_d_(const Tsrc & src, Tdst & dst)
846 {
848 }
849
856 __device__ __host__ static inline void meta_copy_op_d_(const Tsrc & src, Tdst && dst)
857 {
859 }
860};
861
863template<template<typename,typename> class op,typename Tsrc, typename Tdst, size_t N1>
864struct meta_copy_op_d<op,Tsrc[N1],Tdst>
865{
872 __device__ __host__ static inline void meta_copy_op_d_(const Tsrc src[N1], Tdst && dst)
873 {
874 for (size_t i1 = 0 ; i1 < N1 ; i1++)
875 {
876 copy_general_op<op,Tsrc>(src[i1],static_cast<Tsrc&>(dst[i1]));
877 }
878 }
879};
880
882template<template<typename,typename> class op, typename Tsrc, typename Tdst, size_t N1>
883struct meta_copy_op_d<op,Tsrc,Tdst[N1]>
884{
891 __device__ __host__ static inline void meta_copy_op_d_(const Tsrc & src, Tdst dst[N1])
892 {
893 for (size_t i1 = 0 ; i1 < N1 ; i1++)
894 {
895 copy_general_op<op,Tdst>(static_cast<const Tdst&>(src[i1]),dst[i1]);
896 }
897 }
898};
899
901template<template<typename,typename> class op, typename Tsrc, typename Tdst, typename vmpl>
902struct meta_copy_op_d<op,openfpm::detail::multi_array::sub_array_openfpm<Tsrc,1,vmpl>,openfpm::detail::multi_array::sub_array_openfpm<Tdst,1,vmpl>>
903{
911 {
912 for (size_t i1 = 0 ; i1 < boost::mpl::at<vmpl,boost::mpl::int_<0>>::type::value ; i1++)
913 {
914 copy_general_op<op,Tdst>(src[i1],dst[i1]);
915 }
916 }
917};
918
920template<template<typename,typename> class op, typename Tsrc, typename Tdst, size_t N1>
921struct meta_copy_op_d<op,Tsrc[N1],Tdst[N1]>
922{
929 __device__ __host__ static inline void meta_copy_op_d_(const Tsrc src[N1], Tdst dst[N1])
930 {
931 for (size_t i1 = 0 ; i1 < N1 ; i1++)
932 {
933 copy_general_op<op,Tdst>(src[i1],dst[i1]);
934 }
935 }
936};
937
939template<template<typename,typename> class op, typename Tsrc, typename Tdst, size_t N1, size_t N2>
940struct meta_copy_op_d<op,Tsrc[N1][N2],Tdst[N1][N2]>
941{
948 __device__ __host__ static inline void meta_copy_op_d_(const Tsrc src[N1][N2], Tdst dst[N1][N2])
949 {
950 for (size_t i1 = 0 ; i1 < N1 ; i1++)
951 {
952 for (size_t i2 = 0 ; i2 < N2 ; i2++)
953 {
954 copy_general_op<op,Tdst>(src[i1][i2],dst[i1][i2]);
955 }
956 }
957 }
958};
959
961template<template<typename,typename> class op, typename Tsrc, typename Tdst, typename vmpl>
962struct meta_copy_op_d<op,openfpm::detail::multi_array::sub_array_openfpm<Tsrc,2,vmpl>,openfpm::detail::multi_array::sub_array_openfpm<Tdst,2,vmpl>>
963{
971 {
972 for (size_t i1 = 0 ; i1 < boost::mpl::at<vmpl,boost::mpl::int_<0>>::type::value ; i1++)
973 {
974 for (size_t i2 = 0 ; i2 < boost::mpl::at<vmpl,boost::mpl::int_<1>>::type::value ; i2++)
975 {
976 copy_general_op<op,Tdst>(src[i1][i2],dst[i1][i2]);
977 }
978 }
979 }
980};
981
982#endif
convert a type into constant type
structure to copy aggregates applying an operation
structure to copy aggregates
static 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])
copy and object from src to dst
static 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])
copy and object from src to dst
static void meta_copy_(const T src[N1][N2][N3][N4][N5][N6][N7][N8], T dst[N1][N2][N3][N4][N5][N6][N7][N8])
copy and object from src to dst
static void meta_copy_(const T src[N1][N2][N3][N4][N5][N6][N7], T dst[N1][N2][N3][N4][N5][N6][N7])
copy and object from src to dst
static void meta_copy_(const T src[N1][N2][N3][N4][N5][N6], T dst[N1][N2][N3][N4][N5][N6])
copy and object from src to dst
static void meta_copy_(const T src[N1][N2][N3][N4][N5], T dst[N1][N2][N3][N4][N5])
copy and object from src to dst
static void meta_copy_(const T src[N1][N2][N3][N4], T dst[N1][N2][N3][N4])
copy and object from src to dst
static void meta_copy_(const T src[N1][N2][N3], T dst[N1][N2][N3])
copy and object from src to dst
__device__ static __host__ void meta_copy_(const openfpm::detail::multi_array::sub_array_openfpm< T, 2, v_mpl > src, T dst[N1][N2])
copy and object from src to dst
__device__ static __host__ void meta_copy_(const T src[N1][N2], T dst[N1][N2])
copy and object from src to dst
__device__ static __host__ void meta_copy_(const openfpm::detail::multi_array::sub_array_openfpm< T, 2, v_mpl > src, openfpm::detail::multi_array::sub_array_openfpm< T, 2, v_mpl > dst)
copy and object from src to dst
__device__ static __host__ void meta_copy_(const T src[N1], T dst[N1])
copy and object from src to dst
__device__ static __host__ void meta_copy_(const openfpm::detail::multi_array::sub_array_openfpm< T, 1, v_mpl > src, openfpm::detail::multi_array::sub_array_openfpm< T, 1, v_mpl > dst)
copy and object from src to dst
__device__ static __host__ void meta_copy_(const T src[N1], std_array_vector_view< T2 > dst)
copy and object from src to dst
__device__ static __host__ void meta_copy_(const openfpm::detail::multi_array::sub_array_openfpm< T, 1, v_mpl > src, T *dst)
copy and object from src to dst
__device__ static __host__ void meta_copy_d_(const Tsrc &src, Tdst dst[N1][N2])
copy and object from src to dst
__device__ static __host__ void meta_copy_d_(const Tsrc &src, Tdst dst[N1])
copy and object from src to dst
__device__ static __host__ void meta_copy_d_(const Tsrc src[N1], Tdst &dst)
copy and object from src to dst
__device__ static __host__ void meta_copy_d_(const Tsrc src[N1], Tdst &&dst)
copy and object from src to dst
__device__ static __host__ void meta_copy_d_(const Tsrc src[N1], Tdst dst[N1])
copy and object from src to dst
__device__ static __host__ void meta_copy_d_(const Tsrc src[N1][N2], Tdst &dst)
__device__ static __host__ void meta_copy_d_(const Tsrc src[N1][N2], Tdst &&dst)
__device__ static __host__ void meta_copy_d_(const Tsrc src[N1][N2], Tdst dst[N1][N2])
copy and object from src to dst
copy for a source object to a destination
Definition meta_copy.hpp:85
__device__ static __host__ void meta_copy_d_(const Tsrc &src, Tdst &&dst)
copy and object from src to dst
__device__ static __host__ void meta_copy_d_(const Tsrc &src, Tdst &dst)
copy and object from src to dst
Definition meta_copy.hpp:92
static void meta_copy_op_(const T src[N1][N2][N3], T dst[N1][N2][N3])
Meta-copy applying an operation.
static void meta_copy_op_(const T src[N1][N2], T dst[N1][N2])
Meta-copy applying an operation.
static void meta_copy_op_(const T src[N1], T dst[N1])
Meta-copy applying an operation.
static void meta_copy_op_(const openfpm::detail::multi_array::sub_array_openfpm< T, 1, vmpl > src, openfpm::detail::multi_array::sub_array_openfpm< T, 1, vmpl > dst)
Meta-copy applying an operation.
static void meta_copy_op_(const openfpm::detail::multi_array::sub_array_openfpm< T, 2, vmpl > src, openfpm::detail::multi_array::sub_array_openfpm< T, 2, vmpl > dst)
Meta-copy applying an operation.
__device__ static __host__ void meta_copy_op_d_(const Tsrc &src, Tdst dst[N1])
copy and object from src to dst
__device__ static __host__ void meta_copy_op_d_(const Tsrc src[N1], Tdst &&dst)
copy and object from src to dst
__device__ static __host__ void meta_copy_op_d_(const Tsrc src[N1], Tdst dst[N1])
copy and object from src to dst
__device__ static __host__ void meta_copy_op_d_(const Tsrc src[N1][N2], Tdst dst[N1][N2])
copy and object from src to dst
__device__ static __host__ void meta_copy_op_d_(const openfpm::detail::multi_array::sub_array_openfpm< Tsrc, 1, vmpl > src, openfpm::detail::multi_array::sub_array_openfpm< Tdst, 1, vmpl > dst)
copy and object from src to dst
__device__ static __host__ void meta_copy_op_d_(const openfpm::detail::multi_array::sub_array_openfpm< Tsrc, 2, vmpl > src, openfpm::detail::multi_array::sub_array_openfpm< Tdst, 2, vmpl > dst)
copy and object from src to dst
__device__ static __host__ void meta_copy_op_d_(const Tsrc &src, Tdst &dst)
Meta-copy applying an operation.
__device__ static __host__ void meta_copy_op_d_(const Tsrc &src, Tdst &&dst)
Meta-copy applying an operation.
This class copy general objects applying an operation.
static void meta_copy_op_(const T &src, T &&dst)
Meta-copy applying an operation.
static void meta_copy_op_(const T &src, T &dst)
Meta-copy applying an operation.
This class copy general objects.
Definition meta_copy.hpp:53
__device__ static __host__ void meta_copy_(const T &src, T &&dst)
copy and object from src to dst
Definition meta_copy.hpp:71
__device__ static __host__ void meta_copy_(const T &src, T &dst)
copy and object from src to dst
Definition meta_copy.hpp:60