while.hpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. # /* Copyright (C) 2001
  2. # * Housemarque Oy
  3. # * http://www.housemarque.com
  4. # *
  5. # * Distributed under the Boost Software License, Version 1.0. (See
  6. # * accompanying file LICENSE_1_0.txt or copy at
  7. # * http://www.boost.org/LICENSE_1_0.txt)
  8. # */
  9. #
  10. # /* Revised by Paul Mensonides (2002) */
  11. # /* Revised by Edward Diener (2020) */
  12. #
  13. # /* See http://www.boost.org for most recent version. */
  14. #
  15. # ifndef BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
  16. # define BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
  17. #
  18. # include <boost/preprocessor/config/config.hpp>
  19. #
  20. # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
  21. #
  22. # include <boost/preprocessor/cat.hpp>
  23. # include <boost/preprocessor/config/config.hpp>
  24. # include <boost/preprocessor/debug/error.hpp>
  25. # include <boost/preprocessor/detail/auto_rec.hpp>
  26. # include <boost/preprocessor/list/fold_left.hpp>
  27. # include <boost/preprocessor/list/fold_right.hpp>
  28. # include <boost/preprocessor/logical/bitand.hpp>
  29. #
  30. # /* BOOST_PP_WHILE */
  31. #
  32. # if 0
  33. # define BOOST_PP_WHILE(pred, op, state)
  34. # endif
  35. #
  36. # define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
  37. #
  38. # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
  39. # define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_CHECK_, BOOST_PP_LIST_FOLD_RIGHT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL))))
  40. # else
  41. # define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)))
  42. # endif
  43. #
  44. # define BOOST_PP_WHILE_F(d, _) 0
  45. #
  46. # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
  47. # include <boost/preprocessor/control/detail/edg/while.hpp>
  48. # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
  49. # include <boost/preprocessor/control/detail/msvc/while.hpp>
  50. # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
  51. # include <boost/preprocessor/control/detail/dmc/while.hpp>
  52. # else
  53. # include <boost/preprocessor/control/detail/while.hpp>
  54. # endif
  55. #
  56. # define BOOST_PP_WHILE_257(p, o, s) BOOST_PP_ERROR(0x0001)
  57. #
  58. # define BOOST_PP_WHILE_CHECK_BOOST_PP_NIL 1
  59. #
  60. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1(p, o, s) 0
  61. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_2(p, o, s) 0
  62. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_3(p, o, s) 0
  63. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_4(p, o, s) 0
  64. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_5(p, o, s) 0
  65. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_6(p, o, s) 0
  66. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_7(p, o, s) 0
  67. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_8(p, o, s) 0
  68. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_9(p, o, s) 0
  69. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_10(p, o, s) 0
  70. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_11(p, o, s) 0
  71. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_12(p, o, s) 0
  72. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_13(p, o, s) 0
  73. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_14(p, o, s) 0
  74. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_15(p, o, s) 0
  75. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_16(p, o, s) 0
  76. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_17(p, o, s) 0
  77. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_18(p, o, s) 0
  78. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_19(p, o, s) 0
  79. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_20(p, o, s) 0
  80. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_21(p, o, s) 0
  81. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_22(p, o, s) 0
  82. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_23(p, o, s) 0
  83. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_24(p, o, s) 0
  84. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_25(p, o, s) 0
  85. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_26(p, o, s) 0
  86. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_27(p, o, s) 0
  87. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_28(p, o, s) 0
  88. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_29(p, o, s) 0
  89. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_30(p, o, s) 0
  90. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_31(p, o, s) 0
  91. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_32(p, o, s) 0
  92. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_33(p, o, s) 0
  93. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_34(p, o, s) 0
  94. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_35(p, o, s) 0
  95. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_36(p, o, s) 0
  96. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_37(p, o, s) 0
  97. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_38(p, o, s) 0
  98. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_39(p, o, s) 0
  99. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_40(p, o, s) 0
  100. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_41(p, o, s) 0
  101. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_42(p, o, s) 0
  102. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_43(p, o, s) 0
  103. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_44(p, o, s) 0
  104. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_45(p, o, s) 0
  105. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_46(p, o, s) 0
  106. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_47(p, o, s) 0
  107. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_48(p, o, s) 0
  108. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_49(p, o, s) 0
  109. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_50(p, o, s) 0
  110. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_51(p, o, s) 0
  111. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_52(p, o, s) 0
  112. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_53(p, o, s) 0
  113. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_54(p, o, s) 0
  114. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_55(p, o, s) 0
  115. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_56(p, o, s) 0
  116. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_57(p, o, s) 0
  117. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_58(p, o, s) 0
  118. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_59(p, o, s) 0
  119. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_60(p, o, s) 0
  120. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_61(p, o, s) 0
  121. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_62(p, o, s) 0
  122. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_63(p, o, s) 0
  123. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_64(p, o, s) 0
  124. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_65(p, o, s) 0
  125. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_66(p, o, s) 0
  126. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_67(p, o, s) 0
  127. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_68(p, o, s) 0
  128. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_69(p, o, s) 0
  129. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_70(p, o, s) 0
  130. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_71(p, o, s) 0
  131. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_72(p, o, s) 0
  132. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_73(p, o, s) 0
  133. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_74(p, o, s) 0
  134. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_75(p, o, s) 0
  135. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_76(p, o, s) 0
  136. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_77(p, o, s) 0
  137. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_78(p, o, s) 0
  138. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_79(p, o, s) 0
  139. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_80(p, o, s) 0
  140. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_81(p, o, s) 0
  141. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_82(p, o, s) 0
  142. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_83(p, o, s) 0
  143. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_84(p, o, s) 0
  144. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_85(p, o, s) 0
  145. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_86(p, o, s) 0
  146. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_87(p, o, s) 0
  147. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_88(p, o, s) 0
  148. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_89(p, o, s) 0
  149. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_90(p, o, s) 0
  150. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_91(p, o, s) 0
  151. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_92(p, o, s) 0
  152. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_93(p, o, s) 0
  153. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_94(p, o, s) 0
  154. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_95(p, o, s) 0
  155. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_96(p, o, s) 0
  156. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_97(p, o, s) 0
  157. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_98(p, o, s) 0
  158. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_99(p, o, s) 0
  159. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_100(p, o, s) 0
  160. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_101(p, o, s) 0
  161. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_102(p, o, s) 0
  162. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_103(p, o, s) 0
  163. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_104(p, o, s) 0
  164. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_105(p, o, s) 0
  165. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_106(p, o, s) 0
  166. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_107(p, o, s) 0
  167. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_108(p, o, s) 0
  168. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_109(p, o, s) 0
  169. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_110(p, o, s) 0
  170. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_111(p, o, s) 0
  171. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_112(p, o, s) 0
  172. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_113(p, o, s) 0
  173. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_114(p, o, s) 0
  174. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_115(p, o, s) 0
  175. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_116(p, o, s) 0
  176. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_117(p, o, s) 0
  177. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_118(p, o, s) 0
  178. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_119(p, o, s) 0
  179. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_120(p, o, s) 0
  180. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_121(p, o, s) 0
  181. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_122(p, o, s) 0
  182. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_123(p, o, s) 0
  183. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_124(p, o, s) 0
  184. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_125(p, o, s) 0
  185. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_126(p, o, s) 0
  186. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_127(p, o, s) 0
  187. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_128(p, o, s) 0
  188. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_129(p, o, s) 0
  189. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_130(p, o, s) 0
  190. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_131(p, o, s) 0
  191. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_132(p, o, s) 0
  192. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_133(p, o, s) 0
  193. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_134(p, o, s) 0
  194. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_135(p, o, s) 0
  195. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_136(p, o, s) 0
  196. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_137(p, o, s) 0
  197. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_138(p, o, s) 0
  198. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_139(p, o, s) 0
  199. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_140(p, o, s) 0
  200. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_141(p, o, s) 0
  201. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_142(p, o, s) 0
  202. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_143(p, o, s) 0
  203. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_144(p, o, s) 0
  204. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_145(p, o, s) 0
  205. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_146(p, o, s) 0
  206. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_147(p, o, s) 0
  207. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_148(p, o, s) 0
  208. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_149(p, o, s) 0
  209. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_150(p, o, s) 0
  210. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_151(p, o, s) 0
  211. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_152(p, o, s) 0
  212. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_153(p, o, s) 0
  213. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_154(p, o, s) 0
  214. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_155(p, o, s) 0
  215. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_156(p, o, s) 0
  216. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_157(p, o, s) 0
  217. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_158(p, o, s) 0
  218. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_159(p, o, s) 0
  219. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_160(p, o, s) 0
  220. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_161(p, o, s) 0
  221. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_162(p, o, s) 0
  222. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_163(p, o, s) 0
  223. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_164(p, o, s) 0
  224. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_165(p, o, s) 0
  225. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_166(p, o, s) 0
  226. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_167(p, o, s) 0
  227. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_168(p, o, s) 0
  228. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_169(p, o, s) 0
  229. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_170(p, o, s) 0
  230. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_171(p, o, s) 0
  231. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_172(p, o, s) 0
  232. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_173(p, o, s) 0
  233. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_174(p, o, s) 0
  234. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_175(p, o, s) 0
  235. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_176(p, o, s) 0
  236. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_177(p, o, s) 0
  237. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_178(p, o, s) 0
  238. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_179(p, o, s) 0
  239. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_180(p, o, s) 0
  240. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_181(p, o, s) 0
  241. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_182(p, o, s) 0
  242. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_183(p, o, s) 0
  243. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_184(p, o, s) 0
  244. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_185(p, o, s) 0
  245. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_186(p, o, s) 0
  246. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_187(p, o, s) 0
  247. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_188(p, o, s) 0
  248. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_189(p, o, s) 0
  249. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_190(p, o, s) 0
  250. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_191(p, o, s) 0
  251. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_192(p, o, s) 0
  252. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_193(p, o, s) 0
  253. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_194(p, o, s) 0
  254. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_195(p, o, s) 0
  255. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_196(p, o, s) 0
  256. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_197(p, o, s) 0
  257. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_198(p, o, s) 0
  258. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_199(p, o, s) 0
  259. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_200(p, o, s) 0
  260. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_201(p, o, s) 0
  261. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_202(p, o, s) 0
  262. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_203(p, o, s) 0
  263. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_204(p, o, s) 0
  264. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_205(p, o, s) 0
  265. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_206(p, o, s) 0
  266. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_207(p, o, s) 0
  267. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_208(p, o, s) 0
  268. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_209(p, o, s) 0
  269. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_210(p, o, s) 0
  270. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_211(p, o, s) 0
  271. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_212(p, o, s) 0
  272. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_213(p, o, s) 0
  273. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_214(p, o, s) 0
  274. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_215(p, o, s) 0
  275. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_216(p, o, s) 0
  276. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_217(p, o, s) 0
  277. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_218(p, o, s) 0
  278. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_219(p, o, s) 0
  279. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_220(p, o, s) 0
  280. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_221(p, o, s) 0
  281. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_222(p, o, s) 0
  282. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_223(p, o, s) 0
  283. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_224(p, o, s) 0
  284. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_225(p, o, s) 0
  285. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_226(p, o, s) 0
  286. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_227(p, o, s) 0
  287. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_228(p, o, s) 0
  288. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_229(p, o, s) 0
  289. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_230(p, o, s) 0
  290. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_231(p, o, s) 0
  291. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_232(p, o, s) 0
  292. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_233(p, o, s) 0
  293. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_234(p, o, s) 0
  294. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_235(p, o, s) 0
  295. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_236(p, o, s) 0
  296. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_237(p, o, s) 0
  297. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_238(p, o, s) 0
  298. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_239(p, o, s) 0
  299. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_240(p, o, s) 0
  300. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_241(p, o, s) 0
  301. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_242(p, o, s) 0
  302. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_243(p, o, s) 0
  303. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_244(p, o, s) 0
  304. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_245(p, o, s) 0
  305. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_246(p, o, s) 0
  306. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_247(p, o, s) 0
  307. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_248(p, o, s) 0
  308. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_249(p, o, s) 0
  309. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_250(p, o, s) 0
  310. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_251(p, o, s) 0
  311. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_252(p, o, s) 0
  312. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_253(p, o, s) 0
  313. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_254(p, o, s) 0
  314. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_255(p, o, s) 0
  315. # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_256(p, o, s) 0
  316. #
  317. # else
  318. #
  319. # include <boost/preprocessor/arithmetic/dec.hpp>
  320. # include <boost/preprocessor/cat.hpp>
  321. # include <boost/preprocessor/debug/error.hpp>
  322. # include <boost/preprocessor/detail/auto_rec.hpp>
  323. # include <boost/preprocessor/list/fold_left.hpp>
  324. # include <boost/preprocessor/list/fold_right.hpp>
  325. # include <boost/preprocessor/logical/bitand.hpp>
  326. # include <boost/preprocessor/config/limits.hpp>
  327. #
  328. # /* BOOST_PP_WHILE */
  329. #
  330. # if 0
  331. # define BOOST_PP_WHILE(pred, op, state)
  332. # endif
  333. #
  334. # if BOOST_PP_LIMIT_WHILE == 256
  335. # define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256)))
  336. # elif BOOST_PP_LIMIT_WHILE == 512
  337. # define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 512)))
  338. # elif BOOST_PP_LIMIT_WHILE == 1024
  339. # define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 1024)))
  340. # else
  341. # error Incorrect value for the BOOST_PP_LIMIT_WHILE limit
  342. # endif
  343. #
  344. # define BOOST_PP_WHILE_P(n) BOOST_PP_WHILE_P_DEC(BOOST_PP_DEC(n))
  345. #
  346. # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
  347. # define BOOST_PP_WHILE_P_DEC(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_CAT(BOOST_PP_WHILE_ , n)(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_ , n)(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_CHECK_, BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_ , n)(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL))))
  348. # else
  349. # define BOOST_PP_WHILE_P_DEC(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_CAT(BOOST_PP_WHILE_ , n)(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_ , n)(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)))
  350. # endif
  351. #
  352. # define BOOST_PP_WHILE_F(d, _) 0
  353. #
  354. # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
  355. # include <boost/preprocessor/control/detail/edg/while.hpp>
  356. # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
  357. # include <boost/preprocessor/control/detail/msvc/while.hpp>
  358. # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
  359. # include <boost/preprocessor/control/detail/dmc/while.hpp>
  360. # else
  361. # include <boost/preprocessor/control/detail/while.hpp>
  362. # endif
  363. #
  364. # if BOOST_PP_LIMIT_WHILE == 256
  365. # define BOOST_PP_WHILE_257(p, o, s) BOOST_PP_ERROR(0x0001)
  366. # elif BOOST_PP_LIMIT_WHILE == 512
  367. # define BOOST_PP_WHILE_513(p, o, s) BOOST_PP_ERROR(0x0001)
  368. # elif BOOST_PP_LIMIT_WHILE == 1024
  369. # define BOOST_PP_WHILE_1025(p, o, s) BOOST_PP_ERROR(0x0001)
  370. # endif
  371. #
  372. # define BOOST_PP_WHILE_CHECK_BOOST_PP_NIL 1
  373. #
  374. # if BOOST_PP_LIMIT_WHILE == 256
  375. # include <boost/preprocessor/control/limits/while_256.hpp>
  376. # elif BOOST_PP_LIMIT_WHILE == 512
  377. # include <boost/preprocessor/control/limits/while_256.hpp>
  378. # include <boost/preprocessor/control/limits/while_512.hpp>
  379. # elif BOOST_PP_LIMIT_WHILE == 1024
  380. # include <boost/preprocessor/control/limits/while_256.hpp>
  381. # include <boost/preprocessor/control/limits/while_512.hpp>
  382. # include <boost/preprocessor/control/limits/while_1024.hpp>
  383. # endif
  384. #
  385. # endif
  386. #
  387. # endif