1 /*==============================================================================
2 Copyright (c) 2005-2010 Joel de Guzman
3 Copyright (c) 2010 Thomas Heller
5 Distributed under the Boost Software License, Version 1.0. (See accompanying
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 ==============================================================================*/
8 namespace boost { namespace phoenix
10 template <typename Dummy = void>
13 typedef mpl::int_<0> size_type;
14 static const int size_value = 0;
16 template <int> struct vector_chooser;
18 struct vector_chooser<0>
20 template <typename Dummy = void>
23 typedef vector0<> type;
34 namespace boost { namespace phoenix
36 template <typename A0>
39 typedef A0 member_type0; A0 a0;
41 typedef mpl::int_<1> size_type;
42 static const int size_value = 1;
46 args_type args() const
53 struct vector_chooser<1>
55 template <typename A0>
58 typedef vector1<A0> type;
62 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
64 , ( boost::phoenix::vector1 ) (A0)
74 namespace boost { namespace phoenix
76 template <typename A0 , typename A1>
79 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1;
81 typedef mpl::int_<2> size_type;
82 static const int size_value = 2;
86 args_type args() const
93 struct vector_chooser<2>
95 template <typename A0 , typename A1>
98 typedef vector2<A0 , A1> type;
102 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
104 , ( boost::phoenix::vector2 ) (A0) (A1)
114 namespace boost { namespace phoenix
116 template <typename A0 , typename A1 , typename A2>
119 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2;
121 typedef mpl::int_<3> size_type;
122 static const int size_value = 3;
126 args_type args() const
128 args_type r = {a1 , a2};
133 struct vector_chooser<3>
135 template <typename A0 , typename A1 , typename A2>
138 typedef vector3<A0 , A1 , A2> type;
142 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
144 , ( boost::phoenix::vector3 ) (A0) (A1) (A2)
145 , (A0, a0) (A1, a1) (A2, a2)
154 namespace boost { namespace phoenix
156 template <typename A0 , typename A1 , typename A2 , typename A3>
159 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3;
161 typedef mpl::int_<4> size_type;
162 static const int size_value = 4;
164 vector3<A1 , A2 , A3>
166 args_type args() const
168 args_type r = {a1 , a2 , a3};
173 struct vector_chooser<4>
175 template <typename A0 , typename A1 , typename A2 , typename A3>
178 typedef vector4<A0 , A1 , A2 , A3> type;
182 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
184 , ( boost::phoenix::vector4 ) (A0) (A1) (A2) (A3)
185 , (A0, a0) (A1, a1) (A2, a2) (A3, a3)
194 namespace boost { namespace phoenix
196 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
199 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4;
201 typedef mpl::int_<5> size_type;
202 static const int size_value = 5;
204 vector4<A1 , A2 , A3 , A4>
206 args_type args() const
208 args_type r = {a1 , a2 , a3 , a4};
213 struct vector_chooser<5>
215 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
218 typedef vector5<A0 , A1 , A2 , A3 , A4> type;
222 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
223 (A0) (A1) (A2) (A3) (A4)
224 , ( boost::phoenix::vector5 ) (A0) (A1) (A2) (A3) (A4)
225 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4)
234 namespace boost { namespace phoenix
236 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
239 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5;
241 typedef mpl::int_<6> size_type;
242 static const int size_value = 6;
244 vector5<A1 , A2 , A3 , A4 , A5>
246 args_type args() const
248 args_type r = {a1 , a2 , a3 , a4 , a5};
253 struct vector_chooser<6>
255 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
258 typedef vector6<A0 , A1 , A2 , A3 , A4 , A5> type;
262 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
263 (A0) (A1) (A2) (A3) (A4) (A5)
264 , ( boost::phoenix::vector6 ) (A0) (A1) (A2) (A3) (A4) (A5)
265 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5)
274 namespace boost { namespace phoenix
276 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
279 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6;
281 typedef mpl::int_<7> size_type;
282 static const int size_value = 7;
284 vector6<A1 , A2 , A3 , A4 , A5 , A6>
286 args_type args() const
288 args_type r = {a1 , a2 , a3 , a4 , a5 , a6};
293 struct vector_chooser<7>
295 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
298 typedef vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6> type;
302 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
303 (A0) (A1) (A2) (A3) (A4) (A5) (A6)
304 , ( boost::phoenix::vector7 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6)
305 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6)
314 namespace boost { namespace phoenix
316 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
319 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6; typedef A7 member_type7; A7 a7;
321 typedef mpl::int_<8> size_type;
322 static const int size_value = 8;
324 vector7<A1 , A2 , A3 , A4 , A5 , A6 , A7>
326 args_type args() const
328 args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7};
333 struct vector_chooser<8>
335 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
338 typedef vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> type;
342 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
343 (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7)
344 , ( boost::phoenix::vector8 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7)
345 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7)
354 namespace boost { namespace phoenix
356 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
359 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6; typedef A7 member_type7; A7 a7; typedef A8 member_type8; A8 a8;
361 typedef mpl::int_<9> size_type;
362 static const int size_value = 9;
364 vector8<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
366 args_type args() const
368 args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
373 struct vector_chooser<9>
375 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
378 typedef vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> type;
382 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
383 (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8)
384 , ( boost::phoenix::vector9 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8)
385 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) (A8, a8)
394 namespace boost { namespace phoenix
396 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
399 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6; typedef A7 member_type7; A7 a7; typedef A8 member_type8; A8 a8; typedef A9 member_type9; A9 a9;
401 typedef mpl::int_<10> size_type;
402 static const int size_value = 10;
404 vector9<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
406 args_type args() const
408 args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
413 struct vector_chooser<10>
415 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
418 typedef vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> type;
422 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
423 (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9)
424 , ( boost::phoenix::vector10 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9)
425 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) (A8, a8) (A9, a9)
434 namespace boost { namespace phoenix
436 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
439 typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6; typedef A7 member_type7; A7 a7; typedef A8 member_type8; A8 a8; typedef A9 member_type9; A9 a9; typedef A10 member_type10; A10 a10;
441 typedef mpl::int_<11> size_type;
442 static const int size_value = 11;
444 vector10<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
446 args_type args() const
448 args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
453 struct vector_chooser<11>
455 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
458 typedef vector11<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> type;
462 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
463 (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9) (A10)
464 , ( boost::phoenix::vector11 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9) (A10)
465 , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) (A8, a8) (A9, a9) (A10, a10)