Add extra iteration for fold_left and fold_right to cover maximum operations.

This commit is contained in:
Edward Diener
2020-07-07 19:13:05 -04:00
parent db21240060
commit 0fd6b84304
12 changed files with 35 additions and 12 deletions

View File

@ -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)

View File

@ -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))