COMMS
Template library intended to help with implementation of communication protocols.
Loading...
Searching...
No Matches
include
comms
details
variant_access.h
1
//
2
// Copyright 2017 - 2025 (C). Alex Robenko. All rights reserved.
3
//
4
// This Source Code Form is subject to the terms of the Mozilla Public
5
// License, v. 2.0. If a copy of the MPL was not distributed with this
6
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
8
#pragma once
9
10
11
#include "comms/details/base_detection.h"
12
#include "comms/details/gen_enum.h"
13
#include "comms/details/macro_common.h"
14
15
#include <tuple>
16
#include <type_traits>
17
#include <utility>
18
19
#ifdef COMMS_MUST_DEFINE_BASE
20
#define COMMS_AS_VARIANT_FUNC Base& asVariant()
21
#define COMMS_AS_VARIANT_CONST_FUNC const Base& asVariant() const
22
#define COMMS_VARIANT_INIT_FIELD_FUNC(v_, n_) \
23
typename std::tuple_element<COMMS_CONCATENATE(FieldIdx_, n_), typename Base::Members>::type& COMMS_CONCATENATE(initField_, n_)(TArgs&&... args)
24
#define COMMS_VARIANT_ACCESS_FIELD_FUNC(v_, n_) \
25
typename std::tuple_element<COMMS_CONCATENATE(FieldIdx_, n_), typename Base::Members>::type& COMMS_CONCATENATE(accessField_, n_)()
26
#define COMMS_VARIANT_ACCESS_FIELD_CONST_FUNC(v_, n_) \
27
const typename std::tuple_element<COMMS_CONCATENATE(FieldIdx_, n_), typename Base::Members>::type& COMMS_CONCATENATE(accessField_, n_)() const
28
29
#else
// #ifdef COMMS_MUST_DEFINE_BASE
30
#define COMMS_AS_VARIANT_FUNC FUNC_AUTO_REF_RETURN(asVariant, decltype(comms::field::toFieldBase(*this)))
31
#define COMMS_AS_VARIANT_CONST_FUNC FUNC_AUTO_REF_RETURN_CONST(asVariant, decltype(comms::field::toFieldBase(*this)))
32
#define COMMS_VARIANT_INIT_FIELD_FUNC(v_, n_) \
33
FUNC_ARGS_AUTO_REF_RETURN(COMMS_CONCATENATE(initField_, n_), TArgs&&... args, decltype(v_.template initField<COMMS_CONCATENATE(FieldIdx_, n_)>(std::forward<TArgs>(args)...)))
34
#define COMMS_VARIANT_ACCESS_FIELD_FUNC(v_, n_) \
35
FUNC_AUTO_REF_RETURN(COMMS_CONCATENATE(accessField_, n_), decltype(v_.template accessField<COMMS_CONCATENATE(FieldIdx_, n_)>()))
36
#define COMMS_VARIANT_ACCESS_FIELD_CONST_FUNC(v_, n_) \
37
FUNC_AUTO_REF_RETURN_CONST(COMMS_CONCATENATE(accessField_, n_), decltype(v_.template accessField<COMMS_CONCATENATE(FieldIdx_, n_)>()))
38
#endif
// #ifdef COMMS_MUST_DEFINE_BASE
39
40
#define COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
41
template <typename... TArgs> \
42
COMMS_VARIANT_INIT_FIELD_FUNC(v_, n_) {\
43
return v_.template initField<COMMS_CONCATENATE(FieldIdx_, n_)>(std::forward<TArgs>(args)...); \
44
} \
45
void COMMS_CONCATENATE(deinitField_, n_)() {\
46
v_.template deinitField<COMMS_CONCATENATE(FieldIdx_, n_)>(); \
47
} \
48
COMMS_VARIANT_ACCESS_FIELD_FUNC(v_, n_) { \
49
return v_.template accessField<COMMS_CONCATENATE(FieldIdx_, n_)>(); \
50
} \
51
COMMS_VARIANT_ACCESS_FIELD_CONST_FUNC(v_, n_) { \
52
return v_.template accessField<COMMS_CONCATENATE(FieldIdx_, n_)>(); \
53
}
54
55
#define COMMS_VARIANT_MEM_ACC_FUNC_1(v_, n_) COMMS_VARIANT_MEM_ACC_FUNC(v_, n_)
56
#define COMMS_VARIANT_MEM_ACC_FUNC_2(v_, n_, ...) \
57
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
58
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_1(v_, __VA_ARGS__))
59
#define COMMS_VARIANT_MEM_ACC_FUNC_3(v_, n_, ...) \
60
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
61
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_2(v_, __VA_ARGS__))
62
#define COMMS_VARIANT_MEM_ACC_FUNC_4(v_, n_, ...) \
63
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
64
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_3(v_, __VA_ARGS__))
65
#define COMMS_VARIANT_MEM_ACC_FUNC_5(v_, n_, ...) \
66
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
67
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_4(v_, __VA_ARGS__))
68
#define COMMS_VARIANT_MEM_ACC_FUNC_6(v_, n_, ...) \
69
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
70
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_5(v_, __VA_ARGS__))
71
#define COMMS_VARIANT_MEM_ACC_FUNC_7(v_, n_, ...) \
72
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
73
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_6(v_, __VA_ARGS__))
74
#define COMMS_VARIANT_MEM_ACC_FUNC_8(v_, n_, ...) \
75
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
76
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_7(v_, __VA_ARGS__))
77
#define COMMS_VARIANT_MEM_ACC_FUNC_9(v_, n_, ...) \
78
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
79
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_8(v_, __VA_ARGS__))
80
#define COMMS_VARIANT_MEM_ACC_FUNC_10(v_, n_, ...) \
81
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
82
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_9(v_, __VA_ARGS__))
83
#define COMMS_VARIANT_MEM_ACC_FUNC_11(v_, n_, ...) \
84
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
85
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_10(v_, __VA_ARGS__))
86
#define COMMS_VARIANT_MEM_ACC_FUNC_12(v_, n_, ...) \
87
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
88
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_11(v_, __VA_ARGS__))
89
#define COMMS_VARIANT_MEM_ACC_FUNC_13(v_, n_, ...) \
90
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
91
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_12(v_, __VA_ARGS__))
92
#define COMMS_VARIANT_MEM_ACC_FUNC_14(v_, n_, ...) \
93
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
94
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_13(v_, __VA_ARGS__))
95
#define COMMS_VARIANT_MEM_ACC_FUNC_15(v_, n_, ...) \
96
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
97
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_14(v_, __VA_ARGS__))
98
#define COMMS_VARIANT_MEM_ACC_FUNC_16(v_, n_, ...) \
99
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
100
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_15(v_, __VA_ARGS__))
101
#define COMMS_VARIANT_MEM_ACC_FUNC_17(v_, n_, ...) \
102
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
103
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_16(v_, __VA_ARGS__))
104
#define COMMS_VARIANT_MEM_ACC_FUNC_18(v_, n_, ...) \
105
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
106
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_17(v_, __VA_ARGS__))
107
#define COMMS_VARIANT_MEM_ACC_FUNC_19(v_, n_, ...) \
108
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
109
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_18(v_, __VA_ARGS__))
110
#define COMMS_VARIANT_MEM_ACC_FUNC_20(v_, n_, ...) \
111
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
112
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_19(v_, __VA_ARGS__))
113
#define COMMS_VARIANT_MEM_ACC_FUNC_21(v_, n_, ...) \
114
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
115
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_20(v_, __VA_ARGS__))
116
#define COMMS_VARIANT_MEM_ACC_FUNC_22(v_, n_, ...) \
117
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
118
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_21(v_, __VA_ARGS__))
119
#define COMMS_VARIANT_MEM_ACC_FUNC_23(v_, n_, ...) \
120
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
121
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_22(v_, __VA_ARGS__))
122
#define COMMS_VARIANT_MEM_ACC_FUNC_24(v_, n_, ...) \
123
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
124
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_23(v_, __VA_ARGS__))
125
#define COMMS_VARIANT_MEM_ACC_FUNC_25(v_, n_, ...) \
126
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
127
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_24(v_, __VA_ARGS__))
128
#define COMMS_VARIANT_MEM_ACC_FUNC_26(v_, n_, ...) \
129
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
130
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_25(v_, __VA_ARGS__))
131
#define COMMS_VARIANT_MEM_ACC_FUNC_27(v_, n_, ...) \
132
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
133
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_26(v_, __VA_ARGS__))
134
#define COMMS_VARIANT_MEM_ACC_FUNC_28(v_, n_, ...) \
135
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
136
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_27(v_, __VA_ARGS__))
137
#define COMMS_VARIANT_MEM_ACC_FUNC_29(v_, n_, ...) \
138
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
139
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_28(v_, __VA_ARGS__))
140
#define COMMS_VARIANT_MEM_ACC_FUNC_30(v_, n_, ...) \
141
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
142
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_29(v_, __VA_ARGS__))
143
#define COMMS_VARIANT_MEM_ACC_FUNC_31(v_, n_, ...) \
144
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
145
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_30(v_, __VA_ARGS__))
146
#define COMMS_VARIANT_MEM_ACC_FUNC_32(v_, n_, ...) \
147
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
148
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_31(v_, __VA_ARGS__))
149
#define COMMS_VARIANT_MEM_ACC_FUNC_33(v_, n_, ...) \
150
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
151
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_32(v_, __VA_ARGS__))
152
#define COMMS_VARIANT_MEM_ACC_FUNC_34(v_, n_, ...) \
153
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
154
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_33(v_, __VA_ARGS__))
155
#define COMMS_VARIANT_MEM_ACC_FUNC_35(v_, n_, ...) \
156
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
157
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_34(v_, __VA_ARGS__))
158
#define COMMS_VARIANT_MEM_ACC_FUNC_36(v_, n_, ...) \
159
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
160
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_35(v_, __VA_ARGS__))
161
#define COMMS_VARIANT_MEM_ACC_FUNC_37(v_, n_, ...) \
162
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
163
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_36(v_, __VA_ARGS__))
164
#define COMMS_VARIANT_MEM_ACC_FUNC_38(v_, n_, ...) \
165
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
166
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_37(v_, __VA_ARGS__))
167
#define COMMS_VARIANT_MEM_ACC_FUNC_39(v_, n_, ...) \
168
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
169
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_38(v_, __VA_ARGS__))
170
#define COMMS_VARIANT_MEM_ACC_FUNC_40(v_, n_, ...) \
171
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
172
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_39(v_, __VA_ARGS__))
173
#define COMMS_VARIANT_MEM_ACC_FUNC_41(v_, n_, ...) \
174
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
175
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_40(v_, __VA_ARGS__))
176
#define COMMS_VARIANT_MEM_ACC_FUNC_42(v_, n_, ...) \
177
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
178
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_41(v_, __VA_ARGS__))
179
#define COMMS_VARIANT_MEM_ACC_FUNC_43(v_, n_, ...) \
180
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
181
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_42(v_, __VA_ARGS__))
182
#define COMMS_VARIANT_MEM_ACC_FUNC_44(v_, n_, ...) \
183
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
184
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_43(v_, __VA_ARGS__))
185
#define COMMS_VARIANT_MEM_ACC_FUNC_45(v_, n_, ...) \
186
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
187
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_44(v_, __VA_ARGS__))
188
#define COMMS_VARIANT_MEM_ACC_FUNC_46(v_, n_, ...) \
189
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
190
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_45(v_, __VA_ARGS__))
191
#define COMMS_VARIANT_MEM_ACC_FUNC_47(v_, n_, ...) \
192
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
193
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_46(v_, __VA_ARGS__))
194
#define COMMS_VARIANT_MEM_ACC_FUNC_48(v_, n_, ...) \
195
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
196
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_47(v_, __VA_ARGS__))
197
#define COMMS_VARIANT_MEM_ACC_FUNC_49(v_, n_, ...) \
198
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
199
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_48(v_, __VA_ARGS__))
200
#define COMMS_VARIANT_MEM_ACC_FUNC_50(v_, n_, ...) \
201
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
202
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_49(v_, __VA_ARGS__))
203
#define COMMS_VARIANT_MEM_ACC_FUNC_51(v_, n_, ...) \
204
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
205
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_50(v_, __VA_ARGS__))
206
#define COMMS_VARIANT_MEM_ACC_FUNC_52(v_, n_, ...) \
207
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
208
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_51(v_, __VA_ARGS__))
209
#define COMMS_VARIANT_MEM_ACC_FUNC_53(v_, n_, ...) \
210
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
211
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_52(v_, __VA_ARGS__))
212
#define COMMS_VARIANT_MEM_ACC_FUNC_54(v_, n_, ...) \
213
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
214
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_53(v_, __VA_ARGS__))
215
#define COMMS_VARIANT_MEM_ACC_FUNC_55(v_, n_, ...) \
216
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
217
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_54(v_, __VA_ARGS__))
218
#define COMMS_VARIANT_MEM_ACC_FUNC_56(v_, n_, ...) \
219
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
220
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_55(v_, __VA_ARGS__))
221
#define COMMS_VARIANT_MEM_ACC_FUNC_57(v_, n_, ...) \
222
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
223
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_56(v_, __VA_ARGS__))
224
#define COMMS_VARIANT_MEM_ACC_FUNC_58(v_, n_, ...) \
225
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
226
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_57(v_, __VA_ARGS__))
227
#define COMMS_VARIANT_MEM_ACC_FUNC_59(v_, n_, ...) \
228
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
229
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_58(v_, __VA_ARGS__))
230
#define COMMS_VARIANT_MEM_ACC_FUNC_60(v_, n_, ...) \
231
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
232
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_59(v_, __VA_ARGS__))
233
#define COMMS_VARIANT_MEM_ACC_FUNC_61(v_, n_, ...) \
234
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
235
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_60(v_, __VA_ARGS__))
236
#define COMMS_VARIANT_MEM_ACC_FUNC_62(v_, n_, ...) \
237
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
238
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_61(v_, __VA_ARGS__))
239
#define COMMS_VARIANT_MEM_ACC_FUNC_63(v_, n_, ...) \
240
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
241
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_62(v_, __VA_ARGS__))
242
#define COMMS_VARIANT_MEM_ACC_FUNC_64(v_, n_, ...) \
243
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
244
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_63(v_, __VA_ARGS__))
245
#define COMMS_VARIANT_MEM_ACC_FUNC_65(v_, n_, ...) \
246
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
247
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_64(v_, __VA_ARGS__))
248
#define COMMS_VARIANT_MEM_ACC_FUNC_66(v_, n_, ...) \
249
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
250
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_65(v_, __VA_ARGS__))
251
#define COMMS_VARIANT_MEM_ACC_FUNC_67(v_, n_, ...) \
252
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
253
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_66(v_, __VA_ARGS__))
254
#define COMMS_VARIANT_MEM_ACC_FUNC_68(v_, n_, ...) \
255
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
256
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_67(v_, __VA_ARGS__))
257
#define COMMS_VARIANT_MEM_ACC_FUNC_69(v_, n_, ...) \
258
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
259
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_68(v_, __VA_ARGS__))
260
#define COMMS_VARIANT_MEM_ACC_FUNC_70(v_, n_, ...) \
261
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
262
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_69(v_, __VA_ARGS__))
263
#define COMMS_VARIANT_MEM_ACC_FUNC_71(v_, n_, ...) \
264
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
265
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_70(v_, __VA_ARGS__))
266
#define COMMS_VARIANT_MEM_ACC_FUNC_72(v_, n_, ...) \
267
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
268
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_71(v_, __VA_ARGS__))
269
#define COMMS_VARIANT_MEM_ACC_FUNC_73(v_, n_, ...) \
270
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
271
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_72(v_, __VA_ARGS__))
272
#define COMMS_VARIANT_MEM_ACC_FUNC_74(v_, n_, ...) \
273
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
274
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_73(v_, __VA_ARGS__))
275
#define COMMS_VARIANT_MEM_ACC_FUNC_75(v_, n_, ...) \
276
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
277
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_74(v_, __VA_ARGS__))
278
#define COMMS_VARIANT_MEM_ACC_FUNC_76(v_, n_, ...) \
279
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
280
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_75(v_, __VA_ARGS__))
281
#define COMMS_VARIANT_MEM_ACC_FUNC_77(v_, n_, ...) \
282
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
283
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_76(v_, __VA_ARGS__))
284
#define COMMS_VARIANT_MEM_ACC_FUNC_78(v_, n_, ...) \
285
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
286
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_77(v_, __VA_ARGS__))
287
#define COMMS_VARIANT_MEM_ACC_FUNC_79(v_, n_, ...) \
288
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
289
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_78(v_, __VA_ARGS__))
290
#define COMMS_VARIANT_MEM_ACC_FUNC_80(v_, n_, ...) \
291
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
292
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_79(v_, __VA_ARGS__))
293
#define COMMS_VARIANT_MEM_ACC_FUNC_81(v_, n_, ...) \
294
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
295
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_80(v_, __VA_ARGS__))
296
#define COMMS_VARIANT_MEM_ACC_FUNC_82(v_, n_, ...) \
297
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
298
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_81(v_, __VA_ARGS__))
299
#define COMMS_VARIANT_MEM_ACC_FUNC_83(v_, n_, ...) \
300
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
301
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_82(v_, __VA_ARGS__))
302
#define COMMS_VARIANT_MEM_ACC_FUNC_84(v_, n_, ...) \
303
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
304
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_83(v_, __VA_ARGS__))
305
#define COMMS_VARIANT_MEM_ACC_FUNC_85(v_, n_, ...) \
306
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
307
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_84(v_, __VA_ARGS__))
308
#define COMMS_VARIANT_MEM_ACC_FUNC_86(v_, n_, ...) \
309
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
310
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_85(v_, __VA_ARGS__))
311
#define COMMS_VARIANT_MEM_ACC_FUNC_87(v_, n_, ...) \
312
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
313
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_86(v_, __VA_ARGS__))
314
#define COMMS_VARIANT_MEM_ACC_FUNC_88(v_, n_, ...) \
315
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
316
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_87(v_, __VA_ARGS__))
317
#define COMMS_VARIANT_MEM_ACC_FUNC_89(v_, n_, ...) \
318
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
319
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_88(v_, __VA_ARGS__))
320
#define COMMS_VARIANT_MEM_ACC_FUNC_90(v_, n_, ...) \
321
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
322
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_89(v_, __VA_ARGS__))
323
#define COMMS_VARIANT_MEM_ACC_FUNC_91(v_, n_, ...) \
324
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
325
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_90(v_, __VA_ARGS__))
326
#define COMMS_VARIANT_MEM_ACC_FUNC_92(v_, n_, ...) \
327
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
328
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_91(v_, __VA_ARGS__))
329
#define COMMS_VARIANT_MEM_ACC_FUNC_93(v_, n_, ...) \
330
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
331
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_92(v_, __VA_ARGS__))
332
#define COMMS_VARIANT_MEM_ACC_FUNC_94(v_, n_, ...) \
333
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
334
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_93(v_, __VA_ARGS__))
335
#define COMMS_VARIANT_MEM_ACC_FUNC_95(v_, n_, ...) \
336
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
337
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_94(v_, __VA_ARGS__))
338
#define COMMS_VARIANT_MEM_ACC_FUNC_96(v_, n_, ...) \
339
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
340
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_95(v_, __VA_ARGS__))
341
#define COMMS_VARIANT_MEM_ACC_FUNC_97(v_, n_, ...) \
342
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
343
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_96(v_, __VA_ARGS__))
344
#define COMMS_VARIANT_MEM_ACC_FUNC_98(v_, n_, ...) \
345
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
346
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_97(v_, __VA_ARGS__))
347
#define COMMS_VARIANT_MEM_ACC_FUNC_99(v_, n_, ...) \
348
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
349
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_98(v_, __VA_ARGS__))
350
#define COMMS_VARIANT_MEM_ACC_FUNC_100(v_, n_, ...) \
351
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
352
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_99(v_, __VA_ARGS__))
353
#define COMMS_VARIANT_MEM_ACC_FUNC_101(v_, n_, ...) \
354
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
355
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_100(v_, __VA_ARGS__))
356
#define COMMS_VARIANT_MEM_ACC_FUNC_102(v_, n_, ...) \
357
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
358
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_101(v_, __VA_ARGS__))
359
#define COMMS_VARIANT_MEM_ACC_FUNC_103(v_, n_, ...) \
360
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
361
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_102(v_, __VA_ARGS__))
362
#define COMMS_VARIANT_MEM_ACC_FUNC_104(v_, n_, ...) \
363
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
364
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_103(v_, __VA_ARGS__))
365
#define COMMS_VARIANT_MEM_ACC_FUNC_105(v_, n_, ...) \
366
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
367
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_104(v_, __VA_ARGS__))
368
#define COMMS_VARIANT_MEM_ACC_FUNC_106(v_, n_, ...) \
369
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
370
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_105(v_, __VA_ARGS__))
371
#define COMMS_VARIANT_MEM_ACC_FUNC_107(v_, n_, ...) \
372
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
373
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_106(v_, __VA_ARGS__))
374
#define COMMS_VARIANT_MEM_ACC_FUNC_108(v_, n_, ...) \
375
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
376
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_107(v_, __VA_ARGS__))
377
#define COMMS_VARIANT_MEM_ACC_FUNC_109(v_, n_, ...) \
378
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
379
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_108(v_, __VA_ARGS__))
380
#define COMMS_VARIANT_MEM_ACC_FUNC_110(v_, n_, ...) \
381
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
382
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_109(v_, __VA_ARGS__))
383
#define COMMS_VARIANT_MEM_ACC_FUNC_111(v_, n_, ...) \
384
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
385
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_110(v_, __VA_ARGS__))
386
#define COMMS_VARIANT_MEM_ACC_FUNC_112(v_, n_, ...) \
387
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
388
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_111(v_, __VA_ARGS__))
389
#define COMMS_VARIANT_MEM_ACC_FUNC_113(v_, n_, ...) \
390
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
391
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_112(v_, __VA_ARGS__))
392
#define COMMS_VARIANT_MEM_ACC_FUNC_114(v_, n_, ...) \
393
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
394
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_113(v_, __VA_ARGS__))
395
#define COMMS_VARIANT_MEM_ACC_FUNC_115(v_, n_, ...) \
396
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
397
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_114(v_, __VA_ARGS__))
398
#define COMMS_VARIANT_MEM_ACC_FUNC_116(v_, n_, ...) \
399
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
400
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_115(v_, __VA_ARGS__))
401
#define COMMS_VARIANT_MEM_ACC_FUNC_117(v_, n_, ...) \
402
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
403
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_116(v_, __VA_ARGS__))
404
#define COMMS_VARIANT_MEM_ACC_FUNC_118(v_, n_, ...) \
405
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
406
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_117(v_, __VA_ARGS__))
407
#define COMMS_VARIANT_MEM_ACC_FUNC_119(v_, n_, ...) \
408
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
409
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_118(v_, __VA_ARGS__))
410
#define COMMS_VARIANT_MEM_ACC_FUNC_120(v_, n_, ...) \
411
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
412
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_119(v_, __VA_ARGS__))
413
#define COMMS_VARIANT_MEM_ACC_FUNC_121(v_, n_, ...) \
414
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
415
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_120(v_, __VA_ARGS__))
416
#define COMMS_VARIANT_MEM_ACC_FUNC_122(v_, n_, ...) \
417
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
418
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_121(v_, __VA_ARGS__))
419
#define COMMS_VARIANT_MEM_ACC_FUNC_123(v_, n_, ...) \
420
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
421
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_122(v_, __VA_ARGS__))
422
#define COMMS_VARIANT_MEM_ACC_FUNC_124(v_, n_, ...) \
423
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
424
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_123(v_, __VA_ARGS__))
425
#define COMMS_VARIANT_MEM_ACC_FUNC_125(v_, n_, ...) \
426
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
427
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_124(v_, __VA_ARGS__))
428
#define COMMS_VARIANT_MEM_ACC_FUNC_126(v_, n_, ...) \
429
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
430
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_125(v_, __VA_ARGS__))
431
#define COMMS_VARIANT_MEM_ACC_FUNC_127(v_, n_, ...) \
432
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
433
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_126(v_, __VA_ARGS__))
434
#define COMMS_VARIANT_MEM_ACC_FUNC_128(v_, n_, ...) \
435
COMMS_VARIANT_MEM_ACC_FUNC(v_, n_) \
436
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_127(v_, __VA_ARGS__))
437
438
#define COMMS_CHOOSE_VARIANT_MEM_ACC_FUNC_(N, v_, ...) COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_ ## N(v_, __VA_ARGS__))
439
#define COMMS_CHOOSE_VARIANT_MEM_ACC_FUNC(N, v_, ...) COMMS_EXPAND(COMMS_CHOOSE_VARIANT_MEM_ACC_FUNC_(N, v_, __VA_ARGS__))
440
#define COMMS_DO_VARIANT_MEM_ACC_FUNC(v_, ...) \
441
COMMS_EXPAND(COMMS_CHOOSE_VARIANT_MEM_ACC_FUNC(COMMS_NUM_ARGS(__VA_ARGS__), v_, __VA_ARGS__))
442
443
// --------------------------------------------
444
445
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
446
template <typename... TArgs> \
447
typename std::tuple_element<COMMS_CONCATENATE(FieldIdx_, n_), Members>::type& COMMS_CONCATENATE(initField_, n_)(TArgs&&... args) {\
448
return initField<COMMS_CONCATENATE(FieldIdx_, n_)>(std::forward<TArgs>(args)...); \
449
} \
450
typename std::tuple_element<COMMS_CONCATENATE(FieldIdx_, n_), Members>::type& COMMS_CONCATENATE(accessField_, n_)() { \
451
return accessField<COMMS_CONCATENATE(FieldIdx_, n_)>(); \
452
} \
453
const typename std::tuple_element<COMMS_CONCATENATE(FieldIdx_, n_), Members>::type& COMMS_CONCATENATE(accessField_, n_)() const { \
454
return accessField<COMMS_CONCATENATE(FieldIdx_, n_)>(); \
455
}
456
457
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_1(n_) COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_)
458
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_2(n_, ...) \
459
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
460
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_1(__VA_ARGS__))
461
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_3(n_, ...) \
462
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
463
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_2(__VA_ARGS__))
464
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_4(n_, ...) \
465
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
466
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_3(__VA_ARGS__))
467
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_5(n_, ...) \
468
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
469
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_4(__VA_ARGS__))
470
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_6(n_, ...) \
471
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
472
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_5(__VA_ARGS__))
473
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_7(n_, ...) \
474
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
475
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_6(__VA_ARGS__))
476
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_8(n_, ...) \
477
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
478
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_7(__VA_ARGS__))
479
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_9(n_, ...) \
480
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
481
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_8(__VA_ARGS__))
482
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_10(n_, ...) \
483
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
484
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_9(__VA_ARGS__))
485
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_11(n_, ...) \
486
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
487
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_10(__VA_ARGS__))
488
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_12(n_, ...) \
489
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
490
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_11(__VA_ARGS__))
491
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_13(n_, ...) \
492
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
493
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_12(__VA_ARGS__))
494
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_14(n_, ...) \
495
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
496
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_13(__VA_ARGS__))
497
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_15(n_, ...) \
498
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
499
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_14(__VA_ARGS__))
500
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_16(n_, ...) \
501
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
502
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_15(__VA_ARGS__))
503
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_17(n_, ...) \
504
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
505
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_16(__VA_ARGS__))
506
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_18(n_, ...) \
507
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
508
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_17(__VA_ARGS__))
509
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_19(n_, ...) \
510
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
511
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_18(__VA_ARGS__))
512
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_20(n_, ...) \
513
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
514
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_19(__VA_ARGS__))
515
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_21(n_, ...) \
516
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
517
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_20(__VA_ARGS__))
518
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_22(n_, ...) \
519
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
520
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_21(__VA_ARGS__))
521
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_23(n_, ...) \
522
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
523
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_22(__VA_ARGS__))
524
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_24(n_, ...) \
525
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
526
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_23(__VA_ARGS__))
527
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_25(n_, ...) \
528
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
529
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_24(__VA_ARGS__))
530
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_26(n_, ...) \
531
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
532
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_25(__VA_ARGS__))
533
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_27(n_, ...) \
534
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
535
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_26(__VA_ARGS__))
536
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_28(n_, ...) \
537
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
538
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_27(__VA_ARGS__))
539
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_29(n_, ...) \
540
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
541
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_28(__VA_ARGS__))
542
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_30(n_, ...) \
543
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
544
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_29(__VA_ARGS__))
545
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_31(n_, ...) \
546
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
547
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_30(__VA_ARGS__))
548
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_32(n_, ...) \
549
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
550
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_31(__VA_ARGS__))
551
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_33(n_, ...) \
552
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
553
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_32(__VA_ARGS__))
554
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_34(n_, ...) \
555
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
556
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_33(__VA_ARGS__))
557
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_35(n_, ...) \
558
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
559
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_34(__VA_ARGS__))
560
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_36(n_, ...) \
561
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
562
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_35(__VA_ARGS__))
563
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_37(n_, ...) \
564
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
565
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_36(__VA_ARGS__))
566
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_38(n_, ...) \
567
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
568
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_37(__VA_ARGS__))
569
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_39(n_, ...) \
570
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
571
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_38(__VA_ARGS__))
572
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_40(n_, ...) \
573
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
574
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_39(__VA_ARGS__))
575
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_41(n_, ...) \
576
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
577
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_40(__VA_ARGS__))
578
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_42(n_, ...) \
579
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
580
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_41(__VA_ARGS__))
581
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_43(n_, ...) \
582
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
583
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_42(__VA_ARGS__))
584
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_44(n_, ...) \
585
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
586
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_43(__VA_ARGS__))
587
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_45(n_, ...) \
588
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
589
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_44(__VA_ARGS__))
590
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_46(n_, ...) \
591
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
592
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_45(__VA_ARGS__))
593
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_47(n_, ...) \
594
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
595
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_46(__VA_ARGS__))
596
#define COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_48(n_, ...) \
597
COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(n_) \
598
COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_47(__VA_ARGS__))
599
600
#define COMMS_CHOOSE_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_(N, ...) COMMS_EXPAND(COMMS_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_ ## N(__VA_ARGS__))
601
#define COMMS_CHOOSE_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(N, ...) COMMS_EXPAND(COMMS_CHOOSE_VARIANT_MEM_ACC_FUNC_NOTEMPLATE_(N, __VA_ARGS__))
602
#define COMMS_DO_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(...) \
603
COMMS_EXPAND(COMMS_CHOOSE_VARIANT_MEM_ACC_FUNC_NOTEMPLATE(COMMS_NUM_ARGS(__VA_ARGS__), __VA_ARGS__))
604
605
606
607
608
609
610
611
612
613
614
Generated by
1.9.8