13 #ifndef vtk_m_internal_FunctionInterfaceDetailPost_h 
   14 #define vtk_m_internal_FunctionInterfaceDetailPost_h 
   16 #if !defined(vtk_m_internal_FunctionInterface_h) && !defined(VTKM_TEST_HEADER_BUILD) 
   17 #error FunctionInterfaceDetailPre.h must be included from FunctionInterface.h 
   22 #if VTKM_MAX_FUNCTION_PARAMETERS != 20 
   23 #error Mismatch of maximum parameters between FunctionInterfaceDatailPre.h.in and FunctionInterfaceDetailPost.h.in 
   39 template<
typename Transform,
 
   41 struct FunctionInterfaceStaticTransformType<R(), Transform>
 
   47 template<
typename Transform,
 
   50 struct FunctionInterfaceStaticTransformType<R(P1), Transform>
 
   53         typename Transform::template ReturnType<P1,1>::type
 
   57 template<
typename Transform,
 
   61 struct FunctionInterfaceStaticTransformType<R(P1,P2), Transform>
 
   64         typename Transform::template ReturnType<P1,1>::type,
 
   65         typename Transform::template ReturnType<P2,2>::type
 
   69 template<
typename Transform,
 
   74 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3), Transform>
 
   77         typename Transform::template ReturnType<P1,1>::type,
 
   78         typename Transform::template ReturnType<P2,2>::type,
 
   79         typename Transform::template ReturnType<P3,3>::type
 
   83 template<
typename Transform,
 
   89 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4), Transform>
 
   92         typename Transform::template ReturnType<P1,1>::type,
 
   93         typename Transform::template ReturnType<P2,2>::type,
 
   94         typename Transform::template ReturnType<P3,3>::type,
 
   95         typename Transform::template ReturnType<P4,4>::type
 
   99 template<
typename Transform,
 
  106 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5), Transform>
 
  109         typename Transform::template ReturnType<P1,1>::type,
 
  110         typename Transform::template ReturnType<P2,2>::type,
 
  111         typename Transform::template ReturnType<P3,3>::type,
 
  112         typename Transform::template ReturnType<P4,4>::type,
 
  113         typename Transform::template ReturnType<P5,5>::type
 
  117 template<
typename Transform,
 
  125 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6), Transform>
 
  128         typename Transform::template ReturnType<P1,1>::type,
 
  129         typename Transform::template ReturnType<P2,2>::type,
 
  130         typename Transform::template ReturnType<P3,3>::type,
 
  131         typename Transform::template ReturnType<P4,4>::type,
 
  132         typename Transform::template ReturnType<P5,5>::type,
 
  133         typename Transform::template ReturnType<P6,6>::type
 
  137 template<
typename Transform,
 
  146 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7), Transform>
 
  149         typename Transform::template ReturnType<P1,1>::type,
 
  150         typename Transform::template ReturnType<P2,2>::type,
 
  151         typename Transform::template ReturnType<P3,3>::type,
 
  152         typename Transform::template ReturnType<P4,4>::type,
 
  153         typename Transform::template ReturnType<P5,5>::type,
 
  154         typename Transform::template ReturnType<P6,6>::type,
 
  155         typename Transform::template ReturnType<P7,7>::type
 
  159 template<
typename Transform,
 
  169 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8), Transform>
 
  172         typename Transform::template ReturnType<P1,1>::type,
 
  173         typename Transform::template ReturnType<P2,2>::type,
 
  174         typename Transform::template ReturnType<P3,3>::type,
 
  175         typename Transform::template ReturnType<P4,4>::type,
 
  176         typename Transform::template ReturnType<P5,5>::type,
 
  177         typename Transform::template ReturnType<P6,6>::type,
 
  178         typename Transform::template ReturnType<P7,7>::type,
 
  179         typename Transform::template ReturnType<P8,8>::type
 
  183 template<
