VTK-m  2.2
FunctionInterfaceDetailPre.h
Go to the documentation of this file.
1 //============================================================================
2 // Copyright (c) Kitware, Inc.
3 // All rights reserved.
4 // See LICENSE.txt for details.
5 //
6 // This software is distributed WITHOUT ANY WARRANTY; without even
7 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
8 // PURPOSE. See the above copyright notice for more information.
9 //============================================================================
10 // **** DO NOT EDIT THIS FILE!!! ****
11 // This file is automatically generated by FunctionInterfaceDetailPre.h.in
12 
13 #ifndef vtk_m_internal_FunctionInterfaceDetailPre_h
14 #define vtk_m_internal_FunctionInterfaceDetailPre_h
15 
16 #if !defined(vtk_m_internal_FunctionInterface_h) && !defined(VTKM_TEST_HEADER_BUILD)
17 #error FunctionInterfaceDetailPre.h must be included from FunctionInterface.h
18 #endif
19 
20 #include <vtkm/List.h>
21 #include <vtkm/Types.h>
22 #include <vtkm/internal/IndexTag.h>
23 
24 #include <type_traits>
25 
26 #define VTKM_MAX_FUNCTION_PARAMETERS 20
27 
28 
29 namespace vtkm
30 {
31 namespace internal
32 {
33 
38 template <typename T>
39 struct FunctionInterfaceReturnContainer
40 {
41  T Value;
42  static constexpr bool VALID = true;
43 };
44 
45 template <>
46 struct FunctionInterfaceReturnContainer<void>
47 {
48  // Nothing to store for void return.
49  static constexpr bool VALID = false;
50 };
51 
52 namespace detail
53 {
54 
55 //============================================================================
56 
57 // This templated class contains the state of parameters. If you get a compiler
58 // error stating that this class is not specialized, that probably means that
59 // you are using FunctionInterface with an unsupported number of arguments.
60 template <typename FunctionSignature>
61 struct ParameterContainer;
62 
63 // clang-format off
64 
65 template <typename R>
66 struct ParameterContainer<R()>
67 {
68 };
69 
70 template <typename R,
71  typename P1>
72 struct ParameterContainer<R(P1)>
73 {
74  P1 Parameter1;
75 };
76 
77 template <typename R,
78  typename P1,
79  typename P2>
80 struct ParameterContainer<R(P1, P2)>
81 {
82  P1 Parameter1;
83  P2 Parameter2;
84 };
85 
86 template <typename R,
87  typename P1,
88  typename P2,
89  typename P3>
90 struct ParameterContainer<R(P1, P2, P3)>
91 {
92  P1 Parameter1;
93  P2 Parameter2;
94  P3 Parameter3;
95 };
96 
97 template <typename R,
98  typename P1,
99  typename P2,
100  typename P3,
101  typename P4>
102 struct ParameterContainer<R(P1, P2, P3, P4)>
103 {
104  P1 Parameter1;
105  P2 Parameter2;
106  P3 Parameter3;
107  P4 Parameter4;
108 };
109 
110 template <typename R,
111  typename P1,
112  typename P2,
113  typename P3,
114  typename P4,
115  typename P5>
116 struct ParameterContainer<R(P1, P2, P3, P4, P5)>
117 {
118  P1 Parameter1;
119  P2 Parameter2;
120  P3 Parameter3;
121  P4 Parameter4;
122  P5 Parameter5;
123 };
124 
125 template <typename R,
126  typename P1,
127  typename P2,
128  typename P3,
129  typename P4,
130  typename P5,
131  typename P6>
132 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6)>
133 {
134  P1 Parameter1;
135  P2 Parameter2;
136  P3 Parameter3;
137  P4 Parameter4;
138  P5 Parameter5;
139  P6 Parameter6;
140 };
141 
142 template <typename R,
143  typename P1,
144  typename P2,
145  typename P3,
146  typename P4,
147  typename P5,
148  typename P6,
149  typename P7>
150 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7)>
151 {
152  P1 Parameter1;
153  P2 Parameter2;
154  P3 Parameter3;
155  P4 Parameter4;
156  P5 Parameter5;
157  P6 Parameter6;
158  P7 Parameter7;
159 };
160 
161 template <typename R,
162  typename P1,
163  typename P2,
164  typename P3,
165  typename P4,
166  typename P5,
167  typename P6,
168  typename P7,
169  typename P8>
170 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8)>
171 {
172  P1 Parameter1;
173  P2 Parameter2;
174  P3 Parameter3;
175  P4 Parameter4;
176  P5 Parameter5;
177  P6 Parameter6;
178  P7 Parameter7;
179  P8 Parameter8;
180 };
181 
182 template <typename R,
183  typename P1,
184  typename P2,
185  typename P3,
186  typename P4,
187  typename P5,
188  typename P6,
189  typename P7,
190  typename P8,
191  typename P9>
192 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9)>
193 {
194  P1 Parameter1;
195  P2 Parameter2;
196  P3 Parameter3;
197  P4 Parameter4;
198  P5 Parameter5;
199  P6 Parameter6;
200  P7 Parameter7;
201  P8 Parameter8;
202  P9 Parameter9;
203 };
204 
205 template <typename R,
206  typename P1,
207  typename P2,
208  typename P3,
209  typename P4,
210  typename P5,
211  typename P6,
212  typename P7,
213  typename P8,
214  typename P9,
215  typename P10>
216 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10)>
217 {
218  P1 Parameter1;
219  P2 Parameter2;
220  P3 Parameter3;
221  P4 Parameter4;
222  P5 Parameter5;
223  P6 Parameter6;
224  P7 Parameter7;
225  P8 Parameter8;
226  P9 Parameter9;
227  P10 Parameter10;
228 };
229 
230 template <typename R,
231  typename P1,
232  typename P2,
233  typename P3,
234  typename P4,
235  typename P5,
236  typename P6,
237  typename P7,
238  typename P8,
239  typename P9,
240  typename P10,
241  typename P11>
242 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11)>
243 {
244  P1 Parameter1;
245  P2 Parameter2;
246  P3 Parameter3;
247  P4 Parameter4;
248  P5 Parameter5;
249  P6 Parameter6;
250  P7 Parameter7;
251  P8 Parameter8;
252  P9 Parameter9;
253  P10 Parameter10;
254  P11 Parameter11;
255 };
256 
257 template <typename R,
258  typename P1,
259  typename P2,
260  typename P3,
261  typename P4,
262  typename P5,
263  typename P6,
264  typename P7,
265  typename P8,
266  typename P9,
267  typename P10,
268  typename P11,
269  typename P12>
270 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12)>
271 {
272  P1 Parameter1;
273  P2 Parameter2;
274  P3 Parameter3;
275  P4 Parameter4;
276  P5 Parameter5;
277  P6 Parameter6;
278  P7 Parameter7;
279  P8 Parameter8;
280  P9 Parameter9;
281  P10 Parameter10;
282  P11 Parameter11;
283  P12 Parameter12;
284 };
285 
286 template <typename R,
287  typename P1,
288  typename P2,
289  typename P3,
290  typename P4,
291  typename P5,
292  typename P6,
293  typename P7,
294  typename P8,
295  typename P9,
296  typename P10,
297  typename P11,
298  typename P12,
299  typename P13>
300 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13)>
301 {
302  P1 Parameter1;
303  P2 Parameter2;
304  P3 Parameter3;
305  P4 Parameter4;
306  P5 Parameter5;
307  P6 Parameter6;
308  P7 Parameter7;
309  P8 Parameter8;
310  P9 Parameter9;
311  P10 Parameter10;
312  P11 Parameter11;
313  P12 Parameter12;
314  P13 Parameter13;
315 };
316 
317 template <typename R,
318  typename P1,
319  typename P2,
320  typename P3,
321  typename P4,
322  typename P5,
323  typename P6,
324  typename P7,
325  typename P8,
326  typename P9,
327  typename P10,
328  typename P11,
329  typename P12,
330  typename P13,
331  typename P14>
332 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14)>
333 {
334  P1 Parameter1;
335  P2 Parameter2;
336  P3 Parameter3;
337  P4 Parameter4;
338  P5 Parameter5;
339  P6 Parameter6;
340  P7 Parameter7;
341  P8 Parameter8;
342  P9 Parameter9;
343  P10 Parameter10;
344  P11 Parameter11;
345  P12 Parameter12;
346  P13 Parameter13;
347  P14 Parameter14;
348 };
349 
350 template <typename R,
351  typename P1,
352  typename P2,
353  typename P3,
354  typename P4,
355  typename P5,
356  typename P6,
357  typename P7,
358  typename P8,
359  typename P9,
360  typename P10,
361  typename P11,
362  typename P12,
363  typename P13,
364  typename P14,
365  typename P15>
366 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15)>
367 {
368  P1 Parameter1;
369  P2 Parameter2;
370  P3 Parameter3;
371  P4 Parameter4;
372  P5 Parameter5;
373  P6 Parameter6;
374  P7 Parameter7;
375  P8 Parameter8;
376  P9 Parameter9;
377  P10 Parameter10;
378  P11 Parameter11;
379  P12 Parameter12;
380  P13 Parameter13;
381  P14 Parameter14;
382  P15 Parameter15;
383 };
384 
385 template <typename R,
386  typename P1,
387  typename P2,
388  typename P3,
389  typename P4,
390  typename P5,
391  typename P6,
392  typename P7,
393  typename P8,
394  typename P9,
395  typename P10,
396  typename P11,
397  typename P12,
398  typename P13,
399  typename P14,
400  typename P15,
401  typename P16>
402 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16)>
403 {
404  P1 Parameter1;
405  P2 Parameter2;
406  P3 Parameter3;
407  P4 Parameter4;
408  P5 Parameter5;
409  P6 Parameter6;
410  P7 Parameter7;
411  P8 Parameter8;
412  P9 Parameter9;
413  P10 Parameter10;
414  P11 Parameter11;
415  P12 Parameter12;
416  P13 Parameter13;
417  P14 Parameter14;
418  P15 Parameter15;
419  P16 Parameter16;
420 };
421 
422 template <typename R,
423  typename P1,
424  typename P2,
425  typename P3,
426  typename P4,
427  typename P5,
428  typename P6,
429  typename P7,
430  typename P8,
431  typename P9,
432  typename P10,
433  typename P11,
434  typename P12,
435  typename P13,
436  typename P14,
437  typename P15,
438  typename P16,
439  typename P17>
440 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17)>
441 {
442  P1 Parameter1;
443  P2 Parameter2;
444  P3 Parameter3;
445  P4 Parameter4;
446  P5 Parameter5;
447  P6 Parameter6;
448  P7 Parameter7;
449  P8 Parameter8;
450  P9 Parameter9;
451  P10 Parameter10;
452  P11 Parameter11;
453  P12 Parameter12;
454  P13 Parameter13;
455  P14 Parameter14;
456  P15 Parameter15;
457  P16 Parameter16;
458  P17 Parameter17;
459 };
460 
461 template <typename R,
462  typename P1,
463  typename P2,
464  typename P3,
465  typename P4,
466  typename P5,
467  typename P6,
468  typename P7,
469  typename P8,
470  typename P9,
471  typename P10,
472  typename P11,
473  typename P12,
474  typename P13,
475  typename P14,
476  typename P15,
477  typename P16,
478  typename P17,
479  typename P18>
480 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18)>
481 {
482  P1 Parameter1;
483  P2 Parameter2;
484  P3 Parameter3;
485  P4 Parameter4;
486  P5 Parameter5;
487  P6 Parameter6;
488  P7 Parameter7;
489  P8 Parameter8;
490  P9 Parameter9;
491  P10 Parameter10;
492  P11 Parameter11;
493  P12 Parameter12;
494  P13 Parameter13;
495  P14 Parameter14;
496  P15 Parameter15;
497  P16 Parameter16;
498  P17 Parameter17;
499  P18 Parameter18;
500 };
501 
502 template <typename R,
503  typename P1,
504  typename P2,
505  typename P3,
506  typename P4,
507  typename P5,
508  typename P6,
509  typename P7,
510  typename P8,
511  typename P9,
512  typename P10,
513  typename P11,
514  typename P12,
515  typename P13,
516  typename P14,
517  typename P15,
518  typename P16,
519  typename P17,
520  typename P18,
521  typename P19>
522 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19)>
523 {
524  P1 Parameter1;
525  P2 Parameter2;
526  P3 Parameter3;
527  P4 Parameter4;
528  P5 Parameter5;
529  P6 Parameter6;
530  P7 Parameter7;
531  P8 Parameter8;
532  P9 Parameter9;
533  P10 Parameter10;
534  P11 Parameter11;
535  P12 Parameter12;
536  P13 Parameter13;
537  P14 Parameter14;
538  P15 Parameter15;
539  P16 Parameter16;
540  P17 Parameter17;
541  P18 Parameter18;
542  P19 Parameter19;
543 };
544 
545 template <typename R,
546  typename P1,
547  typename P2,
548  typename P3,
549  typename P4,
550  typename P5,
551  typename P6,
552  typename P7,
553  typename P8,
554  typename P9,
555  typename P10,
556  typename P11,
557  typename P12,
558  typename P13,
559  typename P14,
560  typename P15,
561  typename P16,
562  typename P17,
563  typename P18,
564  typename P19,
565  typename P20>
566 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20)>
567 {
568  P1 Parameter1;
569  P2 Parameter2;
570  P3 Parameter3;
571  P4 Parameter4;
572  P5 Parameter5;
573  P6 Parameter6;
574  P7 Parameter7;
575  P8 Parameter8;
576  P9 Parameter9;
577  P10 Parameter10;
578  P11 Parameter11;
579  P12 Parameter12;
580  P13 Parameter13;
581  P14 Parameter14;
582  P15 Parameter15;
583  P16 Parameter16;
584  P17 Parameter17;
585  P18 Parameter18;
586  P19 Parameter19;
587  P20 Parameter20;
588 };
589 
590 // clang-format on
591 
592 //============================================================================
593 template <typename>
594 struct FunctionSigInfo;
595 template <typename R, typename... ArgTypes>
596 struct FunctionSigInfo<R(ArgTypes...)>
597 {
598  static constexpr std::size_t Arity = sizeof...(ArgTypes);
599  using ArityType = std::integral_constant<int, static_cast<int>(Arity)>;
600 
601  using ResultType = R;
602  using Components = vtkm::List<R, ArgTypes...>;
603  using Parameters = vtkm::List<ArgTypes...>;
604 };
605 
606 template <int, typename>
607 struct AtType;
608 template <int Index, typename R, typename... ArgTypes>
609 struct AtType<Index, R(ArgTypes...)>
610 {
611  using type = vtkm::ListAt<vtkm::List<R, ArgTypes...>, Index>;
612 };
613 
614 //============================================================================
615 
616 // clang-format off
617 
619 template <typename FunctionSignature>
620 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
621  vtkm::internal::IndexTag<1>)
622  -> decltype(parameters.Parameter1) const&
623 {
624  return parameters.Parameter1;
625 }
627 template <typename FunctionSignature>
628 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
629  vtkm::internal::IndexTag<2>)
630  -> decltype(parameters.Parameter2) const&
631 {
632  return parameters.Parameter2;
633 }
635 template <typename FunctionSignature>
636 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
637  vtkm::internal::IndexTag<3>)
638  -> decltype(parameters.Parameter3) const&
639 {
640  return parameters.Parameter3;
641 }
643 template <typename FunctionSignature>
644 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
645  vtkm::internal::IndexTag<4>)
646  -> decltype(parameters.Parameter4) const&
647 {
648  return parameters.Parameter4;
649 }
651 template <typename FunctionSignature>
652 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
653  vtkm::internal::IndexTag<5>)
654  -> decltype(parameters.Parameter5) const&
655 {
656  return parameters.Parameter5;
657 }
659 template <typename FunctionSignature>
660 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
661  vtkm::internal::IndexTag<6>)
662  -> decltype(parameters.Parameter6) const&
663 {
664  return parameters.Parameter6;
665 }
667 template <typename FunctionSignature>
668 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
669  vtkm::internal::IndexTag<7>)
670  -> decltype(parameters.Parameter7) const&
671 {
672  return parameters.Parameter7;
673 }
675 template <typename FunctionSignature>
676 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
677  vtkm::internal::IndexTag<8>)
678  -> decltype(parameters.Parameter8) const&
679 {
680  return parameters.Parameter8;
681 }
683 template <typename FunctionSignature>
684 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
685  vtkm::internal::IndexTag<9>)
686  -> decltype(parameters.Parameter9) const&
687 {
688  return parameters.Parameter9;
689 }
691 template <typename FunctionSignature>
692 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
693  vtkm::internal::IndexTag<10>)
694  -> decltype(parameters.Parameter10) const&
695 {
696  return parameters.Parameter10;
697 }
699 template <typename FunctionSignature>
700 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
701  vtkm::internal::IndexTag<11>)
702  -> decltype(parameters.Parameter11) const&
703 {
704  return parameters.Parameter11;
705 }
707 template <typename FunctionSignature>
708 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
709  vtkm::internal::IndexTag<12>)
710  -> decltype(parameters.Parameter12) const&
711 {
712  return parameters.Parameter12;
713 }
715 template <typename FunctionSignature>
716 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
717  vtkm::internal::IndexTag<13>)
718  -> decltype(parameters.Parameter13) const&
719 {
720  return parameters.Parameter13;
721 }
723 template <typename FunctionSignature>
724 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
725  vtkm::internal::IndexTag<14>)
726  -> decltype(parameters.Parameter14) const&
727 {
728  return parameters.Parameter14;
729 }
731 template <typename FunctionSignature>
732 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
733  vtkm::internal::IndexTag<15>)
734  -> decltype(parameters.Parameter15) const&
735 {
736  return parameters.Parameter15;
737 }
739 template <typename FunctionSignature>
740 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
741  vtkm::internal::IndexTag<16>)
742  -> decltype(parameters.Parameter16) const&
743 {
744  return parameters.Parameter16;
745 }
747 template <typename FunctionSignature>
748 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
749  vtkm::internal::IndexTag<17>)
750  -> decltype(parameters.Parameter17) const&
751 {
752  return parameters.Parameter17;
753 }
755 template <typename FunctionSignature>
756 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
757  vtkm::internal::IndexTag<18>)
758  -> decltype(parameters.Parameter18) const&
759 {
760  return parameters.Parameter18;
761 }
763 template <typename FunctionSignature>
764 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
765  vtkm::internal::IndexTag<19>)
766  -> decltype(parameters.Parameter19) const&
767 {
768  return parameters.Parameter19;
769 }
771 template <typename FunctionSignature>
772 VTKM_EXEC_CONT auto ParameterGet(const ParameterContainer<FunctionSignature>& parameters,
773  vtkm::internal::IndexTag<20>)
774  -> decltype(parameters.Parameter20) const&
775 {
776  return parameters.Parameter20;
777 }
778 
779 // clang-format on
780 
781 //============================================================================
782 
783 template <typename OriginalSignature, typename Transform>
784 struct FunctionInterfaceStaticTransformType;
785 
786 // clang-format off
787 
789 template <typename Result,
790  typename Transform,
791  typename OriginalR>
792 VTKM_CONT Result DoStaticTransformCont(
793  const Transform& transform,
794  ParameterContainer<OriginalR()>& originalParameters)
795 {
796  (void)transform;
797  (void)originalParameters;
798 }
799 
801 template <typename Result,
802  typename Transform,
803  typename OriginalR,
804  typename OriginalP1>
805 VTKM_CONT Result DoStaticTransformCont(
806  const Transform& transform,
807  ParameterContainer<OriginalR(OriginalP1)>& originalParameters)
808 {
809  return Result{
810  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>())
811  };
812 }
813 
815 template <typename Result,
816  typename Transform,
817  typename OriginalR,
818  typename OriginalP1,
819  typename OriginalP2>
820 VTKM_CONT Result DoStaticTransformCont(
821  const Transform& transform,
822  ParameterContainer<OriginalR(OriginalP1, OriginalP2)>& originalParameters)
823 {
824  return Result{
825  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
826  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>())
827  };
828 }
829 
831 template <typename Result,
832  typename Transform,
833  typename OriginalR,
834  typename OriginalP1,
835  typename OriginalP2,
836  typename OriginalP3>
837 VTKM_CONT Result DoStaticTransformCont(
838  const Transform& transform,
839  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3)>& originalParameters)
840 {
841  return Result{
842  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
843  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
844  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>())
845  };
846 }
847 
849 template <typename Result,
850  typename Transform,
851  typename OriginalR,
852  typename OriginalP1,
853  typename OriginalP2,
854  typename OriginalP3,
855  typename OriginalP4>
856 VTKM_CONT Result DoStaticTransformCont(
857  const Transform& transform,
858  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4)>& originalParameters)
859 {
860  return Result{
861  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
862  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
863  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
864  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>())
865  };
866 }
867 
869 template <typename Result,
870  typename Transform,
871  typename OriginalR,
872  typename OriginalP1,
873  typename OriginalP2,
874  typename OriginalP3,
875  typename OriginalP4,
876  typename OriginalP5>
877 VTKM_CONT Result DoStaticTransformCont(
878  const Transform& transform,
879  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5)>& originalParameters)
880 {
881  return Result{
882  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
883  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
884  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
885  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
886  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>())
887  };
888 }
889 
891 template <typename Result,
892  typename Transform,
893  typename OriginalR,
894  typename OriginalP1,
895  typename OriginalP2,
896  typename OriginalP3,
897  typename OriginalP4,
898  typename OriginalP5,
899  typename OriginalP6>
900 VTKM_CONT Result DoStaticTransformCont(
901  const Transform& transform,
902  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6)>& originalParameters)
903 {
904  return Result{
905  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
906  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
907  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
908  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
909  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
910  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>())
911  };
912 }
913 
915 template <typename Result,
916  typename Transform,
917  typename OriginalR,
918  typename OriginalP1,
919  typename OriginalP2,
920  typename OriginalP3,
921  typename OriginalP4,
922  typename OriginalP5,
923  typename OriginalP6,
924  typename OriginalP7>
925 VTKM_CONT Result DoStaticTransformCont(
926  const Transform& transform,
927  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7)>& originalParameters)
928 {
929  return Result{
930  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
931  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
932  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
933  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
934  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
935  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
936  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>())
937  };
938 }
939 
941 template <typename Result,
942  typename Transform,
943  typename OriginalR,
944  typename OriginalP1,
945  typename OriginalP2,
946  typename OriginalP3,
947  typename OriginalP4,
948  typename OriginalP5,
949  typename OriginalP6,
950  typename OriginalP7,
951  typename OriginalP8>
952 VTKM_CONT Result DoStaticTransformCont(
953  const Transform& transform,
954  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8)>& originalParameters)
955 {
956  return Result{
957  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
958  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
959  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
960  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
961  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
962  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
963  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>()),
964  transform(originalParameters.Parameter8, vtkm::internal::IndexTag<8>())
965  };
966 }
967 
969 template <typename Result,
970  typename Transform,
971  typename OriginalR,
972  typename OriginalP1,
973  typename OriginalP2,
974  typename OriginalP3,
975  typename OriginalP4,
976  typename OriginalP5,
977  typename OriginalP6,
978  typename OriginalP7,
979  typename OriginalP8,
980  typename OriginalP9>
981 VTKM_CONT Result DoStaticTransformCont(
982  const Transform& transform,
983  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9)>& originalParameters)
984 {
985  return Result{
986  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
987  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
988  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
989  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
990  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
991  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
992  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>()),
993  transform(originalParameters.Parameter8, vtkm::internal::IndexTag<8>()),
994  transform(originalParameters.Parameter9, vtkm::internal::IndexTag<9>())
995  };
996 }
997 
999 template <typename Result,
1000  typename Transform,
1001  typename OriginalR,
1002  typename OriginalP1,
1003  typename OriginalP2,
1004  typename OriginalP3,
1005  typename OriginalP4,
1006  typename OriginalP5,
1007  typename OriginalP6,
1008  typename OriginalP7,
1009  typename OriginalP8,
1010  typename OriginalP9,
1011  typename OriginalP10>
1012 VTKM_CONT Result DoStaticTransformCont(
1013  const Transform& transform,
1014  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10)>& originalParameters)
1015 {
1016  return Result{
1017  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
1018  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
1019  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
1020  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
1021  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
1022  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
1023  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>()),
1024  transform(originalParameters.Parameter8, vtkm::internal::IndexTag<8>()),
1025  transform(originalParameters.Parameter9, vtkm::internal::IndexTag<9>()),
1026  transform(originalParameters.Parameter10, vtkm::internal::IndexTag<10>())
1027  };
1028 }
1029 
1031 template <typename Result,
1032  typename Transform,
1033  typename OriginalR,
1034  typename OriginalP1,
1035  typename OriginalP2,
1036  typename OriginalP3,
1037  typename OriginalP4,
1038  typename OriginalP5,
1039  typename OriginalP6,
1040  typename OriginalP7,
1041  typename OriginalP8,
1042  typename OriginalP9,
1043  typename OriginalP10,
1044  typename OriginalP11>
1045 VTKM_CONT Result DoStaticTransformCont(
1046  const Transform& transform,
1047  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11)>& originalParameters)
1048 {
1049  return Result{
1050  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
1051  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
1052  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
1053  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
1054  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
1055  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
1056  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>()),
1057  transform(originalParameters.Parameter8, vtkm::internal::IndexTag<8>()),
1058  transform(originalParameters.Parameter9, vtkm::internal::IndexTag<9>()),
1059  transform(originalParameters.Parameter10, vtkm::internal::IndexTag<10>()),
1060  transform(originalParameters.Parameter11, vtkm::internal::IndexTag<11>())
1061  };
1062 }
1063 
1065 template <typename Result,
1066  typename Transform,
1067  typename OriginalR,
1068  typename OriginalP1,
1069  typename OriginalP2,
1070  typename OriginalP3,
1071  typename OriginalP4,
1072  typename OriginalP5,
1073  typename OriginalP6,
1074  typename OriginalP7,
1075  typename OriginalP8,
1076  typename OriginalP9,
1077  typename OriginalP10,
1078  typename OriginalP11,
1079  typename OriginalP12>
1080 VTKM_CONT Result DoStaticTransformCont(
1081  const Transform& transform,
1082  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12)>& originalParameters)
1083 {
1084  return Result{
1085  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
1086  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
1087  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
1088  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
1089  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
1090  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
1091  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>()),
1092  transform(originalParameters.Parameter8, vtkm::internal::IndexTag<8>()),
1093  transform(originalParameters.Parameter9, vtkm::internal::IndexTag<9>()),
1094  transform(originalParameters.Parameter10, vtkm::internal::IndexTag<10>()),
1095  transform(originalParameters.Parameter11, vtkm::internal::IndexTag<11>()),
1096  transform(originalParameters.Parameter12, vtkm::internal::IndexTag<12>())
1097  };
1098 }
1099 
1101 template <typename Result,
1102  typename Transform,
1103  typename OriginalR,
1104  typename OriginalP1,
1105  typename OriginalP2,
1106  typename OriginalP3,
1107  typename OriginalP4,
1108  typename OriginalP5,
1109  typename OriginalP6,
1110  typename OriginalP7,
1111  typename OriginalP8,
1112  typename OriginalP9,
1113  typename OriginalP10,
1114  typename OriginalP11,
1115  typename OriginalP12,
1116  typename OriginalP13>
1117 VTKM_CONT Result DoStaticTransformCont(
1118  const Transform& transform,
1119  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12, OriginalP13)>& originalParameters)
1120 {
1121  return Result{
1122  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
1123  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
1124  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
1125  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
1126  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
1127  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
1128  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>()),
1129  transform(originalParameters.Parameter8, vtkm::internal::IndexTag<8>()),
1130  transform(originalParameters.Parameter9, vtkm::internal::IndexTag<9>()),
1131  transform(originalParameters.Parameter10, vtkm::internal::IndexTag<10>()),
1132  transform(originalParameters.Parameter11, vtkm::internal::IndexTag<11>()),
1133  transform(originalParameters.Parameter12, vtkm::internal::IndexTag<12>()),
1134  transform(originalParameters.Parameter13, vtkm::internal::IndexTag<13>())
1135  };
1136 }
1137 
1139 template <typename Result,
1140  typename Transform,
1141  typename OriginalR,
1142  typename OriginalP1,
1143  typename OriginalP2,
1144  typename OriginalP3,
1145  typename OriginalP4,
1146  typename OriginalP5,
1147  typename OriginalP6,
1148  typename OriginalP7,
1149  typename OriginalP8,
1150  typename OriginalP9,
1151  typename OriginalP10,
1152  typename OriginalP11,
1153  typename OriginalP12,
1154  typename OriginalP13,
1155  typename OriginalP14>
1156 VTKM_CONT Result DoStaticTransformCont(
1157  const Transform& transform,
1158  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12, OriginalP13, OriginalP14)>& originalParameters)
1159 {
1160  return Result{
1161  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
1162  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
1163  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
1164  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
1165  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
1166  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
1167  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>()),
1168  transform(originalParameters.Parameter8, vtkm::internal::IndexTag<8>()),
1169  transform(originalParameters.Parameter9, vtkm::internal::IndexTag<9>()),
1170  transform(originalParameters.Parameter10, vtkm::internal::IndexTag<10>()),
1171  transform(originalParameters.Parameter11, vtkm::internal::IndexTag<11>()),
1172  transform(originalParameters.Parameter12, vtkm::internal::IndexTag<12>()),
1173  transform(originalParameters.Parameter13, vtkm::internal::IndexTag<13>()),
1174  transform(originalParameters.Parameter14, vtkm::internal::IndexTag<14>())
1175  };
1176 }
1177 
1179 template <typename Result,
1180  typename Transform,
1181  typename OriginalR,
1182  typename OriginalP1,
1183  typename OriginalP2,
1184  typename OriginalP3,
1185  typename OriginalP4,
1186  typename OriginalP5,
1187  typename OriginalP6,
1188  typename OriginalP7,
1189  typename OriginalP8,
1190  typename OriginalP9,
1191  typename OriginalP10,
1192  typename OriginalP11,
1193  typename OriginalP12,
1194  typename OriginalP13,
1195  typename OriginalP14,
1196  typename OriginalP15>
1197 VTKM_CONT Result DoStaticTransformCont(
1198  const Transform& transform,
1199  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12, OriginalP13, OriginalP14, OriginalP15)>& originalParameters)
1200 {
1201  return Result{
1202  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
1203  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
1204  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
1205  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
1206  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
1207  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
1208  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>()),
1209  transform(originalParameters.Parameter8, vtkm::internal::IndexTag<8>()),
1210  transform(originalParameters.Parameter9, vtkm::internal::IndexTag<9>()),
1211  transform(originalParameters.Parameter10, vtkm::internal::IndexTag<10>()),
1212  transform(originalParameters.Parameter11, vtkm::internal::IndexTag<11>()),
1213  transform(originalParameters.Parameter12, vtkm::internal::IndexTag<12>()),
1214  transform(originalParameters.Parameter13, vtkm::internal::IndexTag<13>()),
1215  transform(originalParameters.Parameter14, vtkm::internal::IndexTag<14>()),
1216  transform(originalParameters.Parameter15, vtkm::internal::IndexTag<15>())
1217  };
1218 }
1219 
1221 template <typename Result,
1222  typename Transform,
1223  typename OriginalR,
1224  typename OriginalP1,
1225  typename OriginalP2,
1226  typename OriginalP3,
1227  typename OriginalP4,
1228  typename OriginalP5,
1229  typename OriginalP6,
1230  typename OriginalP7,
1231  typename OriginalP8,
1232  typename OriginalP9,
1233  typename OriginalP10,
1234  typename OriginalP11,
1235  typename OriginalP12,
1236  typename OriginalP13,
1237  typename OriginalP14,
1238  typename OriginalP15,
1239  typename OriginalP16>
1240 VTKM_CONT Result DoStaticTransformCont(
1241  const Transform& transform,
1242  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12, OriginalP13, OriginalP14, OriginalP15, OriginalP16)>& originalParameters)
1243 {
1244  return Result{
1245  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
1246  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
1247  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
1248  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
1249  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
1250  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
1251  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>()),
1252  transform(originalParameters.Parameter8, vtkm::internal::IndexTag<8>()),
1253  transform(originalParameters.Parameter9, vtkm::internal::IndexTag<9>()),
1254  transform(originalParameters.Parameter10, vtkm::internal::IndexTag<10>()),
1255  transform(originalParameters.Parameter11, vtkm::internal::IndexTag<11>()),
1256  transform(originalParameters.Parameter12, vtkm::internal::IndexTag<12>()),
1257  transform(originalParameters.Parameter13, vtkm::internal::IndexTag<13>()),
1258  transform(originalParameters.Parameter14, vtkm::internal::IndexTag<14>()),
1259  transform(originalParameters.Parameter15, vtkm::internal::IndexTag<15>()),
1260  transform(originalParameters.Parameter16, vtkm::internal::IndexTag<16>())
1261  };
1262 }
1263 
1265 template <typename Result,
1266  typename Transform,
1267  typename OriginalR,
1268  typename OriginalP1,
1269  typename OriginalP2,
1270  typename OriginalP3,
1271  typename OriginalP4,
1272  typename OriginalP5,
1273  typename OriginalP6,
1274  typename OriginalP7,
1275  typename OriginalP8,
1276  typename OriginalP9,
1277  typename OriginalP10,
1278  typename OriginalP11,
1279  typename OriginalP12,
1280  typename OriginalP13,
1281  typename OriginalP14,
1282  typename OriginalP15,
1283  typename OriginalP16,
1284  typename OriginalP17>
1285 VTKM_CONT Result DoStaticTransformCont(
1286  const Transform& transform,
1287  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12, OriginalP13, OriginalP14, OriginalP15, OriginalP16, OriginalP17)>& originalParameters)
1288 {
1289  return Result{
1290  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
1291  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
1292  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
1293  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
1294  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
1295  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
1296  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>()),
1297  transform(originalParameters.Parameter8, vtkm::internal::IndexTag<8>()),
1298  transform(originalParameters.Parameter9, vtkm::internal::IndexTag<9>()),
1299  transform(originalParameters.Parameter10, vtkm::internal::IndexTag<10>()),
1300  transform(originalParameters.Parameter11, vtkm::internal::IndexTag<11>()),
1301  transform(originalParameters.Parameter12, vtkm::internal::IndexTag<12>()),
1302  transform(originalParameters.Parameter13, vtkm::internal::IndexTag<13>()),
1303  transform(originalParameters.Parameter14, vtkm::internal::IndexTag<14>()),
1304  transform(originalParameters.Parameter15, vtkm::internal::IndexTag<15>()),
1305  transform(originalParameters.Parameter16, vtkm::internal::IndexTag<16>()),
1306  transform(originalParameters.Parameter17, vtkm::internal::IndexTag<17>())
1307  };
1308 }
1309 
1311 template <typename Result,
1312  typename Transform,
1313  typename OriginalR,
1314  typename OriginalP1,
1315  typename OriginalP2,
1316  typename OriginalP3,
1317  typename OriginalP4,
1318  typename OriginalP5,
1319  typename OriginalP6,
1320  typename OriginalP7,
1321  typename OriginalP8,
1322  typename OriginalP9,
1323  typename OriginalP10,
1324  typename OriginalP11,
1325  typename OriginalP12,
1326  typename OriginalP13,
1327  typename OriginalP14,
1328  typename OriginalP15,
1329  typename OriginalP16,
1330  typename OriginalP17,
1331  typename OriginalP18>
1332 VTKM_CONT Result DoStaticTransformCont(
1333  const Transform& transform,
1334  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12, OriginalP13, OriginalP14, OriginalP15, OriginalP16, OriginalP17, OriginalP18)>& originalParameters)
1335 {
1336  return Result{
1337  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
1338  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
1339  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
1340  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
1341  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
1342  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
1343  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>()),
1344  transform(originalParameters.Parameter8, vtkm::internal::IndexTag<8>()),
1345  transform(originalParameters.Parameter9, vtkm::internal::IndexTag<9>()),
1346  transform(originalParameters.Parameter10, vtkm::internal::IndexTag<10>()),
1347  transform(originalParameters.Parameter11, vtkm::internal::IndexTag<11>()),
1348  transform(originalParameters.Parameter12, vtkm::internal::IndexTag<12>()),
1349  transform(originalParameters.Parameter13, vtkm::internal::IndexTag<13>()),
1350  transform(originalParameters.Parameter14, vtkm::internal::IndexTag<14>()),
1351  transform(originalParameters.Parameter15, vtkm::internal::IndexTag<15>()),
1352  transform(originalParameters.Parameter16, vtkm::internal::IndexTag<16>()),
1353  transform(originalParameters.Parameter17, vtkm::internal::IndexTag<17>()),
1354  transform(originalParameters.Parameter18, vtkm::internal::IndexTag<18>())
1355  };
1356 }
1357 
1359 template <typename Result,
1360  typename Transform,
1361  typename OriginalR,
1362  typename OriginalP1,
1363  typename OriginalP2,
1364  typename OriginalP3,
1365  typename OriginalP4,
1366  typename OriginalP5,
1367  typename OriginalP6,
1368  typename OriginalP7,
1369  typename OriginalP8,
1370  typename OriginalP9,
1371  typename OriginalP10,
1372  typename OriginalP11,
1373  typename OriginalP12,
1374  typename OriginalP13,
1375  typename OriginalP14,
1376  typename OriginalP15,
1377  typename OriginalP16,
1378  typename OriginalP17,
1379  typename OriginalP18,
1380  typename OriginalP19>
1381 VTKM_CONT Result DoStaticTransformCont(
1382  const Transform& transform,
1383  ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12, OriginalP13, OriginalP14, OriginalP15, OriginalP16, OriginalP17, OriginalP18, OriginalP19)>& originalParameters)
1384 {
1385  return Result{
1386  transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
1387  transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
1388  transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>()),
1389  transform(originalParameters.Parameter4, vtkm::internal::IndexTag<4>()),
1390  transform(originalParameters.Parameter5, vtkm::internal::IndexTag<5>()),
1391  transform(originalParameters.Parameter6, vtkm::internal::IndexTag<6>()),
1392  transform(originalParameters.Parameter7, vtkm::internal::IndexTag<7>()),
1393  transform(originalParameters.Parameter8, vtkm::internal::IndexTag<8>()),
1394  transform(originalParameters.Parameter9, vtkm::internal::IndexTag<9>()),
1395  transform(originalParameters.Parameter10, vtkm::internal::IndexTag<10>()),
1396  transform(originalParameters.Parameter11, vtkm::internal::IndexTag<11>()),
1397  transform(originalParameters.Parameter12, vtkm::internal::IndexTag<12>()),
1398  transform(originalParameters.Parameter13, vtkm::internal::IndexTag<13>()),
1399  transform(originalParameters.Parameter14, vtkm::internal::IndexTag<14>()),
1400  transform(originalParameters.Parameter15, vtkm::internal::IndexTag<15>()),
1401  transform(originalParameters.Parameter16, vtkm::internal::IndexTag<16>()),
1402  transform(originalParameters.Parameter17, vtkm::internal::IndexTag<17>()),
1403  transform(originalParameters.Parameter18, vtkm::internal::IndexTag<18>()),
1404  transform(originalParameters.Parameter19, vtkm::internal::IndexTag<19>())
1405  };
1406 }
1407 
1408 // clang-format on
1409 
1410 } // namespace detail
1411 }
1412 } // namespace vtkm::internal
1413 
1414 #endif //vtk_m_internal_FunctionInterfaceDetailPre_h
vtkm
Groups connected points that have the same field value.
Definition: Atomic.h:19
Types.h
VTKM_EXEC_CONT
#define VTKM_EXEC_CONT
Definition: ExportMacros.h:52
vtkm::Transform
auto Transform(const TupleType &&tuple, Function &&f) -> decltype(Apply(tuple, detail::TupleTransformFunctor(), std::forward< Function >(f)))
Construct a new vtkm::Tuple by applying a function to each value.
Definition: Tuple.h:213
vtkm::ListAt
typename detail::ListAtImpl< List, Index >::type ListAt
Finds the type at the given index.
Definition: List.h:350
Index
int Index
Definition: ChooseCudaDevice.h:87
VTKM_CONT
#define VTKM_CONT
Definition: ExportMacros.h:57
vtkm::List
A template used to hold a list of types.
Definition: List.h:39
VTKM_SUPPRESS_EXEC_WARNINGS
#define VTKM_SUPPRESS_EXEC_WARNINGS
Definition: ExportMacros.h:53
IndexTag.h
List.h