1     ///////////////////////////////////////////////////////////////////////////////
2     /// \file args.hpp
3     /// Contains definition of \c term\<\>, \c list1\<\>, \c list2\<\>, ...
4     /// class templates.
5     //
6     //  Copyright 2008 Eric Niebler. Distributed under the Boost
7     //  Software License, Version 1.0. (See accompanying file
8     //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 
10 
11 
12 
13     template< typename Arg0 >
14     struct term
15     {
16         static const long arity = 0;
17         typedef Arg0 child0;
18         typedef mpl::void_ child1; typedef mpl::void_ child2; typedef mpl::void_ child3; typedef mpl::void_ child4; typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9;
19 
20 
21         typedef Arg0 back_;
22     };
23 
24 
25 
26 
27     template< typename Arg0 >
28     struct list1
29     {
30         static const long arity = 1;
31         typedef Arg0 child0;
32         typedef mpl::void_ child1; typedef mpl::void_ child2; typedef mpl::void_ child3; typedef mpl::void_ child4; typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9;
33 
34 
35         typedef Arg0 back_;
36     };
37 
38 
39 
40 
41     template< typename Arg0 , typename Arg1 >
42     struct list2
43     {
44         static const long arity = 2;
45         typedef Arg0 child0; typedef Arg1 child1;
46         typedef mpl::void_ child2; typedef mpl::void_ child3; typedef mpl::void_ child4; typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9;
47 
48 
49         typedef Arg1 back_;
50     };
51 
52 
53 
54 
55     template< typename Arg0 , typename Arg1 , typename Arg2 >
56     struct list3
57     {
58         static const long arity = 3;
59         typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2;
60         typedef mpl::void_ child3; typedef mpl::void_ child4; typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9;
61 
62 
63         typedef Arg2 back_;
64     };
65 
66 
67 
68 
69     template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 >
70     struct list4
71     {
72         static const long arity = 4;
73         typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3;
74         typedef mpl::void_ child4; typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9;
75 
76 
77         typedef Arg3 back_;
78     };
79 
80 
81 
82 
83     template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 >
84     struct list5
85     {
86         static const long arity = 5;
87         typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4;
88         typedef mpl::void_ child5; typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9;
89 
90 
91         typedef Arg4 back_;
92     };
93 
94 
95 
96 
97     template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 >
98     struct list6
99     {
100         static const long arity = 6;
101         typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5;
102         typedef mpl::void_ child6; typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9;
103 
104 
105         typedef Arg5 back_;
106     };
107 
108 
109 
110 
111     template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 >
112     struct list7
113     {
114         static const long arity = 7;
115         typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; typedef Arg6 child6;
116         typedef mpl::void_ child7; typedef mpl::void_ child8; typedef mpl::void_ child9;
117 
118 
119         typedef Arg6 back_;
120     };
121 
122 
123 
124 
125     template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 >
126     struct list8
127     {
128         static const long arity = 8;
129         typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; typedef Arg6 child6; typedef Arg7 child7;
130         typedef mpl::void_ child8; typedef mpl::void_ child9;
131 
132 
133         typedef Arg7 back_;
134     };
135 
136 
137 
138 
139     template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 >
140     struct list9
141     {
142         static const long arity = 9;
143         typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; typedef Arg6 child6; typedef Arg7 child7; typedef Arg8 child8;
144         typedef mpl::void_ child9;
145 
146 
147         typedef Arg8 back_;
148     };
149 
150 
151 
152 
153     template< typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 , typename Arg9 >
154     struct list10
155     {
156         static const long arity = 10;
157         typedef Arg0 child0; typedef Arg1 child1; typedef Arg2 child2; typedef Arg3 child3; typedef Arg4 child4; typedef Arg5 child5; typedef Arg6 child6; typedef Arg7 child7; typedef Arg8 child8; typedef Arg9 child9;
158 
159 
160 
161         typedef Arg9 back_;
162     };
163