typename Transform,
 
  194 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9), Transform>
 
  197         typename Transform::template ReturnType<P1,1>::type,
 
  198         typename Transform::template ReturnType<P2,2>::type,
 
  199         typename Transform::template ReturnType<P3,3>::type,
 
  200         typename Transform::template ReturnType<P4,4>::type,
 
  201         typename Transform::template ReturnType<P5,5>::type,
 
  202         typename Transform::template ReturnType<P6,6>::type,
 
  203         typename Transform::template ReturnType<P7,7>::type,
 
  204         typename Transform::template ReturnType<P8,8>::type,
 
  205         typename Transform::template ReturnType<P9,9>::type
 
  209 template<
typename Transform,
 
  221 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10), Transform>
 
  224         typename Transform::template ReturnType<P1,1>::type,
 
  225         typename Transform::template ReturnType<P2,2>::type,
 
  226         typename Transform::template ReturnType<P3,3>::type,
 
  227         typename Transform::template ReturnType<P4,4>::type,
 
  228         typename Transform::template ReturnType<P5,5>::type,
 
  229         typename Transform::template ReturnType<P6,6>::type,
 
  230         typename Transform::template ReturnType<P7,7>::type,
 
  231         typename Transform::template ReturnType<P8,8>::type,
 
  232         typename Transform::template ReturnType<P9,9>::type,
 
  233         typename Transform::template ReturnType<P10,10>::type
 
  237 template<
typename Transform,
 
  250 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11), Transform>
 
  253         typename Transform::template ReturnType<P1,1>::type,
 
  254         typename Transform::template ReturnType<P2,2>::type,
 
  255         typename Transform::template ReturnType<P3,3>::type,
 
  256         typename Transform::template ReturnType<P4,4>::type,
 
  257         typename Transform::template ReturnType<P5,5>::type,
 
  258         typename Transform::template ReturnType<P6,6>::type,
 
  259         typename Transform::template ReturnType<P7,7>::type,
 
  260         typename Transform::template ReturnType<P8,8>::type,
 
  261         typename Transform::template ReturnType<P9,9>::type,
 
  262         typename Transform::template ReturnType<P10,10>::type,
 
  263         typename Transform::template ReturnType<P11,11>::type
 
  267 template<
typename Transform,
 
  281 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12), Transform>
 
  284         typename Transform::template ReturnType<P1,1>::type,
 
  285         typename Transform::template ReturnType<P2,2>::type,
 
  286         typename Transform::template ReturnType<P3,3>::type,
 
  287         typename Transform::template ReturnType<P4,4>::type,
 
  288         typename Transform::template ReturnType<P5,5>::type,
 
  289         typename Transform::template ReturnType<P6,6>::type,
 
  290         typename Transform::template ReturnType<P7,7>::type,
 
  291         typename Transform::template ReturnType<P8,8>::type,
 
  292         typename Transform::template ReturnType<P9,9>::type,
 
  293         typename Transform::template ReturnType<P10,10>::type,
 
  294         typename Transform::template ReturnType<P11,11>::type,
 
  295         typename Transform::template ReturnType<P12,12>::type
 
  299 template<
typename Transform,
 
  314 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13), Transform>
 
  317         typename Transform::template ReturnType<P1,1>::type,
 
  318         typename Transform::template ReturnType<P2,2>::type,
 
  319         typename Transform::template ReturnType<P3,3>::type,
 
  320         typename Transform::template ReturnType<P4,4>::type,
 
  321         typename Transform::template ReturnType<P5,5>::type,
 
  322         typename Transform::template ReturnType<P6,6>::type,
 
  323         typename Transform::template ReturnType<P7,7>::type,
 
  324         typename Transform::template ReturnType<P8,8>::type,
 
  325         typename Transform::template ReturnType<P9,9>::type,
 
  326         typename Transform::template ReturnType<P10,10>::type,
 
  327         typename Transform::template ReturnType<P11,11>::type,
 
  328         typename Transform::template ReturnType<P12,12>::type,
 
  329         typename Transform::template ReturnType<P13,13>::type
 
  333 template<
