forked from boostorg/preprocessor
workaround for insidious bcc bug
[SVN r15212]
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user