MessagePack for C++
replace.hpp
Go to the documentation of this file.
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_REPLACE_HPP
13 # define MSGPACK_PREPROCESSOR_SEQ_REPLACE_HPP
14 #
23 #
24 # /* MSGPACK_PP_SEQ_REPLACE */
25 #
26 # if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
27 # define MSGPACK_PP_SEQ_REPLACE(seq, i, elem) MSGPACK_PP_SEQ_FIRST_N(i, seq) (elem) MSGPACK_PP_SEQ_REPLACE_DETAIL_REST(seq, i)
28 # else
29 # define MSGPACK_PP_SEQ_REPLACE(seq, i, elem) MSGPACK_PP_SEQ_REPLACE_I(seq, i, elem)
30 # define MSGPACK_PP_SEQ_REPLACE_I(seq, i, elem) MSGPACK_PP_SEQ_FIRST_N(i, seq) (elem) MSGPACK_PP_SEQ_REPLACE_DETAIL_REST(seq, i)
31 # endif
32 #
33 # define MSGPACK_PP_SEQ_REPLACE_DETAIL_REST_EMPTY(seq, i)
34 # define MSGPACK_PP_SEQ_REPLACE_DETAIL_REST_VALID(seq, i) MSGPACK_PP_SEQ_REST_N(MSGPACK_PP_INC(i), seq)
35 # define MSGPACK_PP_SEQ_REPLACE_DETAIL_REST(seq, i) \
36  MSGPACK_PP_IIF \
37  ( \
38  MSGPACK_PP_EQUAL(i,MSGPACK_PP_DEC(MSGPACK_PP_SEQ_SIZE(seq))), \
39  MSGPACK_PP_SEQ_REPLACE_DETAIL_REST_EMPTY, \
40  MSGPACK_PP_SEQ_REPLACE_DETAIL_REST_VALID \
41  ) \
42  (seq, i) \
43 
44 #
45 # endif