21 #ifndef viskores_internal_FunctionInterfaceDetailPost_h
22 #define viskores_internal_FunctionInterfaceDetailPost_h
24 #if !defined(viskores_internal_FunctionInterface_h) && !defined(VISKORES_TEST_HEADER_BUILD)
25 #error FunctionInterfaceDetailPre.h must be included from FunctionInterface.h
30 #if VISKORES_MAX_FUNCTION_PARAMETERS != 20
31 #error Mismatch of maximum parameters between FunctionInterfaceDatailPre.h.in and FunctionInterfaceDetailPost.h.in
49 struct FunctionInterfaceStaticTransformType<R(),
Transform>
58 struct FunctionInterfaceStaticTransformType<R(P1),
Transform>
61 typename Transform::template ReturnType<P1,1>::type
69 struct FunctionInterfaceStaticTransformType<R(P1,P2),
Transform>
72 typename Transform::template ReturnType<P1,1>::type,
73 typename Transform::template ReturnType<P2,2>::type
82 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3),
Transform>
85 typename Transform::template ReturnType<P1,1>::type,
86 typename Transform::template ReturnType<P2,2>::type,
87 typename Transform::template ReturnType<P3,3>::type
97 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4),
Transform>
100 typename Transform::template ReturnType<P1,1>::type,
101 typename Transform::template ReturnType<P2,2>::type,
102 typename Transform::template ReturnType<P3,3>::type,
103 typename Transform::template ReturnType<P4,4>::type
114 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5),
Transform>
117 typename Transform::template ReturnType<P1,1>::type,
118 typename Transform::template ReturnType<P2,2>::type,
119 typename Transform::template ReturnType<P3,3>::type,
120 typename Transform::template ReturnType<P4,4>::type,
121 typename Transform::template ReturnType<P5,5>::type
133 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6),
Transform>
136 typename Transform::template ReturnType<P1,1>::type,
137 typename Transform::template ReturnType<P2,2>::type,
138 typename Transform::template ReturnType<P3,3>::type,
139 typename Transform::template ReturnType<P4,4>::type,
140 typename Transform::template ReturnType<P5,5>::type,
141 typename Transform::template ReturnType<P6,6>::type
154 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7),
Transform>
157 typename Transform::template ReturnType<P1,1>::type,
158 typename Transform::template ReturnType<P2,2>::type,
159 typename Transform::template ReturnType<P3,3>::type,
160 typename Transform::template ReturnType<P4,4>::type,
161 typename Transform::template ReturnType<P5,5>::type,
162 typename Transform::template ReturnType<P6,6>::type,
163 typename Transform::template ReturnType<P7,7>::type
177 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8),
Transform>
180 typename Transform::template ReturnType<P1,1>::type,
181 typename Transform::template ReturnType<P2,2>::type,
182 typename Transform::template ReturnType<P3,3>::type,
183 typename Transform::template ReturnType<P4,4>::type,
184 typename Transform::template ReturnType<P5,5>::type,
185 typename Transform::template ReturnType<P6,6>::type,
186 typename Transform::template ReturnType<P7,7>::type,
187 typename Transform::template ReturnType<P8,8>::type
202 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9),
Transform>
205 typename Transform::template ReturnType<P1,1>::type,
206 typename Transform::template ReturnType<P2,2>::type,
207 typename Transform::template ReturnType<P3,3>::type,
208 typename Transform::template ReturnType<P4,4>::type,
209 typename Transform::template ReturnType<P5,5>::type,
210 typename Transform::template ReturnType<P6,6>::type,
211 typename Transform::template ReturnType<P7,7>::type,
212 typename Transform::template ReturnType<P8,8>::type,
213 typename Transform::template ReturnType<P9,9>::type
229 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10),
Transform>
232 typename Transform::template ReturnType<P1,1>::type,
233 typename Transform::template ReturnType<P2,2>::type,
234 typename Transform::template ReturnType<P3,3>::type,
235 typename Transform::template ReturnType<P4,4>::type,
236 typename Transform::template ReturnType<P5,5>::type,
237 typename Transform::template ReturnType<P6,6>::type,
238 typename Transform::template ReturnType<P7,7>::type,
239 typename Transform::template ReturnType<P8,8>::type,
240 typename Transform::template ReturnType<P9,9>::type,
241 typename Transform::template ReturnType<P10,10>::type
258 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11),
Transform>
261 typename Transform::template ReturnType<P1,1>::type,
262 typename Transform::template ReturnType<P2,2>::type,
263 typename Transform::template ReturnType<P3,3>::type,
264 typename Transform::template ReturnType<P4,4>::type,
265 typename Transform::template ReturnType<P5,5>::type,
266 typename Transform::template ReturnType<P6,6>::type,
267 typename Transform::template ReturnType<P7,7>::type,
268 typename Transform::template ReturnType<P8,8>::type,
269 typename Transform::template ReturnType<P9,9>::type,
270 typename Transform::template ReturnType<P10,10>::type,
271 typename Transform::template ReturnType<P11,11>::type
289 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12),
Transform>
292 typename Transform::template ReturnType<P1,1>::type,
293 typename Transform::template ReturnType<P2,2>::type,
294 typename Transform::template ReturnType<P3,3>::type,
295 typename Transform::template ReturnType<P4,4>::type,
296 typename Transform::template ReturnType<P5,5>::type,
297 typename Transform::template ReturnType<P6,6>::type,
298 typename Transform::template ReturnType<P7,7>::type,
299 typename Transform::template ReturnType<P8,8>::type,
300 typename Transform::template ReturnType<P9,9>::type,
301 typename Transform::template ReturnType<P10,10>::type,
302 typename Transform::template ReturnType<P11,11>::type,
303 typename Transform::template ReturnType<P12,12>::type
322 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13),
Transform>
325 typename Transform::template ReturnType<P1,1>::type,
326 typename Transform::template ReturnType<P2,2>::type,
327 typename Transform::template ReturnType<P3,3>::type,
328 typename Transform::template ReturnType<P4,4>::type,
329 typename Transform::template ReturnType<P5,5>::type,
330 typename Transform::template ReturnType<P6,6>::type,
331 typename Transform::template ReturnType<P7,7>::type,
332 typename Transform::template ReturnType<P8,8>::type,
333 typename Transform::template ReturnType<P9,9>::type,
334 typename Transform::template ReturnType<P10,10>::type,
335 typename Transform::template ReturnType<P11,11>::type,
336 typename Transform::template ReturnType<P12,12>::type,
337 typename Transform::template ReturnType<P13,13>::type
357 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14),
Transform>
360 typename Transform::template ReturnType<P1,1>::type,
361 typename Transform::template ReturnType<P2,2>::type,
362 typename Transform::template ReturnType<P3,3>::type,
363 typename Transform::template ReturnType<P4,4>::type,
364 typename Transform::template ReturnType<P5,5>::type,
365 typename Transform::template ReturnType<P6,6>::type,
366 typename Transform::template ReturnType<P7,7>::type,
367 typename Transform::template ReturnType<P8,8>::type,
368 typename Transform::template ReturnType<P9,9>::type,
369 typename Transform::template ReturnType<P10,10>::type,
370 typename Transform::template ReturnType<P11,11>::type,
371 typename Transform::template ReturnType<P12,12>::type,
372 typename Transform::template ReturnType<P13,13>::type,
373 typename Transform::template ReturnType<P14,14>::type
394 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15),
Transform>
397 typename Transform::template ReturnType<P1,1>::type,
398 typename Transform::template ReturnType<P2,2>::type,
399 typename Transform::template ReturnType<P3,3>::type,
400 typename Transform::template ReturnType<P4,4>::type,
401 typename Transform::template ReturnType<P5,5>::type,
402 typename Transform::template ReturnType<P6,6>::type,
403 typename Transform::template ReturnType<P7,7>::type,
404 typename Transform::template ReturnType<P8,8>::type,
405 typename Transform::template ReturnType<P9,9>::type,
406 typename Transform::template ReturnType<P10,10>::type,
407 typename Transform::template ReturnType<P11,11>::type,
408 typename Transform::template ReturnType<P12,12>::type,
409 typename Transform::template ReturnType<P13,13>::type,
410 typename Transform::template ReturnType<P14,14>::type,
411 typename Transform::template ReturnType<P15,15>::type
433 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16),
Transform>
436 typename Transform::template ReturnType<P1,1>::type,
437 typename Transform::template ReturnType<P2,2>::type,
438 typename Transform::template ReturnType<P3,3>::type,
439 typename Transform::template ReturnType<P4,4>::type,
440 typename Transform::template ReturnType<P5,5>::type,
441 typename Transform::template ReturnType<P6,6>::type,
442 typename Transform::template ReturnType<P7,7>::type,
443 typename Transform::template ReturnType<P8,8>::type,
444 typename Transform::template ReturnType<P9,9>::type,
445 typename Transform::template ReturnType<P10,10>::type,
446 typename Transform::template ReturnType<P11,11>::type,
447 typename Transform::template ReturnType<P12,12>::type,
448 typename Transform::template ReturnType<P13,13>::type,
449 typename Transform::template ReturnType<P14,14>::type,
450 typename Transform::template ReturnType<P15,15>::type,
451 typename Transform::template ReturnType<P16,16>::type
474 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17),
Transform>
477 typename Transform::template ReturnType<P1,1>::type,
478 typename Transform::template ReturnType<P2,2>::type,
479 typename Transform::template ReturnType<P3,3>::type,
480 typename Transform::template ReturnType<P4,4>::type,
481 typename Transform::template ReturnType<P5,5>::type,
482 typename Transform::template ReturnType<P6,6>::type,
483 typename Transform::template ReturnType<P7,7>::type,
484 typename Transform::template ReturnType<P8,8>::type,
485 typename Transform::template ReturnType<P9,9>::type,
486 typename Transform::template ReturnType<P10,10>::type,
487 typename Transform::template ReturnType<P11,11>::type,
488 typename Transform::template ReturnType<P12,12>::type,
489 typename Transform::template ReturnType<P13,13>::type,
490 typename Transform::template ReturnType<P14,14>::type,
491 typename Transform::template ReturnType<P15,15>::type,
492 typename Transform::template ReturnType<P16,16>::type,
493 typename Transform::template ReturnType<P17,17>::type
517 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18),
Transform>
520 typename Transform::template ReturnType<P1,1>::type,
521 typename Transform::template ReturnType<P2,2>::type,
522 typename Transform::template ReturnType<P3,3>::type,
523 typename Transform::template ReturnType<P4,4>::type,
524 typename Transform::template ReturnType<P5,5>::type,
525 typename Transform::template ReturnType<P6,6>::type,
526 typename Transform::template ReturnType<P7,7>::type,
527 typename Transform::template ReturnType<P8,8>::type,
528 typename Transform::template ReturnType<P9,9>::type,
529 typename Transform::template ReturnType<P10,10>::type,
530 typename Transform::template ReturnType<P11,11>::type,
531 typename Transform::template ReturnType<P12,12>::type,
532 typename Transform::template ReturnType<P13,13>::type,
533 typename Transform::template ReturnType<P14,14>::type,
534 typename Transform::template ReturnType<P15,15>::type,
535 typename Transform::template ReturnType<P16,16>::type,
536 typename Transform::template ReturnType<P17,17>::type,
537 typename Transform::template ReturnType<P18,18>::type
562 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19),
Transform>
565 typename Transform::template ReturnType<P1,1>::type,
566 typename Transform::template ReturnType<P2,2>::type,
567 typename Transform::template ReturnType<P3,3>::type,
568 typename Transform::template ReturnType<P4,4>::type,
569 typename Transform::template ReturnType<P5,5>::type,
570 typename Transform::template ReturnType<P6,6>::type,
571 typename Transform::template ReturnType<P7,7>::type,
572 typename Transform::template ReturnType<P8,8>::type,
573 typename Transform::template ReturnType<P9,9>::type,
574 typename Transform::template ReturnType<P10,10>::type,
575 typename Transform::template ReturnType<P11,11>::type,
576 typename Transform::template ReturnType<P12,12>::type,
577 typename Transform::template ReturnType<P13,13>::type,
578 typename Transform::template ReturnType<P14,14>::type,
579 typename Transform::template ReturnType<P15,15>::type,
580 typename Transform::template ReturnType<P16,16>::type,
581 typename Transform::template ReturnType<P17,17>::type,
582 typename Transform::template ReturnType<P18,18>::type,
583 typename Transform::template ReturnType<P19,19>::type
609 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P20),
Transform>
612 typename Transform::template ReturnType<P1,1>::type,
613 typename Transform::template ReturnType<P2,2>::type,
614 typename Transform::template ReturnType<P3,3>::type,
615 typename Transform::template ReturnType<P4,4>::type,
616 typename Transform::template ReturnType<P5,5>::type,
617 typename Transform::template ReturnType<P6,6>::type,
618 typename Transform::template ReturnType<P7,7>::type,
619 typename Transform::template ReturnType<P8,8>::type,
620 typename Transform::template ReturnType<P9,9>::type,
621 typename Transform::template ReturnType<P10,10>::type,
622 typename Transform::template ReturnType<P11,11>::type,
623 typename Transform::template ReturnType<P12,12>::type,
624 typename Transform::template ReturnType<P13,13>::type,
625 typename Transform::template ReturnType<P14,14>::type,
626 typename Transform::template ReturnType<P15,15>::type,
627 typename Transform::template ReturnType<P16,16>::type,
628 typename Transform::template ReturnType<P17,17>::type,
629 typename Transform::template ReturnType<P18,18>::type,
630 typename Transform::template ReturnType<P19,19>::type,
631 typename Transform::template ReturnType<P20,20>::type
643 #endif //viskores_internal_FunctionInterfaceDetailPost_h