|
1 | 1 | // 2020/08/30 - Created by netcan: https://github.com/netcan |
2 | 2 | #pragma once |
3 | 3 | #ifdef _MSC_VER |
| 4 | +#define TF_EMPTY() |
4 | 5 | #define TF_GET_ARG_COUNT_(...) \ |
5 | | - PASTE(TF_GET_ARG_COUNT_I( \ |
6 | | - __VA_ARGS__, 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, \ |
7 | | - 289, 288, 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, \ |
8 | | - 276, 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, 265, 264, \ |
9 | | - 263, 262, 261, 260, 259, 258, 257, 256, 255, 254, 253, 252, 251, \ |
10 | | - 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, \ |
11 | | - 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, \ |
12 | | - 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, \ |
13 | | - 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, \ |
14 | | - 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, \ |
15 | | - 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, \ |
16 | | - 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, \ |
17 | | - 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, \ |
18 | | - 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, \ |
19 | | - 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, \ |
20 | | - 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, \ |
21 | | - 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, \ |
22 | | - 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, \ |
23 | | - 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, \ |
24 | | - 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, \ |
25 | | - 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, \ |
26 | | - 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, \ |
27 | | - 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, ), \ |
28 | | - __CUB_empty()) |
| 6 | + TF_PASTE(TF_GET_ARG_COUNT_I( \ |
| 7 | + __VA_ARGS__, 120, 119, 118, \ |
| 8 | + 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, \ |
| 9 | + 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, \ |
| 10 | + 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, \ |
| 11 | + 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, \ |
| 12 | + 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, \ |
| 13 | + 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, \ |
| 14 | + 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, \ |
| 15 | + 8, 7, 6, 5, 4, 3, 2, 1, 0, ), \ |
| 16 | + TF_EMPTY()) |
29 | 17 |
|
30 | 18 | #else |
31 | | - |
32 | 19 | #define TF_GET_ARG_COUNT_(...) \ |
33 | 20 | TF_GET_ARG_COUNT_I( \ |
34 | | - __VA_ARGS__, 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, 289, 288, \ |
35 | | - 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, \ |
36 | | - 273, 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, \ |
37 | | - 259, 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, \ |
38 | | - 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, \ |
39 | | - 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, \ |
40 | | - 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, \ |
41 | | - 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, \ |
42 | | - 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, \ |
43 | | - 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, \ |
44 | | - 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, \ |
45 | | - 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, \ |
46 | | - 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, \ |
47 | | - 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, \ |
48 | | - 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, \ |
49 | | - 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, \ |
50 | | - 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, \ |
51 | | - 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, \ |
52 | | - 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, \ |
53 | | - 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, ) |
| 21 | + __VA_ARGS__, 120, 119, 118, 117, 116, \ |
| 22 | + 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, \ |
| 23 | + 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, \ |
| 24 | + 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, \ |
| 25 | + 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, \ |
| 26 | + 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, \ |
| 27 | + 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, \ |
| 28 | + 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, ) |
54 | 29 |
|
55 | 30 | #endif |
56 | 31 |
|
|
64 | 39 | e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, \ |
65 | 40 | e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, \ |
66 | 41 | e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, \ |
67 | | - e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, e128, \ |
68 | | - e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, \ |
69 | | - e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, \ |
70 | | - e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, \ |
71 | | - e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, \ |
72 | | - e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, \ |
73 | | - e189, e190, e191, e192, e193, e194, e195, e196, e197, e198, e199, e200, \ |
74 | | - e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, \ |
75 | | - e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, \ |
76 | | - e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, \ |
77 | | - e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, \ |
78 | | - e249, e250, e251, e252, e253, e254, e255, e256, e257, e258, e259, e260, \ |
79 | | - e261, e262, e263, e264, e265, e266, e267, e268, e269, e270, e271, e272, \ |
80 | | - e273, e274, e275, e276, e277, e278, e279, e280, e281, e282, e283, e284, \ |
81 | | - e285, e286, e287, e288, e289, e290, e291, e292, e293, e294, e295, e296, \ |
82 | | - e297, e298, e299, size, ...) \ |
| 42 | + e117, e118, e119, e120, size, \ |
| 43 | + ...) \ |
83 | 44 | size |
84 | 45 |
|
| 46 | +#define TF_REPEAT_0(func, i, arg) |
85 | 47 | #define TF_REPEAT_1(func, i, arg) func(i, arg) |
86 | 48 | #define TF_REPEAT_2(func, i, arg, ...) \ |
87 | 49 | func(i, arg) TF_REPEAT_1(func, i + 1, __VA_ARGS__) |
|
210 | 172 | #define TF_REPEAT_64(func, i, arg, ...) \ |
211 | 173 | func(i, arg) TF_REPEAT_63(func, i + 1, __VA_ARGS__) |
212 | 174 |
|
213 | | -#define TF_STR(x) #x |
214 | 175 | #define TF_CONCATE(x, y) x##y |
215 | | -#define TF_STRING(x) TF_STR(x) |
216 | | -#define TF_PARE(...) __VA_ARGS__ |
217 | | -#define TF_EAT(...) |
218 | | -#define TF_PAIR(x) TF_PARE x // PAIR((int) x) => PARE(int) x => int x |
219 | | -#define TF_STRIP(x) TF_EAT x // STRIP((int) x) => EAT(int) x => x |
220 | 176 | #define TF_PASTE(x, y) TF_CONCATE(x, y) |
0 commit comments