|
71 | 71 | /* Used to remove brackets from around a single argument. */ |
72 | 72 | #define __DEBRACKET(...) __VA_ARGS__ |
73 | 73 |
|
| 74 | +/* Used by COND_CASE_1(); supports up to 16 flag/value pairs */ |
| 75 | +#define Z_COND_CASE_1(...) \ |
| 76 | + Z_COND_CASE_1_SELECT(NUM_VA_ARGS_LESS_1(__VA_ARGS__), __VA_ARGS__) |
| 77 | + |
| 78 | +#define Z_COND_CASE_1_SELECT(count_minus_one, ...) \ |
| 79 | + UTIL_CAT(Z_COND_CASE_1_LEVEL_, count_minus_one)(__VA_ARGS__) |
| 80 | + |
| 81 | +#define Z_COND_CASE_1_LEVEL_0(_default) __DEBRACKET _default |
| 82 | +#define Z_COND_CASE_1_LEVEL_1(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 83 | +#define Z_COND_CASE_1_LEVEL_2(flag0, value0, _default) \ |
| 84 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (__DEBRACKET _default)) |
| 85 | +#define Z_COND_CASE_1_LEVEL_3(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 86 | +#define Z_COND_CASE_1_LEVEL_4(flag0, value0, ...) \ |
| 87 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_2(__VA_ARGS__))) |
| 88 | +#define Z_COND_CASE_1_LEVEL_5(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 89 | +#define Z_COND_CASE_1_LEVEL_6(flag0, value0, ...) \ |
| 90 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_4(__VA_ARGS__))) |
| 91 | +#define Z_COND_CASE_1_LEVEL_7(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 92 | +#define Z_COND_CASE_1_LEVEL_8(flag0, value0, ...) \ |
| 93 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_6(__VA_ARGS__))) |
| 94 | +#define Z_COND_CASE_1_LEVEL_9(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 95 | +#define Z_COND_CASE_1_LEVEL_10(flag0, value0, ...) \ |
| 96 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_8(__VA_ARGS__))) |
| 97 | +#define Z_COND_CASE_1_LEVEL_11(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 98 | +#define Z_COND_CASE_1_LEVEL_12(flag0, value0, ...) \ |
| 99 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_10(__VA_ARGS__))) |
| 100 | +#define Z_COND_CASE_1_LEVEL_13(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 101 | +#define Z_COND_CASE_1_LEVEL_14(flag0, value0, ...) \ |
| 102 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_12(__VA_ARGS__))) |
| 103 | +#define Z_COND_CASE_1_LEVEL_15(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 104 | +#define Z_COND_CASE_1_LEVEL_16(flag0, value0, ...) \ |
| 105 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_14(__VA_ARGS__))) |
| 106 | +#define Z_COND_CASE_1_LEVEL_17(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 107 | +#define Z_COND_CASE_1_LEVEL_18(flag0, value0, ...) \ |
| 108 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_16(__VA_ARGS__))) |
| 109 | +#define Z_COND_CASE_1_LEVEL_19(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 110 | +#define Z_COND_CASE_1_LEVEL_20(flag0, value0, ...) \ |
| 111 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_18(__VA_ARGS__))) |
| 112 | +#define Z_COND_CASE_1_LEVEL_21(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 113 | +#define Z_COND_CASE_1_LEVEL_22(flag0, value0, ...) \ |
| 114 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_20(__VA_ARGS__))) |
| 115 | +#define Z_COND_CASE_1_LEVEL_23(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 116 | +#define Z_COND_CASE_1_LEVEL_24(flag0, value0, ...) \ |
| 117 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_22(__VA_ARGS__))) |
| 118 | +#define Z_COND_CASE_1_LEVEL_25(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 119 | +#define Z_COND_CASE_1_LEVEL_26(flag0, value0, ...) \ |
| 120 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_24(__VA_ARGS__))) |
| 121 | +#define Z_COND_CASE_1_LEVEL_27(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 122 | +#define Z_COND_CASE_1_LEVEL_28(flag0, value0, ...) \ |
| 123 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_26(__VA_ARGS__))) |
| 124 | +#define Z_COND_CASE_1_LEVEL_29(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 125 | +#define Z_COND_CASE_1_LEVEL_30(flag0, value0, ...) \ |
| 126 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_28(__VA_ARGS__))) |
| 127 | +#define Z_COND_CASE_1_LEVEL_31(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 128 | +#define Z_COND_CASE_1_LEVEL_32(flag0, value0, ...) \ |
| 129 | + Z_COND_CODE_1(flag0, (__DEBRACKET value0), (Z_COND_CASE_1_LEVEL_30(__VA_ARGS__))) |
| 130 | +#define Z_COND_CASE_1_LEVEL_33(...) Z_COND_SWITCH_REQUIRES_FLAG_VALUE_PAIRS |
| 131 | + |
| 132 | +#define Z_COND_CASE_1_REQUIRES_FLAG_VALUE_PAIRS Z_COND_CASE_1_REQUIRES_FLAG_VALUE_PAIRS |
| 133 | + |
74 | 134 | /* Used by IS_EMPTY() */ |
75 | 135 | /* reference: https://gustedt.wordpress.com/2010/06/08/detect-empty-macro-arguments/ */ |
76 | 136 | #define Z_HAS_COMMA(...) \ |
|
0 commit comments