workaround for insidious bcc bug

[SVN r15212]
This commit is contained in:
Paul Mensonides
2002-09-08 21:15:30 +00:00
parent 393b019394
commit faaa55709b
12 changed files with 328 additions and 296 deletions

View File

@ -35,19 +35,23 @@
#
# define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
#
# if BOOST_PP_CONFIG_FLAGS & BOOST_PP_CONFIG_EDG
# define BOOST_PP_WHILE_P(n) BOOST_PP_IS_NULLARY(BOOST_PP_WHILE_ID(BOOST_PP_WHILE_FAST_1 BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, ()) BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, (), BOOST_PP_NIL) BOOST_PP_LIST_FOLD_RIGHT_ ## n(BOOST_PP_NIL, (), BOOST_PP_NIL)))
# elif ~BOOST_PP_CONFIG_FLAGS & BOOST_PP_CONFIG_MWCW
# define BOOST_PP_WHILE_P(n) BOOST_PP_IS_NULLARY(BOOST_PP_WHILE_ID(BOOST_PP_WHILE_FAST_2 BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, ()) BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, (), BOOST_PP_NIL)))
# else
# define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_IS_NULLARY(BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, ())), BOOST_PP_IS_NULLARY(BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, (), BOOST_PP_NIL)))
# endif
# if ~BOOST_PP_CONFIG_FLAGS & BOOST_PP_CONFIG_BCC
# if BOOST_PP_CONFIG_FLAGS & BOOST_PP_CONFIG_EDG
# define BOOST_PP_WHILE_P(n) BOOST_PP_IS_NULLARY(BOOST_PP_WHILE_ID(BOOST_PP_WHILE_FAST_1 BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, ()) BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, (), BOOST_PP_NIL) BOOST_PP_LIST_FOLD_RIGHT_ ## n(BOOST_PP_NIL, (), BOOST_PP_NIL)))
# elif ~BOOST_PP_CONFIG_FLAGS & BOOST_PP_CONFIG_MWCW
# define BOOST_PP_WHILE_P(n) BOOST_PP_IS_NULLARY(BOOST_PP_WHILE_ID(BOOST_PP_WHILE_FAST_2 BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, ()) BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, (), BOOST_PP_NIL)))
# else
# define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_IS_NULLARY(BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, ())), BOOST_PP_IS_NULLARY(BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, (), BOOST_PP_NIL)))
# endif
#
# if ~BOOST_PP_CONFIG_FLAGS & BOOST_PP_CONFIG_MWCW
# define BOOST_PP_WHILE_ID(x) x
# define BOOST_PP_WHILE_FAST_1() BOOST_PP_WHILE_FAST_2
# define BOOST_PP_WHILE_FAST_2() BOOST_PP_WHILE_FAST_3
# define BOOST_PP_WHILE_FAST_3() ()
# if ~BOOST_PP_CONFIG_FLAGS & BOOST_PP_CONFIG_MWCW
# define BOOST_PP_WHILE_ID(x) x
# define BOOST_PP_WHILE_FAST_1() BOOST_PP_WHILE_FAST_2
# define BOOST_PP_WHILE_FAST_2() BOOST_PP_WHILE_FAST_3
# define BOOST_PP_WHILE_FAST_3() ()
# endif
# else
# include <boost/preprocessor/control/detail/bcc/while_p.hpp>
# endif
#
# define BOOST_PP_WHILE_F(d, _) 0