]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*============================================================================== |
2 | Copyright (c) 2010 Thomas Heller | |
3 | ||
4 | Distributed under the Boost Software License, Version 1.0. (See accompanying | |
5 | file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
6 | ==============================================================================*/ | |
7 | ||
8 | #if !BOOST_PP_IS_ITERATING | |
9 | ||
10 | #include <boost/preprocessor/tuple/elem.hpp> | |
11 | ||
12 | #ifndef BOOST_PHOENIX_ITERATION_PARAMS | |
13 | #error "BOOST_PHOENIX_ITERATION_PARAMS not defined" | |
14 | #endif | |
15 | ||
16 | #define BOOST_PHOENIX_ITERATION_PARAMS_SIZE \ | |
17 | BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PHOENIX_ITERATION_PARAMS) \ | |
18 | /**/ | |
19 | ||
20 | #define BOOST_PHOENIX_ITERATION_TUPLE \ | |
21 | BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PHOENIX_ITERATION_PARAMS) \ | |
22 | /**/ | |
23 | ||
24 | #define BOOST_PHOENIX_ITERATION_START \ | |
25 | BOOST_PP_TUPLE_ELEM( \ | |
26 | BOOST_PHOENIX_ITERATION_PARAMS_SIZE, 0, BOOST_PHOENIX_ITERATION_TUPLE) \ | |
27 | /**/ | |
28 | ||
29 | #define BOOST_PHOENIX_ITERATION_END \ | |
30 | BOOST_PP_TUPLE_ELEM( \ | |
31 | BOOST_PHOENIX_ITERATION_PARAMS_SIZE, 1, BOOST_PHOENIX_ITERATION_TUPLE) \ | |
32 | /**/ | |
33 | ||
34 | ||
35 | #define BOOST_PHOENIX_ITERATION_FILE() \ | |
36 | BOOST_PP_TUPLE_ELEM( \ | |
37 | BOOST_PHOENIX_ITERATION_PARAMS_SIZE, 2, BOOST_PHOENIX_ITERATION_TUPLE) \ | |
38 | /**/ | |
39 | ||
40 | #if BOOST_PHOENIX_ITERATION_PARAMS_SIZE == 3 | |
41 | ||
42 | #define BOOST_PP_ITERATION_PARAMS_1 \ | |
43 | (3, (BOOST_PHOENIX_ITERATION_START, BOOST_PHOENIX_ITERATION_END, \ | |
44 | <boost/phoenix/support/detail/iterate.hpp>)) \ | |
45 | /**/ | |
46 | ||
47 | #else | |
48 | ||
49 | #define BOOST_PHOENIX_ITERATION_FLAG \ | |
50 | BOOST_PP_TUPLE_ELEM( \ | |
51 | BOOST_PHOENIX_ITERATION_PARAMS_SIZE, 3, BOOST_PHOENIX_ITERATION_TUPLE) \ | |
52 | /**/ | |
53 | ||
54 | #define BOOST_PP_ITERATION_PARAMS_1 \ | |
55 | (4, (BOOST_PHOENIX_ITERATION_START, BOOST_PHOENIX_ITERATION_END, \ | |
56 | <boost/phoenix/support/detail/iterate.hpp>, \ | |
57 | BOOST_PHOENIX_ITERATION_FLAG)) \ | |
58 | /**/ | |
59 | ||
60 | #endif | |
61 | ||
62 | #include BOOST_PP_ITERATE() | |
63 | ||
64 | #undef BOOST_PHOENIX_ITERATION_PARAMS_SIZE | |
65 | #undef BOOST_PHOENIX_ITERATION_TUPLE | |
66 | #undef BOOST_PHOENIX_ITERATION_START | |
67 | #undef BOOST_PHOENIX_ITERATION_END | |
68 | #undef BOOST_PHOENIX_ITERATION_PARAMS | |
69 | ||
70 | #else | |
71 | ||
72 | #undef BOOST_PHOENIX_IS_ITERATING | |
73 | #define BOOST_PHOENIX_IS_ITERATING 1 | |
74 | ||
75 | #include <boost/phoenix/support/detail/iterate_undef.hpp> | |
76 | #include <boost/phoenix/support/detail/iterate_define.hpp> | |
77 | ||
78 | ||
79 | #include BOOST_PHOENIX_ITERATION_FILE() | |
80 | ||
81 | #undef BOOST_PHOENIX_ITERATION | |
82 | ||
83 | #undef BOOST_PHOENIX_IS_ITERATING | |
84 | #define BOOST_PHOENIX_IS_ITERATING 0 | |
85 | ||
86 | #include <boost/phoenix/support/detail/iterate_undef.hpp> | |
87 | #include <boost/phoenix/support/detail/iterate_define.hpp> | |
88 | ||
89 | #endif |