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