iutest  1.17.99.14
iutest_pp.hpp
[詳解]
1 //======================================================================
2 //-----------------------------------------------------------------------
13 //-----------------------------------------------------------------------
14 //======================================================================
15 #ifndef INCG_IRIS_IUTEST_PP_HPP_E8F72184_9C72_4E74_B581_A1F51F291F3A_
16 #define INCG_IRIS_IUTEST_PP_HPP_E8F72184_9C72_4E74_B581_A1F51F291F3A_
17 
18 //======================================================================
19 // define
20 
21 #if defined(_MSC_VER) && !defined(__clang__)
22 # if !defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL
23 # define IUTEST_PP_MSVC_TRADITIONAL
24 # endif
25 #endif
26 
30 #define IUTEST_PP_DISALLOW_COPY_AND_ASSIGN(TypeName) \
31  TypeName(const TypeName&); \
32  TypeName& operator = (const TypeName&)
33 
37 #define IUTEST_PP_DISALLOW_ASSIGN(TypeName) \
38  private: \
39  TypeName& operator = (const TypeName&)
40 
41 
45 #if defined(IUTEST_HAS_RVALUE_REFS) && IUTEST_HAS_RVALUE_REFS
46 # define IUTEST_PP_DISALLOW_MOVE_AND_COPY_AND_ASSIGN(TypeName) \
47  IUTEST_PP_DISALLOW_COPY_AND_ASSIGN(TypeName); \
48  TypeName(TypeName&& rhs); \
49  TypeName& operator = (TypeName&&)
50 #else
51 # define IUTEST_PP_DISALLOW_MOVE_AND_COPY_AND_ASSIGN(TypeName) \
52  IUTEST_PP_DISALLOW_COPY_AND_ASSIGN(TypeName)
53 #endif
54 
60 #if !defined(IUTEST_PP_TOSTRING)
61 # define IUTEST_PP_TOSTRING(z_) IIUT_PP_TOSTRING_(z_)
62 #endif
63 #define IIUT_PP_TOSTRING_(z_) #z_
64 
65 #if !defined(IUTEST_PP_CAT)
66 # define IUTEST_PP_CAT(a_, b_) IIUT_PP_CAT_(a_, b_)
67 #endif
68 #define IIUT_PP_CAT_(a_, b_) a_##b_
69 
70 #define IUTEST_PP_EXPAND(x) x
71 
72 #define IUTEST_PP_COUNTOF(x) (sizeof(x)/sizeof(x[0]))
73 
74 #if defined(IUTEST_HAS_COUNTER_MACRO) && IUTEST_HAS_COUNTER_MACRO
75 # define IUTEST_PP_COUNTER __COUNTER__
76 #else
77 # define IUTEST_PP_COUNTER __LINE__
78 #endif
79 
80 #if defined(IUTEST_HAS_COUNTER_MACRO) && IUTEST_HAS_COUNTER_MACRO
81 # define IUTEST_PP_UNIQUEID IUTEST_PP_CAT(__LINE__, __COUNTER__)
82 #else
83 # define IUTEST_PP_UNIQUEID __LINE__
84 #endif
85 
86 #define IUTEST_UNUSED_VAR(x) (void)(x)
87 #define IUTEST_UNUSED_RETURN(x) (void)(x)
88 
89 #define IUTEST_PP_ENUM_CASE_RETURN_STRING(name) case name: return #name
90 #define IUTEST_PP_NAMESPACE_ENUM_CASE_RETURN_STRING(ns, name) case ns::name: return #name
91 
92 // DEC
93 #define IUTEST_PP_DEC(n) IIUT_PP_DEC_I(n)
94 #define IIUT_PP_DEC_I(n) IIUT_PP_DEC_##n
95 #define IIUT_PP_DEC_0 nil
96 #define IIUT_PP_DEC_1 0
97 #define IIUT_PP_DEC_2 1
98 #define IIUT_PP_DEC_3 2
99 #define IIUT_PP_DEC_4 3
100 #define IIUT_PP_DEC_5 4
101 #define IIUT_PP_DEC_6 5
102 #define IIUT_PP_DEC_7 6
103 #define IIUT_PP_DEC_8 7
104 #define IIUT_PP_DEC_9 8
105 #define IIUT_PP_DEC_10 9
106 #define IIUT_PP_DEC_11 10
107 #define IIUT_PP_DEC_12 11
108 #define IIUT_PP_DEC_13 12
109 #define IIUT_PP_DEC_14 13
110 #define IIUT_PP_DEC_15 14
111 #define IIUT_PP_DEC_16 15
112 #define IIUT_PP_DEC_17 16
113 #define IIUT_PP_DEC_18 17
114 #define IIUT_PP_DEC_19 18
115 #define IIUT_PP_DEC_20 19
116 #define IIUT_PP_DEC_21 20
117 #define IIUT_PP_DEC_22 21
118 #define IIUT_PP_DEC_23 22
119 #define IIUT_PP_DEC_24 23
120 #define IIUT_PP_DEC_25 24
121 #define IIUT_PP_DEC_26 25
122 #define IIUT_PP_DEC_27 26
123 #define IIUT_PP_DEC_28 27
124 #define IIUT_PP_DEC_29 28
125 #define IIUT_PP_DEC_30 29
126 #define IIUT_PP_DEC_31 30
127 #define IIUT_PP_DEC_32 31
128 #define IIUT_PP_DEC_33 32
129 #define IIUT_PP_DEC_34 33
130 #define IIUT_PP_DEC_35 34
131 #define IIUT_PP_DEC_36 35
132 #define IIUT_PP_DEC_37 36
133 #define IIUT_PP_DEC_38 37
134 #define IIUT_PP_DEC_39 38
135 #define IIUT_PP_DEC_40 39
136 #define IIUT_PP_DEC_41 40
137 #define IIUT_PP_DEC_42 41
138 #define IIUT_PP_DEC_43 42
139 #define IIUT_PP_DEC_44 43
140 #define IIUT_PP_DEC_45 44
141 #define IIUT_PP_DEC_46 45
142 #define IIUT_PP_DEC_47 46
143 #define IIUT_PP_DEC_48 47
144 #define IIUT_PP_DEC_49 48
145 #define IIUT_PP_DEC_50 49
146 #define IIUT_PP_DEC_51 50
147 #define IIUT_PP_DEC_52 51
148 #define IIUT_PP_DEC_53 52
149 #define IIUT_PP_DEC_54 53
150 #define IIUT_PP_DEC_55 54
151 #define IIUT_PP_DEC_56 55
152 #define IIUT_PP_DEC_57 56
153 #define IIUT_PP_DEC_58 57
154 #define IIUT_PP_DEC_59 58
155 #define IIUT_PP_DEC_60 59
156 #define IIUT_PP_DEC_61 60
157 #define IIUT_PP_DEC_62 61
158 #define IIUT_PP_DEC_63 62
159 #define IIUT_PP_DEC_64 63
160 #define IIUT_PP_DEC_65 64
161 #define IIUT_PP_DEC_66 65
162 #define IIUT_PP_DEC_67 66
163 #define IIUT_PP_DEC_68 67
164 #define IIUT_PP_DEC_69 68
165 #define IIUT_PP_DEC_70 69
166 #define IIUT_PP_DEC_71 70
167 #define IIUT_PP_DEC_72 71
168 #define IIUT_PP_DEC_73 72
169 #define IIUT_PP_DEC_74 73
170 #define IIUT_PP_DEC_75 74
171 #define IIUT_PP_DEC_76 75
172 #define IIUT_PP_DEC_77 76
173 #define IIUT_PP_DEC_78 77
174 #define IIUT_PP_DEC_79 78
175 #define IIUT_PP_DEC_80 79
176 #define IIUT_PP_DEC_81 80
177 #define IIUT_PP_DEC_82 81
178 #define IIUT_PP_DEC_83 82
179 #define IIUT_PP_DEC_84 83
180 #define IIUT_PP_DEC_85 84
181 #define IIUT_PP_DEC_86 85
182 #define IIUT_PP_DEC_87 86
183 #define IIUT_PP_DEC_88 87
184 #define IIUT_PP_DEC_89 88
185 #define IIUT_PP_DEC_90 89
186 #define IIUT_PP_DEC_91 90
187 #define IIUT_PP_DEC_92 91
188 #define IIUT_PP_DEC_93 92
189 #define IIUT_PP_DEC_94 93
190 #define IIUT_PP_DEC_95 94
191 #define IIUT_PP_DEC_96 95
192 #define IIUT_PP_DEC_97 96
193 #define IIUT_PP_DEC_98 97
194 #define IIUT_PP_DEC_99 98
195 #define IIUT_PP_DEC_100 99
196 
197 // INC
198 #define IUTEST_PP_INC(n) IIUT_PP_INC_I(n)
199 #define IIUT_PP_INC_I(n) IIUT_PP_INC_##n
200 #define IIUT_PP_INC_0 1
201 #define IIUT_PP_INC_1 2
202 #define IIUT_PP_INC_2 3
203 #define IIUT_PP_INC_3 4
204 #define IIUT_PP_INC_4 5
205 #define IIUT_PP_INC_5 6
206 #define IIUT_PP_INC_6 7
207 #define IIUT_PP_INC_7 8
208 #define IIUT_PP_INC_8 9
209 #define IIUT_PP_INC_9 10
210 #define IIUT_PP_INC_10 11
211 #define IIUT_PP_INC_11 12
212 #define IIUT_PP_INC_12 13
213 #define IIUT_PP_INC_13 14
214 #define IIUT_PP_INC_14 15
215 #define IIUT_PP_INC_15 16
216 #define IIUT_PP_INC_16 17
217 #define IIUT_PP_INC_17 18
218 #define IIUT_PP_INC_18 19
219 #define IIUT_PP_INC_19 20
220 #define IIUT_PP_INC_20 21
221 #define IIUT_PP_INC_21 22
222 #define IIUT_PP_INC_22 23
223 #define IIUT_PP_INC_23 24
224 #define IIUT_PP_INC_24 25
225 #define IIUT_PP_INC_25 26
226 #define IIUT_PP_INC_26 27
227 #define IIUT_PP_INC_27 28
228 #define IIUT_PP_INC_28 29
229 #define IIUT_PP_INC_29 30
230 #define IIUT_PP_INC_30 31
231 #define IIUT_PP_INC_31 32
232 #define IIUT_PP_INC_32 33
233 #define IIUT_PP_INC_33 34
234 #define IIUT_PP_INC_34 35
235 #define IIUT_PP_INC_35 36
236 #define IIUT_PP_INC_36 37
237 #define IIUT_PP_INC_37 38
238 #define IIUT_PP_INC_38 39
239 #define IIUT_PP_INC_39 40
240 #define IIUT_PP_INC_40 41
241 #define IIUT_PP_INC_41 42
242 #define IIUT_PP_INC_42 43
243 #define IIUT_PP_INC_43 44
244 #define IIUT_PP_INC_44 45
245 #define IIUT_PP_INC_45 46
246 #define IIUT_PP_INC_46 47
247 #define IIUT_PP_INC_47 48
248 #define IIUT_PP_INC_48 49
249 #define IIUT_PP_INC_49 50
250 #define IIUT_PP_INC_50 51
251 #define IIUT_PP_INC_51 52
252 #define IIUT_PP_INC_52 53
253 #define IIUT_PP_INC_53 54
254 #define IIUT_PP_INC_54 55
255 #define IIUT_PP_INC_55 56
256 #define IIUT_PP_INC_56 57
257 #define IIUT_PP_INC_57 58
258 #define IIUT_PP_INC_58 59
259 #define IIUT_PP_INC_59 60
260 #define IIUT_PP_INC_60 61
261 #define IIUT_PP_INC_61 62
262 #define IIUT_PP_INC_62 63
263 #define IIUT_PP_INC_63 64
264 #define IIUT_PP_INC_64 65
265 #define IIUT_PP_INC_65 66
266 #define IIUT_PP_INC_66 67
267 #define IIUT_PP_INC_67 68
268 #define IIUT_PP_INC_68 69
269 #define IIUT_PP_INC_69 70
270 #define IIUT_PP_INC_70 71
271 #define IIUT_PP_INC_71 72
272 #define IIUT_PP_INC_72 73
273 #define IIUT_PP_INC_73 74
274 #define IIUT_PP_INC_74 75
275 #define IIUT_PP_INC_75 76
276 #define IIUT_PP_INC_76 77
277 #define IIUT_PP_INC_77 78
278 #define IIUT_PP_INC_78 79
279 #define IIUT_PP_INC_79 80
280 #define IIUT_PP_INC_80 81
281 #define IIUT_PP_INC_81 82
282 #define IIUT_PP_INC_82 83
283 #define IIUT_PP_INC_83 84
284 #define IIUT_PP_INC_84 85
285 #define IIUT_PP_INC_85 86
286 #define IIUT_PP_INC_86 87
287 #define IIUT_PP_INC_87 88
288 #define IIUT_PP_INC_88 89
289 #define IIUT_PP_INC_89 90
290 #define IIUT_PP_INC_90 91
291 #define IIUT_PP_INC_91 92
292 #define IIUT_PP_INC_92 93
293 #define IIUT_PP_INC_93 94
294 #define IIUT_PP_INC_94 95
295 #define IIUT_PP_INC_95 96
296 #define IIUT_PP_INC_96 97
297 #define IIUT_PP_INC_97 98
298 #define IIUT_PP_INC_98 99
299 #define IIUT_PP_INC_99 100
300 #define IIUT_PP_INC_100 nil
301 
302 // REPEAT
303 #define IUTEST_PP_LIMIT_REPEAT 50
304 
305 #define IIUT_PP_REPEAT_PARAMS_MACRO_(i, param) param
306 #define IIUT_PP_REPEAT_PARAMS_MACRO_IN_BINARY_(i, param1, param2) param2(i, param1)
307 
308 #define IUTEST_PP_REPEAT_PARAMS(n, param) IUTEST_PP_REPEAT(n, IIUT_PP_REPEAT_PARAMS_MACRO_, param)
309 #define IUTEST_PP_REPEAT(n, m, param) IUTEST_PP_REPEAT_BINARY(n, IIUT_PP_REPEAT_PARAMS_MACRO_IN_BINARY_, param, m)
310 
311 #define IIUT_PP_REPEAT_BINARY_PARAMS_MACRO_(i, param1, param2) param1 param2
312 
313 #define IUTEST_PP_REPEAT_BINARY_PARAMS(n, param1, param2) IUTEST_PP_REPEAT_BINARY(n, IIUT_PP_REPEAT_BINARY_PARAMS_MACRO_, param1, param2)
314 #define IUTEST_PP_REPEAT_BINARY(n, m, param1, param2) IIUT_PP_REPEAT_BINARY_PARAMS_I(n, m, param1, param2)
315 
316 #define IIUT_PP_REPEAT_BINARY_PARAMS_I(n, m, p1, p2) IUTEST_PP_CAT(IIUT_PP_REPEAT_I_, IUTEST_PP_DEC(n))(0, m, p1, p2)
317 
318 #define IIUT_PP_REPEAT_I_nil(i, m, p1, p2)
319 #define IIUT_PP_REPEAT_I_0( i, m, p1, p2) m(i, p1, p2)
320 #define IIUT_PP_REPEAT_I_1( i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_0 (IUTEST_PP_INC(i), m, p1, p2)
321 #define IIUT_PP_REPEAT_I_2( i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_1 (IUTEST_PP_INC(i), m, p1, p2)
322 #define IIUT_PP_REPEAT_I_3( i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_2 (IUTEST_PP_INC(i), m, p1, p2)
323 #define IIUT_PP_REPEAT_I_4( i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_3 (IUTEST_PP_INC(i), m, p1, p2)
324 #define IIUT_PP_REPEAT_I_5( i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_4 (IUTEST_PP_INC(i), m, p1, p2)
325 #define IIUT_PP_REPEAT_I_6( i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_5 (IUTEST_PP_INC(i), m, p1, p2)
326 #define IIUT_PP_REPEAT_I_7( i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_6 (IUTEST_PP_INC(i), m, p1, p2)
327 #define IIUT_PP_REPEAT_I_8( i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_7 (IUTEST_PP_INC(i), m, p1, p2)
328 #define IIUT_PP_REPEAT_I_9( i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_8 (IUTEST_PP_INC(i), m, p1, p2)
329 #define IIUT_PP_REPEAT_I_10(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_9 (IUTEST_PP_INC(i), m, p1, p2)
330 #define IIUT_PP_REPEAT_I_11(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_10(IUTEST_PP_INC(i), m, p1, p2)
331 #define IIUT_PP_REPEAT_I_12(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_11(IUTEST_PP_INC(i), m, p1, p2)
332 #define IIUT_PP_REPEAT_I_13(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_12(IUTEST_PP_INC(i), m, p1, p2)
333 #define IIUT_PP_REPEAT_I_14(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_13(IUTEST_PP_INC(i), m, p1, p2)
334 #define IIUT_PP_REPEAT_I_15(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_14(IUTEST_PP_INC(i), m, p1, p2)
335 #define IIUT_PP_REPEAT_I_16(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_15(IUTEST_PP_INC(i), m, p1, p2)
336 #define IIUT_PP_REPEAT_I_17(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_16(IUTEST_PP_INC(i), m, p1, p2)
337 #define IIUT_PP_REPEAT_I_18(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_17(IUTEST_PP_INC(i), m, p1, p2)
338 #define IIUT_PP_REPEAT_I_19(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_18(IUTEST_PP_INC(i), m, p1, p2)
339 #define IIUT_PP_REPEAT_I_20(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_19(IUTEST_PP_INC(i), m, p1, p2)
340 #define IIUT_PP_REPEAT_I_21(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_20(IUTEST_PP_INC(i), m, p1, p2)
341 #define IIUT_PP_REPEAT_I_22(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_21(IUTEST_PP_INC(i), m, p1, p2)
342 #define IIUT_PP_REPEAT_I_23(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_22(IUTEST_PP_INC(i), m, p1, p2)
343 #define IIUT_PP_REPEAT_I_24(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_23(IUTEST_PP_INC(i), m, p1, p2)
344 #define IIUT_PP_REPEAT_I_25(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_24(IUTEST_PP_INC(i), m, p1, p2)
345 #define IIUT_PP_REPEAT_I_26(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_25(IUTEST_PP_INC(i), m, p1, p2)
346 #define IIUT_PP_REPEAT_I_27(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_26(IUTEST_PP_INC(i), m, p1, p2)
347 #define IIUT_PP_REPEAT_I_28(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_27(IUTEST_PP_INC(i), m, p1, p2)
348 #define IIUT_PP_REPEAT_I_29(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_28(IUTEST_PP_INC(i), m, p1, p2)
349 #define IIUT_PP_REPEAT_I_30(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_29(IUTEST_PP_INC(i), m, p1, p2)
350 #define IIUT_PP_REPEAT_I_31(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_30(IUTEST_PP_INC(i), m, p1, p2)
351 #define IIUT_PP_REPEAT_I_32(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_31(IUTEST_PP_INC(i), m, p1, p2)
352 #define IIUT_PP_REPEAT_I_33(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_32(IUTEST_PP_INC(i), m, p1, p2)
353 #define IIUT_PP_REPEAT_I_34(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_33(IUTEST_PP_INC(i), m, p1, p2)
354 #define IIUT_PP_REPEAT_I_35(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_34(IUTEST_PP_INC(i), m, p1, p2)
355 #define IIUT_PP_REPEAT_I_36(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_35(IUTEST_PP_INC(i), m, p1, p2)
356 #define IIUT_PP_REPEAT_I_37(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_36(IUTEST_PP_INC(i), m, p1, p2)
357 #define IIUT_PP_REPEAT_I_38(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_37(IUTEST_PP_INC(i), m, p1, p2)
358 #define IIUT_PP_REPEAT_I_39(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_38(IUTEST_PP_INC(i), m, p1, p2)
359 #define IIUT_PP_REPEAT_I_40(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_39(IUTEST_PP_INC(i), m, p1, p2)
360 #define IIUT_PP_REPEAT_I_41(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_40(IUTEST_PP_INC(i), m, p1, p2)
361 #define IIUT_PP_REPEAT_I_42(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_41(IUTEST_PP_INC(i), m, p1, p2)
362 #define IIUT_PP_REPEAT_I_43(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_42(IUTEST_PP_INC(i), m, p1, p2)
363 #define IIUT_PP_REPEAT_I_44(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_43(IUTEST_PP_INC(i), m, p1, p2)
364 #define IIUT_PP_REPEAT_I_45(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_44(IUTEST_PP_INC(i), m, p1, p2)
365 #define IIUT_PP_REPEAT_I_46(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_45(IUTEST_PP_INC(i), m, p1, p2)
366 #define IIUT_PP_REPEAT_I_47(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_46(IUTEST_PP_INC(i), m, p1, p2)
367 #define IIUT_PP_REPEAT_I_48(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_47(IUTEST_PP_INC(i), m, p1, p2)
368 #define IIUT_PP_REPEAT_I_49(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_48(IUTEST_PP_INC(i), m, p1, p2)
369 #define IIUT_PP_REPEAT_I_50(i, m, p1, p2) m(i, p1, p2) IIUT_PP_REPEAT_I_49(IUTEST_PP_INC(i), m, p1, p2)
370 
371 // ENUM
372 #define IUTEST_PP_LIMIT_ENUM 50
373 
374 #define IIUT_PP_ENUM_PARAMS_MACRO_(i, param) IUTEST_PP_CAT(param, i)
375 #define IIUT_PP_ENUM_PARAMS_MACRO_IN_BINARY_(i, param1, param2) param2(i, param1)
376 
377 #define IUTEST_PP_ENUM_PARAMS(n, param) IUTEST_PP_ENUM(n, IIUT_PP_ENUM_PARAMS_MACRO_, param)
378 #define IUTEST_PP_ENUM(n, m, param) IUTEST_PP_ENUM_BINARY(n, IIUT_PP_ENUM_PARAMS_MACRO_IN_BINARY_, param, m)
379 
380 #define IUTEST_PP_ENUM_SHIFTED_PARAMS(n, param) IUTEST_PP_ENUM_SHIFTED(n, IIUT_PP_ENUM_PARAMS_MACRO_, param)
381 #define IUTEST_PP_ENUM_SHIFTED(n, m, param) IUTEST_PP_ENUM_SHIFTED_BINARY(n, IIUT_PP_ENUM_PARAMS_MACRO_IN_BINARY_, param, m)
382 
383 #define IIUT_PP_ENUM_BINARY_PARAMS_MACRO_(i, param1, param2) IUTEST_PP_CAT(param1, i) IUTEST_PP_CAT(param2, i)
384 
385 #define IUTEST_PP_ENUM_BINARY_PARAMS(n, param1, param2) IUTEST_PP_ENUM_BINARY(n, IIUT_PP_ENUM_BINARY_PARAMS_MACRO_, param1, param2)
386 #define IUTEST_PP_ENUM_BINARY(n, m, param1, param2) IIUT_PP_ENUM_BINARY_PARAMS_I(0, n, m, param1, param2)
387 
388 #define IUTEST_PP_ENUM_SHIFTED_BINARY_PARAMS(n, param1, param2) IUTEST_PP_ENUM_BINARY(n, IIUT_PP_ENUM_BINARY_PARAMS_MACRO_, param1, param2)
389 #define IUTEST_PP_ENUM_SHIFTED_BINARY(n, m, param1, param2) IIUT_PP_ENUM_BINARY_PARAMS_I(1, n, m, param1, param2)
390 
391 #define IIUT_PP_ENUM_BINARY_PARAMS_I(begin, n, m, p1, p2) IUTEST_PP_CAT(IIUT_PP_ENUM_I_, IUTEST_PP_DEC(n))(begin, m, p1, p2)
392 
393 #define IIUT_PP_ENUM_I_nil(i, m, p1, p2)
394 #define IIUT_PP_ENUM_I_0( i, m, p1, p2) m(i, p1, p2)
395 #define IIUT_PP_ENUM_I_1( i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_0 (IUTEST_PP_INC(i), m, p1, p2)
396 #define IIUT_PP_ENUM_I_2( i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_1 (IUTEST_PP_INC(i), m, p1, p2)
397 #define IIUT_PP_ENUM_I_3( i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_2 (IUTEST_PP_INC(i), m, p1, p2)
398 #define IIUT_PP_ENUM_I_4( i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_3 (IUTEST_PP_INC(i), m, p1, p2)
399 #define IIUT_PP_ENUM_I_5( i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_4 (IUTEST_PP_INC(i), m, p1, p2)
400 #define IIUT_PP_ENUM_I_6( i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_5 (IUTEST_PP_INC(i), m, p1, p2)
401 #define IIUT_PP_ENUM_I_7( i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_6 (IUTEST_PP_INC(i), m, p1, p2)
402 #define IIUT_PP_ENUM_I_8( i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_7 (IUTEST_PP_INC(i), m, p1, p2)
403 #define IIUT_PP_ENUM_I_9( i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_8 (IUTEST_PP_INC(i), m, p1, p2)
404 #define IIUT_PP_ENUM_I_10(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_9 (IUTEST_PP_INC(i), m, p1, p2)
405 #define IIUT_PP_ENUM_I_11(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_10(IUTEST_PP_INC(i), m, p1, p2)
406 #define IIUT_PP_ENUM_I_12(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_11(IUTEST_PP_INC(i), m, p1, p2)
407 #define IIUT_PP_ENUM_I_13(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_12(IUTEST_PP_INC(i), m, p1, p2)
408 #define IIUT_PP_ENUM_I_14(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_13(IUTEST_PP_INC(i), m, p1, p2)
409 #define IIUT_PP_ENUM_I_15(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_14(IUTEST_PP_INC(i), m, p1, p2)
410 #define IIUT_PP_ENUM_I_16(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_15(IUTEST_PP_INC(i), m, p1, p2)
411 #define IIUT_PP_ENUM_I_17(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_16(IUTEST_PP_INC(i), m, p1, p2)
412 #define IIUT_PP_ENUM_I_18(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_17(IUTEST_PP_INC(i), m, p1, p2)
413 #define IIUT_PP_ENUM_I_19(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_18(IUTEST_PP_INC(i), m, p1, p2)
414 #define IIUT_PP_ENUM_I_20(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_19(IUTEST_PP_INC(i), m, p1, p2)
415 #define IIUT_PP_ENUM_I_21(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_20(IUTEST_PP_INC(i), m, p1, p2)
416 #define IIUT_PP_ENUM_I_22(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_21(IUTEST_PP_INC(i), m, p1, p2)
417 #define IIUT_PP_ENUM_I_23(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_22(IUTEST_PP_INC(i), m, p1, p2)
418 #define IIUT_PP_ENUM_I_24(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_23(IUTEST_PP_INC(i), m, p1, p2)
419 #define IIUT_PP_ENUM_I_25(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_24(IUTEST_PP_INC(i), m, p1, p2)
420 #define IIUT_PP_ENUM_I_26(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_25(IUTEST_PP_INC(i), m, p1, p2)
421 #define IIUT_PP_ENUM_I_27(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_26(IUTEST_PP_INC(i), m, p1, p2)
422 #define IIUT_PP_ENUM_I_28(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_27(IUTEST_PP_INC(i), m, p1, p2)
423 #define IIUT_PP_ENUM_I_29(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_28(IUTEST_PP_INC(i), m, p1, p2)
424 #define IIUT_PP_ENUM_I_30(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_29(IUTEST_PP_INC(i), m, p1, p2)
425 #define IIUT_PP_ENUM_I_31(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_30(IUTEST_PP_INC(i), m, p1, p2)
426 #define IIUT_PP_ENUM_I_32(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_31(IUTEST_PP_INC(i), m, p1, p2)
427 #define IIUT_PP_ENUM_I_33(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_32(IUTEST_PP_INC(i), m, p1, p2)
428 #define IIUT_PP_ENUM_I_34(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_33(IUTEST_PP_INC(i), m, p1, p2)
429 #define IIUT_PP_ENUM_I_35(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_34(IUTEST_PP_INC(i), m, p1, p2)
430 #define IIUT_PP_ENUM_I_36(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_35(IUTEST_PP_INC(i), m, p1, p2)
431 #define IIUT_PP_ENUM_I_37(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_36(IUTEST_PP_INC(i), m, p1, p2)
432 #define IIUT_PP_ENUM_I_38(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_37(IUTEST_PP_INC(i), m, p1, p2)
433 #define IIUT_PP_ENUM_I_39(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_38(IUTEST_PP_INC(i), m, p1, p2)
434 #define IIUT_PP_ENUM_I_40(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_39(IUTEST_PP_INC(i), m, p1, p2)
435 #define IIUT_PP_ENUM_I_41(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_40(IUTEST_PP_INC(i), m, p1, p2)
436 #define IIUT_PP_ENUM_I_42(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_41(IUTEST_PP_INC(i), m, p1, p2)
437 #define IIUT_PP_ENUM_I_43(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_42(IUTEST_PP_INC(i), m, p1, p2)
438 #define IIUT_PP_ENUM_I_44(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_43(IUTEST_PP_INC(i), m, p1, p2)
439 #define IIUT_PP_ENUM_I_45(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_44(IUTEST_PP_INC(i), m, p1, p2)
440 #define IIUT_PP_ENUM_I_46(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_45(IUTEST_PP_INC(i), m, p1, p2)
441 #define IIUT_PP_ENUM_I_47(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_46(IUTEST_PP_INC(i), m, p1, p2)
442 #define IIUT_PP_ENUM_I_48(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_47(IUTEST_PP_INC(i), m, p1, p2)
443 #define IIUT_PP_ENUM_I_49(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_48(IUTEST_PP_INC(i), m, p1, p2)
444 #define IIUT_PP_ENUM_I_50(i, m, p1, p2) m(i, p1, p2), IIUT_PP_ENUM_I_49(IUTEST_PP_INC(i), m, p1, p2)
445 
446 // BOOL
447 #define IUTEST_PP_BOOL(n) IIUT_PP_BOOL_I(n)
448 #define IIUT_PP_BOOL_I(n) IIUT_PP_BOOL_##n
449 #define IIUT_PP_BOOL_0 0
450 #define IIUT_PP_BOOL_1 1
451 #define IIUT_PP_BOOL_2 1
452 #define IIUT_PP_BOOL_3 1
453 #define IIUT_PP_BOOL_4 1
454 #define IIUT_PP_BOOL_5 1
455 #define IIUT_PP_BOOL_6 1
456 #define IIUT_PP_BOOL_7 1
457 #define IIUT_PP_BOOL_8 1
458 #define IIUT_PP_BOOL_9 1
459 #define IIUT_PP_BOOL_10 1
460 #define IIUT_PP_BOOL_11 1
461 #define IIUT_PP_BOOL_12 1
462 #define IIUT_PP_BOOL_13 1
463 #define IIUT_PP_BOOL_14 1
464 #define IIUT_PP_BOOL_15 1
465 #define IIUT_PP_BOOL_16 1
466 #define IIUT_PP_BOOL_17 1
467 #define IIUT_PP_BOOL_18 1
468 #define IIUT_PP_BOOL_19 1
469 #define IIUT_PP_BOOL_20 1
470 #define IIUT_PP_BOOL_21 1
471 #define IIUT_PP_BOOL_22 1
472 #define IIUT_PP_BOOL_23 1
473 #define IIUT_PP_BOOL_24 1
474 #define IIUT_PP_BOOL_25 1
475 #define IIUT_PP_BOOL_26 1
476 #define IIUT_PP_BOOL_27 1
477 #define IIUT_PP_BOOL_28 1
478 #define IIUT_PP_BOOL_29 1
479 #define IIUT_PP_BOOL_30 1
480 #define IIUT_PP_BOOL_31 1
481 #define IIUT_PP_BOOL_32 1
482 #define IIUT_PP_BOOL_33 1
483 #define IIUT_PP_BOOL_34 1
484 #define IIUT_PP_BOOL_35 1
485 #define IIUT_PP_BOOL_36 1
486 #define IIUT_PP_BOOL_37 1
487 #define IIUT_PP_BOOL_38 1
488 #define IIUT_PP_BOOL_39 1
489 #define IIUT_PP_BOOL_40 1
490 #define IIUT_PP_BOOL_41 1
491 #define IIUT_PP_BOOL_42 1
492 #define IIUT_PP_BOOL_43 1
493 #define IIUT_PP_BOOL_44 1
494 #define IIUT_PP_BOOL_45 1
495 #define IIUT_PP_BOOL_46 1
496 #define IIUT_PP_BOOL_47 1
497 #define IIUT_PP_BOOL_48 1
498 #define IIUT_PP_BOOL_49 1
499 #define IIUT_PP_BOOL_50 1
500 #define IIUT_PP_BOOL_51 1
501 #define IIUT_PP_BOOL_52 1
502 #define IIUT_PP_BOOL_53 1
503 #define IIUT_PP_BOOL_54 1
504 #define IIUT_PP_BOOL_55 1
505 #define IIUT_PP_BOOL_56 1
506 #define IIUT_PP_BOOL_57 1
507 #define IIUT_PP_BOOL_58 1
508 #define IIUT_PP_BOOL_59 1
509 #define IIUT_PP_BOOL_60 1
510 #define IIUT_PP_BOOL_61 1
511 #define IIUT_PP_BOOL_62 1
512 #define IIUT_PP_BOOL_63 1
513 #define IIUT_PP_BOOL_64 1
514 #define IIUT_PP_BOOL_65 1
515 #define IIUT_PP_BOOL_66 1
516 #define IIUT_PP_BOOL_67 1
517 #define IIUT_PP_BOOL_68 1
518 #define IIUT_PP_BOOL_69 1
519 #define IIUT_PP_BOOL_70 1
520 #define IIUT_PP_BOOL_71 1
521 #define IIUT_PP_BOOL_72 1
522 #define IIUT_PP_BOOL_73 1
523 #define IIUT_PP_BOOL_74 1
524 #define IIUT_PP_BOOL_75 1
525 #define IIUT_PP_BOOL_76 1
526 #define IIUT_PP_BOOL_77 1
527 #define IIUT_PP_BOOL_78 1
528 #define IIUT_PP_BOOL_79 1
529 #define IIUT_PP_BOOL_80 1
530 #define IIUT_PP_BOOL_81 1
531 #define IIUT_PP_BOOL_82 1
532 #define IIUT_PP_BOOL_83 1
533 #define IIUT_PP_BOOL_84 1
534 #define IIUT_PP_BOOL_85 1
535 #define IIUT_PP_BOOL_86 1
536 #define IIUT_PP_BOOL_87 1
537 #define IIUT_PP_BOOL_88 1
538 #define IIUT_PP_BOOL_89 1
539 #define IIUT_PP_BOOL_90 1
540 #define IIUT_PP_BOOL_91 1
541 #define IIUT_PP_BOOL_92 1
542 #define IIUT_PP_BOOL_93 1
543 #define IIUT_PP_BOOL_94 1
544 #define IIUT_PP_BOOL_95 1
545 #define IIUT_PP_BOOL_96 1
546 #define IIUT_PP_BOOL_97 1
547 #define IIUT_PP_BOOL_98 1
548 #define IIUT_PP_BOOL_99 1
549 #define IIUT_PP_BOOL_100 1
550 #define IIUT_PP_BOOL_101 1
551 #define IIUT_PP_BOOL_102 1
552 #define IIUT_PP_BOOL_103 1
553 #define IIUT_PP_BOOL_104 1
554 #define IIUT_PP_BOOL_105 1
555 #define IIUT_PP_BOOL_106 1
556 #define IIUT_PP_BOOL_107 1
557 #define IIUT_PP_BOOL_108 1
558 #define IIUT_PP_BOOL_109 1
559 #define IIUT_PP_BOOL_110 1
560 #define IIUT_PP_BOOL_111 1
561 #define IIUT_PP_BOOL_112 1
562 #define IIUT_PP_BOOL_113 1
563 #define IIUT_PP_BOOL_114 1
564 #define IIUT_PP_BOOL_115 1
565 #define IIUT_PP_BOOL_116 1
566 #define IIUT_PP_BOOL_117 1
567 #define IIUT_PP_BOOL_118 1
568 #define IIUT_PP_BOOL_119 1
569 #define IIUT_PP_BOOL_120 1
570 #define IIUT_PP_BOOL_121 1
571 #define IIUT_PP_BOOL_122 1
572 #define IIUT_PP_BOOL_123 1
573 #define IIUT_PP_BOOL_124 1
574 #define IIUT_PP_BOOL_125 1
575 #define IIUT_PP_BOOL_126 1
576 #define IIUT_PP_BOOL_127 1
577 #define IIUT_PP_BOOL_128 1
578 #define IIUT_PP_BOOL_129 1
579 #define IIUT_PP_BOOL_130 1
580 #define IIUT_PP_BOOL_131 1
581 #define IIUT_PP_BOOL_132 1
582 #define IIUT_PP_BOOL_133 1
583 #define IIUT_PP_BOOL_134 1
584 #define IIUT_PP_BOOL_135 1
585 #define IIUT_PP_BOOL_136 1
586 #define IIUT_PP_BOOL_137 1
587 #define IIUT_PP_BOOL_138 1
588 #define IIUT_PP_BOOL_139 1
589 #define IIUT_PP_BOOL_140 1
590 #define IIUT_PP_BOOL_141 1
591 #define IIUT_PP_BOOL_142 1
592 #define IIUT_PP_BOOL_143 1
593 #define IIUT_PP_BOOL_144 1
594 #define IIUT_PP_BOOL_145 1
595 #define IIUT_PP_BOOL_146 1
596 #define IIUT_PP_BOOL_147 1
597 #define IIUT_PP_BOOL_148 1
598 #define IIUT_PP_BOOL_149 1
599 #define IIUT_PP_BOOL_150 1
600 #define IIUT_PP_BOOL_151 1
601 #define IIUT_PP_BOOL_152 1
602 #define IIUT_PP_BOOL_153 1
603 #define IIUT_PP_BOOL_154 1
604 #define IIUT_PP_BOOL_155 1
605 #define IIUT_PP_BOOL_156 1
606 #define IIUT_PP_BOOL_157 1
607 #define IIUT_PP_BOOL_158 1
608 #define IIUT_PP_BOOL_159 1
609 #define IIUT_PP_BOOL_160 1
610 #define IIUT_PP_BOOL_161 1
611 #define IIUT_PP_BOOL_162 1
612 #define IIUT_PP_BOOL_163 1
613 #define IIUT_PP_BOOL_164 1
614 #define IIUT_PP_BOOL_165 1
615 #define IIUT_PP_BOOL_166 1
616 #define IIUT_PP_BOOL_167 1
617 #define IIUT_PP_BOOL_168 1
618 #define IIUT_PP_BOOL_169 1
619 #define IIUT_PP_BOOL_170 1
620 #define IIUT_PP_BOOL_171 1
621 #define IIUT_PP_BOOL_172 1
622 #define IIUT_PP_BOOL_173 1
623 #define IIUT_PP_BOOL_174 1
624 #define IIUT_PP_BOOL_175 1
625 #define IIUT_PP_BOOL_176 1
626 #define IIUT_PP_BOOL_177 1
627 #define IIUT_PP_BOOL_178 1
628 #define IIUT_PP_BOOL_179 1
629 #define IIUT_PP_BOOL_180 1
630 #define IIUT_PP_BOOL_181 1
631 #define IIUT_PP_BOOL_182 1
632 #define IIUT_PP_BOOL_183 1
633 #define IIUT_PP_BOOL_184 1
634 #define IIUT_PP_BOOL_185 1
635 #define IIUT_PP_BOOL_186 1
636 #define IIUT_PP_BOOL_187 1
637 #define IIUT_PP_BOOL_188 1
638 #define IIUT_PP_BOOL_189 1
639 #define IIUT_PP_BOOL_190 1
640 #define IIUT_PP_BOOL_191 1
641 #define IIUT_PP_BOOL_192 1
642 #define IIUT_PP_BOOL_193 1
643 #define IIUT_PP_BOOL_194 1
644 #define IIUT_PP_BOOL_195 1
645 #define IIUT_PP_BOOL_196 1
646 #define IIUT_PP_BOOL_197 1
647 #define IIUT_PP_BOOL_198 1
648 #define IIUT_PP_BOOL_199 1
649 #define IIUT_PP_BOOL_200 1
650 #define IIUT_PP_BOOL_201 1
651 #define IIUT_PP_BOOL_202 1
652 #define IIUT_PP_BOOL_203 1
653 #define IIUT_PP_BOOL_204 1
654 #define IIUT_PP_BOOL_205 1
655 #define IIUT_PP_BOOL_206 1
656 #define IIUT_PP_BOOL_207 1
657 #define IIUT_PP_BOOL_208 1
658 #define IIUT_PP_BOOL_209 1
659 #define IIUT_PP_BOOL_210 1
660 #define IIUT_PP_BOOL_211 1
661 #define IIUT_PP_BOOL_212 1
662 #define IIUT_PP_BOOL_213 1
663 #define IIUT_PP_BOOL_214 1
664 #define IIUT_PP_BOOL_215 1
665 #define IIUT_PP_BOOL_216 1
666 #define IIUT_PP_BOOL_217 1
667 #define IIUT_PP_BOOL_218 1
668 #define IIUT_PP_BOOL_219 1
669 #define IIUT_PP_BOOL_220 1
670 #define IIUT_PP_BOOL_221 1
671 #define IIUT_PP_BOOL_222 1
672 #define IIUT_PP_BOOL_223 1
673 #define IIUT_PP_BOOL_224 1
674 #define IIUT_PP_BOOL_225 1
675 #define IIUT_PP_BOOL_226 1
676 #define IIUT_PP_BOOL_227 1
677 #define IIUT_PP_BOOL_228 1
678 #define IIUT_PP_BOOL_229 1
679 #define IIUT_PP_BOOL_230 1
680 #define IIUT_PP_BOOL_231 1
681 #define IIUT_PP_BOOL_232 1
682 #define IIUT_PP_BOOL_233 1
683 #define IIUT_PP_BOOL_234 1
684 #define IIUT_PP_BOOL_235 1
685 #define IIUT_PP_BOOL_236 1
686 #define IIUT_PP_BOOL_237 1
687 #define IIUT_PP_BOOL_238 1
688 #define IIUT_PP_BOOL_239 1
689 #define IIUT_PP_BOOL_240 1
690 #define IIUT_PP_BOOL_241 1
691 #define IIUT_PP_BOOL_242 1
692 #define IIUT_PP_BOOL_243 1
693 #define IIUT_PP_BOOL_244 1
694 #define IIUT_PP_BOOL_245 1
695 #define IIUT_PP_BOOL_246 1
696 #define IIUT_PP_BOOL_247 1
697 #define IIUT_PP_BOOL_248 1
698 #define IIUT_PP_BOOL_249 1
699 #define IIUT_PP_BOOL_250 1
700 #define IIUT_PP_BOOL_251 1
701 #define IIUT_PP_BOOL_252 1
702 #define IIUT_PP_BOOL_253 1
703 #define IIUT_PP_BOOL_254 1
704 #define IIUT_PP_BOOL_255 1
705 
706 // IF
707 #define IUTEST_PP_IF(cond, t, f) IIUT_PP_IF_I(IUTEST_PP_BOOL(cond), t, f)
708 #define IIUT_PP_IF_I(cond, t, f) IUTEST_PP_CAT(IIUT_PP_IF_, cond)(t, f)
709 #define IIUT_PP_IF_0(t, f) f
710 #define IIUT_PP_IF_1(t, f) t
711 
712 // IS EMPTY
713 #define IUTEST_PP_IS_EMPTY(x) IIUT_PP_IS_EMPTY_I(x IIUT_PP_EMPTY_TAG)
714 #define IIUT_PP_IS_EMPTY_I(x) IIUT_PP_IS_EMPTY_I_( IUTEST_PP_CAT(IIUT_PP_EMPTY_TAG_, x)() )
715 #define IIUT_PP_IS_EMPTY_I_(x) IIUT_PP_IS_EMPTY_II((x))
716 #define IIUT_PP_IS_EMPTY_II(x) IIUT_PP_IS_EMPTY_II_ x
717 #define IIUT_PP_IS_EMPTY_II_(a, b) b
718 
719 #define IUTEST_PP_EMPTY() IUTEST_PP_EMPTY_()
720 #define IUTEST_PP_EMPTY_()
721 #define IIUT_PP_EMPTY_TAG() , 0
722 #define IIUT_PP_EMPTY_TAG_IIUT_PP_EMPTY_TAG 1, 1 IUTEST_PP_EMPTY
723 
724 // IF EMPTY
725 #define IUTEST_PP_IF_EMPTY(x, t, f) IUTEST_PP_IF(IUTEST_PP_IS_EMPTY(x), t, f)
726 
727 // IDENTITY
728 #define IUTEST_PP_IDENTITY(x) x IUTEST_PP_EMPTY
729 
730 #if !defined(IUTEST_NO_VARIADIC_MACROS)
731 
732 #if !defined(IUTEST_PP_VA_CAT)
733 
734 #define IUTEST_PP_VA_CAT(a, ...) IIUT_PP_VA_CAT_I(a, __VA_ARGS__)
735 #define IIUT_PP_VA_CAT_I(a, ...) a ## __VA_ARGS__
736 
737 #endif
738 
739 #if defined(IUTEST_PP_MSVC_TRADITIONAL)
740 #define IIUT_PP_VD_CAT(a, b) IIUT_PP_VD_CAT_I(a, b)
741 #define IIUT_PP_VD_CAT_I(a, b) IIUT_PP_VD_CAT_II(a ## b)
742 #define IIUT_PP_VD_CAT_II(res) res
743 #define IIUT_PP_SPLIT(i, ...) IIUT_PP_VD_CAT(IIUT_PP_VA_CAT_I(IIUT_PP_SPLIT_, i)(__VA_ARGS__), IUTEST_PP_EMPTY())
744 #define IIUT_PP_IS_BEGIN_PARENS_C(...) 1 1
745 #else
746 #define IIUT_PP_SPLIT(i, ...) IIUT_PP_VA_CAT_I(IIUT_PP_SPLIT_, i)(__VA_ARGS__)
747 #define IIUT_PP_IS_BEGIN_PARENS_C(...) 1
748 #endif
749 #define IIUT_PP_SPLIT_0(a, ...) a
750 #define IIUT_PP_SPLIT_1(a, ...) __VA_ARGS__
751 
752 // IS_BEGIN_PARENS
753 #define IUTEST_PP_IS_BEGIN_PARENS(...) \
754  IIUT_PP_SPLIT(0, \
755  IUTEST_PP_VA_CAT( IIUT_PP_IS_BEGIN_PARENS_R_ \
756  , IIUT_PP_IS_BEGIN_PARENS_C __VA_ARGS__ ) )
757 
758 #define IIUT_PP_IS_BEGIN_PARENS_R_1 1,
759 
760 #define IIUT_PP_IS_BEGIN_PARENS_R_IIUT_PP_IS_BEGIN_PARENS_C 0,
761 
762 #endif
763 
768 #endif // INCG_IRIS_IUTEST_PP_HPP_E8F72184_9C72_4E74_B581_A1F51F291F3A_