Zephyr API Documentation 4.0.0-rc3
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
util_loops.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2021, Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
14#ifndef ZEPHYR_INCLUDE_SYS_UTIL_LOOPS_H_
15#define ZEPHYR_INCLUDE_SYS_UTIL_LOOPS_H_
16
17#define Z_FOR_LOOP_GET_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \
18 _12, _13, _14, _15, _16, _17, _18, _19, _20, \
19 _21, _22, _23, _24, _25, _26, _27, _28, _29, \
20 _30, _31, _32, _33, _34, _35, _36, _37, _38, \
21 _39, _40, _41, _42, _43, _44, _45, _46, _47, \
22 _48, _49, _50, _51, _52, _53, _54, _55, _56, \
23 _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N
24
25#define Z_FOR_LOOP_0(z_call, sep, fixed_arg0, fixed_arg1, ...)
26
27#define Z_FOR_LOOP_1(z_call, sep, fixed_arg0, fixed_arg1, x) \
28 z_call(0, x, fixed_arg0, fixed_arg1)
29
30#define Z_FOR_LOOP_2(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
31 Z_FOR_LOOP_1(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
32 __DEBRACKET sep \
33 z_call(1, x, fixed_arg0, fixed_arg1)
34
35#define Z_FOR_LOOP_3(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
36 Z_FOR_LOOP_2(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
37 __DEBRACKET sep \
38 z_call(2, x, fixed_arg0, fixed_arg1)
39
40#define Z_FOR_LOOP_4(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
41 Z_FOR_LOOP_3(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
42 __DEBRACKET sep \
43 z_call(3, x, fixed_arg0, fixed_arg1)
44
45#define Z_FOR_LOOP_5(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
46 Z_FOR_LOOP_4(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
47 __DEBRACKET sep \
48 z_call(4, x, fixed_arg0, fixed_arg1)
49
50#define Z_FOR_LOOP_6(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
51 Z_FOR_LOOP_5(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
52 __DEBRACKET sep \
53 z_call(5, x, fixed_arg0, fixed_arg1)
54
55#define Z_FOR_LOOP_7(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
56 Z_FOR_LOOP_6(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
57 __DEBRACKET sep \
58 z_call(6, x, fixed_arg0, fixed_arg1)
59
60#define Z_FOR_LOOP_8(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
61 Z_FOR_LOOP_7(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
62 __DEBRACKET sep \
63 z_call(7, x, fixed_arg0, fixed_arg1)
64
65#define Z_FOR_LOOP_9(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
66 Z_FOR_LOOP_8(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
67 __DEBRACKET sep \
68 z_call(8, x, fixed_arg0, fixed_arg1)
69
70#define Z_FOR_LOOP_10(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
71 Z_FOR_LOOP_9(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
72 __DEBRACKET sep \
73 z_call(9, x, fixed_arg0, fixed_arg1)
74
75#define Z_FOR_LOOP_11(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
76 Z_FOR_LOOP_10(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
77 __DEBRACKET sep \
78 z_call(10, x, fixed_arg0, fixed_arg1)
79
80#define Z_FOR_LOOP_12(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
81 Z_FOR_LOOP_11(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
82 __DEBRACKET sep \
83 z_call(11, x, fixed_arg0, fixed_arg1)
84
85#define Z_FOR_LOOP_13(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
86 Z_FOR_LOOP_12(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
87 __DEBRACKET sep \
88 z_call(12, x, fixed_arg0, fixed_arg1)
89
90#define Z_FOR_LOOP_14(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
91 Z_FOR_LOOP_13(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
92 __DEBRACKET sep \
93 z_call(13, x, fixed_arg0, fixed_arg1)
94
95#define Z_FOR_LOOP_15(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
96 Z_FOR_LOOP_14(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
97 __DEBRACKET sep \
98 z_call(14, x, fixed_arg0, fixed_arg1)
99
100#define Z_FOR_LOOP_16(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
101 Z_FOR_LOOP_15(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
102 __DEBRACKET sep \
103 z_call(15, x, fixed_arg0, fixed_arg1)
104
105#define Z_FOR_LOOP_17(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
106 Z_FOR_LOOP_16(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
107 __DEBRACKET sep \
108 z_call(16, x, fixed_arg0, fixed_arg1)
109
110#define Z_FOR_LOOP_18(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
111 Z_FOR_LOOP_17(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
112 __DEBRACKET sep \
113 z_call(17, x, fixed_arg0, fixed_arg1)
114
115#define Z_FOR_LOOP_19(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
116 Z_FOR_LOOP_18(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
117 __DEBRACKET sep \
118 z_call(18, x, fixed_arg0, fixed_arg1)
119
120#define Z_FOR_LOOP_20(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
121 Z_FOR_LOOP_19(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
122 __DEBRACKET sep \
123 z_call(19, x, fixed_arg0, fixed_arg1)
124
125#define Z_FOR_LOOP_21(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
126 Z_FOR_LOOP_20(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
127 __DEBRACKET sep \
128 z_call(20, x, fixed_arg0, fixed_arg1)
129
130#define Z_FOR_LOOP_22(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
131 Z_FOR_LOOP_21(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
132 __DEBRACKET sep \
133 z_call(21, x, fixed_arg0, fixed_arg1)
134
135#define Z_FOR_LOOP_23(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
136 Z_FOR_LOOP_22(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
137 __DEBRACKET sep \
138 z_call(22, x, fixed_arg0, fixed_arg1)
139
140#define Z_FOR_LOOP_24(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
141 Z_FOR_LOOP_23(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
142 __DEBRACKET sep \
143 z_call(23, x, fixed_arg0, fixed_arg1)
144
145#define Z_FOR_LOOP_25(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
146 Z_FOR_LOOP_24(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
147 __DEBRACKET sep \
148 z_call(24, x, fixed_arg0, fixed_arg1)
149
150#define Z_FOR_LOOP_26(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
151 Z_FOR_LOOP_25(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
152 __DEBRACKET sep \
153 z_call(25, x, fixed_arg0, fixed_arg1)
154
155#define Z_FOR_LOOP_27(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
156 Z_FOR_LOOP_26(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
157 __DEBRACKET sep \
158 z_call(26, x, fixed_arg0, fixed_arg1)
159
160#define Z_FOR_LOOP_28(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
161 Z_FOR_LOOP_27(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
162 __DEBRACKET sep \
163 z_call(27, x, fixed_arg0, fixed_arg1)
164
165#define Z_FOR_LOOP_29(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
166 Z_FOR_LOOP_28(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
167 __DEBRACKET sep \
168 z_call(28, x, fixed_arg0, fixed_arg1)
169
170#define Z_FOR_LOOP_30(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
171 Z_FOR_LOOP_29(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
172 __DEBRACKET sep \
173 z_call(29, x, fixed_arg0, fixed_arg1)
174
175#define Z_FOR_LOOP_31(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
176 Z_FOR_LOOP_30(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
177 __DEBRACKET sep \
178 z_call(30, x, fixed_arg0, fixed_arg1)
179
180#define Z_FOR_LOOP_32(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
181 Z_FOR_LOOP_31(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
182 __DEBRACKET sep \
183 z_call(31, x, fixed_arg0, fixed_arg1)
184
185#define Z_FOR_LOOP_33(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
186 Z_FOR_LOOP_32(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
187 __DEBRACKET sep \
188 z_call(32, x, fixed_arg0, fixed_arg1)
189
190#define Z_FOR_LOOP_34(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
191 Z_FOR_LOOP_33(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
192 __DEBRACKET sep \
193 z_call(33, x, fixed_arg0, fixed_arg1)
194
195#define Z_FOR_LOOP_35(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
196 Z_FOR_LOOP_34(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
197 __DEBRACKET sep \
198 z_call(34, x, fixed_arg0, fixed_arg1)
199
200#define Z_FOR_LOOP_36(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
201 Z_FOR_LOOP_35(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
202 __DEBRACKET sep \
203 z_call(35, x, fixed_arg0, fixed_arg1)
204
205#define Z_FOR_LOOP_37(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
206 Z_FOR_LOOP_36(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
207 __DEBRACKET sep \
208 z_call(36, x, fixed_arg0, fixed_arg1)
209
210#define Z_FOR_LOOP_38(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
211 Z_FOR_LOOP_37(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
212 __DEBRACKET sep \
213 z_call(37, x, fixed_arg0, fixed_arg1)
214
215#define Z_FOR_LOOP_39(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
216 Z_FOR_LOOP_38(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
217 __DEBRACKET sep \
218 z_call(38, x, fixed_arg0, fixed_arg1)
219
220#define Z_FOR_LOOP_40(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
221 Z_FOR_LOOP_39(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
222 __DEBRACKET sep \
223 z_call(39, x, fixed_arg0, fixed_arg1)
224
225#define Z_FOR_LOOP_41(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
226 Z_FOR_LOOP_40(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
227 __DEBRACKET sep \
228 z_call(40, x, fixed_arg0, fixed_arg1)
229
230#define Z_FOR_LOOP_42(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
231 Z_FOR_LOOP_41(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
232 __DEBRACKET sep \
233 z_call(41, x, fixed_arg0, fixed_arg1)
234
235#define Z_FOR_LOOP_43(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
236 Z_FOR_LOOP_42(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
237 __DEBRACKET sep \
238 z_call(42, x, fixed_arg0, fixed_arg1)
239
240#define Z_FOR_LOOP_44(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
241 Z_FOR_LOOP_43(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
242 __DEBRACKET sep \
243 z_call(43, x, fixed_arg0, fixed_arg1)
244
245#define Z_FOR_LOOP_45(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
246 Z_FOR_LOOP_44(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
247 __DEBRACKET sep \
248 z_call(44, x, fixed_arg0, fixed_arg1)
249
250#define Z_FOR_LOOP_46(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
251 Z_FOR_LOOP_45(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
252 __DEBRACKET sep \
253 z_call(45, x, fixed_arg0, fixed_arg1)
254
255#define Z_FOR_LOOP_47(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
256 Z_FOR_LOOP_46(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
257 __DEBRACKET sep \
258 z_call(46, x, fixed_arg0, fixed_arg1)
259
260#define Z_FOR_LOOP_48(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
261 Z_FOR_LOOP_47(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
262 __DEBRACKET sep \
263 z_call(47, x, fixed_arg0, fixed_arg1)
264
265#define Z_FOR_LOOP_49(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
266 Z_FOR_LOOP_48(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
267 __DEBRACKET sep \
268 z_call(48, x, fixed_arg0, fixed_arg1)
269
270#define Z_FOR_LOOP_50(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
271 Z_FOR_LOOP_49(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
272 __DEBRACKET sep \
273 z_call(49, x, fixed_arg0, fixed_arg1)
274
275#define Z_FOR_LOOP_51(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
276 Z_FOR_LOOP_50(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
277 __DEBRACKET sep \
278 z_call(50, x, fixed_arg0, fixed_arg1)
279
280#define Z_FOR_LOOP_52(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
281 Z_FOR_LOOP_51(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
282 __DEBRACKET sep \
283 z_call(51, x, fixed_arg0, fixed_arg1)
284
285#define Z_FOR_LOOP_53(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
286 Z_FOR_LOOP_52(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
287 __DEBRACKET sep \
288 z_call(52, x, fixed_arg0, fixed_arg1)
289
290#define Z_FOR_LOOP_54(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
291 Z_FOR_LOOP_53(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
292 __DEBRACKET sep \
293 z_call(53, x, fixed_arg0, fixed_arg1)
294
295#define Z_FOR_LOOP_55(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
296 Z_FOR_LOOP_54(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
297 __DEBRACKET sep \
298 z_call(54, x, fixed_arg0, fixed_arg1)
299
300#define Z_FOR_LOOP_56(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
301 Z_FOR_LOOP_55(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
302 __DEBRACKET sep \
303 z_call(55, x, fixed_arg0, fixed_arg1)
304
305#define Z_FOR_LOOP_57(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
306 Z_FOR_LOOP_56(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
307 __DEBRACKET sep \
308 z_call(56, x, fixed_arg0, fixed_arg1)
309
310#define Z_FOR_LOOP_58(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
311 Z_FOR_LOOP_57(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
312 __DEBRACKET sep \
313 z_call(57, x, fixed_arg0, fixed_arg1)
314
315#define Z_FOR_LOOP_59(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
316 Z_FOR_LOOP_58(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
317 __DEBRACKET sep \
318 z_call(58, x, fixed_arg0, fixed_arg1)
319
320#define Z_FOR_LOOP_60(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
321 Z_FOR_LOOP_59(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
322 __DEBRACKET sep \
323 z_call(59, x, fixed_arg0, fixed_arg1)
324
325#define Z_FOR_LOOP_61(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
326 Z_FOR_LOOP_60(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
327 __DEBRACKET sep \
328 z_call(60, x, fixed_arg0, fixed_arg1)
329
330#define Z_FOR_LOOP_62(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
331 Z_FOR_LOOP_61(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
332 __DEBRACKET sep \
333 z_call(61, x, fixed_arg0, fixed_arg1)
334
335#define Z_FOR_LOOP_63(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
336 Z_FOR_LOOP_62(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
337 __DEBRACKET sep \
338 z_call(62, x, fixed_arg0, fixed_arg1)
339
340#define Z_FOR_LOOP_64(z_call, sep, fixed_arg0, fixed_arg1, x, ...) \
341 Z_FOR_LOOP_63(z_call, sep, fixed_arg0, fixed_arg1, ##__VA_ARGS__) \
342 __DEBRACKET sep \
343 z_call(63, x, fixed_arg0, fixed_arg1)
344
345#define Z_FOR_EACH_ENGINE(x, sep, fixed_arg0, fixed_arg1, ...) \
346 Z_FOR_LOOP_GET_ARG(__VA_ARGS__, \
347 Z_FOR_LOOP_64, \
348 Z_FOR_LOOP_63, \
349 Z_FOR_LOOP_62, \
350 Z_FOR_LOOP_61, \
351 Z_FOR_LOOP_60, \
352 Z_FOR_LOOP_59, \
353 Z_FOR_LOOP_58, \
354 Z_FOR_LOOP_57, \
355 Z_FOR_LOOP_56, \
356 Z_FOR_LOOP_55, \
357 Z_FOR_LOOP_54, \
358 Z_FOR_LOOP_53, \
359 Z_FOR_LOOP_52, \
360 Z_FOR_LOOP_51, \
361 Z_FOR_LOOP_50, \
362 Z_FOR_LOOP_49, \
363 Z_FOR_LOOP_48, \
364 Z_FOR_LOOP_47, \
365 Z_FOR_LOOP_46, \
366 Z_FOR_LOOP_45, \
367 Z_FOR_LOOP_44, \
368 Z_FOR_LOOP_43, \
369 Z_FOR_LOOP_42, \
370 Z_FOR_LOOP_41, \
371 Z_FOR_LOOP_40, \
372 Z_FOR_LOOP_39, \
373 Z_FOR_LOOP_38, \
374 Z_FOR_LOOP_37, \
375 Z_FOR_LOOP_36, \
376 Z_FOR_LOOP_35, \
377 Z_FOR_LOOP_34, \
378 Z_FOR_LOOP_33, \
379 Z_FOR_LOOP_32, \
380 Z_FOR_LOOP_31, \
381 Z_FOR_LOOP_30, \
382 Z_FOR_LOOP_29, \
383 Z_FOR_LOOP_28, \
384 Z_FOR_LOOP_27, \
385 Z_FOR_LOOP_26, \
386 Z_FOR_LOOP_25, \
387 Z_FOR_LOOP_24, \
388 Z_FOR_LOOP_23, \
389 Z_FOR_LOOP_22, \
390 Z_FOR_LOOP_21, \
391 Z_FOR_LOOP_20, \
392 Z_FOR_LOOP_19, \
393 Z_FOR_LOOP_18, \
394 Z_FOR_LOOP_17, \
395 Z_FOR_LOOP_16, \
396 Z_FOR_LOOP_15, \
397 Z_FOR_LOOP_14, \
398 Z_FOR_LOOP_13, \
399 Z_FOR_LOOP_12, \
400 Z_FOR_LOOP_11, \
401 Z_FOR_LOOP_10, \
402 Z_FOR_LOOP_9, \
403 Z_FOR_LOOP_8, \
404 Z_FOR_LOOP_7, \
405 Z_FOR_LOOP_6, \
406 Z_FOR_LOOP_5, \
407 Z_FOR_LOOP_4, \
408 Z_FOR_LOOP_3, \
409 Z_FOR_LOOP_2, \
410 Z_FOR_LOOP_1, \
411 Z_FOR_LOOP_0)(x, sep, fixed_arg0, fixed_arg1, __VA_ARGS__)
412
413#define Z_GET_ARG_1(_0, ...) _0
414
415#define Z_GET_ARG_2(_0, _1, ...) _1
416
417#define Z_GET_ARG_3(_0, _1, _2, ...) _2
418
419#define Z_GET_ARG_4(_0, _1, _2, _3, ...) _3
420
421#define Z_GET_ARG_5(_0, _1, _2, _3, _4, ...) _4
422
423#define Z_GET_ARG_6(_0, _1, _2, _3, _4, _5, ...) _5
424
425#define Z_GET_ARG_7(_0, _1, _2, _3, _4, _5, _6, ...) _6
426
427#define Z_GET_ARG_8(_0, _1, _2, _3, _4, _5, _6, _7, ...) _7
428
429#define Z_GET_ARG_9(_0, _1, _2, _3, _4, _5, _6, _7, _8, ...) _8
430
431#define Z_GET_ARG_10(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) _9
432
433#define Z_GET_ARG_11(_0, _1, _2, _3, _4, _5, \
434 _6, _7, _8, _9, _10, ...) _10
435
436#define Z_GET_ARG_12(_0, _1, _2, _3, _4, _5, _6,\
437 _7, _8, _9, _10, _11, ...) _11
438
439#define Z_GET_ARG_13(_0, _1, _2, _3, _4, _5, _6, \
440 _7, _8, _9, _10, _11, _12, ...) _12
441
442#define Z_GET_ARG_14(_0, _1, _2, _3, _4, _5, _6, \
443 _7, _8, _9, _10, _11, _12, _13, ...) _13
444
445#define Z_GET_ARG_15(_0, _1, _2, _3, _4, _5, _6, _7, \
446 _8, _9, _10, _11, _12, _13, _14, ...) _14
447
448#define Z_GET_ARG_16(_0, _1, _2, _3, _4, _5, _6, _7, \
449 _8, _9, _10, _11, _12, _13, _14, _15, ...) _15
450
451#define Z_GET_ARG_17(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
452 _11, _12, _13, _14, _15, _16, ...) _16
453
454#define Z_GET_ARG_18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
455 _11, _12, _13, _14, _15, _16, _17, ...) _17
456
457#define Z_GET_ARG_19(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
458 _11, _12, _13, _14, _15, _16, _17, _18, ...) _18
459
460#define Z_GET_ARG_20(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
461 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
462 ...) _19
463
464#define Z_GET_ARG_21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
465 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
466 _20, ...) _20
467
468#define Z_GET_ARG_22(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
469 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
470 _20, _21, ...) _21
471
472#define Z_GET_ARG_23(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
473 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
474 _20, _21, _22, ...) _22
475
476#define Z_GET_ARG_24(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
477 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
478 _20, _21, _22, _23, ...) _23
479
480#define Z_GET_ARG_25(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
481 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
482 _20, _21, _22, _23, _24, ...) _24
483
484#define Z_GET_ARG_26(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
485 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
486 _20, _21, _22, _23, _24, _25, ...) _25
487
488#define Z_GET_ARG_27(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
489 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
490 _20, _21, _22, _23, _24, _25, _26, ...) _26
491
492#define Z_GET_ARG_28(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
493 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
494 _20, _21, _22, _23, _24, _25, _26, _27, ...) _27
495
496#define Z_GET_ARG_29(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
497 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
498 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
499 ...) _28
500
501#define Z_GET_ARG_30(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
502 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
503 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
504 _29, ...) _29
505
506#define Z_GET_ARG_31(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
507 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
508 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
509 _29, _30, ...) _30
510
511#define Z_GET_ARG_32(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
512 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
513 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
514 _29, _30, _31, ...) _31
515
516#define Z_GET_ARG_33(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
517 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
518 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
519 _29, _30, _31, _32, ...) _32
520
521#define Z_GET_ARG_34(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
522 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
523 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
524 _29, _30, _31, _32, _33, ...) _33
525
526#define Z_GET_ARG_35(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
527 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
528 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
529 _29, _30, _31, _32, _33, _34, ...) _34
530
531#define Z_GET_ARG_36(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
532 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
533 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
534 _29, _30, _31, _32, _33, _34, _35, ...) _35
535
536#define Z_GET_ARG_37(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
537 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
538 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
539 _29, _30, _31, _32, _33, _34, _35, _36, ...) _36
540
541#define Z_GET_ARG_38(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
542 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
543 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
544 _29, _30, _31, _32, _33, _34, _35, _36, _37, ...) _37
545
546#define Z_GET_ARG_39(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
547 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
548 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
549 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
550 _38, ...) _38
551
552#define Z_GET_ARG_40(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
553 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
554 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
555 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
556 _38, _39, ...) _39
557
558#define Z_GET_ARG_41(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
559 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
560 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
561 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
562 _38, _39, _40, ...) _40
563
564#define Z_GET_ARG_42(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
565 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
566 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
567 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
568 _38, _39, _40, _41, ...) _41
569
570#define Z_GET_ARG_43(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
571 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
572 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
573 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
574 _38, _39, _40, _41, _42, ...) _42
575
576#define Z_GET_ARG_44(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
577 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
578 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
579 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
580 _38, _39, _40, _41, _42, _43, ...) _43
581
582#define Z_GET_ARG_45(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
583 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
584 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
585 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
586 _38, _39, _40, _41, _42, _43, _44, ...) _44
587
588#define Z_GET_ARG_46(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
589 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
590 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
591 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
592 _38, _39, _40, _41, _42, _43, _44, _45, ...) _45
593
594#define Z_GET_ARG_47(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
595 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
596 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
597 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
598 _38, _39, _40, _41, _42, _43, _44, _45, _46, ...) _46
599
600#define Z_GET_ARG_48(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
601 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
602 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
603 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
604 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
605 _47, ...) _47
606
607#define Z_GET_ARG_49(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
608 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
609 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
610 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
611 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
612 _47, _48, ...) _48
613
614#define Z_GET_ARG_50(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
615 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
616 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
617 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
618 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
619 _47, _48, _49, ...) _49
620
621#define Z_GET_ARG_51(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
622 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
623 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
624 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
625 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
626 _47, _48, _49, _50, ...) _50
627
628#define Z_GET_ARG_52(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
629 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
630 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
631 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
632 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
633 _47, _48, _49, _50, _51, ...) _51
634
635#define Z_GET_ARG_53(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
636 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
637 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
638 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
639 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
640 _47, _48, _49, _50, _51, _52, ...) _52
641
642#define Z_GET_ARG_54(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
643 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
644 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
645 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
646 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
647 _47, _48, _49, _50, _51, _52, _53, ...) _53
648
649#define Z_GET_ARG_55(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
650 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
651 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
652 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
653 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
654 _47, _48, _49, _50, _51, _52, _53, _54, ...) _54
655
656#define Z_GET_ARG_56(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
657 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
658 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
659 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
660 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
661 _47, _48, _49, _50, _51, _52, _53, _54, _55, ...) _55
662
663#define Z_GET_ARG_57(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
664 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
665 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
666 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
667 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
668 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
669 _56, ...) _56
670
671#define Z_GET_ARG_58(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
672 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
673 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
674 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
675 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
676 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
677 _56, _57, ...) _57
678
679#define Z_GET_ARG_59(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
680 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
681 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
682 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
683 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
684 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
685 _56, _57, _58, ...) _58
686
687#define Z_GET_ARG_60(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
688 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
689 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
690 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
691 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
692 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
693 _56, _57, _58, _59, ...) _59
694
695#define Z_GET_ARG_61(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
696 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
697 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
698 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
699 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
700 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
701 _56, _57, _58, _59, _60, ...) _60
702
703#define Z_GET_ARG_62(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
704 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
705 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
706 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
707 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
708 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
709 _56, _57, _58, _59, _60, _61, ...) _61
710
711#define Z_GET_ARG_63(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
712 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
713 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
714 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
715 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
716 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
717 _56, _57, _58, _59, _60, _61, _62, ...) _62
718
719#define Z_GET_ARG_64(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
720 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
721 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
722 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
723 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
724 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
725 _56, _57, _58, _59, _60, _61, _62, _63, ...) _63
726
727#define Z_GET_ARGS_LESS_0(...) __VA_ARGS__
728
729#define Z_GET_ARGS_LESS_1(_0, ...) __VA_ARGS__
730
731#define Z_GET_ARGS_LESS_2(_0, _1, ...) __VA_ARGS__
732
733#define Z_GET_ARGS_LESS_3(_0, _1, _2, ...) __VA_ARGS__
734
735#define Z_GET_ARGS_LESS_4(_0, _1, _2, _3, ...) __VA_ARGS__
736
737#define Z_GET_ARGS_LESS_5(_0, _1, _2, _3, _4, ...) __VA_ARGS__
738
739#define Z_GET_ARGS_LESS_6(_0, _1, _2, _3, _4, _5, ...) __VA_ARGS__
740
741#define Z_GET_ARGS_LESS_7(_0, _1, _2, _3, _4, _5, _6, ...) __VA_ARGS__
742
743#define Z_GET_ARGS_LESS_8(_0, _1, _2, _3, _4, _5, \
744 _6, _7, ...) __VA_ARGS__
745
746#define Z_GET_ARGS_LESS_9(_0, _1, _2, _3, _4, _5, \
747 _6, _7, _8, ...) __VA_ARGS__
748
749#define Z_GET_ARGS_LESS_10(_0, _1, _2, _3, _4, _5, \
750 _6, _7, _8, _9, ...) __VA_ARGS__
751
752#define Z_GET_ARGS_LESS_11(_0, _1, _2, _3, _4, _5, \
753 _6, _7, _8, _9, _10, ...) __VA_ARGS__
754
755#define Z_GET_ARGS_LESS_12(_0, _1, _2, _3, _4, _5, _6,\
756 _7, _8, _9, _10, _11, ...) __VA_ARGS__
757
758#define Z_GET_ARGS_LESS_13(_0, _1, _2, _3, _4, _5, _6, \
759 _7, _8, _9, _10, _11, _12, ...) __VA_ARGS__
760
761#define Z_GET_ARGS_LESS_14(_0, _1, _2, _3, _4, _5, _6, \
762 _7, _8, _9, _10, _11, _12, _13, \
763 ...) __VA_ARGS__
764
765#define Z_GET_ARGS_LESS_15(_0, _1, _2, _3, _4, _5, _6, _7, \
766 _8, _9, _10, _11, _12, _13, _14, \
767 ...) __VA_ARGS__
768
769#define Z_GET_ARGS_LESS_16(_0, _1, _2, _3, _4, _5, _6, _7, \
770 _8, _9, _10, _11, _12, _13, _14, _15, ...) \
771 __VA_ARGS__
772
773#define Z_GET_ARGS_LESS_17(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
774 _11, _12, _13, _14, _15, _16, ...) __VA_ARGS__
775
776#define Z_GET_ARGS_LESS_18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
777 _11, _12, _13, _14, _15, _16, _17, ...) \
778 __VA_ARGS__
779
780#define Z_GET_ARGS_LESS_19(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
781 _11, _12, _13, _14, _15, _16, _17, _18, ...) \
782 __VA_ARGS__
783
784#define Z_GET_ARGS_LESS_20(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
785 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
786 ...) __VA_ARGS__
787
788#define Z_GET_ARGS_LESS_21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
789 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
790 _20, ...) __VA_ARGS__
791
792#define Z_GET_ARGS_LESS_22(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
793 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
794 _20, _21, ...) __VA_ARGS__
795
796#define Z_GET_ARGS_LESS_23(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
797 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
798 _20, _21, _22, ...) __VA_ARGS__
799
800#define Z_GET_ARGS_LESS_24(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
801 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
802 _20, _21, _22, _23, ...) __VA_ARGS__
803
804#define Z_GET_ARGS_LESS_25(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
805 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
806 _20, _21, _22, _23, _24, ...) __VA_ARGS__
807
808#define Z_GET_ARGS_LESS_26(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
809 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
810 _20, _21, _22, _23, _24, _25, ...) __VA_ARGS__
811
812#define Z_GET_ARGS_LESS_27(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
813 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
814 _20, _21, _22, _23, _24, _25, _26, ...) \
815 __VA_ARGS__
816
817#define Z_GET_ARGS_LESS_28(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
818 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
819 _20, _21, _22, _23, _24, _25, _26, _27, \
820 ...) __VA_ARGS__
821
822#define Z_GET_ARGS_LESS_29(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
823 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
824 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
825 ...) __VA_ARGS__
826
827#define Z_GET_ARGS_LESS_30(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
828 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
829 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
830 _29, ...) __VA_ARGS__
831
832#define Z_GET_ARGS_LESS_31(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
833 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
834 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
835 _29, _30, ...) __VA_ARGS__
836
837#define Z_GET_ARGS_LESS_32(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
838 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
839 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
840 _29, _30, _31, ...) __VA_ARGS__
841
842#define Z_GET_ARGS_LESS_33(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
843 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
844 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
845 _29, _30, _31, _32, ...) __VA_ARGS__
846
847#define Z_GET_ARGS_LESS_34(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
848 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
849 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
850 _29, _30, _31, _32, _33, ...) __VA_ARGS__
851
852#define Z_GET_ARGS_LESS_35(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
853 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
854 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
855 _29, _30, _31, _32, _33, _34, ...) __VA_ARGS__
856
857#define Z_GET_ARGS_LESS_36(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
858 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
859 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
860 _29, _30, _31, _32, _33, _34, _35, ...) __VA_ARGS__
861
862#define Z_GET_ARGS_LESS_37(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
863 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
864 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
865 _29, _30, _31, _32, _33, _34, _35, _36, ...) __VA_ARGS__
866
867#define Z_GET_ARGS_LESS_38(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
868 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
869 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
870 _29, _30, _31, _32, _33, _34, _35, _36, _37, ...) __VA_ARGS__
871
872#define Z_GET_ARGS_LESS_39(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
873 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
874 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
875 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
876 _38, ...) __VA_ARGS__
877
878#define Z_GET_ARGS_LESS_40(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
879 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
880 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
881 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
882 _38, _39, ...) __VA_ARGS__
883
884#define Z_GET_ARGS_LESS_41(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
885 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
886 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
887 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
888 _38, _39, _40, ...) __VA_ARGS__
889
890#define Z_GET_ARGS_LESS_42(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
891 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
892 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
893 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
894 _38, _39, _40, _41, ...) __VA_ARGS__
895
896#define Z_GET_ARGS_LESS_43(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
897 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
898 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
899 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
900 _38, _39, _40, _41, _42, ...) __VA_ARGS__
901
902#define Z_GET_ARGS_LESS_44(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
903 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
904 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
905 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
906 _38, _39, _40, _41, _42, _43, ...) __VA_ARGS__
907
908#define Z_GET_ARGS_LESS_45(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
909 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
910 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
911 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
912 _38, _39, _40, _41, _42, _43, _44, ...) __VA_ARGS__
913
914#define Z_GET_ARGS_LESS_46(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
915 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
916 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
917 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
918 _38, _39, _40, _41, _42, _43, _44, _45, ...) __VA_ARGS__
919
920#define Z_GET_ARGS_LESS_47(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
921 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
922 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
923 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
924 _38, _39, _40, _41, _42, _43, _44, _45, _46, ...) __VA_ARGS__
925
926#define Z_GET_ARGS_LESS_48(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
927 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
928 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
929 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
930 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
931 _47, ...) __VA_ARGS__
932
933#define Z_GET_ARGS_LESS_49(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
934 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
935 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
936 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
937 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
938 _47, _48, ...) __VA_ARGS__
939
940#define Z_GET_ARGS_LESS_50(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
941 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
942 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
943 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
944 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
945 _47, _48, _49, ...) __VA_ARGS__
946
947#define Z_GET_ARGS_LESS_51(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
948 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
949 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
950 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
951 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
952 _47, _48, _49, _50, ...) __VA_ARGS__
953
954#define Z_GET_ARGS_LESS_52(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
955 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
956 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
957 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
958 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
959 _47, _48, _49, _50, _51, ...) __VA_ARGS__
960
961#define Z_GET_ARGS_LESS_53(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
962 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
963 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
964 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
965 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
966 _47, _48, _49, _50, _51, _52, ...) __VA_ARGS__
967
968#define Z_GET_ARGS_LESS_54(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
969 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
970 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
971 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
972 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
973 _47, _48, _49, _50, _51, _52, _53, ...) __VA_ARGS__
974
975#define Z_GET_ARGS_LESS_55(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
976 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
977 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
978 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
979 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
980 _47, _48, _49, _50, _51, _52, _53, _54, ...) __VA_ARGS__
981
982#define Z_GET_ARGS_LESS_56(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
983 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
984 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
985 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
986 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
987 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
988 ...) __VA_ARGS__
989
990#define Z_GET_ARGS_LESS_57(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
991 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
992 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
993 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
994 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
995 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
996 _56, ...) __VA_ARGS__
997
998#define Z_GET_ARGS_LESS_58(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
999 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
1000 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
1001 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
1002 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
1003 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
1004 _56, _57, ...) __VA_ARGS__
1005
1006#define Z_GET_ARGS_LESS_59(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
1007 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
1008 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
1009 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
1010 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
1011 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
1012 _56, _57, _58, ...) __VA_ARGS__
1013
1014#define Z_GET_ARGS_LESS_60(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
1015 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
1016 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
1017 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
1018 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
1019 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
1020 _56, _57, _58, _59, ...) __VA_ARGS__
1021
1022#define Z_GET_ARGS_LESS_61(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
1023 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
1024 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
1025 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
1026 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
1027 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
1028 _56, _57, _58, _59, _60, ...) __VA_ARGS__
1029
1030#define Z_GET_ARGS_LESS_62(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
1031 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
1032 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
1033 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
1034 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
1035 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
1036 _56, _57, _58, _59, _60, _61, ...) __VA_ARGS__
1037
1038#define Z_GET_ARGS_LESS_63(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
1039 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
1040 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
1041 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
1042 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
1043 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
1044 _56, _57, _58, _59, _60, _61, _62, ...) __VA_ARGS__
1045
1046#define Z_GET_ARGS_LESS_64(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
1047 _11, _12, _13, _14, _15, _16, _17, _18, _19, \
1048 _20, _21, _22, _23, _24, _25, _26, _27, _28, \
1049 _29, _30, _31, _32, _33, _34, _35, _36, _37, \
1050 _38, _39, _40, _41, _42, _43, _44, _45, _46, \
1051 _47, _48, _49, _50, _51, _52, _53, _54, _55, \
1052 _56, _57, _58, _59, _60, _61, _62, _63, ...) __VA_ARGS__
1053
1054#define Z_FOR_EACH_IDX_FIXED_ARG_EXEC(idx, x, fixed_arg0, fixed_arg1) \
1055 fixed_arg0(idx, x, fixed_arg1)
1056
1057#define Z_FOR_EACH_IDX_FIXED_ARG(F, sep, fixed_arg, ...) \
1058 Z_FOR_EACH_ENGINE(Z_FOR_EACH_IDX_FIXED_ARG_EXEC, sep, \
1059 F, fixed_arg, __VA_ARGS__)
1060
1061#define Z_FOR_EACH_FIXED_ARG_EXEC(idx, x, fixed_arg0, fixed_arg1) \
1062 fixed_arg0(x, fixed_arg1)
1063
1064#define Z_FOR_EACH_FIXED_ARG(F, sep, fixed_arg, ...) \
1065 Z_FOR_EACH_ENGINE(Z_FOR_EACH_FIXED_ARG_EXEC, sep, \
1066 F, fixed_arg, __VA_ARGS__)
1067
1068#define Z_FOR_EACH_IDX_EXEC(idx, x, fixed_arg0, fixed_arg1) \
1069 fixed_arg0(idx, x)
1070
1071#define Z_FOR_EACH_IDX(F, sep, ...) \
1072 Z_FOR_EACH_ENGINE(Z_FOR_EACH_IDX_EXEC, sep, F, _, __VA_ARGS__)
1073
1074#define Z_FOR_EACH_EXEC(idx, x, fixed_arg0, fixed_arg1) \
1075 fixed_arg0(x)
1076
1077#define Z_FOR_EACH(F, sep, ...) \
1078 Z_FOR_EACH_ENGINE(Z_FOR_EACH_EXEC, sep, F, _, __VA_ARGS__)
1079
1080#define Z_BYPASS(x) x
1081
1082/* Set of UTIL_LISTIFY particles */
1083#include "util_listify.h"
1084
1085#endif /* ZEPHYR_INCLUDE_SYS_UTIL_LOOPS_H_ */