File indexing completed on 2026-09-20 09:00:34
0001 #
0002
0003
0004
0005
0006
0007
0008
0009 0010 ">#
0011 #
0012 0013 ">#
0014 #
0015 0016 ">#
0017 # ifndef BOOST_PREPROCESSOR_ARRAY_REMOVE_HPP
0018 # define BOOST_PREPROCESSOR_ARRAY_REMOVE_HPP
0019 0020 ">#
0021 # include <boost/preprocessor/config/config.hpp>
0022 0023 ">#
0024 # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
0025 0026 ">#
0027 # include <boost/preprocessor/arithmetic/inc.hpp>
0028 # include <boost/preprocessor/array/elem.hpp>
0029 # include <boost/preprocessor/array/push_back.hpp>
0030 # include <boost/preprocessor/array/size.hpp>
0031 # include <boost/preprocessor/comparison/not_equal.hpp>
0032 # include <boost/preprocessor/control/deduce_d.hpp>
0033 # include <boost/preprocessor/control/iif.hpp>
0034 # include <boost/preprocessor/control/while.hpp>
0035 # include <boost/preprocessor/tuple/eat.hpp>
0036 # include <boost/preprocessor/tuple/elem.hpp>
0037 0038 ">#
0039 #
0040 0041 ">#
0042 # define BOOST_PP_ARRAY_REMOVE(array, i) BOOST_PP_ARRAY_REMOVE_I(BOOST_PP_DEDUCE_D(), array, i)
0043 # define BOOST_PP_ARRAY_REMOVE_I(d, array, i) BOOST_PP_ARRAY_REMOVE_D(d, array, i)
0044 0045 ">#
0046 #
0047 0048 ">#
0049 # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
0050 # define BOOST_PP_ARRAY_REMOVE_D(d, array, i) BOOST_PP_TUPLE_ELEM(4, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REMOVE_P, BOOST_PP_ARRAY_REMOVE_O, (0, i, (0, ()), array)))
0051 # else
0052 # define BOOST_PP_ARRAY_REMOVE_D(d, array, i) BOOST_PP_ARRAY_REMOVE_D_I(d, array, i)
0053 # define BOOST_PP_ARRAY_REMOVE_D_I(d, array, i) BOOST_PP_TUPLE_ELEM(4, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REMOVE_P, BOOST_PP_ARRAY_REMOVE_O, (0, i, (0, ()), array)))
0054 # endif
0055 0056 ">#
0057 # define BOOST_PP_ARRAY_REMOVE_P(d, st) BOOST_PP_NOT_EQUAL(BOOST_PP_TUPLE_ELEM(4, 0, st), BOOST_PP_ARRAY_SIZE(BOOST_PP_TUPLE_ELEM(4, 3, st)))
0058 0059 ">#
0060 # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
0061 # define BOOST_PP_ARRAY_REMOVE_O(d, st) BOOST_PP_ARRAY_REMOVE_O_I st
0062 # else
0063 # define BOOST_PP_ARRAY_REMOVE_O(d, st) BOOST_PP_ARRAY_REMOVE_O_I(BOOST_PP_TUPLE_ELEM(4, 0, st), BOOST_PP_TUPLE_ELEM(4, 1, st), BOOST_PP_TUPLE_ELEM(4, 2, st), BOOST_PP_TUPLE_ELEM(4, 3, st))
0064 # endif
0065 0066 ">#
0067 # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
0068 # define BOOST_PP_ARRAY_REMOVE_O_I(n, i, res, arr) (BOOST_PP_INC(n), i, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(n, i), BOOST_PP_ARRAY_PUSH_BACK, res BOOST_PP_TUPLE_EAT_2)(res, BOOST_PP_ARRAY_ELEM(n, arr)), arr)
0069 # else
0070 # define BOOST_PP_ARRAY_REMOVE_O_I(n, i, res, arr) (BOOST_PP_INC(n), i, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(n, i), BOOST_PP_ARRAY_PUSH_BACK, BOOST_PP_TUPLE_ELEM_2_0)(res, BOOST_PP_ARRAY_ELEM(n, arr)), arr)
0071 # endif
0072 0073 ">#
0074 # else
0075 0076 ">#
0077 # include <boost/preprocessor/arithmetic/inc.hpp>
0078 # include <boost/preprocessor/array/elem.hpp>
0079 # include <boost/preprocessor/array/push_back.hpp>
0080 # include <boost/preprocessor/array/size.hpp>
0081 # include <boost/preprocessor/comparison/not_equal.hpp>
0082 # include <boost/preprocessor/control/deduce_d.hpp>
0083 # include <boost/preprocessor/control/iif.hpp>
0084 # include <boost/preprocessor/control/while.hpp>
0085 # if BOOST_PP_LIMIT_TUPLE == 256
0086 # include <boost/preprocessor/logical/not.hpp>
0087 # endif
0088 # include <boost/preprocessor/tuple/eat.hpp>
0089 # include <boost/preprocessor/tuple/elem.hpp>
0090 0091 ">#
0092 #
0093 0094 ">#
0095 # define BOOST_PP_ARRAY_REMOVE(array, i) BOOST_PP_ARRAY_REMOVE_I(BOOST_PP_DEDUCE_D(), array, i)
0096 # define BOOST_PP_ARRAY_REMOVE_I(d, array, i) BOOST_PP_ARRAY_REMOVE_D(d, array, i)
0097 0098 ">#
0099 #
0100 0101 ">#
0102 # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
0103 # if BOOST_PP_LIMIT_TUPLE == 256
0104 # define BOOST_PP_ARRAY_REMOVE_D(d, array, i) BOOST_PP_ARRAY_REMOVE_ZERO_D(d, array, i, BOOST_PP_NOT(i))
0105 # else
0106 # define BOOST_PP_ARRAY_REMOVE_D(d, array, i) BOOST_PP_TUPLE_ELEM(4, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REMOVE_P, BOOST_PP_ARRAY_REMOVE_O, (0, i, (0, ()), array)))
0107 # endif
0108 # else
0109 # define BOOST_PP_ARRAY_REMOVE_D(d, array, i) BOOST_PP_ARRAY_REMOVE_D_I(d, array, i)
0110 # if BOOST_PP_LIMIT_TUPLE == 256
0111 # define BOOST_PP_ARRAY_REMOVE_D_I(d, array, i) BOOST_PP_ARRAY_REMOVE_ZERO_D(d, array, i, BOOST_PP_NOT(i))
0112 # else
0113 # define BOOST_PP_ARRAY_REMOVE_D_I(d, array, i) BOOST_PP_TUPLE_ELEM(4, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REMOVE_P, BOOST_PP_ARRAY_REMOVE_O, (0, i, (0, ()), array)))
0114 # endif
0115 # endif
0116 0117 ">#
0118 # if BOOST_PP_LIMIT_TUPLE == 256
0119 # define BOOST_PP_ARRAY_REMOVE_ZERO_D(d, array, i, zero) \
0120 BOOST_PP_TUPLE_ELEM(4, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REMOVE_P, BOOST_PP_ARRAY_REMOVE_O, \
0121 (1, i, BOOST_PP_IIF(zero,(0, ()),(1, (BOOST_PP_ARRAY_ELEM(0,array)))), array)))
0122 # endif
0123 0124 ">#
0125 # define BOOST_PP_ARRAY_REMOVE_P(d, st) BOOST_PP_NOT_EQUAL(BOOST_PP_TUPLE_ELEM(4, 0, st), BOOST_PP_ARRAY_SIZE(BOOST_PP_TUPLE_ELEM(4, 3, st)))
0126 0127 ">#
0128 # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
0129 # define BOOST_PP_ARRAY_REMOVE_O(d, st) BOOST_PP_ARRAY_REMOVE_O_I st
0130 # else
0131 # define BOOST_PP_ARRAY_REMOVE_O(d, st) BOOST_PP_ARRAY_REMOVE_O_I(BOOST_PP_TUPLE_ELEM(4, 0, st), BOOST_PP_TUPLE_ELEM(4, 1, st), BOOST_PP_TUPLE_ELEM(4, 2, st), BOOST_PP_TUPLE_ELEM(4, 3, st))
0132 # endif
0133 0134 ">#
0135 # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
0136 # define BOOST_PP_ARRAY_REMOVE_O_I(n, i, res, arr) (BOOST_PP_INC(n), i, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(n, i), BOOST_PP_ARRAY_PUSH_BACK, res BOOST_PP_TUPLE_EAT_2)(res, BOOST_PP_ARRAY_ELEM(n, arr)), arr)
0137 # else
0138 # define BOOST_PP_ARRAY_REMOVE_O_I(n, i, res, arr) (BOOST_PP_INC(n), i, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(n, i), BOOST_PP_ARRAY_PUSH_BACK, BOOST_PP_TUPLE_ELEM_2_0)(res, BOOST_PP_ARRAY_ELEM(n, arr)), arr)
0139 # endif
0140 0141 ">#
0142 # endif
0143 0144 ">#
0145 # endif