1 # /* ************************************************************************** 2 # * * 3 # * (C) Copyright Paul Mensonides 2002. 4 # * Distributed under the Boost Software License, Version 1.0. (See 5 # * accompanying file LICENSE_1_0.txt or copy at 6 # * http://www.boost.org/LICENSE_1_0.txt) 7 # * * 8 # ************************************************************************** */ 9 # 10 # /* See http://www.boost.org for most recent version. */ 11 # 12 # ifndef MSGPACK_PREPROCESSOR_SEQ_REVERSE_HPP 13 # define MSGPACK_PREPROCESSOR_SEQ_REVERSE_HPP 14 # 15 # include <msgpack/preprocessor/config/config.hpp> 16 # include <msgpack/preprocessor/facilities/empty.hpp> 17 # include <msgpack/preprocessor/seq/fold_left.hpp> 18 # 19 # /* MSGPACK_PP_SEQ_REVERSE */ 20 # 21 # if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG() 22 # define MSGPACK_PP_SEQ_REVERSE(seq) MSGPACK_PP_SEQ_FOLD_LEFT(MSGPACK_PP_SEQ_REVERSE_O, MSGPACK_PP_EMPTY, seq)() 23 # else 24 # define MSGPACK_PP_SEQ_REVERSE(seq) MSGPACK_PP_SEQ_REVERSE_I(seq) 25 # define MSGPACK_PP_SEQ_REVERSE_I(seq) MSGPACK_PP_SEQ_FOLD_LEFT(MSGPACK_PP_SEQ_REVERSE_O, MSGPACK_PP_EMPTY, seq)() 26 # endif 27 # 28 # define MSGPACK_PP_SEQ_REVERSE_O(s, state, elem) (elem) state 29 # 30 # /* MSGPACK_PP_SEQ_REVERSE_S */ 31 # 32 # if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG() 33 # define MSGPACK_PP_SEQ_REVERSE_S(s, seq) MSGPACK_PP_SEQ_FOLD_LEFT_ ## s(MSGPACK_PP_SEQ_REVERSE_O, MSGPACK_PP_EMPTY, seq)() 34 # else 35 # define MSGPACK_PP_SEQ_REVERSE_S(s, seq) MSGPACK_PP_SEQ_REVERSE_S_I(s, seq) 36 # define MSGPACK_PP_SEQ_REVERSE_S_I(s, seq) MSGPACK_PP_SEQ_FOLD_LEFT_ ## s(MSGPACK_PP_SEQ_REVERSE_O, MSGPACK_PP_EMPTY, seq)() 37 # endif 38 # 39 # endif 40