forked from boostorg/preprocessor
Add extra iteration for fold_left and fold_right to cover maximum operations.
This commit is contained in:
@@ -31,9 +31,9 @@
|
||||
# include <boost/preprocessor/config/limits.hpp>
|
||||
#
|
||||
# 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
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
# ifndef BOOST_PREPROCESSOR_SEQ_FOLD_RIGHT_HPP
|
||||
# define BOOST_PREPROCESSOR_SEQ_FOLD_RIGHT_HPP
|
||||
#
|
||||
# include <boost/preprocessor/arithmetic/dec.hpp>
|
||||
# include <boost/preprocessor/cat.hpp>
|
||||
# include <boost/preprocessor/detail/auto_rec.hpp>
|
||||
# include <boost/preprocessor/seq/fold_left.hpp>
|
||||
@@ -29,10 +30,10 @@
|
||||
# include <boost/preprocessor/config/limits.hpp>
|
||||
#
|
||||
# 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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user