typename Transform,
 
  349 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14), Transform>
 
  352         typename Transform::template ReturnType<P1,1>::type,
 
  353         typename Transform::template ReturnType<P2,2>::type,
 
  354         typename Transform::template ReturnType<P3,3>::type,
 
  355         typename Transform::template ReturnType<P4,4>::type,
 
  356         typename Transform::template ReturnType<P5,5>::type,
 
  357         typename Transform::template ReturnType<P6,6>::type,
 
  358         typename Transform::template ReturnType<P7,7>::type,
 
  359         typename Transform::template ReturnType<P8,8>::type,
 
  360         typename Transform::template ReturnType<P9,9>::type,
 
  361         typename Transform::template ReturnType<P10,10>::type,
 
  362         typename Transform::template ReturnType<P11,11>::type,
 
  363         typename Transform::template ReturnType<P12,12>::type,
 
  364         typename Transform::template ReturnType<P13,13>::type,
 
  365         typename Transform::template ReturnType<P14,14>::type
 
  369 template<
typename Transform,
 
  386 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15), Transform>
 
  389         typename Transform::template ReturnType<P1,1>::type,
 
  390         typename Transform::template ReturnType<P2,2>::type,
 
  391         typename Transform::template ReturnType<P3,3>::type,
 
  392         typename Transform::template ReturnType<P4,4>::type,
 
  393         typename Transform::template ReturnType<P5,5>::type,
 
  394         typename Transform::template ReturnType<P6,6>::type,
 
  395         typename Transform::template ReturnType<P7,7>::type,
 
  396         typename Transform::template ReturnType<P8,8>::type,
 
  397         typename Transform::template ReturnType<P9,9>::type,
 
  398         typename Transform::template ReturnType<P10,10>::type,
 
  399         typename Transform::template ReturnType<P11,11>::type,
 
  400         typename Transform::template ReturnType<P12,12>::type,
 
  401         typename Transform::template ReturnType<P13,13>::type,
 
  402         typename Transform::template ReturnType<P14,14>::type,
 
  403         typename Transform::template ReturnType<P15,15>::type
 
  407 template<
typename Transform,
 
  425 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16), Transform>
 
  428         typename Transform::template ReturnType<P1,1>::type,
 
  429         typename Transform::template ReturnType<P2,2>::type,
 
  430         typename Transform::template ReturnType<P3,3>::type,
 
  431         typename Transform::template ReturnType<P4,4>::type,
 
  432         typename Transform::template ReturnType<P5,5>::type,
 
  433         typename Transform::template ReturnType<P6,6>::type,
 
  434         typename Transform::template ReturnType<P7,7>::type,
 
  435         typename Transform::template ReturnType<P8,8>::type,
 
  436         typename Transform::template ReturnType<P9,9>::type,
 
  437         typename Transform::template ReturnType<P10,10>::type,
 
  438         typename Transform::template ReturnType<P11,11>::type,
 
  439         typename Transform::template ReturnType<P12,12>::type,
 
  440         typename Transform::template ReturnType<P13,13>::type,
 
  441         typename Transform::template ReturnType<P14,14>::type,
 
  442         typename Transform::template ReturnType<P15,15>::type,
 
  443         typename Transform::template ReturnType<P16,16>::type
 
  447 template<
typename Transform,
 
  466 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17), Transform>
 
  469         typename Transform::template ReturnType<P1,1>::type,
 
  470         typename Transform::template ReturnType<P2,2>::type,
 
  471         typename Transform::template ReturnType<P3,3>::type,
 
  472         typename Transform::template ReturnType<P4,4>::type,
 
  473         typename Transform::template ReturnType<P5,5>::type,
 
  474         typename Transform::template ReturnType<P6,6>::type,
 
  475         typename Transform::template ReturnType<P7,7>::type,
 
  476         typename Transform::template ReturnType<P8,8>::type,
 
  477         typename Transform::template ReturnType<P9,9>::type,
 
  478         typename Transform::template ReturnType<P10,10>::type,
 
  479         typename Transform::template ReturnType<P11,11>::type,
 
  480         typename Transform::template ReturnType<P12,12>::type,
 
  481         typename Transform::template ReturnType<P13,13>::type,
 
  482         typename Transform::template ReturnType<P14,14>::type,
 
  483         typename Transform::template ReturnType<P15,15>::type,
 
  484         typename Transform::template ReturnType<P16,16>::type,
 
  485         typename Transform::template ReturnType<P17,17>::type
 
  489 template<
