libGimbal 0.1.0
C17-Based Extended Standard Library and Cross-Language Runtime Framework
Loading...
Searching...
No Matches
gimbal_macro_composition.h
Go to the documentation of this file.
1/*! \file
2 * \brief Macro primitives for variadic function overloads and resolution
3 * \ingroup preprocessor
4 * \sa gimbal_sequences.h
5 *
6 * \author Falco Girgis
7 */
8
9#ifndef GIMBAL_MACRO_COMPOSITION_H
10#define GIMBAL_MACRO_COMPOSITION_H
11
13
14// Generic meta macro primitives and constructs
15#define GBL_IDENTITY(A) A
16#define GBL_COMMA ,
17
18#define GBL_VA_ARGS(...) ,##__VA_ARGS__
19#define GBL_VA_REQUIRE(...) ...
20
21#define GBL_STRINGIFY(a) GBL_STRINGIFY_(a)
22#define GBL_STRINGIFY_(a) #a
23#define GBL_STRINGIFY_MULTI(...) GBL_STRINGIFY(__VA_ARGS__)
24
25#define GBL_CAT(A, B) A##B
26#define GBL_GLUE(A, B) GBL_CAT(A, B)
27
28#define GBL_APPEND_SUFFIX(NAME, NUM) GBL_CAT(NAME##_, NUM)
29#define GBL_COMPOSE(NAME, ARGS) NAME ARGS
30
31#define GBL_MACRO_CALL(macro, ...) macro(__VA_ARGS__)
32#define GBL_MACRO_CALL_NULL(...)
33
34#define GBL_MACRO_CONDITIONAL_CALL_0(macro, ...)
36#define GBL_MACRO_CONDITIONAL_CALL_1(macro, ...)
37 GBL_MACRO_CALL(macro, __VA_ARGS__)
38
39#define GBL_MACRO_CONDITIONAL_CALL(enabled, ...)
40 GBL_CAT(GBL_MACRO_CONDITIONAL_CALL_,enabled)(__VA_ARGS__)
41
42#define GBL_NARG(...)
43 GBL_NARG_(__VA_ARGS__, GBL_RSEQ_N())
44#define GBL_NARG_(...)
45 GBL_ARG_N(__VA_ARGS__)
46#define GBL_ARG_N(
47 _1, _2, _3, _4, _5, _6, _7, _8, _9,_10,
48 _11,_12,_13,_14,_15,_16,_17,_18,_19,_20,
49 _21,_22,_23,_24,_25,_26,_27,_28,_29,_30,
50 _31,_32,_33,_34,_35,_36,_37,_38,_39,_40,
51 _41,_42,_43,_44,_45,_46,_47,_48,_49,_50,
52 _51,_52,_53,_54,_55,_56,_57,_58,_59,_60,
53 _61,_62,_63,_64,_65,_66,_67,_68,_69,_70,
54 _71,_72,_73,_74,_75,_76,_77,_78,_79,_80, N,...) N
55#define GBL_RSEQ_N()
56 80,
57 79,78,77,76,75,74,73,72,71,70,
58 69,68,67,66,65,64,63,62,61,60,
59 59,58,57,56,55,54,53,52,51,50,
60 49,48,47,46,45,44,43,42,41,40,
61 39,38,37,36,35,34,33,32,31,30,
62 29,28,27,26,25,24,23,22,21,20,
63 19,18,17,16,15,14,13,12,11,10,
64 9,8,7,6,5,4,3,2,1,0
65
66#define GBL_ARG_1(_1, ...) _1
67#define GBL_ARG_2(_1, _2, ...) _2
68#define GBL_ARG_3(_1, _2, _3, ...) _3
69#define GBL_ARG_4(_1, _2, _3, _4, ...) _4
70#define GBL_ARG_5(_1, _2, _3, _4, _5, ...) _5
71#define GBL_ARG_6(_1, _2, _3, _4, _5, _6, ...) _6
72#define GBL_ARG_7(_1, _2, _3, _4, _5, _6, _7, ...) _7
73#define GBL_ARG_8(_1, _2, _3, _4, _5, _6, _7, _8, ...) _8
74#define GBL_ARG_9(_1, _2, _3, _4, _5, _6, _7, _8, _9, ...) _9
75#define GBL_ARG_10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) _10
76#define GBL_ARG_11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) _11
77#define GBL_ARG_12(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) _12
78#define GBL_ARG_13(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) _13
79#define GBL_ARG_14(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) _14
80#define GBL_ARG_15(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _15
81#define GBL_ARG_16(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) _16
82#define GBL_ARG_17(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) _17
83#define GBL_ARG_18(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) _18
84#define GBL_ARG_19(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) _19
85#define GBL_ARG_20(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) _20
86#define GBL_ARG_21(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) _21
87#define GBL_ARG_22(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) _22
88#define GBL_ARG_23(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) _23
89#define GBL_ARG_24(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) _24
90#define GBL_ARG_25(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, ...) _25
91#define GBL_ARG_26(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, ...) _26
92#define GBL_ARG_27(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, ...) _27
93#define GBL_ARG_28(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, ...) _28
94#define GBL_ARG_29(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, ...) _29
95#define GBL_ARG_30(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, ...) _30
96#define GBL_ARG_31(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, ...) _31
97#define GBL_ARG_32(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, ...) _32
98#define GBL_ARG_33(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, ...) _33
99#define GBL_ARG_34(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, ...) _34
100#define GBL_ARG_35(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, ...) _35
101#define GBL_ARG_36(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, ...) _36
102#define GBL_ARG_37(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, ...) _37
103#define GBL_ARG_38(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, ...) _38
104#define GBL_ARG_39(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, ...) _39
105#define GBL_ARG_40(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, ...) _40
106#define GBL_ARG_41(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, ...) _41
107#define GBL_ARG_42(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, ...) _42
108#define GBL_ARG_43(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, ...) _43
109#define GBL_ARG_44(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, ...) _44
110#define GBL_ARG_45(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, ...) _45
111#define GBL_ARG_46(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, ...) _46
112#define GBL_ARG_47(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, ...) _47
113#define GBL_ARG_48(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, ...) _48
114#define GBL_ARG_49(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, ...) _49
115#define GBL_ARG_50(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, ...) _50
116
117// Variadic function overloading
118// Variadic function overloading - Extended to 50 arguments
119#define GBL_VA_SLIDING_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, COUNT, ...) COUNT
120
121#define GBL_VA_OVERLOAD_SUFFIXER(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, ...)
122 GBL_COMPOSE(GBL_VA_SLIDING_ARG, (GBL_EVAL __VA_ARGS__ (), _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50) )
123
124#define GBL_VA_OVERLOAD_SUFFIXER_ARGC(...)
125 GBL_VA_OVERLOAD_SUFFIXER(0, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
126
127#define GBL_VA_OVERLOAD_SUFFIXER_0_N(...)
128 GBL_VA_OVERLOAD_SUFFIXER(N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 0, ##__VA_ARGS__)
129
130#define GBL_VA_OVERLOAD_SUFFIXER_1_N(...)
131 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 1, ##__VA_ARGS__)
132
133#define GBL_VA_OVERLOAD_SUFFIXER_2_N(...)
134 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 2, 1, ##__VA_ARGS__)
135
136#define GBL_VA_OVERLOAD_SUFFIXER_3_N(...)
137 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 3, 2, 1, ##__VA_ARGS__)
138
139#define GBL_VA_OVERLOAD_SUFFIXER_4_N(...)
140 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 4, 3, 2, 1, ##__VA_ARGS__)
141
142#define GBL_VA_OVERLOAD_SUFFIXER_5_N(...)
143 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 5, 4, 3, 2, 1, ##__VA_ARGS__)
144
145#define GBL_VA_OVERLOAD_SUFFIXER_6_N(...)
146 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
147
148#define GBL_VA_OVERLOAD_SUFFIXER_7_N(...)
149 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
150
151#define GBL_VA_OVERLOAD_SUFFIXER_8_N(...)
152 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
153
154#define GBL_VA_OVERLOAD_SUFFIXER_9_N(...)
155 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
156
157#define GBL_VA_OVERLOAD_SUFFIXER_10_N(...)
158 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
159
160#define GBL_VA_OVERLOAD_SUFFIXER_11_N(...)
161 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
162
163#define GBL_VA_OVERLOAD_SUFFIXER_12_N(...)
164 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
165
166#define GBL_VA_OVERLOAD_SUFFIXER_13_N(...)
167 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
168
169#define GBL_VA_OVERLOAD_SUFFIXER_14_N(...)
170 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
171
172#define GBL_VA_OVERLOAD_SUFFIXER_15_N(...)
173 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
174
175#define GBL_VA_OVERLOAD_SUFFIXER_16_N(...)
176 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
177
178#define GBL_VA_OVERLOAD_SUFFIXER_17_N(...)
179 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
180
181#define GBL_VA_OVERLOAD_SUFFIXER_18_N(...)
182 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
183
184#define GBL_VA_OVERLOAD_SUFFIXER_19_N(...)
185 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
186
187#define GBL_VA_OVERLOAD_SUFFIXER_20_N(...)
188 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
189
190#define GBL_VA_OVERLOAD_SUFFIXER_21_N(...)
191 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
192
193#define GBL_VA_OVERLOAD_SUFFIXER_22_N(...)
194 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
195
196#define GBL_VA_OVERLOAD_SUFFIXER_23_N(...)
197 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
198
199#define GBL_VA_OVERLOAD_SUFFIXER_24_N(...)
200 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
201
202#define GBL_VA_OVERLOAD_SUFFIXER_25_N(...)
203 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
204
205#define GBL_VA_OVERLOAD_SUFFIXER_26_N(...)
206 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
207
208#define GBL_VA_OVERLOAD_SUFFIXER_27_N(...)
209 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
210
211#define GBL_VA_OVERLOAD_SUFFIXER_28_N(...)
212 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
213
214#define GBL_VA_OVERLOAD_SUFFIXER_29_N(...)
215 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
216
217#define GBL_VA_OVERLOAD_SUFFIXER_30_N(...)
218 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
219
220#define GBL_VA_OVERLOAD_SUFFIXER_31_N(...)
221 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
222
223#define GBL_VA_OVERLOAD_SUFFIXER_32_N(...)
224 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
225
226#define GBL_VA_OVERLOAD_SUFFIXER_33_N(...)
227 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
228
229#define GBL_VA_OVERLOAD_SUFFIXER_34_N(...)
230 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
231
232#define GBL_VA_OVERLOAD_SUFFIXER_35_N(...)
233 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
234
235#define GBL_VA_OVERLOAD_SUFFIXER_36_N(...)
236 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
237
238#define GBL_VA_OVERLOAD_SUFFIXER_37_N(...)
239 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, N, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
240
241#define GBL_VA_OVERLOAD_SUFFIXER_38_N(...)
242 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, N, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
243
244#define GBL_VA_OVERLOAD_SUFFIXER_39_N(...)
245 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, N, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
246
247#define GBL_VA_OVERLOAD_SUFFIXER_40_N(...)
248 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, N, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
249
250#define GBL_VA_OVERLOAD_SUFFIXER_41_N(...)
251 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, N, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
252
253#define GBL_VA_OVERLOAD_SUFFIXER_42_N(...)
254 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, N, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
255
256#define GBL_VA_OVERLOAD_SUFFIXER_43_N(...)
257 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, N, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
258
259#define GBL_VA_OVERLOAD_SUFFIXER_44_N(...)
260 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, N, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
261
262#define GBL_VA_OVERLOAD_SUFFIXER_45_N(...)
263 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, N, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
264
265#define GBL_VA_OVERLOAD_SUFFIXER_46_N(...)
266 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, N, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
267
268#define GBL_VA_OVERLOAD_SUFFIXER_47_N(...)
269 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, N, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
270
271#define GBL_VA_OVERLOAD_SUFFIXER_48_N(...)
272 GBL_VA_OVERLOAD_SUFFIXER(0, N, N, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
273
274#define GBL_VA_OVERLOAD_SUFFIXER_49_N(...)
275 GBL_VA_OVERLOAD_SUFFIXER(0, N, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
276
277#define GBL_VA_OVERLOAD_SUFFIXER_50_N(...)
278 GBL_VA_OVERLOAD_SUFFIXER(0, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ##__VA_ARGS__)
279
280#define GBL_VA_OVERLOAD_SELECT(BASE, SUFFIXER, ...)
281 GBL_APPEND_SUFFIX(BASE, SUFFIXER(__VA_ARGS__))
282
283#define GBL_VA_OVERLOAD_CALL(BASE, SUFFIXER, ...)
284 GBL_VA_OVERLOAD_SELECT(BASE, SUFFIXER, ## __VA_ARGS__)(__VA_ARGS__)
285
286#define GBL_VA_OVERLOAD_CALL_ARGC(BASE, ...) GBL_VA_OVERLOAD_CALL
287 (BASE, GBL_VA_OVERLOAD_SUFFIXER_ARGC, ## __VA_ARGS__)
288
289// Tuple processing
290#define GBL_TUPLE_FIRST(...) GBL_TUPLE_FIRST__(__VA_ARGS__,)
291#define GBL_TUPLE_FIRST__(X,...) X
292
293#define GBL_TUPLE_REST(X,...) __VA_ARGS__
294
295#define GBL_TUPLE_FOREACH(MACRO_,DATA_,TUPLE_) GBL_GLUE(GBL_TUPLE_FOREACH__,GBL_NARG TUPLE_)(MACRO_,DATA_,TUPLE_)
296
297#define GBL_TUPLE_FOREACH__1(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_)
298#define GBL_TUPLE_FOREACH__2(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__1(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
299#define GBL_TUPLE_FOREACH__3(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__2(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
300#define GBL_TUPLE_FOREACH__4(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__3(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
301#define GBL_TUPLE_FOREACH__5(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__4(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
302#define GBL_TUPLE_FOREACH__6(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__5(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
303#define GBL_TUPLE_FOREACH__7(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__6(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
304#define GBL_TUPLE_FOREACH__8(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__7(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
305#define GBL_TUPLE_FOREACH__9(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__8(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
306#define GBL_TUPLE_FOREACH__10(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__9(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
307#define GBL_TUPLE_FOREACH__11(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__10(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
308#define GBL_TUPLE_FOREACH__12(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__11(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
309#define GBL_TUPLE_FOREACH__13(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__12(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
310#define GBL_TUPLE_FOREACH__14(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__13(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
311#define GBL_TUPLE_FOREACH__15(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__14(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
312#define GBL_TUPLE_FOREACH__16(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__15(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
313#define GBL_TUPLE_FOREACH__17(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__16(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
314#define GBL_TUPLE_FOREACH__18(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__17(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
315#define GBL_TUPLE_FOREACH__19(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__18(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
316#define GBL_TUPLE_FOREACH__20(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__19(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
317#define GBL_TUPLE_FOREACH__21(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__20(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
318#define GBL_TUPLE_FOREACH__22(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__21(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
319#define GBL_TUPLE_FOREACH__23(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__22(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
320#define GBL_TUPLE_FOREACH__24(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__23(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
321#define GBL_TUPLE_FOREACH__25(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__24(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
322#define GBL_TUPLE_FOREACH__26(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__25(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
323#define GBL_TUPLE_FOREACH__27(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__26(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
324#define GBL_TUPLE_FOREACH__28(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__27(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
325#define GBL_TUPLE_FOREACH__29(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__28(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
326#define GBL_TUPLE_FOREACH__30(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__29(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
327#define GBL_TUPLE_FOREACH__31(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__30(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
328#define GBL_TUPLE_FOREACH__32(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__31(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
329#define GBL_TUPLE_FOREACH__33(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__32(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
330#define GBL_TUPLE_FOREACH__34(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__33(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
331#define GBL_TUPLE_FOREACH__35(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__34(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
332#define GBL_TUPLE_FOREACH__36(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__35(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
333#define GBL_TUPLE_FOREACH__37(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__36(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
334#define GBL_TUPLE_FOREACH__38(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__37(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
335#define GBL_TUPLE_FOREACH__39(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__38(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
336#define GBL_TUPLE_FOREACH__40(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__39(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
337#define GBL_TUPLE_FOREACH__41(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__40(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
338#define GBL_TUPLE_FOREACH__42(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__41(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
339#define GBL_TUPLE_FOREACH__43(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__42(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
340#define GBL_TUPLE_FOREACH__44(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__43(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
341#define GBL_TUPLE_FOREACH__45(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__44(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
342#define GBL_TUPLE_FOREACH__46(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__45(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
343#define GBL_TUPLE_FOREACH__47(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__46(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
344#define GBL_TUPLE_FOREACH__48(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__47(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
345#define GBL_TUPLE_FOREACH__49(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__48(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
346#define GBL_TUPLE_FOREACH__50(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__49(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
347#define GBL_TUPLE_FOREACH__51(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__50(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
348#define GBL_TUPLE_FOREACH__52(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__51(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
349#define GBL_TUPLE_FOREACH__53(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__52(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
350#define GBL_TUPLE_FOREACH__54(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__53(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
351#define GBL_TUPLE_FOREACH__55(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__54(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
352#define GBL_TUPLE_FOREACH__56(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__55(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
353#define GBL_TUPLE_FOREACH__57(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__56(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
354#define GBL_TUPLE_FOREACH__58(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__57(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
355#define GBL_TUPLE_FOREACH__59(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__58(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
356#define GBL_TUPLE_FOREACH__60(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__59(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
357#define GBL_TUPLE_FOREACH__61(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__60(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
358#define GBL_TUPLE_FOREACH__62(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__61(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
359#define GBL_TUPLE_FOREACH__63(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__62(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
360#define GBL_TUPLE_FOREACH__64(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__63(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
361#define GBL_TUPLE_FOREACH__65(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__64(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
362#define GBL_TUPLE_FOREACH__66(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__65(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
363#define GBL_TUPLE_FOREACH__67(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__66(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
364#define GBL_TUPLE_FOREACH__68(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__67(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
365#define GBL_TUPLE_FOREACH__69(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__68(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
366#define GBL_TUPLE_FOREACH__70(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__69(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
367#define GBL_TUPLE_FOREACH__71(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__70(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
368#define GBL_TUPLE_FOREACH__72(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__71(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
369#define GBL_TUPLE_FOREACH__73(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__72(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
370#define GBL_TUPLE_FOREACH__74(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__73(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
371#define GBL_TUPLE_FOREACH__75(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__74(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
372#define GBL_TUPLE_FOREACH__76(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__75(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
373#define GBL_TUPLE_FOREACH__77(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__76(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
374#define GBL_TUPLE_FOREACH__78(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__77(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
375#define GBL_TUPLE_FOREACH__79(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__78(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
376#define GBL_TUPLE_FOREACH__80(MACRO_,DATA_,TUPLE_) MACRO_(DATA_,GBL_TUPLE_FIRST TUPLE_) GBL_TUPLE_FOREACH__79(MACRO_,DATA_,(GBL_TUPLE_REST TUPLE_))
377
378#define GBL_REVERSE_1(a) a
379#define GBL_REVERSE_2(a,b) b,a
380#define GBL_REVERSE_3(a,...) GBL_IDENTITY(GBL_REVERSE_2(__VA_ARGS__)),a
381#define GBL_REVERSE_4(a,...) GBL_IDENTITY(GBL_REVERSE_3(__VA_ARGS__)),a
382#define GBL_REVERSE_5(a,...) GBL_IDENTITY(GBL_REVERSE_4(__VA_ARGS__)),a
383#define GBL_REVERSE_6(a,...) GBL_IDENTITY(GBL_REVERSE_5(__VA_ARGS__)),a
384#define GBL_REVERSE_7(a,...) GBL_IDENTITY(GBL_REVERSE_6(__VA_ARGS__)),a
385#define GBL_REVERSE_8(a,...) GBL_IDENTITY(GBL_REVERSE_7(__VA_ARGS__)),a
386#define GBL_REVERSE_9(a,...) GBL_IDENTITY(GBL_REVERSE_8(__VA_ARGS__)),a
387#define GBL_REVERSE_10(a,...) GBL_IDENTITY(GBL_REVERSE_9(__VA_ARGS__)),a
388#define GBL_REVERSE_11(a,...) GBL_IDENTITY(GBL_REVERSE_10(__VA_ARGS__)),a
389#define GBL_REVERSE_12(a,...) GBL_IDENTITY(GBL_REVERSE_11(__VA_ARGS__)),a
390#define GBL_REVERSE_13(a,...) GBL_IDENTITY(GBL_REVERSE_12(__VA_ARGS__)),a
391#define GBL_REVERSE_14(a,...) GBL_IDENTITY(GBL_REVERSE_13(__VA_ARGS__)),a
392#define GBL_REVERSE_15(a,...) GBL_IDENTITY(GBL_REVERSE_14(__VA_ARGS__)),a
393#define GBL_REVERSE_16(a,...) GBL_IDENTITY(GBL_REVERSE_15(__VA_ARGS__)),a
394#define GBL_REVERSE_17(a,...) GBL_IDENTITY(GBL_REVERSE_16(__VA_ARGS__)),a
395#define GBL_REVERSE_18(a,...) GBL_IDENTITY(GBL_REVERSE_17(__VA_ARGS__)),a
396#define GBL_REVERSE_19(a,...) GBL_IDENTITY(GBL_REVERSE_18(__VA_ARGS__)),a
397#define GBL_REVERSE_20(a,...) GBL_IDENTITY(GBL_REVERSE_19(__VA_ARGS__)),a
398#define GBL_REVERSE_21(a,...) GBL_IDENTITY(GBL_REVERSE_20(__VA_ARGS__)),a
399#define GBL_REVERSE_22(a,...) GBL_IDENTITY(GBL_REVERSE_21(__VA_ARGS__)),a
400#define GBL_REVERSE_23(a,...) GBL_IDENTITY(GBL_REVERSE_22(__VA_ARGS__)),a
401#define GBL_REVERSE_24(a,...) GBL_IDENTITY(GBL_REVERSE_23(__VA_ARGS__)),a
402#define GBL_REVERSE_25(a,...) GBL_IDENTITY(GBL_REVERSE_24(__VA_ARGS__)),a
403#define GBL_REVERSE_26(a,...) GBL_IDENTITY(GBL_REVERSE_25(__VA_ARGS__)),a
404#define GBL_REVERSE_27(a,...) GBL_IDENTITY(GBL_REVERSE_26(__VA_ARGS__)),a
405#define GBL_REVERSE_28(a,...) GBL_IDENTITY(GBL_REVERSE_27(__VA_ARGS__)),a
406#define GBL_REVERSE_29(a,...) GBL_IDENTITY(GBL_REVERSE_28(__VA_ARGS__)),a
407#define GBL_REVERSE_30(a,...) GBL_IDENTITY(GBL_REVERSE_29(__VA_ARGS__)),a
408#define GBL_REVERSE_31(a,...) GBL_IDENTITY(GBL_REVERSE_30(__VA_ARGS__)),a
409#define GBL_REVERSE_32(a,...) GBL_IDENTITY(GBL_REVERSE_31(__VA_ARGS__)),a
410#define GBL_REVERSE1(N,...) GBL_CAT(GBL_REVERSE_, N)(__VA_ARGS__)
411#define GBL_REVERSE(...) GBL_REVERSE1(GBL_NARG(__VA_ARGS__), __VA_ARGS__)
412
413
414
415#endif // GIMBAL_MACRO_COMPOSITION_H
#define GBL_TUPLE_FOREACH__1(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__23(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__74(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__68(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__48(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__31(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__72(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_31(a,...)
#define GBL_TUPLE_FOREACH__54(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_12(a,...)
#define GBL_TUPLE_FOREACH__52(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_22(a,...)
#define GBL_TUPLE_FOREACH__70(MACRO_, DATA_, TUPLE_)
#define GBL_VA_OVERLOAD_SUFFIXER(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50,...)
#define GBL_REVERSE_13(a,...)
#define GBL_VA_SLIDING_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, COUNT,...)
#define GBL_TUPLE_FOREACH__76(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_7(a,...)
#define GBL_TUPLE_FOREACH__14(MACRO_, DATA_, TUPLE_)
#define GBL_IDENTITY(A)
#define GBL_REVERSE1(N,...)
#define GBL_REVERSE_18(a,...)
#define GBL_TUPLE_FOREACH__64(MACRO_, DATA_, TUPLE_)
#define GBL_MACRO_CALL_NULL(...)
#define GBL_REVERSE_28(a,...)
#define GBL_VA_OVERLOAD_SELECT(BASE, SUFFIXER,...)
#define GBL_TUPLE_FIRST__(X,...)
#define GBL_REVERSE_21(a,...)
#define GBL_TUPLE_FOREACH__50(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__36(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__17(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__62(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__32(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__5(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__15(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__67(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__4(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__27(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_10(a,...)
#define GBL_COMPOSE(NAME, ARGS)
#define GBL_REVERSE_8(a,...)
#define GBL_TUPLE_FOREACH__47(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__13(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__49(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_REST(X,...)
#define GBL_TUPLE_FOREACH__55(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_24(a,...)
#define GBL_TUPLE_FOREACH__16(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__40(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__42(MACRO_, DATA_, TUPLE_)
#define GBL_STRINGIFY_(a)
#define GBL_REVERSE_27(a,...)
#define GBL_REVERSE_26(a,...)
#define GBL_NARG_(...)
#define GBL_TUPLE_FOREACH__56(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__28(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__44(MACRO_, DATA_, TUPLE_)
#define GBL_STRINGIFY(a)
#define GBL_REVERSE_14(a,...)
#define GBL_TUPLE_FOREACH__73(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_30(a,...)
#define GBL_TUPLE_FOREACH__22(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_19(a,...)
#define GBL_TUPLE_FOREACH__60(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__9(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__34(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__57(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FIRST(...)
#define GBL_TUPLE_FOREACH__33(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__12(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_20(a,...)
#define GBL_TUPLE_FOREACH__18(MACRO_, DATA_, TUPLE_)
#define GBL_GLUE(A, B)
#define GBL_NARG(...)
#define GBL_TUPLE_FOREACH__21(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__6(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_5(a,...)
#define GBL_TUPLE_FOREACH__35(MACRO_, DATA_, TUPLE_)
#define GBL_CAT(A, B)
#define GBL_TUPLE_FOREACH__59(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_16(a,...)
#define GBL_REVERSE_25(a,...)
#define GBL_TUPLE_FOREACH__26(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__8(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__30(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__10(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__25(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__75(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__7(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__3(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__19(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_23(a,...)
#define GBL_REVERSE_3(a,...)
#define GBL_TUPLE_FOREACH__20(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__46(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__61(MACRO_, DATA_, TUPLE_)
#define GBL_RSEQ_N()
#define GBL_TUPLE_FOREACH__65(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_2(a, b)
#define GBL_TUPLE_FOREACH__24(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__37(MACRO_, DATA_, TUPLE_)
#define GBL_MACRO_CALL(macro,...)
#define GBL_REVERSE_15(a,...)
#define GBL_TUPLE_FOREACH__78(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_11(a,...)
#define GBL_TUPLE_FOREACH__51(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_4(a,...)
#define GBL_TUPLE_FOREACH__43(MACRO_, DATA_, TUPLE_)
#define GBL_APPEND_SUFFIX(NAME, NUM)
#define GBL_TUPLE_FOREACH__58(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__63(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__69(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_6(a,...)
#define GBL_VA_OVERLOAD_SUFFIXER_ARGC(...)
#define GBL_REVERSE_17(a,...)
#define GBL_TUPLE_FOREACH__45(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__66(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__39(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__41(MACRO_, DATA_, TUPLE_)
#define GBL_REVERSE_29(a,...)
#define GBL_TUPLE_FOREACH__38(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__79(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__11(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__71(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__53(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__77(MACRO_, DATA_, TUPLE_)
#define GBL_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, N,...)
#define GBL_REVERSE_9(a,...)
#define GBL_TUPLE_FOREACH__2(MACRO_, DATA_, TUPLE_)
#define GBL_TUPLE_FOREACH__29(MACRO_, DATA_, TUPLE_)
#define GBL_EVAL(...)