]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/preprocessor/test/seq.cxx
1 # /* **************************************************************************
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)
8 # ************************************************************************** */
10 # /* Revised by Edward Diener (2011,2020) */
12 # /* See http://www.boost.org for most recent version. */
14 # include <boost/preprocessor/config/limits.hpp>
15 # include <boost/preprocessor/arithmetic/add.hpp>
16 # include <boost/preprocessor/arithmetic/dec.hpp>
17 # include <boost/preprocessor/arithmetic/div.hpp>
18 # include <boost/preprocessor/arithmetic/inc.hpp>
19 # include <boost/preprocessor/arithmetic/mod.hpp>
20 # include <boost/preprocessor/arithmetic/sub.hpp>
21 # include <boost/preprocessor/cat.hpp>
22 # include <boost/preprocessor/comparison/equal.hpp>
23 # include <boost/preprocessor/comparison/less.hpp>
24 # include <boost/preprocessor/control/iif.hpp>
25 # include <boost/preprocessor/control/expr_iif.hpp>
26 # include <boost/preprocessor/facilities/is_empty.hpp>
27 # include <boost/preprocessor/logical/bitor.hpp>
28 # include <boost/preprocessor/logical/not.hpp>
29 # include <boost/preprocessor/seq.hpp>
30 # include <boost/preprocessor/array/elem.hpp>
31 # include <boost/preprocessor/array/size.hpp>
32 # include <boost/preprocessor/tuple/elem.hpp>
33 # include <boost/preprocessor/tuple/size.hpp>
34 # include <boost/preprocessor/list/at.hpp>
35 # include <boost/preprocessor/list/size.hpp>
36 # include <boost/preprocessor/variadic/elem.hpp>
37 # include <boost/preprocessor/variadic/size.hpp>
38 # include <boost/preprocessor/variadic/has_opt.hpp>
39 # include <libs/preprocessor/test/test.h>
42 # define SEQ (4)(1)(5)(2)
45 (1)(2)(3)(4)(5)(6)(7)(8)(9) \
46 (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \
47 (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \
48 (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \
49 (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \
50 (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \
51 (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \
52 (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \
53 (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \
54 (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \
58 (1)(2)(3)(4)(5)(6)(7)(8)(9) \
59 (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \
60 (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \
61 (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \
62 (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \
63 (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \
64 (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \
65 (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \
66 (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \
67 (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \
68 (100)(101)(102)(103)(104)(105)(106)(107)(108)(109) \
69 (110)(111)(112)(113)(114)(115)(116)(117)(118)(119) \
70 (120)(121)(122)(123)(124)(125)(126)(127)(128)(129) \
71 (130)(131)(132)(133)(134)(135)(136)(137)(138)(139) \
72 (140)(141)(142)(143)(144)(145)(146)(147)(148)(149) \
73 (150)(151)(152)(153)(154)(155)(156)(157)(158)(159) \
74 (160)(161)(162)(163)(164)(165)(166)(167)(168)(169) \
75 (170)(171)(172)(173)(174)(175)(176)(177)(178)(179) \
76 (180)(181)(182)(183)(184)(185)(186)(187)(188)(189) \
77 (190)(191)(192)(193)(194)(195)(196)(197)(198)(199) \
78 (200)(201)(202)(203)(204)(205)(206)(207)(208)(209) \
79 (210)(211)(212)(213)(214)(215)(216)(217)(218)(219) \
80 (220)(221)(222)(223)(224)(225)(226)(227)(228)(229) \
81 (230)(231)(232)(233)(234)(235)(236)(237)(238)(239) \
82 (240)(241)(242)(243)(244)(245)(246)(247)(248)(249) \
83 (250)(251)(252)(253)(254)(255)
85 # define SEQ_256 SEQ_255(256)
87 # if BOOST_PP_LIMIT_SEQ == 512
90 (1)(2)(3)(4)(5)(6)(7)(8)(9) \
91 (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \
92 (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \
93 (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \
94 (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \
95 (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \
96 (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \
97 (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \
98 (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \
99 (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \
100 (100)(101)(102)(103)(104)(105)(106)(107)(108)(109) \
101 (110)(111)(112)(113)(114)(115)(116)(117)(118)(119) \
102 (120)(121)(122)(123)(124)(125)(126)(127)(128)(129) \
103 (130)(131)(132)(133)(134)(135)(136)(137)(138)(139) \
104 (140)(141)(142)(143)(144)(145)(146)(147)(148)(149) \
105 (150)(151)(152)(153)(154)(155)(156)(157)(158)(159) \
106 (160)(161)(162)(163)(164)(165)(166)(167)(168)(169) \
107 (170)(171)(172)(173)(174)(175)(176)(177)(178)(179) \
108 (180)(181)(182)(183)(184)(185)(186)(187)(188)(189) \
109 (190)(191)(192)(193)(194)(195)(196)(197)(198)(199) \
110 (200)(201)(202)(203)(204)(205)(206)(207)(208)(209) \
111 (210)(211)(212)(213)(214)(215)(216)(217)(218)(219) \
112 (220)(221)(222)(223)(224)(225)(226)(227)(228)(229) \
113 (230)(231)(232)(233)(234)(235)(236)(237)(238)(239) \
114 (240)(241)(242)(243)(244)(245)(246)(247)(248)(249) \
115 (250)(251)(252)(253)(254)(255)(256)(257)(258)(259) \
116 (260)(261)(262)(263)(264)(265)(266)(267)(268)(269) \
117 (270)(271)(272)(273)(274)(275)(276)(277)(278)(279) \
118 (280)(281)(282)(283)(284)(285)(286)(287)(288)(289) \
119 (290)(291)(292)(293)(294)(295)(296)(297)(298)(299) \
120 (300)(301)(302)(303)(304)(305)(306)(307)(308)(309) \
121 (310)(311)(312)(313)(314)(315)(316)(317)(318)(319) \
122 (320)(321)(322)(323)(324)(325)(326)(327)(328)(329) \
123 (330)(331)(332)(333)(334)(335)(336)(337)(338)(339) \
124 (340)(341)(342)(343)(344)(345)(346)(347)(348)(349) \
125 (350)(351)(352)(353)(354)(355)(356)(357)(358)(359) \
126 (360)(361)(362)(363)(364)(365)(366)(367)(368)(369) \
127 (370)(371)(372)(373)(374)(375)(376)(377)(378)(379) \
128 (380)(381)(382)(383)(384)(385)(386)(387)(388)(389) \
129 (390)(391)(392)(393)(394)(395)(396)(397)(398)(399) \
130 (400)(401)(402)(403)(404)(405)(406)(407)(408)(409) \
131 (410)(411)(412)(413)(414)(415)(416)(417)(418)(419) \
132 (420)(421)(422)(423)(424)(425)(426)(427)(428)(429) \
133 (430)(431)(432)(433)(434)(435)(436)(437)(438)(439) \
134 (440)(441)(442)(443)(444)(445)(446)(447)(448)(449) \
135 (450)(451)(452)(453)(454)(455)(456)(457)(458)(459) \
136 (460)(461)(462)(463)(464)(465)(466)(467)(468)(469) \
137 (470)(471)(472)(473)(474)(475)(476)(477)(478)(479) \
138 (480)(481)(482)(483)(484)(485)(486)(487)(488)(489) \
139 (490)(491)(492)(493)(494)(495)(496)(497)(498)(499) \
140 (500)(501)(502)(503)(504)(505)(506)(507)(508)(509) \
143 # define SEQ_512 SEQ_511(512)
147 # if BOOST_PP_LIMIT_SEQ == 1024
150 (1)(2)(3)(4)(5)(6)(7)(8)(9) \
151 (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \
152 (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \
153 (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \
154 (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \
155 (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \
156 (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \
157 (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \
158 (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \
159 (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \
160 (100)(101)(102)(103)(104)(105)(106)(107)(108)(109) \
161 (110)(111)(112)(113)(114)(115)(116)(117)(118)(119) \
162 (120)(121)(122)(123)(124)(125)(126)(127)(128)(129) \
163 (130)(131)(132)(133)(134)(135)(136)(137)(138)(139) \
164 (140)(141)(142)(143)(144)(145)(146)(147)(148)(149) \
165 (150)(151)(152)(153)(154)(155)(156)(157)(158)(159) \
166 (160)(161)(162)(163)(164)(165)(166)(167)(168)(169) \
167 (170)(171)(172)(173)(174)(175)(176)(177)(178)(179) \
168 (180)(181)(182)(183)(184)(185)(186)(187)(188)(189) \
169 (190)(191)(192)(193)(194)(195)(196)(197)(198)(199) \
170 (200)(201)(202)(203)(204)(205)(206)(207)(208)(209) \
171 (210)(211)(212)(213)(214)(215)(216)(217)(218)(219) \
172 (220)(221)(222)(223)(224)(225)(226)(227)(228)(229) \
173 (230)(231)(232)(233)(234)(235)(236)(237)(238)(239) \
174 (240)(241)(242)(243)(244)(245)(246)(247)(248)(249) \
175 (250)(251)(252)(253)(254)(255)(256)(257)(258)(259) \
176 (260)(261)(262)(263)(264)(265)(266)(267)(268)(269) \
177 (270)(271)(272)(273)(274)(275)(276)(277)(278)(279) \
178 (280)(281)(282)(283)(284)(285)(286)(287)(288)(289) \
179 (290)(291)(292)(293)(294)(295)(296)(297)(298)(299) \
180 (300)(301)(302)(303)(304)(305)(306)(307)(308)(309) \
181 (310)(311)(312)(313)(314)(315)(316)(317)(318)(319) \
182 (320)(321)(322)(323)(324)(325)(326)(327)(328)(329) \
183 (330)(331)(332)(333)(334)(335)(336)(337)(338)(339) \
184 (340)(341)(342)(343)(344)(345)(346)(347)(348)(349) \
185 (350)(351)(352)(353)(354)(355)(356)(357)(358)(359) \
186 (360)(361)(362)(363)(364)(365)(366)(367)(368)(369) \
187 (370)(371)(372)(373)(374)(375)(376)(377)(378)(379) \
188 (380)(381)(382)(383)(384)(385)(386)(387)(388)(389) \
189 (390)(391)(392)(393)(394)(395)(396)(397)(398)(399) \
190 (400)(401)(402)(403)(404)(405)(406)(407)(408)(409) \
191 (410)(411)(412)(413)(414)(415)(416)(417)(418)(419) \
192 (420)(421)(422)(423)(424)(425)(426)(427)(428)(429) \
193 (430)(431)(432)(433)(434)(435)(436)(437)(438)(439) \
194 (440)(441)(442)(443)(444)(445)(446)(447)(448)(449) \
195 (450)(451)(452)(453)(454)(455)(456)(457)(458)(459) \
196 (460)(461)(462)(463)(464)(465)(466)(467)(468)(469) \
197 (470)(471)(472)(473)(474)(475)(476)(477)(478)(479) \
198 (480)(481)(482)(483)(484)(485)(486)(487)(488)(489) \
199 (490)(491)(492)(493)(494)(495)(496)(497)(498)(499) \
200 (500)(501)(502)(503)(504)(505)(506)(507)(508)(509) \
202 (513)(514)(515)(516)(517)(518)(519)(520)(521) \
203 (522)(523)(524)(525)(526)(527)(528)(529)(530)(531) \
204 (532)(533)(534)(535)(536)(537)(538)(539)(540)(541) \
205 (542)(543)(544)(545)(546)(547)(548)(549)(550)(551) \
206 (552)(553)(554)(555)(556)(557)(558)(559)(560)(561) \
207 (562)(563)(564)(565)(566)(567)(568)(569)(570)(571) \
208 (572)(573)(574)(575)(576)(577)(578)(579)(580)(581) \
209 (582)(583)(584)(585)(586)(587)(588)(589)(590)(591) \
210 (592)(593)(594)(595)(596)(597)(598)(599)(600)(601) \
211 (602)(603)(604)(605)(606)(607)(608)(609)(610)(611) \
212 (612)(613)(614)(615)(616)(617)(618)(619)(620)(621) \
213 (622)(623)(624)(625)(626)(627)(628)(629)(630)(631) \
214 (632)(633)(634)(635)(636)(637)(638)(639)(640)(641) \
215 (642)(643)(644)(645)(646)(647)(648)(649)(650)(651) \
216 (652)(653)(654)(655)(656)(657)(658)(659)(660)(661) \
217 (662)(663)(664)(665)(666)(667)(668)(669)(670)(671) \
218 (672)(673)(674)(675)(676)(677)(678)(679)(680)(681) \
219 (682)(683)(684)(685)(686)(687)(688)(689)(690)(691) \
220 (692)(693)(694)(695)(696)(697)(698)(699)(700)(701) \
221 (702)(703)(704)(705)(706)(707)(708)(709)(710)(711) \
222 (712)(713)(714)(715)(716)(717)(718)(719)(720)(721) \
223 (722)(723)(724)(725)(726)(727)(728)(729)(730)(731) \
224 (732)(733)(734)(735)(736)(737)(738)(739)(740)(741) \
225 (742)(743)(744)(745)(746)(747)(748)(749)(750)(751) \
226 (752)(753)(754)(755)(756)(757)(758)(759)(760)(761) \
227 (762)(763)(764)(765)(766)(767)(768)(769)(770)(771) \
228 (772)(773)(774)(775)(776)(777)(778)(779)(780)(781) \
229 (782)(783)(784)(785)(786)(787)(788)(789)(790)(791) \
230 (792)(793)(794)(795)(796)(797)(798)(799)(800)(801) \
231 (802)(803)(804)(805)(806)(807)(808)(809)(810)(811) \
232 (812)(813)(814)(815)(816)(817)(818)(819)(820)(821) \
233 (822)(823)(824)(825)(826)(827)(828)(829)(830)(831) \
234 (832)(833)(834)(835)(836)(837)(838)(839)(840)(841) \
235 (842)(843)(844)(845)(846)(847)(848)(849)(850)(851) \
236 (852)(853)(854)(855)(856)(857)(858)(859)(860)(861) \
237 (862)(863)(864)(865)(866)(867)(868)(869)(870)(871) \
238 (872)(873)(874)(875)(876)(877)(878)(879)(880)(881) \
239 (882)(883)(884)(885)(886)(887)(888)(889)(890)(891) \
240 (892)(893)(894)(895)(896)(897)(898)(899)(900)(901) \
241 (902)(903)(904)(905)(906)(907)(908)(909)(910)(911) \
242 (912)(913)(914)(915)(916)(917)(918)(919)(920)(921) \
243 (922)(923)(924)(925)(926)(927)(928)(929)(930)(931) \
244 (932)(933)(934)(935)(936)(937)(938)(939)(940)(941) \
245 (942)(943)(944)(945)(946)(947)(948)(949)(950)(951) \
246 (952)(953)(954)(955)(956)(957)(958)(959)(960)(961) \
247 (962)(963)(964)(965)(966)(967)(968)(969)(970)(971) \
248 (972)(973)(974)(975)(976)(977)(978)(979)(980)(981) \
249 (982)(983)(984)(985)(986)(987)(988)(989)(990)(991) \
250 (992)(993)(994)(995)(996)(997)(998)(999)(1000)(1001) \
251 (1002)(1003)(1004)(1005)(1006)(1007)(1008)(1009)(1010)(1011) \
252 (1012)(1013)(1014)(1015)(1016)(1017)(1018)(1019)(1020)(1021) \
255 # define SEQ_1024 SEQ_1023(1024)
259 # define SEQVAR (4,5,8,3,61)(1,0)(5,22,43)(2)(17,45,33)
261 # define REVERSAL(s, x, y) BOOST_PP_SUB(y, x)
262 # define SUB_S(s, x, y) BOOST_PP_SUB(x, y)
263 # define ADD_S(s, x, y) BOOST_PP_ADD(x, y)
264 # define CAT_S(s, x, y) BOOST_PP_CAT(x, BOOST_PP_IS_EMPTY(y))
266 BEGIN
BOOST_PP_IS_EMPTY(BOOST_PP_SEQ_HEAD(SEQ_NONE
)) == 1 END
267 BEGIN
BOOST_PP_SEQ_HEAD(SEQ
) == 4 END
268 BEGIN
BOOST_PP_SEQ_HEAD(SEQ_255
) == 1 END
269 BEGIN
BOOST_PP_SEQ_HEAD(SEQ_256
) == 1 END
271 # if BOOST_PP_LIMIT_SEQ == 512
273 BEGIN
BOOST_PP_SEQ_HEAD(SEQ_511
) == 1 END
274 BEGIN
BOOST_PP_SEQ_HEAD(SEQ_512
) == 1 END
278 # if BOOST_PP_LIMIT_SEQ == 1024
280 BEGIN
BOOST_PP_SEQ_HEAD(SEQ_1023
) == 1 END
281 BEGIN
BOOST_PP_SEQ_HEAD(SEQ_1024
) == 1 END
285 BEGIN
BOOST_PP_SEQ_FOLD_LEFT(CAT_S
, 1, SEQ_NONE
) == 11 END
286 BEGIN
BOOST_PP_SEQ_FOLD_LEFT(SUB_S
, 22, SEQ
) == 10 END
287 BEGIN
BOOST_PP_SEQ_FOLD_RIGHT(CAT_S
, 2, SEQ_NONE
) == 21 END
288 BEGIN
BOOST_PP_SEQ_FOLD_RIGHT(ADD_S
, 0, SEQ
) == 12 END
289 BEGIN
BOOST_PP_SEQ_FOLD_RIGHT(REVERSAL
, 0, SEQ
) == 4 END
291 BEGIN
BOOST_PP_IS_EMPTY(BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REVERSE(SEQ_NONE
))) == 1 END
292 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REVERSE(SEQ
)) == 2514 END
294 # if BOOST_PP_LIMIT_SEQ == 512
296 BEGIN
BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(SEQ_512
)) == 512 END
300 # if BOOST_PP_LIMIT_SEQ == 1024
302 BEGIN
BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(SEQ_1024
)) == 1024 END
306 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REST_N(2, SEQ
)) == 52 END
307 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REST_N(99, SEQ_100
)) == 100 END
308 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REST_N(255, SEQ_256
)) == 256 END
310 # if BOOST_PP_LIMIT_SEQ == 512
312 BEGIN
BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REST_N(509, SEQ_511
)) == 510 END
316 # if BOOST_PP_LIMIT_SEQ == 1024
318 BEGIN
BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REST_N(1020, SEQ_1023
)) == 1021 END
322 BEGIN
BOOST_PP_IS_EMPTY(BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_FIRST_N(1, SEQ_NONE
))) == 1 END
323 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_FIRST_N(2, SEQ
)) == 41 END
324 BEGIN
BOOST_PP_SEQ_ELEM(50,BOOST_PP_SEQ_FIRST_N(100, SEQ_100
)) == 51 END
325 BEGIN
BOOST_PP_SEQ_ELEM(100,BOOST_PP_SEQ_FIRST_N(255, SEQ_255
)) == 101 END
326 BEGIN
BOOST_PP_SEQ_ELEM(200,BOOST_PP_SEQ_FIRST_N(256, SEQ_256
)) == 201 END
328 # if BOOST_PP_LIMIT_SEQ == 512
330 BEGIN
BOOST_PP_SEQ_ELEM(7,BOOST_PP_SEQ_FIRST_N(15, SEQ_512
)) == 8 END
334 # if BOOST_PP_LIMIT_SEQ == 1024
336 BEGIN
BOOST_PP_SEQ_ELEM(14,BOOST_PP_SEQ_FIRST_N(25, SEQ_1024
)) == 15 END
340 BEGIN
BOOST_PP_IS_EMPTY(BOOST_PP_SEQ_ELEM(0, SEQ_NONE
)) == 1 END
341 BEGIN
BOOST_PP_SEQ_SIZE(SEQ_NONE
) == 1 END
342 BEGIN
BOOST_PP_SEQ_ELEM(2, SEQ
) == 5 END
343 BEGIN
BOOST_PP_SEQ_ELEM(20, SEQ_255
) == 21 END
344 BEGIN
BOOST_PP_SEQ_ELEM(254, SEQ_255
) == 255 END
345 BEGIN
BOOST_PP_SEQ_ELEM(220, SEQ_256
) == 221 END
346 BEGIN
BOOST_PP_SEQ_ELEM(255, SEQ_256
) == 256 END
347 BEGIN
BOOST_PP_SEQ_SIZE(SEQ
) == 4 END
349 # if BOOST_PP_LIMIT_SEQ == 512
351 BEGIN
BOOST_PP_SEQ_SIZE(SEQ_511
) == 511 END
352 BEGIN
BOOST_PP_SEQ_ELEM(476, SEQ_512
) == 477 END
356 # if BOOST_PP_LIMIT_SEQ == 1024
358 BEGIN
BOOST_PP_SEQ_SIZE(SEQ_1023
) == 1023 END
359 BEGIN
BOOST_PP_SEQ_ELEM(934, SEQ_1024
) == 935 END
363 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TRANSFORM(CAT_S
, 13, SEQ_NONE
)) == 131 END
364 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TRANSFORM(ADD_S
, 2, SEQ
)) == 6374 END
366 # if BOOST_PP_LIMIT_SEQ == 512
368 #define STRANS_512(s,data,elem) BOOST_PP_ADD(elem,data)
370 BEGIN
BOOST_PP_SEQ_ELEM(383, BOOST_PP_SEQ_TRANSFORM(STRANS_512
,2,SEQ_512
)) == 386 END
374 # if BOOST_PP_LIMIT_SEQ == 1024
376 #define STRANS_1024(s,data,elem) BOOST_PP_ADD(elem,data)
378 BEGIN
BOOST_PP_SEQ_ELEM(728, BOOST_PP_SEQ_TRANSFORM(STRANS_1024
,1,SEQ_1024
)) == 730 END
382 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TAIL(SEQ
) SEQ
) == 1524152 END
384 # if BOOST_PP_LIMIT_SEQ == 512
386 BEGIN
BOOST_PP_SEQ_ELEM(459, BOOST_PP_SEQ_TAIL(SEQ_511
)) == 461 END
390 # if BOOST_PP_LIMIT_SEQ == 1024
392 BEGIN
BOOST_PP_SEQ_ELEM(624, BOOST_PP_SEQ_TAIL(SEQ_1023
)) == 626 END
396 # define F1(r, state, x) + x + state
397 # define FI2(r, state, i, x) BOOST_PP_IIF(BOOST_PP_EQUAL(i,2),+ x + x + state,+ x + state)
398 BEGIN
BOOST_PP_SEQ_FOR_EACH(F1
, 1, SEQ
) == 16 END
399 BEGIN
BOOST_PP_SEQ_FOR_EACH_I(FI2
, 1, SEQ
) == 21 END
401 # if BOOST_PP_LIMIT_SEQ == 512 && BOOST_PP_LIMIT_FOR == 512
403 # define FE5I2(r, state, i, x) BOOST_PP_EXPR_IIF(BOOST_PP_LESS(i,5),+ x - state)
405 BEGIN
BOOST_PP_SEQ_FOR_EACH_I(FE5I2
, 1, SEQ_512
) == 10 END
409 # if BOOST_PP_LIMIT_SEQ == 1024 && BOOST_PP_LIMIT_FOR == 1024
411 # define FE1024(r, state, i, x) BOOST_PP_EXPR_IIF(BOOST_PP_LESS(i,6),+ x - state)
413 BEGIN
BOOST_PP_SEQ_FOR_EACH_I(FE1024
, 2, SEQ_1024
) == 9 END
417 BEGIN
BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_SEQ_TO_TUPLE(SEQ
)) == 2 END
418 BEGIN
BOOST_PP_IS_EMPTY(BOOST_PP_TUPLE_ELEM(1, 0, BOOST_PP_SEQ_TO_TUPLE(SEQ_NONE
))) == 1 END
419 BEGIN
BOOST_PP_TUPLE_SIZE(BOOST_PP_SEQ_TO_TUPLE(SEQ_NONE
)) == 1 END
420 BEGIN
BOOST_PP_ARRAY_ELEM(3, BOOST_PP_SEQ_TO_ARRAY(SEQ
)) == 2 END
422 BEGIN
BOOST_PP_IS_EMPTY(BOOST_PP_ARRAY_ELEM(0, BOOST_PP_SEQ_TO_ARRAY(SEQ_NONE
))) == 1 END
423 BEGIN
BOOST_PP_ARRAY_SIZE(BOOST_PP_SEQ_TO_ARRAY(SEQ_NONE
)) == 1 END
425 # define LESS_S(s, x, y) BOOST_PP_LESS(x, y)
426 # define FILTER_MOD_S(s, data, elem) BOOST_PP_NOT(BOOST_PP_MOD(elem,data))
427 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_FILTER(LESS_S
, 3, SEQ
)) == 45 END
428 BEGIN
BOOST_PP_SEQ_ELEM(4,BOOST_PP_SEQ_FILTER(FILTER_MOD_S
, 20, SEQ_100
)) == 100 END
429 BEGIN
BOOST_PP_SEQ_ELEM(2,BOOST_PP_SEQ_FILTER(FILTER_MOD_S
, 30, SEQ_100
)) == 90 END
431 # if BOOST_PP_LIMIT_SEQ == 512
433 # define FILTER_EQ_512_S(s, data, elem) \
436 BOOST_PP_EQUAL(BOOST_PP_DEC(data),elem), \
437 BOOST_PP_EQUAL(BOOST_PP_INC(data),elem) \
441 BEGIN
BOOST_PP_SEQ_ELEM(1,BOOST_PP_SEQ_FILTER(FILTER_EQ_512_S
, 20, SEQ_512
)) == 21 END
445 # if BOOST_PP_LIMIT_SEQ == 1024
447 # define FILTER_EQ_1024_S(s, data, elem) \
450 BOOST_PP_EQUAL(BOOST_PP_DEC(data),elem), \
451 BOOST_PP_EQUAL(BOOST_PP_INC(data),elem) \
455 BEGIN
BOOST_PP_SEQ_ELEM(0,BOOST_PP_SEQ_FILTER(FILTER_EQ_1024_S
, 100, SEQ_1024
)) == 99 END
459 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ_NONE
, 0, 7)) == 7 END
460 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ
, 0, 3)) == 34152 END
461 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ
, 2, 3)) == 41352 END
462 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ
, 4, 3)) == 41523 END
463 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_INSERT(SEQ_255
, 0, 100)) == 256 END
464 BEGIN
BOOST_PP_SEQ_ELEM(255,BOOST_PP_SEQ_INSERT(SEQ_255
, 0, 100)) == 255 END
465 BEGIN
BOOST_PP_SEQ_ELEM(0,BOOST_PP_SEQ_INSERT(SEQ_255
, 0, 113)) == 113 END
467 # if BOOST_PP_LIMIT_SEQ == 512
469 BEGIN
BOOST_PP_SEQ_ELEM(511,BOOST_PP_SEQ_INSERT(SEQ_511
, 0, 0)) == 511 END
470 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_INSERT(SEQ_511
, 510, 431)) == 512 END
474 # if BOOST_PP_LIMIT_SEQ == 1024
476 BEGIN
BOOST_PP_SEQ_ELEM(1023,BOOST_PP_SEQ_INSERT(SEQ_1023
, 0, 0)) == 1023 END
477 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_INSERT(SEQ_1023
, 742, 29)) == 1024 END
481 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_POP_BACK(SEQ
)) == 415 END
482 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_POP_BACK(SEQ_256
)) == 255 END
483 BEGIN
BOOST_PP_SEQ_ELEM(254,BOOST_PP_SEQ_POP_BACK(SEQ_256
)) == 255 END
484 BEGIN
BOOST_PP_SEQ_ELEM(100,BOOST_PP_SEQ_POP_BACK(SEQ_256
)) == 101 END
486 # if BOOST_PP_LIMIT_SEQ == 512
488 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_POP_BACK(SEQ_512
)) == 511 END
489 BEGIN
BOOST_PP_SEQ_ELEM(437,BOOST_PP_SEQ_POP_BACK(SEQ_511
)) == 438 END
493 # if BOOST_PP_LIMIT_SEQ == 1024
495 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_POP_BACK(SEQ_1024
)) == 1023 END
496 BEGIN
BOOST_PP_SEQ_ELEM(632,BOOST_PP_SEQ_POP_BACK(SEQ_1023
)) == 633 END
500 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_POP_FRONT(SEQ
)) == 152 END
501 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_POP_FRONT(SEQ_256
)) == 255 END
502 BEGIN
BOOST_PP_SEQ_ELEM(0,BOOST_PP_SEQ_POP_FRONT(SEQ_256
)) == 2 END
503 BEGIN
BOOST_PP_SEQ_ELEM(254,BOOST_PP_SEQ_POP_FRONT(SEQ_256
)) == 256 END
505 # if BOOST_PP_LIMIT_SEQ == 512
507 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_POP_FRONT(SEQ_512
)) == 511 END
508 BEGIN
BOOST_PP_SEQ_ELEM(347,BOOST_PP_SEQ_POP_FRONT(SEQ_512
)) == 349 END
512 # if BOOST_PP_LIMIT_SEQ == 1024
514 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_POP_FRONT(SEQ_1024
)) == 1023 END
515 BEGIN
BOOST_PP_SEQ_ELEM(875,BOOST_PP_SEQ_POP_FRONT(SEQ_1024
)) == 877 END
519 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_PUSH_FRONT(SEQ_NONE
, 145)) == 145 END
520 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_PUSH_FRONT(SEQ
, 3)) == 34152 END
521 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_PUSH_FRONT(SEQ_255
, 57)) == 256 END
522 BEGIN
BOOST_PP_SEQ_ELEM(0,BOOST_PP_SEQ_PUSH_FRONT(SEQ_255
, 222)) == 222 END
523 BEGIN
BOOST_PP_SEQ_ELEM(255,BOOST_PP_SEQ_PUSH_FRONT(SEQ_255
, 111)) == 255 END
525 # if BOOST_PP_LIMIT_SEQ == 512
527 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_PUSH_FRONT(SEQ_511
, 0)) == 512 END
528 BEGIN
BOOST_PP_SEQ_ELEM(391,BOOST_PP_SEQ_PUSH_FRONT(SEQ_511
, 435)) == 391 END
532 # if BOOST_PP_LIMIT_SEQ == 1024
534 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_PUSH_FRONT(SEQ_1023
, 0)) == 1024 END
535 BEGIN
BOOST_PP_SEQ_ELEM(961,BOOST_PP_SEQ_PUSH_FRONT(SEQ_1023
, 435)) == 961 END
539 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_PUSH_BACK(SEQ_NONE
, 79)) == 79 END
540 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_PUSH_BACK(SEQ
, 3)) == 41523 END
541 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_PUSH_BACK(SEQ_255
, 199)) == 256 END
542 BEGIN
BOOST_PP_SEQ_ELEM(254,BOOST_PP_SEQ_PUSH_BACK(SEQ_255
, 99)) == 255 END
543 BEGIN
BOOST_PP_SEQ_ELEM(255,BOOST_PP_SEQ_PUSH_BACK(SEQ_255
, 99)) == 99 END
545 # if BOOST_PP_LIMIT_SEQ == 512
547 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_PUSH_BACK(SEQ_511
, 275)) == 512 END
548 BEGIN
BOOST_PP_SEQ_ELEM(473,BOOST_PP_SEQ_PUSH_BACK(SEQ_511
, 78)) == 474 END
549 BEGIN
BOOST_PP_SEQ_ELEM(511,BOOST_PP_SEQ_PUSH_BACK(SEQ_511
, 78)) == 78 END
553 # if BOOST_PP_LIMIT_SEQ == 1024
555 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_PUSH_BACK(SEQ_1023
, 275)) == 1024 END
556 BEGIN
BOOST_PP_SEQ_ELEM(846,BOOST_PP_SEQ_PUSH_BACK(SEQ_1023
, 720)) == 847 END
557 BEGIN
BOOST_PP_SEQ_ELEM(1023,BOOST_PP_SEQ_PUSH_BACK(SEQ_1023
, 311)) == 311 END
561 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REMOVE(SEQ
, 0)) == 152 END
562 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REMOVE(SEQ
, 2)) == 412 END
563 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REMOVE(SEQ
, 3)) == 415 END
565 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_REMOVE(SEQ_255
, 254)) == 254 END
566 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_REMOVE(SEQ_256
, 255)) == 255 END
568 # if BOOST_PP_LIMIT_SEQ == 512
570 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_REMOVE(SEQ_511
, 429)) == 510 END
571 BEGIN
BOOST_PP_SEQ_ELEM(462,BOOST_PP_SEQ_REMOVE(SEQ_512
, 374)) == 464 END
575 # if BOOST_PP_LIMIT_SEQ == 1024
577 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_REMOVE(SEQ_1023
, 989)) == 1022 END
578 BEGIN
BOOST_PP_SEQ_ELEM(731,BOOST_PP_SEQ_REMOVE(SEQ_1024
, 555)) == 733 END
582 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ_NONE
, 0, 22)) == 22 END
583 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ
, 0, 3)) == 3152 END
584 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ
, 1, 3)) == 4352 END
585 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ
, 3, 3)) == 4153 END
586 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_REPLACE(SEQ_256
, 255, 22)) == 256 END
587 BEGIN
BOOST_PP_SEQ_ELEM(233,BOOST_PP_SEQ_REPLACE(SEQ_256
, 255, 22)) == 234 END
588 BEGIN
BOOST_PP_SEQ_ELEM(255,BOOST_PP_SEQ_REPLACE(SEQ_256
, 255, 22)) == 22 END
590 # if BOOST_PP_LIMIT_SEQ == 512
592 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_REPLACE(SEQ_511
, 509, 350)) == 511 END
593 BEGIN
BOOST_PP_SEQ_ELEM(482,BOOST_PP_SEQ_REPLACE(SEQ_512
, 436, 33)) == 483 END
594 BEGIN
BOOST_PP_SEQ_ELEM(436,BOOST_PP_SEQ_REPLACE(SEQ_512
, 436, 33)) == 33 END
598 # if BOOST_PP_LIMIT_SEQ == 1024
600 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_REPLACE(SEQ_1023
, 846, 25)) == 1023 END
601 BEGIN
BOOST_PP_SEQ_ELEM(984,BOOST_PP_SEQ_REPLACE(SEQ_1024
, 841, 670)) == 985 END
602 BEGIN
BOOST_PP_SEQ_ELEM(841,BOOST_PP_SEQ_REPLACE(SEQ_1024
, 841, 670)) == 670 END
606 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ
, 0, 4)) == 4152 END
607 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ
, 0, 2)) == 41 END
608 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ
, 1, 2)) == 15 END
609 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ
, 2, 2)) == 52 END
611 # if BOOST_PP_LIMIT_SEQ == 512
613 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_SUBSEQ(SEQ_511
, 372, 5)) == 5 END
614 BEGIN
BOOST_PP_SEQ_ELEM(14,BOOST_PP_SEQ_SUBSEQ(SEQ_512
, 293, 17)) == 308 END
618 # if BOOST_PP_LIMIT_SEQ == 1024
620 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_SUBSEQ(SEQ_1023
, 846, 5)) == 5 END
621 BEGIN
BOOST_PP_SEQ_ELEM(16,BOOST_PP_SEQ_SUBSEQ(SEQ_1024
, 843, 19)) == 860 END
625 # define F2(r, x) + BOOST_PP_SEQ_ELEM(0, x) + 2 - BOOST_PP_SEQ_ELEM(1, x)
627 #define ADD_NIL(x) x(nil)
629 BEGIN
BOOST_PP_SEQ_FOR_EACH_PRODUCT(F2
, ((1)(0)) ((2)(3))) == 0 END
632 # define L2 (a)(1)(b)(2)
633 # define L3 (c)(3)(d)
635 # define LL (L1)(L2)(L3)
637 #define SEQ_APPEND(s, state, elem) state elem
638 BEGIN
BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TAIL(BOOST_PP_SEQ_FOLD_LEFT(SEQ_APPEND
, (~), LL
))) == 0x0a1b2c3d END
639 BEGIN
BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(BOOST_PP_SEQ_FOLD_LEFT(SEQ_APPEND
, (~), LL
))) == 9 END
641 BEGIN
BOOST_PP_LIST_AT(BOOST_PP_SEQ_TO_LIST(SEQ
), 2) == 5 END
642 BEGIN
BOOST_PP_IS_EMPTY(BOOST_PP_LIST_AT(BOOST_PP_SEQ_TO_LIST(SEQ_NONE
),0)) == 1 END
643 BEGIN
BOOST_PP_LIST_SIZE(BOOST_PP_SEQ_TO_LIST(SEQ_NONE
)) == 1 END
645 # if BOOST_PP_VARIADIC_HAS_OPT()
647 BEGIN
BOOST_PP_VARIADIC_SIZE(BOOST_PP_SEQ_ENUM(SEQ_NONE
)) == 0 END
651 BEGIN
BOOST_PP_VARIADIC_SIZE(BOOST_PP_SEQ_ENUM(SEQ_NONE
)) == 1 END
655 BEGIN
BOOST_PP_VARIADIC_ELEM(0,BOOST_PP_SEQ_ENUM(SEQ
)) == 4 END
656 BEGIN
BOOST_PP_TUPLE_ELEM(2,BOOST_PP_SEQ_ELEM(0,BOOST_PP_VARIADIC_SEQ_TO_SEQ(SEQVAR
))) == 8 END