]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*============================================================================== |
2 | Copyright (c) 2005-2010 Joel de Guzman | |
3 | Copyright (c) 2010 Thomas Heller | |
4 | ||
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 | |
9 | { | |
10 | template <typename Dummy = void> | |
11 | struct vector0 | |
12 | { | |
13 | typedef mpl::int_<0> size_type; | |
14 | static const int size_value = 0; | |
15 | }; | |
16 | template <int> struct vector_chooser; | |
17 | template <> | |
18 | struct vector_chooser<0> | |
19 | { | |
20 | template <typename Dummy = void> | |
21 | struct apply | |
22 | { | |
23 | typedef vector0<> type; | |
24 | }; | |
25 | }; | |
26 | }} | |
27 | ||
28 | ||
29 | ||
30 | ||
31 | ||
32 | ||
33 | ||
34 | namespace boost { namespace phoenix | |
35 | { | |
36 | template <typename A0> | |
37 | struct vector1 | |
38 | { | |
39 | typedef A0 member_type0; A0 a0; | |
40 | ||
41 | typedef mpl::int_<1> size_type; | |
42 | static const int size_value = 1; | |
43 | typedef | |
44 | vector0<> | |
45 | args_type; | |
46 | args_type args() const | |
47 | { | |
48 | args_type r = {}; | |
49 | return r; | |
50 | } | |
51 | }; | |
52 | template <> | |
53 | struct vector_chooser<1> | |
54 | { | |
55 | template <typename A0> | |
56 | struct apply | |
57 | { | |
58 | typedef vector1<A0> type; | |
59 | }; | |
60 | }; | |
61 | }} | |
62 | BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( | |
63 | (A0) | |
64 | , ( boost::phoenix::vector1 ) (A0) | |
65 | , (A0, a0) | |
66 | ) | |
67 | ||
68 | ||
69 | ||
70 | ||
71 | ||
72 | ||
73 | ||
74 | namespace boost { namespace phoenix | |
75 | { | |
76 | template <typename A0 , typename A1> | |
77 | struct vector2 | |
78 | { | |
79 | typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; | |
80 | ||
81 | typedef mpl::int_<2> size_type; | |
82 | static const int size_value = 2; | |
83 | typedef | |
84 | vector1<A1> | |
85 | args_type; | |
86 | args_type args() const | |
87 | { | |
88 | args_type r = {a1}; | |
89 | return r; | |
90 | } | |
91 | }; | |
92 | template <> | |
93 | struct vector_chooser<2> | |
94 | { | |
95 | template <typename A0 , typename A1> | |
96 | struct apply | |
97 | { | |
98 | typedef vector2<A0 , A1> type; | |
99 | }; | |
100 | }; | |
101 | }} | |
102 | BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( | |
103 | (A0) (A1) | |
104 | , ( boost::phoenix::vector2 ) (A0) (A1) | |
105 | , (A0, a0) (A1, a1) | |
106 | ) | |
107 | ||
108 | ||
109 | ||
110 | ||
111 | ||
112 | ||
113 | ||
114 | namespace boost { namespace phoenix | |
115 | { | |
116 | template <typename A0 , typename A1 , typename A2> | |
117 | struct vector3 | |
118 | { | |
119 | typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; | |
120 | ||
121 | typedef mpl::int_<3> size_type; | |
122 | static const int size_value = 3; | |
123 | typedef | |
124 | vector2<A1 , A2> | |
125 | args_type; | |
126 | args_type args() const | |
127 | { | |
128 | args_type r = {a1 , a2}; | |
129 | return r; | |
130 | } | |
131 | }; | |
132 | template <> | |
133 | struct vector_chooser<3> | |
134 | { | |
135 | template <typename A0 , typename A1 , typename A2> | |
136 | struct apply | |
137 | { | |
138 | typedef vector3<A0 , A1 , A2> type; | |
139 | }; | |
140 | }; | |
141 | }} | |
142 | BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( | |
143 | (A0) (A1) (A2) | |
144 | , ( boost::phoenix::vector3 ) (A0) (A1) (A2) | |
145 | , (A0, a0) (A1, a1) (A2, a2) | |
146 | ) | |
147 | ||
148 | ||
149 | ||
150 | ||
151 | ||
152 | ||
153 | ||
154 | namespace boost { namespace phoenix | |
155 | { | |
156 | template <typename A0 , typename A1 , typename A2 , typename A3> | |
157 | struct vector4 | |
158 | { | |
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; | |
160 | ||
161 | typedef mpl::int_<4> size_type; | |
162 | static const int size_value = 4; | |
163 | typedef | |
164 | vector3<A1 , A2 , A3> | |
165 | args_type; | |
166 | args_type args() const | |
167 | { | |
168 | args_type r = {a1 , a2 , a3}; | |
169 | return r; | |
170 | } | |
171 | }; | |
172 | template <> | |
173 | struct vector_chooser<4> | |
174 | { | |
175 | template <typename A0 , typename A1 , typename A2 , typename A3> | |
176 | struct apply | |
177 | { | |
178 | typedef vector4<A0 , A1 , A2 , A3> type; | |
179 | }; | |
180 | }; | |
181 | }} | |
182 | BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL( | |
183 | (A0) (A1) (A2) (A3) | |
184 | , ( boost::phoenix::vector4 ) (A0) (A1) (A2) (A3) | |
185 | , (A0, a0) (A1, a1) (A2, a2) (A3, a3) | |
186 | ) | |
187 | ||
188 | ||
189 | ||
190 | ||
191 | ||
192 | ||
193 | ||
194 | namespace boost { namespace phoenix | |
195 | { | |
196 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
197 | struct vector5 | |
198 | { | |
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; | |
200 | ||
201 | typedef mpl::int_<5> size_type; | |
202 | static const int size_value = 5; | |
203 | typedef | |
204 | vector4<A1 , A2 , A3 , A4> | |
205 | args_type; | |
206 | args_type args() const | |
207 | { | |
208 | args_type r = {a1 , a2 , a3 , a4}; | |
209 | return r; | |
210 | } | |
211 | }; | |
212 | template <> | |
213 | struct vector_chooser<5> | |
214 | { | |
215 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
216 | struct apply | |
217 | { | |
218 | typedef vector5<A0 , A1 , A2 , A3 , A4> type; | |
219 | }; | |
220 | }; | |
221 | }} | |
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) | |
226 | ) | |
227 | ||
228 | ||
229 | ||
230 | ||
231 | ||
232 | ||
233 | ||
234 | namespace boost { namespace phoenix | |
235 | { | |
236 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
237 | struct vector6 | |
238 | { | |
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; | |
240 | ||
241 | typedef mpl::int_<6> size_type; | |
242 | static const int size_value = 6; | |
243 | typedef | |
244 | vector5<A1 , A2 , A3 , A4 , A5> | |
245 | args_type; | |
246 | args_type args() const | |
247 | { | |
248 | args_type r = {a1 , a2 , a3 , a4 , a5}; | |
249 | return r; | |
250 | } | |
251 | }; | |
252 | template <> | |
253 | struct vector_chooser<6> | |
254 | { | |
255 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
256 | struct apply | |
257 | { | |
258 | typedef vector6<A0 , A1 , A2 , A3 , A4 , A5> type; | |
259 | }; | |
260 | }; | |
261 | }} | |
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) | |
266 | ) | |
267 | ||
268 | ||
269 | ||
270 | ||
271 | ||
272 | ||
273 | ||
274 | namespace boost { namespace phoenix | |
275 | { | |
276 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
277 | struct vector7 | |
278 | { | |
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; | |
280 | ||
281 | typedef mpl::int_<7> size_type; | |
282 | static const int size_value = 7; | |
283 | typedef | |
284 | vector6<A1 , A2 , A3 , A4 , A5 , A6> | |
285 | args_type; | |
286 | args_type args() const | |
287 | { | |
288 | args_type r = {a1 , a2 , a3 , a4 , a5 , a6}; | |
289 | return r; | |
290 | } | |
291 | }; | |
292 | template <> | |
293 | struct vector_chooser<7> | |
294 | { | |
295 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
296 | struct apply | |
297 | { | |
298 | typedef vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6> type; | |
299 | }; | |
300 | }; | |
301 | }} | |
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) | |
306 | ) | |
307 | ||
308 | ||
309 | ||
310 | ||
311 | ||
312 | ||
313 | ||
314 | namespace boost { namespace phoenix | |
315 | { | |
316 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
317 | struct vector8 | |
318 | { | |
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; | |
320 | ||
321 | typedef mpl::int_<8> size_type; | |
322 | static const int size_value = 8; | |
323 | typedef | |
324 | vector7<A1 , A2 , A3 , A4 , A5 , A6 , A7> | |
325 | args_type; | |
326 | args_type args() const | |
327 | { | |
328 | args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7}; | |
329 | return r; | |
330 | } | |
331 | }; | |
332 | template <> | |
333 | struct vector_chooser<8> | |
334 | { | |
335 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
336 | struct apply | |
337 | { | |
338 | typedef vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> type; | |
339 | }; | |
340 | }; | |
341 | }} | |
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) | |
346 | ) | |
347 | ||
348 | ||
349 | ||
350 | ||
351 | ||
352 | ||
353 | ||
354 | namespace boost { namespace phoenix | |
355 | { | |
356 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
357 | struct vector9 | |
358 | { | |
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; | |
360 | ||
361 | typedef mpl::int_<9> size_type; | |
362 | static const int size_value = 9; | |
363 | typedef | |
364 | vector8<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> | |
365 | args_type; | |
366 | args_type args() const | |
367 | { | |
368 | args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8}; | |
369 | return r; | |
370 | } | |
371 | }; | |
372 | template <> | |
373 | struct vector_chooser<9> | |
374 | { | |
375 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
376 | struct apply | |
377 | { | |
378 | typedef vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> type; | |
379 | }; | |
380 | }; | |
381 | }} | |
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) | |
386 | ) | |
387 | ||
388 | ||
389 | ||
390 | ||
391 | ||
392 | ||
393 | ||
394 | namespace boost { namespace phoenix | |
395 | { | |
396 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9> | |
397 | struct vector10 | |
398 | { | |
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; | |
400 | ||
401 | typedef mpl::int_<10> size_type; | |
402 | static const int size_value = 10; | |
403 | typedef | |
404 | vector9<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> | |
405 | args_type; | |
406 | args_type args() const | |
407 | { | |
408 | args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9}; | |
409 | return r; | |
410 | } | |
411 | }; | |
412 | template <> | |
413 | struct vector_chooser<10> | |
414 | { | |
415 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9> | |
416 | struct apply | |
417 | { | |
418 | typedef vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> type; | |
419 | }; | |
420 | }; | |
421 | }} | |
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) | |
426 | ) | |
427 | ||
428 | ||
429 | ||
430 | ||
431 | ||
432 | ||
433 | ||
434 | namespace boost { namespace phoenix | |
435 | { | |
436 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10> | |
437 | struct vector11 | |
438 | { | |
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; | |
440 | ||
441 | typedef mpl::int_<11> size_type; | |
442 | static const int size_value = 11; | |
443 | typedef | |
444 | vector10<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> | |
445 | args_type; | |
446 | args_type args() const | |
447 | { | |
448 | args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10}; | |
449 | return r; | |
450 | } | |
451 | }; | |
452 | template <> | |
453 | struct vector_chooser<11> | |
454 | { | |
455 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10> | |
456 | struct apply | |
457 | { | |
458 | typedef vector11<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> type; | |
459 | }; | |
460 | }; | |
461 | }} | |
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) | |
466 | ) |