diff --git a/include/boost/preprocessor/list/detail/dmc/limits/fold_left_256.hpp b/include/boost/preprocessor/list/detail/dmc/limits/fold_left_256.hpp index fc688b7..f5403a8 100644 --- a/include/boost/preprocessor/list/detail/dmc/limits/fold_left_256.hpp +++ b/include/boost/preprocessor/list/detail/dmc/limits/fold_left_256.hpp @@ -14,6 +14,7 @@ # ifndef BOOST_PREPROCESSOR_LIST_DETAIL_DMC_FOLD_LEFT_256_HPP # define BOOST_PREPROCESSOR_LIST_DETAIL_DMC_FOLD_LEFT_256_HPP # +# define BOOST_PP_LIST_FOLD_LEFT_0(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(1, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) diff --git a/include/boost/preprocessor/list/detail/edg/limits/fold_left_256.hpp b/include/boost/preprocessor/list/detail/edg/limits/fold_left_256.hpp index 76bc13d..d8729ca 100644 --- a/include/boost/preprocessor/list/detail/edg/limits/fold_left_256.hpp +++ b/include/boost/preprocessor/list/detail/edg/limits/fold_left_256.hpp @@ -14,6 +14,7 @@ # ifndef BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_256_HPP # define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_256_HPP # +# define BOOST_PP_LIST_FOLD_LEFT_0(o, s, l) BOOST_PP_LIST_FOLD_LEFT_0_D(o, s, l) # define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1_D(o, s, l) # define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_LIST_FOLD_LEFT_2_D(o, s, l) # define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_LIST_FOLD_LEFT_3_D(o, s, l) @@ -271,6 +272,7 @@ # define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_LIST_FOLD_LEFT_255_D(o, s, l) # define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_LIST_FOLD_LEFT_256_D(o, s, l) # +# define BOOST_PP_LIST_FOLD_LEFT_0_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # define BOOST_PP_LIST_FOLD_LEFT_1_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # define BOOST_PP_LIST_FOLD_LEFT_2_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # define BOOST_PP_LIST_FOLD_LEFT_3_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) diff --git a/include/boost/preprocessor/list/detail/edg/limits/fold_right_256.hpp b/include/boost/preprocessor/list/detail/edg/limits/fold_right_256.hpp index 6b32949..a1388e6 100644 --- a/include/boost/preprocessor/list/detail/edg/limits/fold_right_256.hpp +++ b/include/boost/preprocessor/list/detail/edg/limits/fold_right_256.hpp @@ -14,6 +14,7 @@ # ifndef BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_256_HPP # define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_256_HPP # +# define BOOST_PP_LIST_FOLD_RIGHT_0(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_0_D(o, s, l) # define BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1_D(o, s, l) # define BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_2_D(o, s, l) # define BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_3_D(o, s, l) @@ -271,6 +272,7 @@ # define BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_255_D(o, s, l) # define BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_256_D(o, s, l) # +# define BOOST_PP_LIST_FOLD_RIGHT_0_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(2, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) # define BOOST_PP_LIST_FOLD_RIGHT_1_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(2, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_2, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) # define BOOST_PP_LIST_FOLD_RIGHT_2_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(3, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_3, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) # define BOOST_PP_LIST_FOLD_RIGHT_3_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(4, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_4, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) @@ -530,6 +532,7 @@ # # define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_NIL 1 # +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_0(o, s, l) 0 # define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) 0 # define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) 0 # define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) 0 diff --git a/include/boost/preprocessor/list/detail/limits/fold_left_256.hpp b/include/boost/preprocessor/list/detail/limits/fold_left_256.hpp index 63096ba..d21982b 100644 --- a/include/boost/preprocessor/list/detail/limits/fold_left_256.hpp +++ b/include/boost/preprocessor/list/detail/limits/fold_left_256.hpp @@ -14,6 +14,7 @@ # ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_256_HPP # define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_256_HPP # +# define BOOST_PP_LIST_FOLD_LEFT_0(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) diff --git a/include/boost/preprocessor/list/detail/limits/fold_right_256.hpp b/include/boost/preprocessor/list/detail/limits/fold_right_256.hpp index 256eac5..4664cfd 100644 --- a/include/boost/preprocessor/list/detail/limits/fold_right_256.hpp +++ b/include/boost/preprocessor/list/detail/limits/fold_right_256.hpp @@ -14,6 +14,7 @@ # ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_256_HPP # define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_256_HPP # +# define BOOST_PP_LIST_FOLD_RIGHT_0(o, s, l) BOOST_PP_LIST_FOLD_LEFT_0(o, s, BOOST_PP_LIST_REVERSE_D(1, l)) # define BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1(o, s, BOOST_PP_LIST_REVERSE_D(1, l)) # define BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) BOOST_PP_LIST_FOLD_LEFT_2(o, s, BOOST_PP_LIST_REVERSE_D(2, l)) # define BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) BOOST_PP_LIST_FOLD_LEFT_3(o, s, BOOST_PP_LIST_REVERSE_D(3, l)) diff --git a/include/boost/preprocessor/list/fold_left.hpp b/include/boost/preprocessor/list/fold_left.hpp index 136666c..9fc2ac1 100644 --- a/include/boost/preprocessor/list/fold_left.hpp +++ b/include/boost/preprocessor/list/fold_left.hpp @@ -15,6 +15,7 @@ # ifndef BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP # define BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP # +# include # include # include # include @@ -28,10 +29,10 @@ # endif # # if BOOST_PP_LIMIT_WHILE == 256 -# define BOOST_PP_LIST_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256)) +# define BOOST_PP_LIST_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))) # define BOOST_PP_LIST_FOLD_LEFT_257(o, s, l) BOOST_PP_ERROR(0x0004) # elif BOOST_PP_LIMIT_WHILE == 512 -# define BOOST_PP_LIST_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 512)) +# define BOOST_PP_LIST_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 512))) # define BOOST_PP_LIST_FOLD_LEFT_513(o, s, l) BOOST_PP_ERROR(0x0004) # else # error Incorrect value for the BOOST_PP_LIMIT_WHILE limit diff --git a/include/boost/preprocessor/list/fold_right.hpp b/include/boost/preprocessor/list/fold_right.hpp index 64840c8..79c77ec 100644 --- a/include/boost/preprocessor/list/fold_right.hpp +++ b/include/boost/preprocessor/list/fold_right.hpp @@ -15,6 +15,7 @@ # ifndef BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP # define BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP # +# include # include # include # include @@ -27,10 +28,10 @@ # include # # if BOOST_PP_LIMIT_WHILE == 256 -# define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256)) +# define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))) # define BOOST_PP_LIST_FOLD_RIGHT_257(o, s, l) BOOST_PP_ERROR(0x0004) # elif BOOST_PP_LIMIT_WHILE == 512 -# define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 512)) +# define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 512))) # define BOOST_PP_LIST_FOLD_RIGHT_513(o, s, l) BOOST_PP_ERROR(0x0004) # else # error Incorrect value for the BOOST_PP_LIMIT_WHILE limit diff --git a/include/boost/preprocessor/list/reverse.hpp b/include/boost/preprocessor/list/reverse.hpp index 651da05..707646a 100644 --- a/include/boost/preprocessor/list/reverse.hpp +++ b/include/boost/preprocessor/list/reverse.hpp @@ -15,15 +15,18 @@ # define BOOST_PREPROCESSOR_LIST_REVERSE_HPP # # include +# include +# include +# include # include # # /* BOOST_PP_LIST_REVERSE */ # # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() -# define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list) +# define BOOST_PP_LIST_REVERSE(list) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(list),BOOST_PP_LIST_REVERSE_CONS,BOOST_PP_IDENTITY_N(BOOST_PP_NIL,1))(list) # else # define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_REVERSE_I(list) -# define BOOST_PP_LIST_REVERSE_I(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list) +# define BOOST_PP_LIST_REVERSE_I(list) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(list),BOOST_PP_LIST_REVERSE_CONS,BOOST_PP_IDENTITY_N(BOOST_PP_NIL,1))(list) # endif # # define BOOST_PP_LIST_REVERSE_O(d, s, x) (x, s) @@ -31,10 +34,13 @@ # /* BOOST_PP_LIST_REVERSE_D */ # # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() -# define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list) +# define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(list),BOOST_PP_LIST_REVERSE_CONS_D,BOOST_PP_IDENTITY_N(BOOST_PP_NIL,2))(d,list) # else # define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_REVERSE_D_I(d, list) -# define BOOST_PP_LIST_REVERSE_D_I(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list) +# define BOOST_PP_LIST_REVERSE_D_I(d, list) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(list),BOOST_PP_LIST_REVERSE_CONS_D,BOOST_PP_IDENTITY_N(BOOST_PP_NIL,2))(d,list) # endif # +# define BOOST_PP_LIST_REVERSE_CONS(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, (BOOST_PP_LIST_FIRST(list),BOOST_PP_NIL), BOOST_PP_LIST_REST(list)) +# define BOOST_PP_LIST_REVERSE_CONS_D(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, (BOOST_PP_LIST_FIRST(list),BOOST_PP_NIL), BOOST_PP_LIST_REST(list)) +# # endif diff --git a/include/boost/preprocessor/seq/fold_left.hpp b/include/boost/preprocessor/seq/fold_left.hpp index b26f7d5..cf51f15 100644 --- a/include/boost/preprocessor/seq/fold_left.hpp +++ b/include/boost/preprocessor/seq/fold_left.hpp @@ -31,9 +31,9 @@ # include # # if BOOST_PP_LIMIT_SEQ == 256 -# define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256)) +# define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256))) # elif BOOST_PP_LIMIT_SEQ == 512 -# define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 512)) +# define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 512))) # else # error Incorrect value for the BOOST_PP_LIMIT_SEQ limit # endif diff --git a/include/boost/preprocessor/seq/fold_right.hpp b/include/boost/preprocessor/seq/fold_right.hpp index e55a181..0072fbf 100644 --- a/include/boost/preprocessor/seq/fold_right.hpp +++ b/include/boost/preprocessor/seq/fold_right.hpp @@ -14,6 +14,7 @@ # ifndef BOOST_PREPROCESSOR_SEQ_FOLD_RIGHT_HPP # define BOOST_PREPROCESSOR_SEQ_FOLD_RIGHT_HPP # +# include # include # include # include @@ -29,10 +30,10 @@ # include # # if BOOST_PP_LIMIT_SEQ == 256 -# define BOOST_PP_SEQ_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256)) +# define BOOST_PP_SEQ_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_RIGHT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256))) # define BOOST_PP_SEQ_FOLD_RIGHT_257(op, st, ss) BOOST_PP_ERROR(0x0005) # elif BOOST_PP_LIMIT_SEQ == 512 -# define BOOST_PP_SEQ_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 512)) +# define BOOST_PP_SEQ_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_RIGHT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 512))) # define BOOST_PP_SEQ_FOLD_RIGHT_513(op, st, ss) BOOST_PP_ERROR(0x0005) # else # error Incorrect value for the BOOST_PP_LIMIT_SEQ limit diff --git a/include/boost/preprocessor/seq/limits/fold_left_256.hpp b/include/boost/preprocessor/seq/limits/fold_left_256.hpp index 8d048d3..3736a5a 100644 --- a/include/boost/preprocessor/seq/limits/fold_left_256.hpp +++ b/include/boost/preprocessor/seq/limits/fold_left_256.hpp @@ -12,6 +12,7 @@ # ifndef BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_256_HPP # define BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_256_HPP # +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_0(op, st, ss, sz) 0 # define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) 0 # define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) 0 # define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) 0 @@ -269,6 +270,7 @@ # define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) 0 # define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) 0 # +# define BOOST_PP_SEQ_FOLD_LEFT_0(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_0(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) # define BOOST_PP_SEQ_FOLD_LEFT_1(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) # define BOOST_PP_SEQ_FOLD_LEFT_2(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) # define BOOST_PP_SEQ_FOLD_LEFT_3(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) @@ -526,6 +528,7 @@ # define BOOST_PP_SEQ_FOLD_LEFT_255(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) # define BOOST_PP_SEQ_FOLD_LEFT_256(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) # +# define BOOST_PP_SEQ_FOLD_LEFT_I_0(op, st, ss, sz) BOOST_PP_SEQ_FOLD_LEFT_I_0_DO(op, st, ss, BOOST_PP_DEC(sz)) # define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_SEQ_FOLD_LEFT_I_1_DO(op, st, ss, BOOST_PP_DEC(sz)) # define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_SEQ_FOLD_LEFT_I_2_DO(op, st, ss, BOOST_PP_DEC(sz)) # define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_SEQ_FOLD_LEFT_I_3_DO(op, st, ss, BOOST_PP_DEC(sz)) @@ -784,6 +787,7 @@ # define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_SEQ_FOLD_LEFT_I_256_DO(op, st, ss, BOOST_PP_DEC(sz)) # # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC() +# define BOOST_PP_SEQ_FOLD_LEFT_I_0_DO(op, st, ss, sz) BOOST_PP_IF(sz, BOOST_PP_SEQ_FOLD_LEFT_I_1, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), sz) # define BOOST_PP_SEQ_FOLD_LEFT_I_1_DO(op, st, ss, sz) BOOST_PP_IF(sz, BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), sz) # define BOOST_PP_SEQ_FOLD_LEFT_I_2_DO(op, st, ss, sz) BOOST_PP_IF(sz, BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), sz) # define BOOST_PP_SEQ_FOLD_LEFT_I_3_DO(op, st, ss, sz) BOOST_PP_IF(sz, BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), sz) @@ -1041,6 +1045,7 @@ # define BOOST_PP_SEQ_FOLD_LEFT_I_255_DO(op, st, ss, sz) BOOST_PP_IF(sz, BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), sz) # define BOOST_PP_SEQ_FOLD_LEFT_I_256_DO(op, st, ss, sz) BOOST_PP_IF(sz, BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), sz) # else +# define BOOST_PP_SEQ_FOLD_LEFT_I_0_DO(op, st, ss, sz) BOOST_PP_IF(sz, BOOST_PP_SEQ_FOLD_LEFT_I_1, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(1, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), sz) # define BOOST_PP_SEQ_FOLD_LEFT_I_1_DO(op, st, ss, sz) BOOST_PP_IF(sz, BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), sz) # define BOOST_PP_SEQ_FOLD_LEFT_I_2_DO(op, st, ss, sz) BOOST_PP_IF(sz, BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), sz) # define BOOST_PP_SEQ_FOLD_LEFT_I_3_DO(op, st, ss, sz) BOOST_PP_IF(sz, BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), sz) diff --git a/include/boost/preprocessor/seq/limits/fold_right_256.hpp b/include/boost/preprocessor/seq/limits/fold_right_256.hpp index fa5ab12..b63a912 100644 --- a/include/boost/preprocessor/seq/limits/fold_right_256.hpp +++ b/include/boost/preprocessor/seq/limits/fold_right_256.hpp @@ -12,6 +12,7 @@ # ifndef BOOST_PREPROCESSOR_SEQ_FOLD_RIGHT_256_HPP # define BOOST_PREPROCESSOR_SEQ_FOLD_RIGHT_256_HPP # +# define BOOST_PP_SEQ_FOLD_RIGHT_0(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_0(op, st, BOOST_PP_SEQ_REVERSE_S(1, ss), BOOST_PP_SEQ_SIZE(ss)) # define BOOST_PP_SEQ_FOLD_RIGHT_1(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, BOOST_PP_SEQ_REVERSE_S(2, ss), BOOST_PP_SEQ_SIZE(ss)) # define BOOST_PP_SEQ_FOLD_RIGHT_2(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, BOOST_PP_SEQ_REVERSE_S(3, ss), BOOST_PP_SEQ_SIZE(ss)) # define BOOST_PP_SEQ_FOLD_RIGHT_3(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, BOOST_PP_SEQ_REVERSE_S(4, ss), BOOST_PP_SEQ_SIZE(ss))