MessagePack for C++
Toggle main menu visibility
Loading...
Searching...
No Matches
msgpack
preprocessor
seq
for_each_i.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_FOR_EACH_I_HPP
13
# define MSGPACK_PREPROCESSOR_SEQ_FOR_EACH_I_HPP
14
#
15
# include <
msgpack/preprocessor/arithmetic/dec.hpp
>
16
# include <
msgpack/preprocessor/arithmetic/inc.hpp
>
17
# include <
msgpack/preprocessor/config/config.hpp
>
18
# include <
msgpack/preprocessor/control/if.hpp
>
19
# include <
msgpack/preprocessor/control/iif.hpp
>
20
# include <
msgpack/preprocessor/repetition/for.hpp
>
21
# include <
msgpack/preprocessor/seq/seq.hpp
>
22
# include <
msgpack/preprocessor/seq/size.hpp
>
23
# include <
msgpack/preprocessor/seq/detail/is_empty.hpp
>
24
# include <
msgpack/preprocessor/tuple/elem.hpp
>
25
# include <
msgpack/preprocessor/tuple/rem.hpp
>
26
#
27
#
/* MSGPACK_PP_SEQ_FOR_EACH_I */
28
#
29
# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
30
# define MSGPACK_PP_SEQ_FOR_EACH_I(macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq)
31
# else
32
# define MSGPACK_PP_SEQ_FOR_EACH_I(macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_I_I(macro, data, seq)
33
# define MSGPACK_PP_SEQ_FOR_EACH_I_I(macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq)
34
# endif
35
#
36
# define MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC(macro, data, seq) MSGPACK_PP_FOR((macro, data, seq, 0, MSGPACK_PP_SEQ_SIZE(seq)), MSGPACK_PP_SEQ_FOR_EACH_I_P, MSGPACK_PP_SEQ_FOR_EACH_I_O, MSGPACK_PP_SEQ_FOR_EACH_I_M)
37
# define MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY(macro, data, seq)
38
#
39
# define MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) \
40
MSGPACK_PP_IIF \
41
( \
42
MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \
43
MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \
44
MSGPACK_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY \
45
) \
46
(macro, data, seq) \
47
/**/
48
#
49
# define MSGPACK_PP_SEQ_FOR_EACH_I_P(r, x) MSGPACK_PP_TUPLE_ELEM(5, 4, x)
50
#
51
# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
52
# define MSGPACK_PP_SEQ_FOR_EACH_I_O(r, x) MSGPACK_PP_SEQ_FOR_EACH_I_O_I x
53
# else
54
# define MSGPACK_PP_SEQ_FOR_EACH_I_O(r, x) MSGPACK_PP_SEQ_FOR_EACH_I_O_I(MSGPACK_PP_TUPLE_ELEM(5, 0, x), MSGPACK_PP_TUPLE_ELEM(5, 1, x), MSGPACK_PP_TUPLE_ELEM(5, 2, x), MSGPACK_PP_TUPLE_ELEM(5, 3, x), MSGPACK_PP_TUPLE_ELEM(5, 4, x))
55
# endif
56
#
57
# define MSGPACK_PP_SEQ_FOR_EACH_I_O_I(macro, data, seq, i, sz) \
58
MSGPACK_PP_SEQ_FOR_EACH_I_O_I_DEC(macro, data, seq, i, MSGPACK_PP_DEC(sz)) \
59
/**/
60
# define MSGPACK_PP_SEQ_FOR_EACH_I_O_I_DEC(macro, data, seq, i, sz) \
61
( \
62
macro, \
63
data, \
64
MSGPACK_PP_IF \
65
( \
66
sz, \
67
MSGPACK_PP_SEQ_FOR_EACH_I_O_I_TAIL, \
68
MSGPACK_PP_SEQ_FOR_EACH_I_O_I_NIL \
69
) \
70
(seq), \
71
MSGPACK_PP_INC(i), \
72
sz \
73
) \
74
/**/
75
# define MSGPACK_PP_SEQ_FOR_EACH_I_O_I_TAIL(seq) MSGPACK_PP_SEQ_TAIL(seq)
76
# define MSGPACK_PP_SEQ_FOR_EACH_I_O_I_NIL(seq) MSGPACK_PP_NIL
77
#
78
# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
79
# define MSGPACK_PP_SEQ_FOR_EACH_I_M(r, x) MSGPACK_PP_SEQ_FOR_EACH_I_M_IM(r, MSGPACK_PP_TUPLE_REM_5 x)
80
# define MSGPACK_PP_SEQ_FOR_EACH_I_M_IM(r, im) MSGPACK_PP_SEQ_FOR_EACH_I_M_I(r, im)
81
# else
82
# define MSGPACK_PP_SEQ_FOR_EACH_I_M(r, x) MSGPACK_PP_SEQ_FOR_EACH_I_M_I(r, MSGPACK_PP_TUPLE_ELEM(5, 0, x), MSGPACK_PP_TUPLE_ELEM(5, 1, x), MSGPACK_PP_TUPLE_ELEM(5, 2, x), MSGPACK_PP_TUPLE_ELEM(5, 3, x), MSGPACK_PP_TUPLE_ELEM(5, 4, x))
83
# endif
84
#
85
# define MSGPACK_PP_SEQ_FOR_EACH_I_M_I(r, macro, data, seq, i, sz) macro(r, data, i, MSGPACK_PP_SEQ_HEAD(seq))
86
#
87
#
/* MSGPACK_PP_SEQ_FOR_EACH_I_R */
88
#
89
# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
90
# define MSGPACK_PP_SEQ_FOR_EACH_I_R(r, macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK(r, macro, data, seq)
91
# else
92
# define MSGPACK_PP_SEQ_FOR_EACH_I_R(r, macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_I_R_I(r, macro, data, seq)
93
# define MSGPACK_PP_SEQ_FOR_EACH_I_R_I(r, macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK(r, macro, data, seq)
94
# endif
95
#
96
# define MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EXEC(r, macro, data, seq) MSGPACK_PP_FOR_ ## r((macro, data, seq, 0, MSGPACK_PP_SEQ_SIZE(seq)), MSGPACK_PP_SEQ_FOR_EACH_I_P, MSGPACK_PP_SEQ_FOR_EACH_I_O, MSGPACK_PP_SEQ_FOR_EACH_I_M)
97
# define MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY(r, macro, data, seq)
98
#
99
# define MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK(r, macro, data, seq) \
100
MSGPACK_PP_IIF \
101
( \
102
MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \
103
MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EXEC, \
104
MSGPACK_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY \
105
) \
106
(r, macro, data, seq) \
107
/**/
108
#
109
# endif
dec.hpp
inc.hpp
config.hpp
if.hpp
iif.hpp
rem.hpp
for.hpp
is_empty.hpp
seq.hpp
size.hpp
elem.hpp
Generated by
1.17.0