OpenFPM_pdata  4.1.0
Project that contain the implementation of distributed structures
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 
9 template<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 
51 template<typename T>
52 struct meta_copy
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 
83 template<typename Tsrc,typename Tdst>
84 struct meta_copy_d
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 
112 template<typename T,size_t N1>
113 struct 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 
178 template<typename Tsrc, typename Tdst, size_t N1>
179 struct 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 
211 template<typename Tsrc, typename Tdst, size_t N1>
212 struct 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 
230 template<typename Tsrc, typename Tdst, size_t N1>
231 struct 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 
249 template<typename T,size_t N1,size_t N2>
250 struct 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 
309 template<typename Tsrc, typename Tdst,size_t N1,size_t N2>
310 struct 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 
348 template<typename Tsrc, typename Tdst, size_t N1, size_t N2>
349 struct 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 
372 template<typename Tsrc, typename Tdst, size_t N1, size_t N2>
373 struct 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 
394 template<typename T,size_t N1,size_t N2,size_t N3>
395 struct 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 
419 template<typename T,size_t N1,size_t N2,size_t N3,size_t N4>
420 struct 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 
447 template<typename T,size_t N1,size_t N2,size_t N3,size_t N4,size_t N5>
448 struct 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 
478 template<typename T,size_t N1,size_t N2,size_t N3,size_t N4,size_t N5, size_t N6>
479 struct 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 
512 template<typename T,size_t N1,size_t N2,size_t N3,size_t N4,size_t N5, size_t N6, size_t N7>
513 struct 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 
549 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>
550 struct 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 
589 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>
590 struct 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 
632 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>
633 struct 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 
701 template<template<typename,typename> class op, typename T>
702 struct meta_copy_op
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 
728 template<template<typename,typename> class op, typename T, typename vmpl>
729 struct 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 
747 template<template<typename,typename> class op, typename T,size_t N1>
748 struct 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 
766 template<template<typename,typename> class op, typename T, typename vmpl>
767 struct 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 
788 template<template<typename,typename> class op, typename T,size_t N1,size_t N2>
789 struct 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 
811 template<template<typename,typename> class op, typename T,size_t N1,size_t N2,size_t N3>
812 struct 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 
836 template<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  {
847  copy_general_op<op,Tsrc>(src,dst);
848  }
849 
856  __device__ __host__ static inline void meta_copy_op_d_(const Tsrc & src, Tdst && dst)
857  {
858  copy_general_op<op,Tsrc>(src,dst);
859  }
860 };
861 
863 template<template<typename,typename> class op,typename Tsrc, typename Tdst, size_t N1>
864 struct 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 
882 template<template<typename,typename> class op, typename Tsrc, typename Tdst, size_t N1>
883 struct 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 
901 template<template<typename,typename> class op, typename Tsrc, typename Tdst, typename vmpl>
902 struct 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 
920 template<template<typename,typename> class op, typename Tsrc, typename Tdst, size_t N1>
921 struct 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 
939 template<template<typename,typename> class op, typename Tsrc, typename Tdst, size_t N1, size_t N2>
940 struct 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 
961 template<template<typename,typename> class op, typename Tsrc, typename Tdst, typename vmpl>
962 struct 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
__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_op_d_(const Tsrc &src, Tdst &&dst)
Meta-copy applying an operation.
Definition: meta_copy.hpp:856
convert a type into constant type
Definition: aggregate.hpp:292
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
Definition: meta_copy.hpp:521
static void meta_copy_(const T src[N1][N2][N3][N4], T dst[N1][N2][N3][N4])
copy and object from src to dst
Definition: meta_copy.hpp:428
__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
Definition: meta_copy.hpp:970
__device__ static __host__ void meta_copy_(const T &src, T &dst)
copy and object from src to dst
Definition: meta_copy.hpp:60
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.
Definition: meta_copy.hpp:737
__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
Definition: meta_copy.hpp:151
structure to copy aggregates applying an operation
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
Definition: meta_copy.hpp:598
static void meta_copy_op_(const T &src, T &dst)
Meta-copy applying an operation.
Definition: meta_copy.hpp:710
__device__ static __host__ void meta_copy_op_d_(const Tsrc src[N1], Tdst dst[N1])
copy and object from src to dst
Definition: meta_copy.hpp:929
This class copy general objects applying an operation.
__device__ static __host__ void meta_copy_(const T src[N1], std_array_vector_view< T2 > dst)
copy and object from src to dst
Definition: meta_copy.hpp:136
structure to copy aggregates
static void meta_copy_op_(const T &src, T &&dst)
Meta-copy applying an operation.
Definition: meta_copy.hpp:721
__device__ static __host__ void meta_copy_d_(const Tsrc src[N1], Tdst &&dst)
copy and object from src to dst
Definition: meta_copy.hpp:187
static void meta_copy_op_(const T src[N1][N2], T dst[N1][N2])
Meta-copy applying an operation.
Definition: meta_copy.hpp:797
__device__ static __host__ void meta_copy_d_(const Tsrc &src, Tdst dst[N1])
copy and object from src to dst
Definition: meta_copy.hpp:220
__device__ static __host__ void meta_copy_op_d_(const Tsrc src[N1][N2], Tdst dst[N1][N2])
copy and object from src to dst
Definition: meta_copy.hpp:948
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
Definition: meta_copy.hpp:558
__device__ static __host__ void meta_copy_d_(const Tsrc src[N1], Tdst dst[N1])
copy and object from src to dst
Definition: meta_copy.hpp:239
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
Definition: meta_copy.hpp:487
__device__ static __host__ void meta_copy_op_d_(const Tsrc src[N1], Tdst &&dst)
copy and object from src to dst
Definition: meta_copy.hpp:872
This class copy general objects.
__device__ static __host__ void meta_copy_d_(const Tsrc src[N1][N2], Tdst dst[N1][N2])
copy and object from src to dst
Definition: meta_copy.hpp:381
__device__ static __host__ void meta_copy_op_d_(const Tsrc &src, Tdst &dst)
Meta-copy applying an operation.
Definition: meta_copy.hpp:845
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.
Definition: meta_copy.hpp:775
__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
Definition: meta_copy.hpp:276
__device__ static __host__ void meta_copy_d_(const Tsrc &src, Tdst &dst)
copy and object from src to dst
Definition: meta_copy.hpp:92
__device__ static __host__ void meta_copy_(const T src[N1][N2], T dst[N1][N2])
copy and object from src to dst
Definition: meta_copy.hpp:258
static void meta_copy_op_(const T src[N1][N2][N3], T dst[N1][N2][N3])
Meta-copy applying an operation.
Definition: meta_copy.hpp:820
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
Definition: meta_copy.hpp:456
static void meta_copy_op_(const T src[N1], T dst[N1])
Meta-copy applying an operation.
Definition: meta_copy.hpp:756
__device__ static __host__ void meta_copy_d_(const Tsrc src[N1][N2], Tdst &dst)
Definition: meta_copy.hpp:329
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
Definition: meta_copy.hpp:641
copy for a source object to a destination
static void meta_copy_(const T src[N1][N2][N3], T dst[N1][N2][N3])
copy and object from src to dst
Definition: meta_copy.hpp:403
__device__ static __host__ void meta_copy_d_(const Tsrc src[N1][N2], Tdst &&dst)
Definition: meta_copy.hpp:312
__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
Definition: meta_copy.hpp:910
__device__ static __host__ void meta_copy_(const T src[N1], T dst[N1])
copy and object from src to dst
Definition: meta_copy.hpp:121
__device__ static __host__ void meta_copy_d_(const Tsrc &src, Tdst &&dst)
copy and object from src to dst
Definition: meta_copy.hpp:104
__device__ static __host__ void meta_copy_d_(const Tsrc src[N1], Tdst &dst)
copy and object from src to dst
Definition: meta_copy.hpp:201
__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
Definition: meta_copy.hpp:295
__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
Definition: meta_copy.hpp:167
__device__ static __host__ void meta_copy_d_(const Tsrc &src, Tdst dst[N1][N2])
copy and object from src to dst
Definition: meta_copy.hpp:357
__device__ static __host__ void meta_copy_op_d_(const Tsrc &src, Tdst dst[N1])
copy and object from src to dst
Definition: meta_copy.hpp:891