123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_INC_BINARY_SEQ_HPP
- #define BOOST_PARAMETER_AUX_PREPROCESSOR_INC_BINARY_SEQ_HPP
- #include <boost/preprocessor/seq/push_back.hpp>
- #define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_0(seq, element) \
- (BOOST_PP_SEQ_PUSH_BACK(seq, element), 0)
- #include <boost/preprocessor/control/iif.hpp>
- #define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_1(seq, element) \
- (BOOST_PP_SEQ_PUSH_BACK(seq, BOOST_PP_IIF(element, 0, 1)), element)
- #include <boost/preprocessor/tuple/elem.hpp>
- #include <boost/preprocessor/cat.hpp>
- #define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_OP(s, result_tuple, element) \
- BOOST_PP_CAT( \
- BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_ \
- , BOOST_PP_TUPLE_ELEM(2, 1, result_tuple) \
- )(BOOST_PP_TUPLE_ELEM(2, 0, result_tuple), element)
- #define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL_0(seq) seq
- #define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL_1(seq) \
- BOOST_PP_SEQ_PUSH_BACK(seq, 0)
- #define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL(seq_and_carry) \
- BOOST_PP_CAT( \
- BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL_ \
- , BOOST_PP_TUPLE_ELEM(2, 1, seq_and_carry) \
- )(BOOST_PP_TUPLE_ELEM(2, 0, seq_and_carry))
- #include <boost/preprocessor/seq/seq.hpp>
- #include <boost/preprocessor/seq/fold_left.hpp>
- #define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(seq) \
- BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL( \
- BOOST_PP_SEQ_FOLD_LEFT( \
- BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_OP \
- , (BOOST_PP_SEQ_NIL, 1) \
- , seq \
- ) \
- )
- #endif
|