|
334 | 334 | #define UTIL_EXPAND(...) __VA_ARGS__
|
335 | 335 | #define UTIL_REPEAT(...) UTIL_LISTIFY(__VA_ARGS__)
|
336 | 336 |
|
| 337 | +#define UTIL_AND_CAT(a, b) a && b |
| 338 | +/* Used by UTIL_CONCAT_AND */ |
| 339 | +#define Z_UTIL_CONCAT_AND(...) \ |
| 340 | + (Z_UTIL_CONCAT_AND_N(NUM_VA_ARGS(__VA_ARGS__), __VA_ARGS__)) |
| 341 | +#define Z_UTIL_CONCAT_AND_N(N, ...) UTIL_CAT(Z_UTIL_CONCAT_AND_, N)(__VA_ARGS__) |
| 342 | +#define Z_UTIL_CONCAT_AND_0 |
| 343 | +#define Z_UTIL_CONCAT_AND_1(a, ...) a |
| 344 | +#define Z_UTIL_CONCAT_AND_2(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_1(__VA_ARGS__,)) |
| 345 | +#define Z_UTIL_CONCAT_AND_3(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_2(__VA_ARGS__,)) |
| 346 | +#define Z_UTIL_CONCAT_AND_4(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_3(__VA_ARGS__,)) |
| 347 | +#define Z_UTIL_CONCAT_AND_5(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_4(__VA_ARGS__,)) |
| 348 | +#define Z_UTIL_CONCAT_AND_6(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_5(__VA_ARGS__,)) |
| 349 | +#define Z_UTIL_CONCAT_AND_7(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_6(__VA_ARGS__,)) |
| 350 | +#define Z_UTIL_CONCAT_AND_8(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_7(__VA_ARGS__,)) |
| 351 | +#define Z_UTIL_CONCAT_AND_9(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_8(__VA_ARGS__,)) |
| 352 | +#define Z_UTIL_CONCAT_AND_10(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_9(__VA_ARGS__,)) |
| 353 | +#define Z_UTIL_CONCAT_AND_11(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_10(__VA_ARGS__,)) |
| 354 | +#define Z_UTIL_CONCAT_AND_12(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_11(__VA_ARGS__,)) |
| 355 | +#define Z_UTIL_CONCAT_AND_13(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_12(__VA_ARGS__,)) |
| 356 | +#define Z_UTIL_CONCAT_AND_14(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_13(__VA_ARGS__,)) |
| 357 | +#define Z_UTIL_CONCAT_AND_15(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_14(__VA_ARGS__,)) |
| 358 | +#define Z_UTIL_CONCAT_AND_16(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_15(__VA_ARGS__,)) |
| 359 | +#define Z_UTIL_CONCAT_AND_17(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_16(__VA_ARGS__,)) |
| 360 | +#define Z_UTIL_CONCAT_AND_18(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_17(__VA_ARGS__,)) |
| 361 | +#define Z_UTIL_CONCAT_AND_19(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_18(__VA_ARGS__,)) |
| 362 | +#define Z_UTIL_CONCAT_AND_20(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_19(__VA_ARGS__,)) |
| 363 | +#define Z_UTIL_CONCAT_AND_21(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_20(__VA_ARGS__,)) |
| 364 | +#define Z_UTIL_CONCAT_AND_22(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_21(__VA_ARGS__,)) |
| 365 | +#define Z_UTIL_CONCAT_AND_23(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_22(__VA_ARGS__,)) |
| 366 | +#define Z_UTIL_CONCAT_AND_24(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_23(__VA_ARGS__,)) |
| 367 | +#define Z_UTIL_CONCAT_AND_25(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_24(__VA_ARGS__,)) |
| 368 | +#define Z_UTIL_CONCAT_AND_26(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_25(__VA_ARGS__,)) |
| 369 | +#define Z_UTIL_CONCAT_AND_27(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_26(__VA_ARGS__,)) |
| 370 | +#define Z_UTIL_CONCAT_AND_28(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_27(__VA_ARGS__,)) |
| 371 | +#define Z_UTIL_CONCAT_AND_29(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_28(__VA_ARGS__,)) |
| 372 | +#define Z_UTIL_CONCAT_AND_30(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_29(__VA_ARGS__,)) |
| 373 | +#define Z_UTIL_CONCAT_AND_31(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_30(__VA_ARGS__,)) |
| 374 | +#define Z_UTIL_CONCAT_AND_32(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_31(__VA_ARGS__,)) |
| 375 | + |
| 376 | +#define UTIL_OR_CAT(a, b) a || b |
| 377 | +/* Used by UTIL_CONCAT_OR */ |
| 378 | +#define Z_UTIL_CONCAT_OR(...) \ |
| 379 | + (Z_UTIL_CONCAT_OR_N(NUM_VA_ARGS(__VA_ARGS__), __VA_ARGS__)) |
| 380 | +#define Z_UTIL_CONCAT_OR_N(N, ...) UTIL_CAT(Z_UTIL_CONCAT_OR_, N)(__VA_ARGS__) |
| 381 | +#define Z_UTIL_CONCAT_OR_0 |
| 382 | +#define Z_UTIL_CONCAT_OR_1(a, ...) a |
| 383 | +#define Z_UTIL_CONCAT_OR_2(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_1(__VA_ARGS__,)) |
| 384 | +#define Z_UTIL_CONCAT_OR_3(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_2(__VA_ARGS__,)) |
| 385 | +#define Z_UTIL_CONCAT_OR_4(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_3(__VA_ARGS__,)) |
| 386 | +#define Z_UTIL_CONCAT_OR_5(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_4(__VA_ARGS__,)) |
| 387 | +#define Z_UTIL_CONCAT_OR_6(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_5(__VA_ARGS__,)) |
| 388 | +#define Z_UTIL_CONCAT_OR_7(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_6(__VA_ARGS__,)) |
| 389 | +#define Z_UTIL_CONCAT_OR_8(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_7(__VA_ARGS__,)) |
| 390 | +#define Z_UTIL_CONCAT_OR_9(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_8(__VA_ARGS__,)) |
| 391 | +#define Z_UTIL_CONCAT_OR_10(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_9(__VA_ARGS__,)) |
| 392 | +#define Z_UTIL_CONCAT_OR_11(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_10(__VA_ARGS__,)) |
| 393 | +#define Z_UTIL_CONCAT_OR_12(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_11(__VA_ARGS__,)) |
| 394 | +#define Z_UTIL_CONCAT_OR_13(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_12(__VA_ARGS__,)) |
| 395 | +#define Z_UTIL_CONCAT_OR_14(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_13(__VA_ARGS__,)) |
| 396 | +#define Z_UTIL_CONCAT_OR_15(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_14(__VA_ARGS__,)) |
| 397 | +#define Z_UTIL_CONCAT_OR_16(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_15(__VA_ARGS__,)) |
| 398 | +#define Z_UTIL_CONCAT_OR_17(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_16(__VA_ARGS__,)) |
| 399 | +#define Z_UTIL_CONCAT_OR_18(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_17(__VA_ARGS__,)) |
| 400 | +#define Z_UTIL_CONCAT_OR_19(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_18(__VA_ARGS__,)) |
| 401 | +#define Z_UTIL_CONCAT_OR_20(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_19(__VA_ARGS__,)) |
| 402 | +#define Z_UTIL_CONCAT_OR_21(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_20(__VA_ARGS__,)) |
| 403 | +#define Z_UTIL_CONCAT_OR_22(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_21(__VA_ARGS__,)) |
| 404 | +#define Z_UTIL_CONCAT_OR_23(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_22(__VA_ARGS__,)) |
| 405 | +#define Z_UTIL_CONCAT_OR_24(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_23(__VA_ARGS__,)) |
| 406 | +#define Z_UTIL_CONCAT_OR_25(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_24(__VA_ARGS__,)) |
| 407 | +#define Z_UTIL_CONCAT_OR_26(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_25(__VA_ARGS__,)) |
| 408 | +#define Z_UTIL_CONCAT_OR_27(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_26(__VA_ARGS__,)) |
| 409 | +#define Z_UTIL_CONCAT_OR_28(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_27(__VA_ARGS__,)) |
| 410 | +#define Z_UTIL_CONCAT_OR_29(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_28(__VA_ARGS__,)) |
| 411 | +#define Z_UTIL_CONCAT_OR_30(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_29(__VA_ARGS__,)) |
| 412 | +#define Z_UTIL_CONCAT_OR_31(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_30(__VA_ARGS__,)) |
| 413 | +#define Z_UTIL_CONCAT_OR_32(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_31(__VA_ARGS__,)) |
| 414 | + |
337 | 415 | #define _CONCAT_0(arg, ...) arg
|
338 | 416 | #define _CONCAT_1(arg, ...) UTIL_CAT(arg, _CONCAT_0(__VA_ARGS__))
|
339 | 417 | #define _CONCAT_2(arg, ...) UTIL_CAT(arg, _CONCAT_1(__VA_ARGS__))
|
|
0 commit comments