1
+ // Copyright (C) 2022 - DevSH Graphics Programming Sp. z O.O.
2
+ // This file is part of the "Nabla Engine".
3
+ // For conditions of distribution and use, see copyright notice in nabla.h
4
+ #ifndef _NBL_BUILTIN_HLSL_MACROS_INCLUDED_
5
+ #define _NBL_BUILTIN_HLSL_MACROS_INCLUDED_
6
+
7
+
8
+ // basics
9
+ #define NBL_EVAL (...) __VA_ARGS__
10
+ #define NBL_CONCAT_IMPL2 (X ,Y ) X ## Y
11
+ #define NBL_CONCAT_IMPL (X ,Y ) NBL_CONCAT_IMPL2(X,Y)
12
+ #define NBL_CONCATENATE (X ,Y ) NBL_CONCAT_IMPL(NBL_EVAL(X) , NBL_EVAL(Y))
13
+
14
+ // variadics
15
+
16
+ //
17
+ #define NBL_ARG_125 (a0 ,a1 ,a2 ,a3 ,a4 ,a5 ,a6 ,a7 ,a8 ,a9 ,a10 ,a11 ,a12 ,a13 ,a14 ,a15 ,a16 ,a17 ,a18 ,a19 ,a20 ,a21 ,a22 ,a23 ,a24 ,a25 ,a26 ,a27 ,a28 ,a29 ,a30 ,a31 ,a32 ,a33 ,a34 ,a35 ,a36 ,a37 ,a38 ,a39 ,a40 ,a41 ,a42 ,a43 ,a44 ,a45 ,a46 ,a47 ,a48 ,a49 ,a50 ,a51 ,a52 ,a53 ,a54 ,a55 ,a56 ,a57 ,a58 ,a59 ,a60 ,a61 ,a62 ,a63 ,a64 ,a65 ,a66 ,a67 ,a68 ,a69 ,a70 ,a71 ,a72 ,a73 ,a74 ,a75 ,a76 ,a77 ,a78 ,a79 ,a80 ,a81 ,a82 ,a83 ,a84 ,a85 ,a86 ,a87 ,a88 ,a89 ,a90 ,a91 ,a92 ,a93 ,a94 ,a95 ,a96 ,a97 ,a98 ,a99 ,a100 ,a101 ,a102 ,a103 ,a104 ,a105 ,a106 ,a107 ,a108 ,a109 ,a110 ,a111 ,a112 ,a113 ,a114 ,a115 ,a116 ,a117 ,a118 ,a119 ,a120 ,a121 ,a122 ,a123 ,a124 ,a125 , ... ) a125
18
+ #define NBL_VA_ARGS_COUNT ( ... ) NBL_EVAL(NBL_ARG_125(__VA_ARGS__,125,124,123,122,121,120,119,118,117,116,115,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0))
19
+
20
+ //
21
+ #define NBL_FOREACH_0 (WHAT )
22
+ #define NBL_FOREACH_1 (WHAT , X ) NBL_EVAL(WHAT(X))
23
+ #define NBL_FOREACH_2 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_1(WHAT, __VA_ARGS__))
24
+ #define NBL_FOREACH_3 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_2(WHAT, __VA_ARGS__))
25
+ #define NBL_FOREACH_4 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_3(WHAT, __VA_ARGS__))
26
+ #define NBL_FOREACH_5 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_4(WHAT, __VA_ARGS__))
27
+ #define NBL_FOREACH_6 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_5(WHAT, __VA_ARGS__))
28
+ #define NBL_FOREACH_7 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_6(WHAT, __VA_ARGS__))
29
+ #define NBL_FOREACH_8 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_7(WHAT, __VA_ARGS__))
30
+ #define NBL_FOREACH_9 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_8(WHAT, __VA_ARGS__))
31
+ #define NBL_FOREACH_10 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_9(WHAT, __VA_ARGS__))
32
+ #define NBL_FOREACH_11 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_10(WHAT, __VA_ARGS__))
33
+ #define NBL_FOREACH_12 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_11(WHAT, __VA_ARGS__))
34
+ #define NBL_FOREACH_13 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_12(WHAT, __VA_ARGS__))
35
+ #define NBL_FOREACH_14 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_13(WHAT, __VA_ARGS__))
36
+ #define NBL_FOREACH_15 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_14(WHAT, __VA_ARGS__))
37
+ #define NBL_FOREACH_16 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_15(WHAT, __VA_ARGS__))
38
+ #define NBL_FOREACH_17 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_16(WHAT, __VA_ARGS__))
39
+ #define NBL_FOREACH_18 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_17(WHAT, __VA_ARGS__))
40
+ #define NBL_FOREACH_19 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_18(WHAT, __VA_ARGS__))
41
+ #define NBL_FOREACH_20 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_19(WHAT, __VA_ARGS__))
42
+ #define NBL_FOREACH_21 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_20(WHAT, __VA_ARGS__))
43
+ #define NBL_FOREACH_22 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_21(WHAT, __VA_ARGS__))
44
+ #define NBL_FOREACH_23 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_22(WHAT, __VA_ARGS__))
45
+ #define NBL_FOREACH_24 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_23(WHAT, __VA_ARGS__))
46
+ #define NBL_FOREACH_25 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_24(WHAT, __VA_ARGS__))
47
+ #define NBL_FOREACH_26 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_25(WHAT, __VA_ARGS__))
48
+ #define NBL_FOREACH_27 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_26(WHAT, __VA_ARGS__))
49
+ #define NBL_FOREACH_28 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_27(WHAT, __VA_ARGS__))
50
+ #define NBL_FOREACH_29 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_28(WHAT, __VA_ARGS__))
51
+ #define NBL_FOREACH_30 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_29(WHAT, __VA_ARGS__))
52
+ #define NBL_FOREACH_31 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_30(WHAT, __VA_ARGS__))
53
+ #define NBL_FOREACH_32 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_31(WHAT, __VA_ARGS__))
54
+ #define NBL_FOREACH_33 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_32(WHAT, __VA_ARGS__))
55
+ #define NBL_FOREACH_34 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_33(WHAT, __VA_ARGS__))
56
+ #define NBL_FOREACH_35 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_34(WHAT, __VA_ARGS__))
57
+ #define NBL_FOREACH_36 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_35(WHAT, __VA_ARGS__))
58
+ #define NBL_FOREACH_37 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_36(WHAT, __VA_ARGS__))
59
+ #define NBL_FOREACH_38 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_37(WHAT, __VA_ARGS__))
60
+ #define NBL_FOREACH_39 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_38(WHAT, __VA_ARGS__))
61
+ #define NBL_FOREACH_40 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_39(WHAT, __VA_ARGS__))
62
+ #define NBL_FOREACH_41 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_40(WHAT, __VA_ARGS__))
63
+ #define NBL_FOREACH_42 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_41(WHAT, __VA_ARGS__))
64
+ #define NBL_FOREACH_43 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_42(WHAT, __VA_ARGS__))
65
+ #define NBL_FOREACH_44 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_43(WHAT, __VA_ARGS__))
66
+ #define NBL_FOREACH_45 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_44(WHAT, __VA_ARGS__))
67
+ #define NBL_FOREACH_46 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_45(WHAT, __VA_ARGS__))
68
+ #define NBL_FOREACH_47 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_46(WHAT, __VA_ARGS__))
69
+ #define NBL_FOREACH_48 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_47(WHAT, __VA_ARGS__))
70
+ #define NBL_FOREACH_49 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_48(WHAT, __VA_ARGS__))
71
+ #define NBL_FOREACH_50 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_49(WHAT, __VA_ARGS__))
72
+ #define NBL_FOREACH_51 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_50(WHAT, __VA_ARGS__))
73
+ #define NBL_FOREACH_52 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_51(WHAT, __VA_ARGS__))
74
+ #define NBL_FOREACH_53 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_52(WHAT, __VA_ARGS__))
75
+ #define NBL_FOREACH_54 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_53(WHAT, __VA_ARGS__))
76
+ #define NBL_FOREACH_55 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_54(WHAT, __VA_ARGS__))
77
+ #define NBL_FOREACH_56 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_55(WHAT, __VA_ARGS__))
78
+ #define NBL_FOREACH_57 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_56(WHAT, __VA_ARGS__))
79
+ #define NBL_FOREACH_58 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_57(WHAT, __VA_ARGS__))
80
+ #define NBL_FOREACH_59 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_58(WHAT, __VA_ARGS__))
81
+ #define NBL_FOREACH_60 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_59(WHAT, __VA_ARGS__))
82
+ #define NBL_FOREACH_61 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_60(WHAT, __VA_ARGS__))
83
+ #define NBL_FOREACH_62 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_61(WHAT, __VA_ARGS__))
84
+ #define NBL_FOREACH_63 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_62(WHAT, __VA_ARGS__))
85
+ #define NBL_FOREACH_64 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_63(WHAT, __VA_ARGS__))
86
+ #define NBL_FOREACH_65 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_64(WHAT, __VA_ARGS__))
87
+ #define NBL_FOREACH_66 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_65(WHAT, __VA_ARGS__))
88
+ #define NBL_FOREACH_67 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_66(WHAT, __VA_ARGS__))
89
+ #define NBL_FOREACH_68 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_67(WHAT, __VA_ARGS__))
90
+ #define NBL_FOREACH_69 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_68(WHAT, __VA_ARGS__))
91
+ #define NBL_FOREACH_70 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_69(WHAT, __VA_ARGS__))
92
+ #define NBL_FOREACH_71 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_70(WHAT, __VA_ARGS__))
93
+ #define NBL_FOREACH_72 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_71(WHAT, __VA_ARGS__))
94
+ #define NBL_FOREACH_73 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_72(WHAT, __VA_ARGS__))
95
+ #define NBL_FOREACH_74 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_73(WHAT, __VA_ARGS__))
96
+ #define NBL_FOREACH_75 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_74(WHAT, __VA_ARGS__))
97
+ #define NBL_FOREACH_76 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_75(WHAT, __VA_ARGS__))
98
+ #define NBL_FOREACH_77 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_76(WHAT, __VA_ARGS__))
99
+ #define NBL_FOREACH_78 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_77(WHAT, __VA_ARGS__))
100
+ #define NBL_FOREACH_79 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_78(WHAT, __VA_ARGS__))
101
+ #define NBL_FOREACH_80 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_79(WHAT, __VA_ARGS__))
102
+ #define NBL_FOREACH_81 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_80(WHAT, __VA_ARGS__))
103
+ #define NBL_FOREACH_82 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_81(WHAT, __VA_ARGS__))
104
+ #define NBL_FOREACH_83 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_82(WHAT, __VA_ARGS__))
105
+ #define NBL_FOREACH_84 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_83(WHAT, __VA_ARGS__))
106
+ #define NBL_FOREACH_85 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_84(WHAT, __VA_ARGS__))
107
+ #define NBL_FOREACH_86 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_85(WHAT, __VA_ARGS__))
108
+ #define NBL_FOREACH_87 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_86(WHAT, __VA_ARGS__))
109
+ #define NBL_FOREACH_88 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_87(WHAT, __VA_ARGS__))
110
+ #define NBL_FOREACH_89 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_88(WHAT, __VA_ARGS__))
111
+ #define NBL_FOREACH_90 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_89(WHAT, __VA_ARGS__))
112
+ #define NBL_FOREACH_91 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_90(WHAT, __VA_ARGS__))
113
+ #define NBL_FOREACH_92 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_91(WHAT, __VA_ARGS__))
114
+ #define NBL_FOREACH_93 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_92(WHAT, __VA_ARGS__))
115
+ #define NBL_FOREACH_94 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_93(WHAT, __VA_ARGS__))
116
+ #define NBL_FOREACH_95 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_94(WHAT, __VA_ARGS__))
117
+ #define NBL_FOREACH_96 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_95(WHAT, __VA_ARGS__))
118
+ #define NBL_FOREACH_97 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_96(WHAT, __VA_ARGS__))
119
+ #define NBL_FOREACH_98 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_97(WHAT, __VA_ARGS__))
120
+ #define NBL_FOREACH_99 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_98(WHAT, __VA_ARGS__))
121
+ #define NBL_FOREACH_100 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_99(WHAT, __VA_ARGS__))
122
+ #define NBL_FOREACH_101 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_100(WHAT, __VA_ARGS__))
123
+ #define NBL_FOREACH_102 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_101(WHAT, __VA_ARGS__))
124
+ #define NBL_FOREACH_103 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_102(WHAT, __VA_ARGS__))
125
+ #define NBL_FOREACH_104 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_103(WHAT, __VA_ARGS__))
126
+ #define NBL_FOREACH_105 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_104(WHAT, __VA_ARGS__))
127
+ #define NBL_FOREACH_106 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_105(WHAT, __VA_ARGS__))
128
+ #define NBL_FOREACH_107 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_106(WHAT, __VA_ARGS__))
129
+ #define NBL_FOREACH_108 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_107(WHAT, __VA_ARGS__))
130
+ #define NBL_FOREACH_109 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_108(WHAT, __VA_ARGS__))
131
+ #define NBL_FOREACH_110 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_109(WHAT, __VA_ARGS__))
132
+ #define NBL_FOREACH_111 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_110(WHAT, __VA_ARGS__))
133
+ #define NBL_FOREACH_112 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_111(WHAT, __VA_ARGS__))
134
+ #define NBL_FOREACH_113 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_112(WHAT, __VA_ARGS__))
135
+ #define NBL_FOREACH_114 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_113(WHAT, __VA_ARGS__))
136
+ #define NBL_FOREACH_115 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_114(WHAT, __VA_ARGS__))
137
+ #define NBL_FOREACH_116 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_115(WHAT, __VA_ARGS__))
138
+ #define NBL_FOREACH_117 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_116(WHAT, __VA_ARGS__))
139
+ #define NBL_FOREACH_118 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_117(WHAT, __VA_ARGS__))
140
+ #define NBL_FOREACH_119 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_118(WHAT, __VA_ARGS__))
141
+ #define NBL_FOREACH_120 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_119(WHAT, __VA_ARGS__))
142
+ #define NBL_FOREACH_121 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_120(WHAT, __VA_ARGS__))
143
+ #define NBL_FOREACH_122 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_121(WHAT, __VA_ARGS__))
144
+ #define NBL_FOREACH_123 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_122(WHAT, __VA_ARGS__))
145
+ #define NBL_FOREACH_124 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_123(WHAT, __VA_ARGS__))
146
+ #define NBL_FOREACH_125 (WHAT , X , ...) NBL_EVAL(WHAT(X)NBL_FOREACH_124(WHAT, __VA_ARGS__))
147
+
148
+ #define NBL_FOREACH (WHAT , ... ) NBL_EVAL(NBL_CONCATENATE(NBL_FOREACH_,NBL_VA_ARGS_COUNT(__VA_ARGS__))(WHAT, __VA_ARGS__))
149
+
150
+ #endif
0 commit comments