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