13 #ifndef vtk_m_internal_FunctionInterfaceDetailPre_h
14 #define vtk_m_internal_FunctionInterfaceDetailPre_h
16 #if !defined(vtk_m_internal_FunctionInterface_h) && !defined(VTKM_TEST_HEADER_BUILD)
17 #error FunctionInterfaceDetailPre.h must be included from FunctionInterface.h
24 #include <type_traits>
26 #define VTKM_MAX_FUNCTION_PARAMETERS 20
39 struct FunctionInterfaceReturnContainer
42 static constexpr
bool VALID =
true;
46 struct FunctionInterfaceReturnContainer<void>
49 static constexpr
bool VALID =
false;
60 template <
typename FunctionSignature>
61 struct ParameterContainer;
66 struct ParameterContainer<R()>
72 struct ParameterContainer<R(P1)>
80 struct ParameterContainer<R(P1, P2)>
90 struct ParameterContainer<R(P1, P2, P3)>
102 struct ParameterContainer<R(P1, P2, P3, P4)>
110 template <
typename R,
116 struct ParameterContainer<R(P1, P2, P3, P4, P5)>
125 template <
typename R,
132 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6)>
142 template <
typename R,
150 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7)>
161 template <
typename R,
170 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8)>
182 template <
typename R,
192 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9)>
205 template <
typename R,
216 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10)>
230 template <
typename R,
242 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11)>
257 template <
typename R,
270 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12)>
286 template <
typename R,
300 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13)>
317 template <
typename R,
332 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14)>
350 template <
typename R,
366 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15)>
385 template <
typename R,
402 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16)>
422 template <
typename R,
440 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17)>
461 template <
typename R,
480 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18)>
502 template <
typename R,
522 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19)>
545 template <
typename R,
566 struct ParameterContainer<R(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20)>
594 struct FunctionSigInfo;
595 template <
typename R,
typename... ArgTypes>
596 struct FunctionSigInfo<R(ArgTypes...)>
598 static constexpr std::size_t Arity =
sizeof...(ArgTypes);
599 using ArityType = std::integral_constant<int, static_cast<int>(Arity)>;
601 using ResultType = R;
602 using Components =
vtkm::List<R, ArgTypes...>;
606 template <
int,
typename>
608 template <
int Index,
typename R,
typename... ArgTypes>
609 struct AtType<
Index, R(ArgTypes...)>
619 template <
typename FunctionSignature>
620 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
621 vtkm::internal::IndexTag<1>)
622 -> decltype(parameters.Parameter1)
const&
624 return parameters.Parameter1;
627 template <
typename FunctionSignature>
628 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
629 vtkm::internal::IndexTag<2>)
630 -> decltype(parameters.Parameter2)
const&
632 return parameters.Parameter2;
635 template <
typename FunctionSignature>
636 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
637 vtkm::internal::IndexTag<3>)
638 -> decltype(parameters.Parameter3)
const&
640 return parameters.Parameter3;
643 template <
typename FunctionSignature>
644 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
645 vtkm::internal::IndexTag<4>)
646 -> decltype(parameters.Parameter4)
const&
648 return parameters.Parameter4;
651 template <
typename FunctionSignature>
652 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
653 vtkm::internal::IndexTag<5>)
654 -> decltype(parameters.Parameter5)
const&
656 return parameters.Parameter5;
659 template <
typename FunctionSignature>
660 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
661 vtkm::internal::IndexTag<6>)
662 -> decltype(parameters.Parameter6)
const&
664 return parameters.Parameter6;
667 template <
typename FunctionSignature>
668 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
669 vtkm::internal::IndexTag<7>)
670 -> decltype(parameters.Parameter7)
const&
672 return parameters.Parameter7;
675 template <
typename FunctionSignature>
676 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
677 vtkm::internal::IndexTag<8>)
678 -> decltype(parameters.Parameter8)
const&
680 return parameters.Parameter8;
683 template <
typename FunctionSignature>
684 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
685 vtkm::internal::IndexTag<9>)
686 -> decltype(parameters.Parameter9)
const&
688 return parameters.Parameter9;
691 template <
typename FunctionSignature>
692 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
693 vtkm::internal::IndexTag<10>)
694 -> decltype(parameters.Parameter10)
const&
696 return parameters.Parameter10;
699 template <
typename FunctionSignature>
700 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
701 vtkm::internal::IndexTag<11>)
702 -> decltype(parameters.Parameter11)
const&
704 return parameters.Parameter11;
707 template <
typename FunctionSignature>
708 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
709 vtkm::internal::IndexTag<12>)
710 -> decltype(parameters.Parameter12)
const&
712 return parameters.Parameter12;
715 template <
typename FunctionSignature>
716 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
717 vtkm::internal::IndexTag<13>)
718 -> decltype(parameters.Parameter13)
const&
720 return parameters.Parameter13;
723 template <
typename FunctionSignature>
724 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
725 vtkm::internal::IndexTag<14>)
726 -> decltype(parameters.Parameter14)
const&
728 return parameters.Parameter14;
731 template <
typename FunctionSignature>
732 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
733 vtkm::internal::IndexTag<15>)
734 -> decltype(parameters.Parameter15)
const&
736 return parameters.Parameter15;
739 template <
typename FunctionSignature>
740 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
741 vtkm::internal::IndexTag<16>)
742 -> decltype(parameters.Parameter16)
const&
744 return parameters.Parameter16;
747 template <
typename FunctionSignature>
748 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
749 vtkm::internal::IndexTag<17>)
750 -> decltype(parameters.Parameter17)
const&
752 return parameters.Parameter17;
755 template <
typename FunctionSignature>
756 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
757 vtkm::internal::IndexTag<18>)
758 -> decltype(parameters.Parameter18)
const&
760 return parameters.Parameter18;
763 template <
typename FunctionSignature>
764 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
765 vtkm::internal::IndexTag<19>)
766 -> decltype(parameters.Parameter19)
const&
768 return parameters.Parameter19;
771 template <
typename FunctionSignature>
772 VTKM_EXEC_CONT auto ParameterGet(
const ParameterContainer<FunctionSignature>& parameters,
773 vtkm::internal::IndexTag<20>)
774 -> decltype(parameters.Parameter20)
const&
776 return parameters.Parameter20;
783 template <
typename OriginalSignature,
typename Transform>
784 struct FunctionInterfaceStaticTransformType;
789 template <
typename Result,
793 const Transform& transform,
794 ParameterContainer<OriginalR()>& originalParameters)
797 (void)originalParameters;
801 template <
typename Result,
806 const Transform& transform,
807 ParameterContainer<OriginalR(OriginalP1)>& originalParameters)
810 transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>())
815 template <
typename Result,
821 const Transform& transform,
822 ParameterContainer<OriginalR(OriginalP1, OriginalP2)>& originalParameters)
825 transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
826 transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>())
831 template <
typename Result,
838 const Transform& transform,
839 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3)>& originalParameters)
842 transform(originalParameters.Parameter1, vtkm::internal::IndexTag<1>()),
843 transform(originalParameters.Parameter2, vtkm::internal::IndexTag<2>()),
844 transform(originalParameters.Parameter3, vtkm::internal::IndexTag<3>())
849 template <
typename Result,
857 const Transform& transform,
858 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4)>& originalParameters)
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>())
869 template <
typename Result,
878 const Transform& transform,
879 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5)>& originalParameters)
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>())
891 template <
typename Result,
901 const Transform& transform,
902 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6)>& originalParameters)
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>())
915 template <
typename Result,
926 const Transform& transform,
927 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7)>& originalParameters)
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>())
941 template <
typename Result,
953 const Transform& transform,
954 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8)>& originalParameters)
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>())
969 template <
typename Result,
982 const Transform& transform,
983 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9)>& originalParameters)
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>())
999 template <
typename Result,
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>
1013 const Transform& transform,
1014 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10)>& originalParameters)
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>())
1031 template <
typename Result,
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>
1046 const Transform& transform,
1047 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11)>& originalParameters)
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>())
1065 template <
typename Result,
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>
1081 const Transform& transform,
1082 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12)>& originalParameters)
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>())
1101 template <
typename Result,
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>
1118 const Transform& transform,
1119 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12, OriginalP13)>& originalParameters)
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>())
1139 template <
typename Result,
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>
1157 const Transform& transform,
1158 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12, OriginalP13, OriginalP14)>& originalParameters)
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>())
1179 template <
typename Result,
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>
1198 const Transform& transform,
1199 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12, OriginalP13, OriginalP14, OriginalP15)>& originalParameters)
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>())
1221 template <
typename Result,
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>
1241 const Transform& transform,
1242 ParameterContainer<OriginalR(OriginalP1, OriginalP2, OriginalP3, OriginalP4, OriginalP5, OriginalP6, OriginalP7, OriginalP8, OriginalP9, OriginalP10, OriginalP11, OriginalP12, OriginalP13, OriginalP14, OriginalP15, OriginalP16)>& originalParameters)
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>())
1265 template <
typename Result,
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>
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)
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>())
1311 template <
typename Result,
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>
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)
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>())
1359 template <
typename Result,
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>
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)
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>())
1414 #endif //vtk_m_internal_FunctionInterfaceDetailPre_h