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
185struct 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
195struct 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
214TEST_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
229TEST_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
244TEST_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
259TEST_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
266struct 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

source code of boost/libs/preprocessor/test/iteration.h