1 | # /* ************************************************************************** |
2 | # * * |
3 | # * (C) Copyright Paul Mensonides 2002. |
4 | # * Distributed under the Boost Software License, Version 1.0. (See |
5 | # * accompanying file LICENSE_1_0.txt or copy at |
6 | # * http://www.boost.org/LICENSE_1_0.txt) |
7 | # * * |
8 | # ************************************************************************** */ |
9 | # |
10 | # /* See http://www.boost.org for most recent version. */ |
11 | # |
12 | # if !BOOST_PP_IS_ITERATING |
13 | # |
14 | # include <boost/preprocessor/cat.hpp> |
15 | # include <boost/preprocessor/comparison/equal.hpp> |
16 | # include <boost/preprocessor/control/expr_iif.hpp> |
17 | # include <boost/preprocessor/iteration.hpp> |
18 | # include <boost/preprocessor/logical/bitor.hpp> |
19 | # include "test.h" |
20 | # |
21 | # define NO_FLAGS |
22 | # |
23 | # define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 10, "iteration.h")) |
24 | # include BOOST_PP_ITERATE() |
25 | # |
26 | # undef NO_FLAGS |
27 | # |
28 | # define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 5, "iteration.h", 0x0001)) |
29 | # include BOOST_PP_ITERATE() |
30 | # |
31 | # define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 5, "iteration.h", 0x0002)) |
32 | # include BOOST_PP_ITERATE() |
33 | # |
34 | # if BOOST_PP_LIMIT_ITERATION == 512 |
35 | # |
36 | # define ITER100S(n) \ |
37 | BOOST_PP_BITOR \ |
38 | ( \ |
39 | BOOST_PP_BITOR \ |
40 | ( \ |
41 | BOOST_PP_EQUAL(n,100), \ |
42 | BOOST_PP_EQUAL(n,200) \ |
43 | ), \ |
44 | BOOST_PP_BITOR \ |
45 | ( \ |
46 | BOOST_PP_BITOR \ |
47 | ( \ |
48 | BOOST_PP_EQUAL(n,300), \ |
49 | BOOST_PP_EQUAL(n,400) \ |
50 | ), \ |
51 | BOOST_PP_EQUAL(n,500) \ |
52 | ) \ |
53 | ) \ |
54 | /* */ |
55 | # |
56 | # define BOOST_PP_ITERATION_PARAMS_1 (4, (0, 512, "iteration.h", 0x0003)) |
57 | # include BOOST_PP_ITERATE() |
58 | # |
59 | # undef ITER100S |
60 | # |
61 | # define ITER50S(n) \ |
62 | BOOST_PP_BITOR \ |
63 | ( \ |
64 | BOOST_PP_BITOR \ |
65 | ( \ |
66 | BOOST_PP_EQUAL(n,450), \ |
67 | BOOST_PP_EQUAL(n,350) \ |
68 | ), \ |
69 | BOOST_PP_BITOR \ |
70 | ( \ |
71 | BOOST_PP_BITOR \ |
72 | ( \ |
73 | BOOST_PP_EQUAL(n,250), \ |
74 | BOOST_PP_EQUAL(n,150) \ |
75 | ), \ |
76 | BOOST_PP_EQUAL(n,50) \ |
77 | ) \ |
78 | ) \ |
79 | /* */ |
80 | # |
81 | # define BOOST_PP_ITERATION_PARAMS_1 (4, (512, 0, "iteration.h", 0x0004)) |
82 | # include BOOST_PP_ITERATE() |
83 | # |
84 | # undef ITER50S |
85 | # |
86 | # endif |
87 | # |
88 | # if BOOST_PP_LIMIT_ITERATION == 1024 |
89 | # |
90 | # define ITER100SA(n) \ |
91 | BOOST_PP_BITOR \ |
92 | ( \ |
93 | BOOST_PP_BITOR \ |
94 | ( \ |
95 | BOOST_PP_BITOR \ |
96 | ( \ |
97 | BOOST_PP_EQUAL(n,100), \ |
98 | BOOST_PP_EQUAL(n,200) \ |
99 | ), \ |
100 | BOOST_PP_BITOR \ |
101 | ( \ |
102 | BOOST_PP_BITOR \ |
103 | ( \ |
104 | BOOST_PP_EQUAL(n,300), \ |
105 | BOOST_PP_EQUAL(n,400) \ |
106 | ), \ |
107 | BOOST_PP_EQUAL(n,500) \ |
108 | ) \ |
109 | ), \ |
110 | BOOST_PP_BITOR \ |
111 | ( \ |
112 | BOOST_PP_BITOR \ |
113 | ( \ |
114 | BOOST_PP_EQUAL(n,600), \ |
115 | BOOST_PP_EQUAL(n,700) \ |
116 | ), \ |
117 | BOOST_PP_BITOR \ |
118 | ( \ |
119 | BOOST_PP_BITOR \ |
120 | ( \ |
121 | BOOST_PP_EQUAL(n,800), \ |
122 | BOOST_PP_EQUAL(n,900) \ |
123 | ), \ |
124 | BOOST_PP_EQUAL(n,1000) \ |
125 | ) \ |
126 | ) \ |
127 | ) \ |
128 | /* */ |
129 | # |
130 | # define BOOST_PP_ITERATION_PARAMS_1 (4, (0, 1024, "iteration.h", 0x0005)) |
131 | # include BOOST_PP_ITERATE() |
132 | # |
133 | # undef ITER100SA |
134 | # |
135 | # define ITER50SA(n) \ |
136 | BOOST_PP_BITOR \ |
137 | ( \ |
138 | BOOST_PP_BITOR \ |
139 | ( \ |
140 | BOOST_PP_BITOR \ |
141 | ( \ |
142 | BOOST_PP_EQUAL(n,950), \ |
143 | BOOST_PP_EQUAL(n,850) \ |
144 | ), \ |
145 | BOOST_PP_BITOR \ |
146 | ( \ |
147 | BOOST_PP_BITOR \ |
148 | ( \ |
149 | BOOST_PP_EQUAL(n,750), \ |
150 | BOOST_PP_EQUAL(n,650) \ |
151 | ), \ |
152 | BOOST_PP_EQUAL(n,550) \ |
153 | ) \ |
154 | ), \ |
155 | BOOST_PP_BITOR \ |
156 | ( \ |
157 | BOOST_PP_BITOR \ |
158 | ( \ |
159 | BOOST_PP_EQUAL(n,450), \ |
160 | BOOST_PP_EQUAL(n,350) \ |
161 | ), \ |
162 | BOOST_PP_BITOR \ |
163 | ( \ |
164 | BOOST_PP_BITOR \ |
165 | ( \ |
166 | BOOST_PP_EQUAL(n,250), \ |
167 | BOOST_PP_EQUAL(n,150) \ |
168 | ), \ |
169 | BOOST_PP_EQUAL(n,50) \ |
170 | ) \ |
171 | ) \ |
172 | ) \ |
173 | /* */ |
174 | # |
175 | # define BOOST_PP_ITERATION_PARAMS_1 (4, (1024, 0, "iteration.h", 0x0006)) |
176 | # include BOOST_PP_ITERATE() |
177 | # |
178 | # undef ITER50SA |
179 | # |
180 | # endif |
181 | # |
182 | # else |
183 | # if defined NO_FLAGS |
184 | |
185 | struct BOOST_PP_CAT(X, BOOST_PP_ITERATION()) { |
186 | BEGIN |
187 | BOOST_PP_ITERATION() >= BOOST_PP_ITERATION_START() && |
188 | BOOST_PP_ITERATION() <= BOOST_PP_ITERATION_FINISH() |
189 | END |
190 | }; |
191 | |
192 | # elif BOOST_PP_ITERATION_DEPTH() == 1 \ |
193 | && BOOST_PP_ITERATION_FLAGS() == 0x0001 |
194 | |
195 | struct BOOST_PP_CAT(Y, BOOST_PP_ITERATION()) { }; |
196 | |
197 | # elif BOOST_PP_ITERATION_DEPTH() == 1 \ |
198 | && BOOST_PP_ITERATION_FLAGS() == 0x0002 |
199 | |
200 | # define BOOST_PP_ITERATION_PARAMS_2 (3, (1, BOOST_PP_ITERATION(), "iteration.h")) |
201 | # include BOOST_PP_ITERATE() |
202 | |
203 | # elif BOOST_PP_ITERATION_DEPTH() == 1 \ |
204 | && BOOST_PP_ITERATION_FLAGS() == 0x0003 |
205 | |
206 | #define TEST_ITER_F(n) \ |
207 | BOOST_PP_EXPR_IIF \ |
208 | ( \ |
209 | ITER100S(n), \ |
210 | struct BOOST_PP_CAT(iter_512_f,n) { }; \ |
211 | ) \ |
212 | /* */ |
213 | |
214 | TEST_ITER_F(BOOST_PP_ITERATION()) |
215 | |
216 | # undef TEST_ITER_F |
217 | |
218 | # elif BOOST_PP_ITERATION_DEPTH() == 1 \ |
219 | && BOOST_PP_ITERATION_FLAGS() == 0x0004 |
220 | |
221 | #define TEST_ITER_B(n) \ |
222 | BOOST_PP_EXPR_IIF \ |
223 | ( \ |
224 | ITER50S(n), \ |
225 | struct BOOST_PP_CAT(iter_512_b,n) { }; \ |
226 | ) \ |
227 | /* */ |
228 | |
229 | TEST_ITER_B(BOOST_PP_ITERATION()) |
230 | |
231 | # undef TEST_ITER_B |
232 | |
233 | # elif BOOST_PP_ITERATION_DEPTH() == 1 \ |
234 | && BOOST_PP_ITERATION_FLAGS() == 0x0005 |
235 | |
236 | #define TEST_ITER_FA(n) \ |
237 | BOOST_PP_EXPR_IIF \ |
238 | ( \ |
239 | ITER100SA(n), \ |
240 | struct BOOST_PP_CAT(iter_1024_f,n) {}; \ |
241 | ) \ |
242 | /* */ |
243 | |
244 | TEST_ITER_FA(BOOST_PP_ITERATION()) |
245 | |
246 | # undef TEST_ITER_FA |
247 | |
248 | # elif BOOST_PP_ITERATION_DEPTH() == 1 \ |
249 | && BOOST_PP_ITERATION_FLAGS() == 0x0006 |
250 | |
251 | #define TEST_ITER_BA(n) \ |
252 | BOOST_PP_EXPR_IIF \ |
253 | ( \ |
254 | ITER50SA(n), \ |
255 | struct BOOST_PP_CAT(iter_1024_b,n) {}; \ |
256 | ) \ |
257 | /* */ |
258 | |
259 | TEST_ITER_BA(BOOST_PP_ITERATION()) |
260 | |
261 | # undef TEST_ITER_BA |
262 | |
263 | # elif BOOST_PP_ITERATION_DEPTH() == 2 \ |
264 | && BOOST_PP_FRAME_FLAGS(1) == 0x0002 |
265 | |
266 | struct BOOST_PP_CAT(Z, BOOST_PP_CAT(BOOST_PP_ITERATION(), BOOST_PP_RELATIVE_ITERATION(1))) { }; |
267 | |
268 | # else |
269 | # |
270 | # error should not get here! |
271 | # |
272 | # endif |
273 | # endif |
274 | |