Viskores  1.0
FunctionInterfaceDetailPost.h
Go to the documentation of this file.
1 //============================================================================
2 // The contents of this file are covered by the Viskores license. See
3 // LICENSE.txt for details.
4 //
5 // By contributing to this file, all contributors agree to the Developer
6 // Certificate of Origin Version 1.1 (DCO 1.1) as stated in DCO.txt.
7 //============================================================================
8 
9 //============================================================================
10 // Copyright (c) Kitware, Inc.
11 // All rights reserved.
12 // See LICENSE.txt for details.
13 //
14 // This software is distributed WITHOUT ANY WARRANTY; without even
15 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16 // PURPOSE. See the above copyright notice for more information.
17 //============================================================================
18 // **** DO NOT EDIT THIS FILE!!! ****
19 // This file is automatically generated by FunctionInterfaceDetailPost.h.in
20 
21 #ifndef viskores_internal_FunctionInterfaceDetailPost_h
22 #define viskores_internal_FunctionInterfaceDetailPost_h
23 
24 #if !defined(viskores_internal_FunctionInterface_h) && !defined(VISKORES_TEST_HEADER_BUILD)
25 #error FunctionInterfaceDetailPre.h must be included from FunctionInterface.h
26 #endif
27 
29 
30 #if VISKORES_MAX_FUNCTION_PARAMETERS != 20
31 #error Mismatch of maximum parameters between FunctionInterfaceDatailPre.h.in and FunctionInterfaceDetailPost.h.in
32 #endif
33 
34 
35 namespace viskores
36 {
37 namespace internal
38 {
39 
40 namespace detail
41 {
42 
43 //============================================================================
44 
45 // clang-format off
46 
47 template<typename Transform,
48  typename R>
49 struct FunctionInterfaceStaticTransformType<R(), Transform>
50 {
51  using type = R(
52  );
53 };
54 
55 template<typename Transform,
56  typename R,
57  typename P1>
58 struct FunctionInterfaceStaticTransformType<R(P1), Transform>
59 {
60  using type = R(
61  typename Transform::template ReturnType<P1,1>::type
62  );
63 };
64 
65 template<typename Transform,
66  typename R,
67  typename P1,
68  typename P2>
69 struct FunctionInterfaceStaticTransformType<R(P1,P2), Transform>
70 {
71  using type = R(
72  typename Transform::template ReturnType<P1,1>::type,
73  typename Transform::template ReturnType<P2,2>::type
74  );
75 };
76 
77 template<typename Transform,
78  typename R,
79  typename P1,
80  typename P2,
81  typename P3>
82 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3), Transform>
83 {
84  using type = R(
85  typename Transform::template ReturnType<P1,1>::type,
86  typename Transform::template ReturnType<P2,2>::type,
87  typename Transform::template ReturnType<P3,3>::type
88  );
89 };
90 
91 template<typename Transform,
92  typename R,
93  typename P1,
94  typename P2,
95  typename P3,
96  typename P4>
97 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4), Transform>
98 {
99  using type = R(
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
104  );
105 };
106 
107 template<typename Transform,
108  typename R,
109  typename P1,
110  typename P2,
111  typename P3,
112  typename P4,
113  typename P5>
114 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5), Transform>
115 {
116  using type = R(
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
122  );
123 };
124 
125 template<typename Transform,
126  typename R,
127  typename P1,
128  typename P2,
129  typename P3,
130  typename P4,
131  typename P5,
132  typename P6>
133 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6), Transform>
134 {
135  using type = R(
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
142  );
143 };
144 
145 template<typename Transform,
146  typename R,
147  typename P1,
148  typename P2,
149  typename P3,
150  typename P4,
151  typename P5,
152  typename P6,
153  typename P7>
154 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7), Transform>
155 {
156  using type = R(
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
164  );
165 };
166 
167 template<typename Transform,
168  typename R,
169  typename P1,
170  typename P2,
171  typename P3,
172  typename P4,
173  typename P5,
174  typename P6,
175  typename P7,
176  typename P8>
177 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8), Transform>
178 {
179  using type = R(
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
188  );
189 };
190 
191 template<typename Transform,
192  typename R,
193  typename P1,
194  typename P2,
195  typename P3,
196  typename P4,
197  typename P5,
198  typename P6,
199  typename P7,
200  typename P8,
201  typename P9>
202 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9), Transform>
203 {
204  using type = R(
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
214  );
215 };
216 
217 template<typename Transform,
218  typename R,
219  typename P1,
220  typename P2,
221  typename P3,
222  typename P4,
223  typename P5,
224  typename P6,
225  typename P7,
226  typename P8,
227  typename P9,
228  typename P10>
229 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10), Transform>
230 {
231  using type = R(
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
242  );
243 };
244 
245 template<typename Transform,
246  typename R,
247  typename P1,
248  typename P2,
249  typename P3,
250  typename P4,
251  typename P5,
252  typename P6,
253  typename P7,
254  typename P8,
255  typename P9,
256  typename P10,
257  typename P11>
258 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11), Transform>
259 {
260  using type = R(
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
272  );
273 };
274 
275 template<typename Transform,
276  typename R,
277  typename P1,
278  typename P2,
279  typename P3,
280  typename P4,
281  typename P5,
282  typename P6,
283  typename P7,
284  typename P8,
285  typename P9,
286  typename P10,
287  typename P11,
288  typename P12>
289 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12), Transform>
290 {
291  using type = R(
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
304  );
305 };
306 
307 template<typename Transform,
308  typename R,
309  typename P1,
310  typename P2,
311  typename P3,
312  typename P4,
313  typename P5,
314  typename P6,
315  typename P7,
316  typename P8,
317  typename P9,
318  typename P10,
319  typename P11,
320  typename P12,
321  typename P13>
322 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13), Transform>
323 {
324  using type = R(
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
338  );
339 };
340 
341 template<typename Transform,
342  typename R,
343  typename P1,
344  typename P2,
345  typename P3,
346  typename P4,
347  typename P5,
348  typename P6,
349  typename P7,
350  typename P8,
351  typename P9,
352  typename P10,
353  typename P11,
354  typename P12,
355  typename P13,
356  typename P14>
357 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14), Transform>
358 {
359  using type = R(
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
374  );
375 };
376 
377 template<typename Transform,
378  typename R,
379  typename P1,
380  typename P2,
381  typename P3,
382  typename P4,
383  typename P5,
384  typename P6,
385  typename P7,
386  typename P8,
387  typename P9,
388  typename P10,
389  typename P11,
390  typename P12,
391  typename P13,
392  typename P14,
393  typename P15>
394 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15), Transform>
395 {
396  using type = R(
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
412  );
413 };
414 
415 template<typename Transform,
416  typename R,
417  typename P1,
418  typename P2,
419  typename P3,
420  typename P4,
421  typename P5,
422  typename P6,
423  typename P7,
424  typename P8,
425  typename P9,
426  typename P10,
427  typename P11,
428  typename P12,
429  typename P13,
430  typename P14,
431  typename P15,
432  typename P16>
433 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16), Transform>
434 {
435  using type = R(
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
452  );
453 };
454 
455 template<typename Transform,
456  typename R,
457  typename P1,
458  typename P2,
459  typename P3,
460  typename P4,
461  typename P5,
462  typename P6,
463  typename P7,
464  typename P8,
465  typename P9,
466  typename P10,
467  typename P11,
468  typename P12,
469  typename P13,
470  typename P14,
471  typename P15,
472  typename P16,
473  typename P17>
474 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17), Transform>
475 {
476  using type = R(
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
494  );
495 };
496 
497 template<typename Transform,
498  typename R,
499  typename P1,
500  typename P2,
501  typename P3,
502  typename P4,
503  typename P5,
504  typename P6,
505  typename P7,
506  typename P8,
507  typename P9,
508  typename P10,
509  typename P11,
510  typename P12,
511  typename P13,
512  typename P14,
513  typename P15,
514  typename P16,
515  typename P17,
516  typename P18>
517 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18), Transform>
518 {
519  using type = R(
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
538  );
539 };
540 
541 template<typename Transform,
542  typename R,
543  typename P1,
544  typename P2,
545  typename P3,
546  typename P4,
547  typename P5,
548  typename P6,
549  typename P7,
550  typename P8,
551  typename P9,
552  typename P10,
553  typename P11,
554  typename P12,
555  typename P13,
556  typename P14,
557  typename P15,
558  typename P16,
559  typename P17,
560  typename P18,
561  typename P19>
562 struct FunctionInterfaceStaticTransformType<R(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19), Transform>
563 {
564  using type = R(
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
584  );
585 };
586 
587 template<typename Transform,
588  typename R,
589  typename P1,
590  typename P2,
591  typename P3,
592  typename P4,
593  typename P5,
594  typename P6,
595  typename P7,
596  typename P8,
597  typename P9,
598  typename P10,
599  typename P11,
600  typename P12,
601  typename P13,
602  typename P14,
603  typename P15,
604  typename P16,
605  typename P17,
606  typename P18,
607  typename P19,
608  typename P20>
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>
610 {
611  using type = R(
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
632  );
633 };
634 
635 
636 // clang-format on
637 
638 } // namespace detail
639 
640 }
641 } // namespace viskores::internal
642 
643 #endif //viskores_internal_FunctionInterfaceDetailPost_h
viskores::Transform
auto Transform(const TupleType &&tuple, Function &&f) -> decltype(Apply(tuple, detail::TupleTransformFunctor(), std::forward< Function >(f)))
Construct a new viskores::Tuple by applying a function to each value.
Definition: Tuple.h:221
viskores
Groups connected points that have the same field value.
Definition: Atomic.h:27
FunctionInterface.h