|
4 | 4 |
|
5 | 5 | namespace py = pybind11; |
6 | 6 |
|
7 | | -#define EXPAND(x) x |
8 | 7 | #define FOR_EACH_1(MACRO, X) MACRO(X) |
9 | | -#define FOR_EACH_2(MACRO, X, ...) \ |
10 | | - MACRO(X) EXPAND(FOR_EACH_1(MACRO, __VA_ARGS__)) |
11 | | -#define FOR_EACH_3(MACRO, X, ...) \ |
12 | | - MACRO(X) EXPAND(FOR_EACH_2(MACRO, __VA_ARGS__)) |
13 | | -#define FOR_EACH_4(MACRO, X, ...) \ |
14 | | - MACRO(X) EXPAND(FOR_EACH_3(MACRO, __VA_ARGS__)) |
| 8 | +#define FOR_EACH_2(MACRO, X, ...) MACRO(X) FOR_EACH_1(MACRO, __VA_ARGS__) |
| 9 | +#define FOR_EACH_3(MACRO, X, ...) MACRO(X) FOR_EACH_2(MACRO, __VA_ARGS__) |
| 10 | +#define FOR_EACH_4(MACRO, X, ...) MACRO(X) FOR_EACH_3(MACRO, __VA_ARGS__) |
15 | 11 |
|
16 | 12 | #define FOR_EACH_NARG(...) FOR_EACH_NARG_(__VA_ARGS__, FOR_EACH_RSEQ_N()) |
17 | | -#define FOR_EACH_NARG_(...) EXPAND(FOR_EACH_ARG_N(__VA_ARGS__)) |
| 13 | +#define FOR_EACH_NARG_(...) FOR_EACH_ARG_N(__VA_ARGS__) |
18 | 14 | #define FOR_EACH_ARG_N(_1, _2, _3, _4, N, ...) N |
19 | 15 | #define FOR_EACH_RSEQ_N() 4, 3, 2, 1, 0 |
20 | 16 |
|
21 | 17 | #define CONCATENATE(x, y) CONCATENATE1(x, y) |
22 | 18 | #define CONCATENATE1(x, y) x##y |
23 | 19 |
|
24 | 20 | #define FOR_EACH(MACRO, ...) \ |
25 | | - EXPAND(CONCATENATE(FOR_EACH_, \ |
26 | | - FOR_EACH_NARG_HELPER(__VA_ARGS__))(MACRO, __VA_ARGS__)) |
| 21 | + CONCATENATE(FOR_EACH_, FOR_EACH_NARG_HELPER(__VA_ARGS__))(MACRO, __VA_ARGS__) |
27 | 22 | #define FOR_EACH_NARG_HELPER(...) FOR_EACH_NARG(__VA_ARGS__) |
28 | 23 |
|
29 | 24 | // New macro to remove parentheses |
|
0 commit comments