MessagePack for C++
Toggle main menu visibility
Loading...
Searching...
No Matches
msgpack
preprocessor
seq
for_each.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_HPP
13
# define MSGPACK_PREPROCESSOR_SEQ_FOR_EACH_HPP
14
#
15
# include <
msgpack/preprocessor/arithmetic/dec.hpp
>
16
# include <
msgpack/preprocessor/config/config.hpp
>
17
# include <
msgpack/preprocessor/control/if.hpp
>
18
# include <
msgpack/preprocessor/control/iif.hpp
>
19
# include <
msgpack/preprocessor/repetition/for.hpp
>
20
# include <
msgpack/preprocessor/seq/seq.hpp
>
21
# include <
msgpack/preprocessor/seq/size.hpp
>
22
# include <
msgpack/preprocessor/seq/detail/is_empty.hpp
>
23
# include <
msgpack/preprocessor/tuple/elem.hpp
>
24
# include <
msgpack/preprocessor/tuple/rem.hpp
>
25
#
26
#
/* MSGPACK_PP_SEQ_FOR_EACH */
27
#
28
# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
29
# define MSGPACK_PP_SEQ_FOR_EACH(macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK(macro, data, seq)
30
# else
31
# define MSGPACK_PP_SEQ_FOR_EACH(macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_D(macro, data, seq)
32
# define MSGPACK_PP_SEQ_FOR_EACH_D(macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK(macro, data, seq)
33
# endif
34
#
35
# define MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC(macro, data, seq) MSGPACK_PP_FOR((macro, data, seq, MSGPACK_PP_SEQ_SIZE(seq)), MSGPACK_PP_SEQ_FOR_EACH_P, MSGPACK_PP_SEQ_FOR_EACH_O, MSGPACK_PP_SEQ_FOR_EACH_M)
36
# define MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY(macro, data, seq)
37
#
38
# define MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK(macro, data, seq) \
39
MSGPACK_PP_IIF \
40
( \
41
MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \
42
MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC, \
43
MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY \
44
) \
45
(macro, data, seq) \
46
/**/
47
#
48
# define MSGPACK_PP_SEQ_FOR_EACH_P(r, x) MSGPACK_PP_TUPLE_ELEM(4, 3, x)
49
#
50
# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
51
# define MSGPACK_PP_SEQ_FOR_EACH_O(r, x) MSGPACK_PP_SEQ_FOR_EACH_O_I x
52
# else
53
# define MSGPACK_PP_SEQ_FOR_EACH_O(r, x) MSGPACK_PP_SEQ_FOR_EACH_O_I(MSGPACK_PP_TUPLE_ELEM(4, 0, x), MSGPACK_PP_TUPLE_ELEM(4, 1, x), MSGPACK_PP_TUPLE_ELEM(4, 2, x), MSGPACK_PP_TUPLE_ELEM(4, 3, x))
54
# endif
55
#
56
# define MSGPACK_PP_SEQ_FOR_EACH_O_I(macro, data, seq, sz) \
57
MSGPACK_PP_SEQ_FOR_EACH_O_I_DEC(macro, data, seq, MSGPACK_PP_DEC(sz)) \
58
/**/
59
# define MSGPACK_PP_SEQ_FOR_EACH_O_I_DEC(macro, data, seq, sz) \
60
( \
61
macro, \
62
data, \
63
MSGPACK_PP_IF \
64
( \
65
sz, \
66
MSGPACK_PP_SEQ_FOR_EACH_O_I_TAIL, \
67
MSGPACK_PP_SEQ_FOR_EACH_O_I_NIL \
68
) \
69
(seq), \
70
sz \
71
) \
72
/**/
73
# define MSGPACK_PP_SEQ_FOR_EACH_O_I_TAIL(seq) MSGPACK_PP_SEQ_TAIL(seq)
74
# define MSGPACK_PP_SEQ_FOR_EACH_O_I_NIL(seq) MSGPACK_PP_NIL
75
#
76
# if MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_STRICT()
77
# define MSGPACK_PP_SEQ_FOR_EACH_M(r, x) MSGPACK_PP_SEQ_FOR_EACH_M_IM(r, MSGPACK_PP_TUPLE_REM_4 x)
78
# define MSGPACK_PP_SEQ_FOR_EACH_M_IM(r, im) MSGPACK_PP_SEQ_FOR_EACH_M_I(r, im)
79
# else
80
# define MSGPACK_PP_SEQ_FOR_EACH_M(r, x) MSGPACK_PP_SEQ_FOR_EACH_M_I(r, MSGPACK_PP_TUPLE_ELEM(4, 0, x), MSGPACK_PP_TUPLE_ELEM(4, 1, x), MSGPACK_PP_TUPLE_ELEM(4, 2, x), MSGPACK_PP_TUPLE_ELEM(4, 3, x))
81
# endif
82
#
83
# define MSGPACK_PP_SEQ_FOR_EACH_M_I(r, macro, data, seq, sz) macro(r, data, MSGPACK_PP_SEQ_HEAD(seq))
84
#
85
#
/* MSGPACK_PP_SEQ_FOR_EACH_R */
86
#
87
# if ~MSGPACK_PP_CONFIG_FLAGS() & MSGPACK_PP_CONFIG_EDG()
88
# define MSGPACK_PP_SEQ_FOR_EACH_R(r, macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_R(r, macro, data, seq)
89
# else
90
# define MSGPACK_PP_SEQ_FOR_EACH_R(r, macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_R_I(r, macro, data, seq)
91
# define MSGPACK_PP_SEQ_FOR_EACH_R_I(r, macro, data, seq) MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_R(r, macro, data, seq)
92
# endif
93
#
94
# define MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC_R(r, macro, data, seq) MSGPACK_PP_FOR_ ## r((macro, data, seq, MSGPACK_PP_SEQ_SIZE(seq)), MSGPACK_PP_SEQ_FOR_EACH_P, MSGPACK_PP_SEQ_FOR_EACH_O, MSGPACK_PP_SEQ_FOR_EACH_M)
95
# define MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY_R(r, macro, data, seq)
96
#
97
# define MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_R(r, macro, data, seq) \
98
MSGPACK_PP_IIF \
99
( \
100
MSGPACK_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \
101
MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC_R, \
102
MSGPACK_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY_R \
103
) \
104
(r, macro, data, seq) \
105
/**/
106
#
107
# endif
dec.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