1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
#define SUB_REP_COMBINE_B(n, a, arrayB) \
(BOOST_PP_CAT(a, \
BOOST_PP_ARRAY_ELEM(n, arrayB))) \
#define REP_COMBINE_B(z, n, param) \
SUB_REP_COMBINE_B(n, \
BOOST_PP_TUPLE_ELEM(2, 0, param), \
BOOST_PP_TUPLE_ELEM(2, 1, param) \
) \
#define SUB_REP_COMBINE_A(n, arrayA, arrayB) \
BOOST_PP_REPEAT( \
BOOST_PP_ARRAY_SIZE(arrayB), \
REP_COMBINE_B, \
(BOOST_PP_ARRAY_ELEM(n, arrayA), arrayB) \
) \
#define REP_COMBINE_A(z, n, param) \
SUB_REP_COMBINE_A(n, \
BOOST_PP_TUPLE_ELEM(2, 0, param), \
BOOST_PP_TUPLE_ELEM(2, 1, param) \
) \
#define CROSS_COMBINE_ARRAYS(arrayA, arrayB) \
BOOST_PP_SEQ_TO_ARRAY( \
BOOST_PP_REPEAT( \
BOOST_PP_ARRAY_SIZE(arrayA), \
REP_COMBINE_A, \
(arrayA, arrayB) \
) \
) \
#define SELF_CROSS_COMBINE_ARRAY(array) \
CROSS_COMBINE_ARRAYS(array, array) \ |
Partager