iutest  1.17.99.14
iutest_pragma.hpp
[詳解]
1 //======================================================================
2 //-----------------------------------------------------------------------
13 //-----------------------------------------------------------------------
14 //======================================================================
15 #ifndef INCG_IRIS_IUTEST_PRAGMA_HPP_FBC5A1DE_3D0C_443E_84B1_5F0618DF9A6B_
16 #define INCG_IRIS_IUTEST_PRAGMA_HPP_FBC5A1DE_3D0C_443E_84B1_5F0618DF9A6B_
17 
18 //======================================================================
19 // define
20 
21 // pragma
22 #if defined(__clang__)
23 # define IUTEST_PRAGMA(x) _Pragma(#x)
24 #elif defined(__GNUC__)
25 # define IUTEST_PRAGMA(x) _Pragma(#x)
26 #elif defined(_MSC_VER) && _MSC_VER >= 1310
27 # define IUTEST_PRAGMA(x) __pragma(x)
28 #else
29 # define IUTEST_PRAGMA(x)
30 #endif
31 
32 #define IUTEST_PRAGMA_MESSAGE(m) IUTEST_PRAGMA(message (m))
33 
34 // pragma warning
35 #if defined(_MSC_VER)
36 # define IUTEST_PRAGMA_MSC_WARN_PUSH() IUTEST_PRAGMA(warning (push))
37 # define IUTEST_PRAGMA_MSC_WARN_DISABLE(x) IUTEST_PRAGMA(warning (disable: x))
38 # define IUTEST_PRAGMA_MSC_WARN_SUPPRESS(x) IUTEST_PRAGMA(warning (suppress: x))
39 # define IUTEST_PRAGMA_MSC_WARN_POP() IUTEST_PRAGMA(warning (pop))
40 #endif
41 
42 #ifndef IUTEST_PRAGMA_MSC_WARN_PUSH
43 # define IUTEST_PRAGMA_MSC_WARN_PUSH()
44 #endif
45 #ifndef IUTEST_PRAGMA_MSC_WARN_DISABLE
46 # define IUTEST_PRAGMA_MSC_WARN_DISABLE(x)
47 #endif
48 #ifndef IUTEST_PRAGMA_MSC_WARN_POP
49 # define IUTEST_PRAGMA_MSC_WARN_POP()
50 #endif
51 
52 #if defined(__clang__)
53 # define IUTEST_PRAGMA_CLANG_WARN_PUSH() IUTEST_PRAGMA(clang diagnostic push)
54 # define IUTEST_PRAGMA_CLANG_WARN_DISABLE(x) IUTEST_PRAGMA(clang diagnostic ignored x)
55 # define IUTEST_PRAGMA_CLANG_WARN_POP() IUTEST_PRAGMA(clang diagnostic pop)
56 # define IUTEST_PRAGMA_GCC_WARN_PUSH IUTEST_PRAGMA_CLANG_WARN_PUSH
57 # define IUTEST_PRAGMA_GCC_WARN_DISABLE IUTEST_PRAGMA_CLANG_WARN_DISABLE
58 # define IUTEST_PRAGMA_GCC_WARN_POP IUTEST_PRAGMA_CLANG_WARN_POP
59 #endif
60 
61 #if defined(__GNUC__)
62 # if ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
63 # define IUTEST_PRAGMA_GCC_WARN_PUSH() IUTEST_PRAGMA(GCC diagnostic push)
64 # define IUTEST_PRAGMA_GCC_WARN_DISABLE(x) IUTEST_PRAGMA(GCC diagnostic ignored x)
65 # define IUTEST_PRAGMA_GCC_WARN_POP() IUTEST_PRAGMA(GCC diagnostic pop)
66 # define IUTEST_PRAGMA_CLANG_WARN_PUSH IUTEST_PRAGMA_GCC_WARN_PUSH
67 # define IUTEST_PRAGMA_CLANG_WARN_DISABLE IUTEST_PRAGMA_GCC_WARN_DISABLE
68 # define IUTEST_PRAGMA_CLANG_WARN_POP IUTEST_PRAGMA_GCC_WARN_POP
69 # endif
70 #endif
71 
72 #ifndef IUTEST_PRAGMA_CLANG_WARN_PUSH
73 # define IUTEST_PRAGMA_CLANG_WARN_PUSH()
74 #endif
75 #ifndef IUTEST_PRAGMA_CLANG_WARN_DISABLE
76 # define IUTEST_PRAGMA_CLANG_WARN_DISABLE(x)
77 #endif
78 #ifndef IUTEST_PRAGMA_CLANG_WARN_POP
79 # define IUTEST_PRAGMA_CLANG_WARN_POP()
80 #endif
81 
82 #ifndef IUTEST_PRAGMA_GCC_WARN_PUSH
83 # define IUTEST_PRAGMA_GCC_WARN_PUSH()
84 #endif
85 #ifndef IUTEST_PRAGMA_GCC_WARN_DISABLE
86 # define IUTEST_PRAGMA_GCC_WARN_DISABLE(x)
87 #endif
88 #ifndef IUTEST_PRAGMA_GCC_WARN_POP
89 # define IUTEST_PRAGMA_GCC_WARN_POP()
90 #endif
91 
92 #if defined(__clang__)
93 # define IUTEST_PRAGMA_WARN_PUSH() IUTEST_PRAGMA_CLANG_WARN_PUSH()
94 # define IUTEST_PRAGMA_WARN_POP() IUTEST_PRAGMA_CLANG_WARN_PUSH()
95 # define IUTEST_PRAGMA_WARN_DISABLE(x) IUTEST_PRAGMA_CLANG_WARN_DISABLE(x)
96 #elif defined(__GNUC__)
97 # define IUTEST_PRAGMA_WARN_PUSH() IUTEST_PRAGMA_GCC_WARN_PUSH()
98 # define IUTEST_PRAGMA_WARN_POP() IUTEST_PRAGMA_GCC_WARN_POP()
99 # define IUTEST_PRAGMA_WARN_DISABLE(x) IUTEST_PRAGMA_GCC_WARN_DISABLE(x)
100 #elif defined(_MSC_VER)
101 # define IUTEST_PRAGMA_WARN_PUSH() IUTEST_PRAGMA_MSC_WARN_PUSH()
102 # define IUTEST_PRAGMA_WARN_POP() IUTEST_PRAGMA_MSC_WARN_POP()
103 # define IUTEST_PRAGMA_WARN_DISABLE(x)
104 #else
105 # define IUTEST_PRAGMA_WARN_PUSH()
106 # define IUTEST_PRAGMA_WARN_POP()
107 # define IUTEST_PRAGMA_WARN_DISABLE(x)
108 #endif
109 
110 
111 // pragma warning xxx
112 #if defined(_MSC_VER) && defined(__STDC_WANT_SECURE_LIB__) && __STDC_WANT_SECURE_LIB__
113 # if defined(__clang__)
114 # define IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_CLANG_WARN_PUSH() \
115  IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wdeprecated-declarations")
116 # define IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_END() IUTEST_PRAGMA_CLANG_WARN_POP()
117 # else
118 # define IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_MSC_WARN_PUSH() \
119  IUTEST_PRAGMA_MSC_WARN_DISABLE(4996)
120 # define IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_END() IUTEST_PRAGMA_MSC_WARN_POP()
121 # endif
122 #else
123 # define IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_BEGIN()
124 # define IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_END()
125 #endif
126 
127 #if defined(__clang__) || defined(__GNUC__)
128 # define IUTEST_PRAGMA_UNUSED_LOCAL_TYPEDEFS_WARN_DISABLE_BEGIN() \
129  IUTEST_PRAGMA_WARN_PUSH() \
130  IUTEST_PRAGMA_WARN_DISABLE("-Wunused-local-typedefs")
131 # define IUTEST_PRAGMA_UNUSED_LOCAL_TYPEDEFS_WARN_DISABLE_END() \
132  IUTEST_PRAGMA_WARN_POP()
133 #else
134 # define IUTEST_PRAGMA_UNUSED_LOCAL_TYPEDEFS_WARN_DISABLE_BEGIN()
135 # define IUTEST_PRAGMA_UNUSED_LOCAL_TYPEDEFS_WARN_DISABLE_END()
136 #endif
137 
138 #if defined(_MSC_VER)
139 # define IUTEST_PRAGMA_UNREACHCODE_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_MSC_WARN_PUSH() \
140  IUTEST_PRAGMA_MSC_WARN_DISABLE(4702)
141 # define IUTEST_PRAGMA_UNREACHCODE_WARN_DISABLE_END() IUTEST_PRAGMA_MSC_WARN_POP()
142 #else
143 # define IUTEST_PRAGMA_UNREACHCODE_WARN_DISABLE_BEGIN()
144 # define IUTEST_PRAGMA_UNREACHCODE_WARN_DISABLE_END()
145 #endif
146 
147 #if defined(_MSC_VER) && _MSC_VER < 1700
148 # define IUTEST_PRAGMA_EXTERN_TEMPLATE_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_MSC_WARN_PUSH() \
149  IUTEST_PRAGMA_MSC_WARN_DISABLE(4231)
150 # define IUTEST_PRAGMA_EXTERN_TEMPLATE_WARN_DISABLE_END() IUTEST_PRAGMA_MSC_WARN_POP()
151 #else
152 # define IUTEST_PRAGMA_EXTERN_TEMPLATE_WARN_DISABLE_BEGIN()
153 # define IUTEST_PRAGMA_EXTERN_TEMPLATE_WARN_DISABLE_END()
154 #endif
155 
156 #if defined(_MSC_VER) && _MSC_VER < 1900
157 # define IUTEST_PRAGMA_ASSIGNMENT_OPERATOR_COULD_NOT_GENERATE_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_MSC_WARN_PUSH() \
158  IUTEST_PRAGMA_MSC_WARN_DISABLE(4512)
159 # define IUTEST_PRAGMA_ASSIGNMENT_OPERATOR_COULD_NOT_GENERATE_WARN_DISABLE_END() IUTEST_PRAGMA_MSC_WARN_POP()
160 #else
161 # define IUTEST_PRAGMA_ASSIGNMENT_OPERATOR_COULD_NOT_GENERATE_WARN_DISABLE_BEGIN()
162 # define IUTEST_PRAGMA_ASSIGNMENT_OPERATOR_COULD_NOT_GENERATE_WARN_DISABLE_END()
163 #endif
164 
165 #if defined(_MSC_VER) && IUTEST_HAS_CONSTEXPR
166 # define IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_MSC_WARN_PUSH() \
167  IUTEST_PRAGMA_MSC_WARN_DISABLE(4592)
168 # define IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_END() IUTEST_PRAGMA_MSC_WARN_POP()
169 #else
170 # define IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_BEGIN()
171 # define IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_END()
172 #endif
173 
174 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_SIGN_COMPARE)
175 # if defined(__clang__)
176 # define IUTEST_PRAGMA_WARN_DISABLE_SIGN_COMPARE() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wsign-compare")
177 # elif defined(__GNUC__)
178 # define IUTEST_PRAGMA_WARN_DISABLE_SIGN_COMPARE() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wsign-compare")
179 # elif defined(_MSC_VER)
180 # define IUTEST_PRAGMA_WARN_DISABLE_SIGN_COMPARE() IUTEST_PRAGMA_MSC_WARN_DISABLE(4018 4287 4388 4389)
181 # else
182 # define IUTEST_PRAGMA_WARN_DISABLE_SIGN_COMPARE()
183 # endif
184 #endif
185 
186 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_EMPTY_BODY)
187 # if defined(__clang__)
188 # define IUTEST_PRAGMA_WARN_DISABLE_EMPTY_BODY() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wempty-body")
189 # elif defined(__GNUC__)
190 # define IUTEST_PRAGMA_WARN_DISABLE_EMPTY_BODY() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wempty-body")
191 # elif defined(_MSC_VER)
192 # define IUTEST_PRAGMA_WARN_DISABLE_EMPTY_BODY() IUTEST_PRAGMA_MSC_WARN_DISABLE(4390)
193 # else
194 # define IUTEST_PRAGMA_WARN_DISABLE_EMPTY_BODY()
195 # endif
196 #endif
197 
198 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_FLOAT_EQUAL)
199 # if defined(__clang__)
200 # define IUTEST_PRAGMA_WARN_DISABLE_FLOAT_EQUAL() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wfloat-equal")
201 # elif defined(__GNUC__)
202 # define IUTEST_PRAGMA_WARN_DISABLE_FLOAT_EQUAL() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wfloat-equal")
203 # elif defined(_MSC_VER)
204 # define IUTEST_PRAGMA_WARN_DISABLE_FLOAT_EQUAL() // IUTEST_PRAGMA_MSC_WARN_DISABLE(?)
205 # else
206 # define IUTEST_PRAGMA_WARN_DISABLE_FLOAT_EQUAL()
207 # endif
208 #endif
209 
210 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_DOUBLE_PROMOTION)
211 # if defined(__clang__)
212 # if IUTEST_CLANG_MAJOR > 3 || (IUTEST_CLANG_MAJOR == 3 && IUTEST_CLANG_MINOR >= 8)
213 # define IUTEST_PRAGMA_WARN_DISABLE_DOUBLE_PROMOTION() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wdouble-promotion")
214 # endif
215 # elif defined(__GNUC__)
216 # if __GNUC__ > 3
217 # define IUTEST_PRAGMA_WARN_DISABLE_DOUBLE_PROMOTION() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wdouble-promotion")
218 # endif
219 # elif defined(_MSC_VER)
220 # define IUTEST_PRAGMA_WARN_DISABLE_DOUBLE_PROMOTION() // IUTEST_PRAGMA_MSC_WARN_DISABLE(?)
221 # endif
222 #endif
223 
224 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_DOUBLE_PROMOTION)
225 # define IUTEST_PRAGMA_WARN_DISABLE_DOUBLE_PROMOTION()
226 #endif
227 
228 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_FLOAT_CONVERSION)
229 # if defined(__clang__)
230 # if IUTEST_CLANG_MAJOR > 3 || (IUTEST_CLANG_MAJOR == 3 && IUTEST_CLANG_MINOR >= 5)
231 # define IUTEST_PRAGMA_WARN_DISABLE_FLOAT_CONVERSION() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wfloat-conversion")
232 # endif
233 # elif defined(__GNUC__)
234 # if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9))
235 # define IUTEST_PRAGMA_WARN_DISABLE_FLOAT_CONVERSION() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wfloat-conversion")
236 # endif
237 # elif defined(_MSC_VER)
238 # define IUTEST_PRAGMA_WARN_DISABLE_FLOAT_CONVERSION() IUTEST_PRAGMA_MSC_WARN_DISABLE(4305)
239 # endif
240 #endif
241 
242 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_FLOAT_CONVERSION)
243 # define IUTEST_PRAGMA_WARN_DISABLE_FLOAT_CONVERSION()
244 #endif
245 
246 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_FLOAT_CONVERSION)
247 # if defined(__clang__)
248 # if IUTEST_CLANG_MAJOR > 9
249 # define IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_FLOAT_CONVERSION() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wimplicit-float-conversion")
250 # endif
251 # endif
252 #endif
253 
254 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_FLOAT_CONVERSION)
255 # define IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_FLOAT_CONVERSION() IUTEST_PRAGMA_WARN_DISABLE_FLOAT_CONVERSION()
256 #endif
257 
258 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_INT_FLOAT_CONVERSION)
259 # if defined(__clang__)
260 # if IUTEST_CLANG_MAJOR > 9
261 # define IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_INT_FLOAT_CONVERSION() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wimplicit-int-float-conversion")
262 # else
263 # define IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_INT_FLOAT_CONVERSION() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wconversion")
264 # endif
265 # elif defined(__GNUC__)
266 # define IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_INT_FLOAT_CONVERSION() //IUTEST_PRAGMA_GCC_WARN_DISABLE(?)
267 # elif defined(_MSC_VER)
268 # define IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_INT_FLOAT_CONVERSION() //IUTEST_PRAGMA_MSC_WARN_DISABLE(?)
269 # endif
270 #endif
271 
272 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_INT_FLOAT_CONVERSION)
273 # define IUTEST_PRAGMA_WARN_DISABLE_IMPLICIT_INT_FLOAT_CONVERSION()
274 #endif
275 
276 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_MISSING_NORETURN)
277 # if defined(__clang__)
278 # define IUTEST_PRAGMA_WARN_DISABLE_MISSING_NORETURN() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wmissing-noreturn")
279 # elif defined(__GNUC__)
280 # if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || __GNUC__ < 4
281 # define IUTEST_PRAGMA_WARN_DISABLE_MISSING_NORETURN() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wmissing-noreturn")
282 # else
283 # define IUTEST_PRAGMA_WARN_DISABLE_MISSING_NORETURN() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wsuggest-attribute=noreturn")
284 # endif
285 # elif defined(_MSC_VER)
286 # define IUTEST_PRAGMA_WARN_DISABLE_MISSING_NORETURN() //IUTEST_PRAGMA_MSC_WARN_DISABLE(?)
287 # endif
288 #endif
289 
290 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_MISSING_NORETURN)
291 # define IUTEST_PRAGMA_WARN_DISABLE_MISSING_NORETURN()
292 #endif
293 
294 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_NARROWING)
295 # if defined(__clang__)
296 # if IUTEST_CLANG_MAJOR > 2
297 # define IUTEST_PRAGMA_WARN_DISABLE_NARROWING() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wc++11-narrowing")
298 # endif
299 # elif defined(__GNUC__)
300 # if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))
301 # define IUTEST_PRAGMA_WARN_DISABLE_NARROWING() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wnarrowing")
302 # endif
303 # elif defined(_MSC_VER)
304 # define IUTEST_PRAGMA_WARN_DISABLE_NARROWING() IUTEST_PRAGMA_MSC_WARN_DISABLE(4838)
305 # endif
306 #endif
307 
308 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_NARROWING)
309 # define IUTEST_PRAGMA_WARN_DISABLE_NARROWING()
310 #endif
311 
312 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_FORMAT_NONLITERAL)
313 # if defined(__clang__)
314 # define IUTEST_PRAGMA_WARN_DISABLE_FORMAT_NONLITERAL() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wformat-nonliteral")
315 # elif defined(__GNUC__)
316 # define IUTEST_PRAGMA_WARN_DISABLE_FORMAT_NONLITERAL() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wformat-nonliteral")
317 # elif defined(_MSC_VER)
318 # define IUTEST_PRAGMA_WARN_DISABLE_FORMAT_NONLITERAL() // IUTEST_PRAGMA_MSC_WARN_DISABLE(?)
319 # else
320 # define IUTEST_PRAGMA_WARN_DISABLE_FORMAT_NONLITERAL()
321 # endif
322 #endif
323 
324 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_CAST_ALIGN)
325 # if defined(__clang__)
326 # define IUTEST_PRAGMA_WARN_DISABLE_CAST_ALIGN() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wcast-align")
327 # elif defined(__GNUC__)
328 # define IUTEST_PRAGMA_WARN_DISABLE_CAST_ALIGN() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wcast-align")
329 # elif defined(_MSC_VER)
330 # define IUTEST_PRAGMA_WARN_DISABLE_CAST_ALIGN() // IUTEST_PRAGMA_MSC_WARN_DISABLE(?)
331 # else
332 # define IUTEST_PRAGMA_WARN_DISABLE_CAST_ALIGN()
333 # endif
334 #endif
335 
336 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_CXX14_CONSTEXPR_NOT_IMPLY_CONST)
337 # if defined(__clang__)
338 # define IUTEST_PRAGMA_WARN_DISABLE_CXX14_CONSTEXPR_NOT_IMPLY_CONST()
339 # elif defined(__GNUC__)
340 # define IUTEST_PRAGMA_WARN_DISABLE_CXX14_CONSTEXPR_NOT_IMPLY_CONST()
341 # elif defined(_MSC_VER)
342 # define IUTEST_PRAGMA_WARN_DISABLE_CXX14_CONSTEXPR_NOT_IMPLY_CONST() IUTEST_PRAGMA_MSC_WARN_DISABLE(4814)
343 # else
344 # define IUTEST_PRAGMA_WARN_DISABLE_CXX14_CONSTEXPR_NOT_IMPLY_CONST()
345 # endif
346 #endif
347 
348 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_SWITCH_ENUM)
349 # if defined(__clang__)
350 # define IUTEST_PRAGMA_WARN_DISABLE_SWITCH_ENUM() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wswitch-enum")
351 # elif defined(__GNUC__)
352 # if __GNUC__ > 3
353 # define IUTEST_PRAGMA_WARN_DISABLE_SWITCH_ENUM() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wswitch-enum")
354 # else
355 # define IUTEST_PRAGMA_WARN_DISABLE_SWITCH_ENUM() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wswitch")
356 # endif
357 # elif defined(_MSC_VER)
358 # define IUTEST_PRAGMA_WARN_DISABLE_SWITCH_ENUM() IUTEST_PRAGMA_MSC_WARN_DISABLE(4061)
359 # endif
360 #endif
361 
362 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_SWITCH_ENUM)
363 # define IUTEST_PRAGMA_WARN_DISABLE_SWITCH_ENUM()
364 #endif
365 
366 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE)
367 # if defined(__clang__)
368 # if (IUTEST_CLANG_MAJOR > 3 || (IUTEST_CLANG_MAJOR == 3 && IUTEST_CLANG_MINOR > 0))
369 # define IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wdangling-else")
370 # endif
371 # elif defined(__GNUC__)
372 # if (__GNUC__ > 6)
373 # define IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wdangling-else")
374 # endif
375 # elif defined(_MSC_VER)
376 # define IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE()
377 # endif
378 #endif
379 
380 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE)
381 # define IUTEST_PRAGMA_WARN_DISABLE_DANGLING_ELSE()
382 #endif
383 
384 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_NOEXCEPT_TPYE)
385 # if defined(__GNUC__) && (__GNUC__ > 6)
386 # define IUTEST_PRAGMA_WARN_DISABLE_NOEXCEPT_TPYE() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wnoexcept-type")
387 # endif
388 #endif
389 
390 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_NOEXCEPT_TPYE)
391 # define IUTEST_PRAGMA_WARN_DISABLE_NOEXCEPT_TPYE()
392 #endif
393 
394 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_NONNULL)
395 # if defined(__clang__)
396 # define IUTEST_PRAGMA_WARN_DISABLE_NONNULL() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wnonnull")
397 # elif defined(__GNUC__)
398 # define IUTEST_PRAGMA_WARN_DISABLE_NONNULL() IUTEST_PRAGMA_GCC_WARN_DISABLE("-Wnonnull")
399 # elif defined(_MSC_VER)
400 # define IUTEST_PRAGMA_WARN_DISABLE_NONNULL() IUTEST_PRAGMA_MSC_WARN_DISABLE(6387)
401 # endif
402 #endif
403 
404 #if !defined(IUTEST_PRAGMA_WARN_DISABLE_NONNULL)
405 # define IUTEST_PRAGMA_WARN_DISABLE_NONNULL()
406 #endif
407 
408 #if defined(__clang__)
409 # if IUTEST_CLANG_MAJOR > 10
410 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_CLANG_11() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wsuggest-destructor-override")
411 # else
412 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_CLANG_11()
413 # endif
414 # if IUTEST_CLANG_MAJOR > 4
415 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_CLANG_5() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wzero-as-null-pointer-constant")
416 # else
417 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_CLANG_5()
418 # endif
419 # if IUTEST_CLANG_MAJOR > 2
420 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_CLANG_3() IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wexit-time-destructors")
421 # else
422 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_CLANG_3()
423 # endif
424 
425 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_CLANG_WARN_PUSH() \
426  IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wused-but-marked-unused") \
427  IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wold-style-cast") \
428  IUTEST_PRAGMA_CLANG_WARN_DISABLE("-Wunused-macros") \
429  IUTEST_PRAGMA_IUTEST_WARN_DISABLE_CLANG_11() \
430  IUTEST_PRAGMA_IUTEST_WARN_DISABLE_CLANG_5() \
431  IUTEST_PRAGMA_IUTEST_WARN_DISABLE_CLANG_3()
432 
433 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_END() IUTEST_PRAGMA_CLANG_WARN_POP()
434 #elif defined(__GNUC__)
435 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_GCC_WARN_PUSH()
436 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_END() IUTEST_PRAGMA_GCC_WARN_POP()
437 #elif defined(_MSC_VER)
438 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_BEGIN() IUTEST_PRAGMA_MSC_WARN_PUSH()
439 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_END() IUTEST_PRAGMA_MSC_WARN_POP()
440 #else
441 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_BEGIN()
442 # define IUTEST_PRAGMA_IUTEST_WARN_DISABLE_END()
443 #endif
444 
445 #endif // INCG_IRIS_IUTEST_PRAGMA_HPP_FBC5A1DE_3D0C_443E_84B1_5F0618DF9A6B_