typename Transform,
 
  509 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18), Transform>
 
  512         typename Transform::template ReturnType<P1,1>::type,
 
  513         typename Transform::template ReturnType<P2,2>::type,
 
  514         typename Transform::template ReturnType<P3,3>::type,
 
  515         typename Transform::template ReturnType<P4,4>::type,
 
  516         typename Transform::template ReturnType<P5,5>::type,
 
  517         typename Transform::template ReturnType<P6,6>::type,
 
  518         typename Transform::template ReturnType<P7,7>::type,
 
  519         typename Transform::template ReturnType<P8,8>::type,
 
  520         typename Transform::template ReturnType<P9,9>::type,
 
  521         typename Transform::template ReturnType<P10,10>::type,
 
  522         typename Transform::template ReturnType<P11,11>::type,
 
  523         typename Transform::template ReturnType<P12,12>::type,
 
  524         typename Transform::template ReturnType<P13,13>::type,
 
  525         typename Transform::template ReturnType<P14,14>::type,
 
  526         typename Transform::template ReturnType<P15,15>::type,
 
  527         typename Transform::template ReturnType<P16,16>::type,
 
  528         typename Transform::template ReturnType<P17,17>::type,
 
  529         typename Transform::template ReturnType<P18,18>::type
 
  533 template<
typename Transform,
 
  554 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19), Transform>
 
  557         typename Transform::template ReturnType<P1,1>::type,
 
  558         typename Transform::template ReturnType<P2,2>::type,
 
  559         typename Transform::template ReturnType<P3,3>::type,
 
  560         typename Transform::template ReturnType<P4,4>::type,
 
  561         typename Transform::template ReturnType<P5,5>::type,
 
  562         typename Transform::template ReturnType<P6,6>::type,
 
  563         typename Transform::template ReturnType<P7,7>::type,
 
  564         typename Transform::template ReturnType<P8,8>::type,
 
  565         typename Transform::template ReturnType<P9,9>::type,
 
  566         typename Transform::template ReturnType<P10,10>::type,
 
  567         typename Transform::template ReturnType<P11,11>::type,
 
  568         typename Transform::template ReturnType<P12,12>::type,
 
  569         typename Transform::template ReturnType<P13,13>::type,
 
  570         typename Transform::template ReturnType<P14,14>::type,
 
  571         typename Transform::template ReturnType<P15,15>::type,
 
  572         typename Transform::template ReturnType<P16,16>::type,
 
  573         typename Transform::template ReturnType<P17,17>::type,
 
  574         typename Transform::template ReturnType<P18,18>::type,
 
  575         typename Transform::template ReturnType<P19,19>::type
 
  579 template<
typename Transform,
 
  601 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P20), Transform>
 
  604         typename Transform::template ReturnType<P1,1>::type,
 
  605         typename Transform::template ReturnType<P2,2>::type,
 
  606         typename Transform::template ReturnType<P3,3>::type,
 
  607         typename Transform::template ReturnType<P4,4>::type,
 
  608         typename Transform::template ReturnType<P5,5>::type,
 
  609         typename Transform::template ReturnType<P6,6>::type,
 
  610         typename Transform::template ReturnType<P7,7>::type,
 
  611         typename Transform::template ReturnType<P8,8>::type,
 
  612         typename Transform::template ReturnType<P9,9>::type,
 
  613         typename Transform::template ReturnType<P10,10>::type,
 
  614         typename Transform::template ReturnType<P11,11>::type,
 
  615         typename Transform::template ReturnType<P12,12>::type,
 
  616         typename Transform::template ReturnType<P13,13>::type,
 
  617         typename Transform::template ReturnType<P14,14>::type,
 
  618         typename Transform::template ReturnType<P15,15>::type,
 
  619         typename Transform::template ReturnType<P16,16>::type,
 
  620         typename Transform::template ReturnType<P17,17>::type,
 
  621         typename Transform::template ReturnType<P18,18>::type,
 
  622         typename Transform::template ReturnType<P19,19>::type,
 
  623         typename Transform::template ReturnType<P20,20>::type
 
  635 #endif //vtk_m_internal_FunctionInterfaceDetailPost_h