1 /*============================================================================
2 Kitware Information Macro Library
3 Copyright 2010-2018 Kitware, Inc.
6 Redistribution and use in source and binary forms, with or without
7 modification, are permitted provided that the following conditions
10 * Redistributions of source code must retain the above copyright
11 notice, this list of conditions and the following disclaimer.
13 * Redistributions in binary form must reproduce the above copyright
14 notice, this list of conditions and the following disclaimer in the
15 documentation and/or other materials provided with the distribution.
17 * Neither the name of Kitware, Inc. nor the names of its contributors
18 may be used to endorse or promote products derived from this
19 software without specific prior written permission.
21 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 ============================================================================*/
34 This header defines macros with information about sized integer types.
35 Only information that can be determined using the preprocessor at
36 compilation time is available. No try-compile results may be added
37 here. Instead we memorize results on platforms of interest.
39 An includer may optionally define the following macros to suppress errors:
42 KWIML_INT_NO_VERIFY = skip verification declarations
43 KWIML_INT_NO_ERROR_INT64_T = type 'KWIML_INT_int64_t' is optional (*)
44 KWIML_INT_NO_ERROR_UINT64_T = type 'KWIML_INT_uint64_t' is optional (*)
45 KWIML_INT_NO_ERROR_INTPTR_T = type 'KWIML_INT_intptr_t' is optional (*)
46 KWIML_INT_NO_ERROR_UINTPTR_T = type 'KWIML_INT_uintptr_t' is optional (*)
48 An includer may optionally define the following macros to override defaults.
49 Either way, an includer may test these macros after inclusion:
51 KWIML_INT_HAVE_STDINT_H = include <stdint.h>
52 KWIML_INT_NO_STDINT_H = do not include <stdint.h>
53 KWIML_INT_HAVE_INTTYPES_H = include <inttypes.h>
54 KWIML_INT_NO_INTTYPES_H = do not include <inttypes.h>
56 An includer may test the following macros after inclusion:
58 KWIML_INT_VERSION = interface version number # of this header
60 KWIML_INT_HAVE_INT#_T = type 'int#_t' is available
61 KWIML_INT_HAVE_UINT#_T = type 'uint#_t' is available
62 # = 8, 16, 32, 64, PTR
64 KWIML_INT_int#_t = signed integer type exactly # bits wide
65 KWIML_INT_uint#_t = unsigned integer type exactly # bits wide
66 # = 8, 16, 32, 64 (*), ptr (*)
68 KWIML_INT_NO_INT64_T = type 'KWIML_INT_int64_t' not available
69 KWIML_INT_NO_UINT64_T = type 'KWIML_INT_uint64_t' not available
70 KWIML_INT_NO_INTPTR_T = type 'KWIML_INT_intptr_t' not available
71 KWIML_INT_NO_UINTPTR_T = type 'KWIML_INT_uintptr_t' not available
73 KWIML_INT_INT#_C(c) = signed integer constant at least # bits wide
74 KWIML_INT_UINT#_C(c) = unsigned integer constant at least # bits wide
77 KWIML_INT_<fmt># = print or scan format, <fmt> in table below
78 # = 8, 16, 32, 64, PTR (*)
81 ----------- ------------------------------
82 | decimal | decimal octal hexadecimal |
83 print | PRId PRIi | PRIu PRIo PRIx PRIX |
84 scan | SCNd SCNi | SCNu SCNo SCNx |
85 ----------- ------------------------------
87 The SCN*8 and SCN*64 format macros will not be defined on systems
88 with scanf implementations known not to support them.
90 KWIML_INT_BROKEN_<fmt># = macro <fmt># is incorrect if defined
91 Some compilers define integer format macros incorrectly for their
92 own formatted print/scan implementations.
94 KWIML_INT_BROKEN_INT#_C = macro INT#_C is incorrect if defined
95 KWIML_INT_BROKEN_UINT#_C = macro UINT#_C is incorrect if defined
96 Some compilers define integer constant macros incorrectly and
97 cannot handle literals as large as the integer type or even
98 produce bad preprocessor syntax.
100 KWIML_INT_BROKEN_INT8_T = type 'int8_t' is available but incorrect
101 Some compilers have a flag to make 'char' (un)signed but do not account
102 for it while defining int8_t in the non-default case.
104 The broken cases do not affect correctness of the macros documented above.
109 #define KWIML_INT_private_VERSION 1
111 /* Guard definition of this version. */
112 #ifndef KWIML_INT_detail_DEFINED_VERSION_1
113 # define KWIML_INT_detail_DEFINED_VERSION_1 1
114 # define KWIML_INT_private_DO_DEFINE
117 /* Guard verification of this version. */
118 #if !defined(KWIML_INT_NO_VERIFY)
119 # ifndef KWIML_INT_detail_VERIFIED_VERSION_1
120 # define KWIML_INT_detail_VERIFIED_VERSION_1
121 # define KWIML_INT_private_DO_VERIFY
125 #ifdef KWIML_INT_private_DO_DEFINE
126 #undef KWIML_INT_private_DO_DEFINE
128 /* Define version as most recent of those included. */
129 #if !defined(KWIML_INT_VERSION) || KWIML_INT_VERSION < KWIML_INT_private_VERSION
130 # undef KWIML_INT_VERSION
131 # define KWIML_INT_VERSION 1
134 /*--------------------------------------------------------------------------*/
135 #if defined(KWIML_INT_HAVE_STDINT_H) /* Already defined. */
136 #elif defined(KWIML_INT_NO_STDINT_H) /* Already defined. */
137 #elif defined(HAVE_STDINT_H) /* Optionally provided by includer. */
138 # define KWIML_INT_HAVE_STDINT_H 1
139 #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
140 # define KWIML_INT_HAVE_STDINT_H 1
141 #elif defined(_MSC_VER) /* MSVC */
142 # if _MSC_VER >= 1600
143 # define KWIML_INT_HAVE_STDINT_H 1
145 # define KWIML_INT_NO_STDINT_H 1
147 #elif defined(__BORLANDC__) /* Borland */
148 # if __BORLANDC__ >= 0x560
149 # define KWIML_INT_HAVE_STDINT_H 1
151 # define KWIML_INT_NO_STDINT_H 1
153 #elif defined(__WATCOMC__) /* Watcom */
154 # define KWIML_INT_NO_STDINT_H 1
157 /*--------------------------------------------------------------------------*/
158 #if defined(KWIML_INT_HAVE_INTTYPES_H) /* Already defined. */
159 #elif defined(KWIML_INT_NO_INTTYPES_H) /* Already defined. */
160 #elif defined(HAVE_INTTYPES_H) /* Optionally provided by includer. */
161 # define KWIML_INT_HAVE_INTTYPES_H 1
162 #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
163 # define KWIML_INT_HAVE_INTTYPES_H 1
164 #elif defined(_MSC_VER) /* MSVC */
165 # if _MSC_VER >= 1800
166 # define KWIML_INT_HAVE_INTTYPES_H 1
168 # define KWIML_INT_NO_INTTYPES_H 1
170 #elif defined(__BORLANDC__) /* Borland */
171 # define KWIML_INT_NO_INTTYPES_H 1
172 #elif defined(__WATCOMC__) /* Watcom */
173 # define KWIML_INT_NO_INTTYPES_H 1
174 #else /* Assume it exists. */
175 # define KWIML_INT_HAVE_INTTYPES_H 1
178 /*--------------------------------------------------------------------------*/
179 #if defined(KWIML_INT_HAVE_STDINT_H) && defined(KWIML_INT_NO_STDINT_H)
180 # error "Both KWIML_INT_HAVE_STDINT_H and KWIML_INT_NO_STDINT_H defined!"
182 #if defined(KWIML_INT_HAVE_INTTYPES_H) && defined(KWIML_INT_NO_INTTYPES_H)
183 # error "Both KWIML_INT_HAVE_INTTYPES_H and KWIML_INT_NO_INTTYPES_H defined!"
186 #if defined(KWIML_INT_HAVE_STDINT_H)
187 # ifndef KWIML_INT_detail_INCLUDED_STDINT_H
188 # define KWIML_INT_detail_INCLUDED_STDINT_H
192 #if defined(KWIML_INT_HAVE_INTTYPES_H)
193 # ifndef KWIML_INT_detail_INCLUDED_INTTYPES_H
194 # define KWIML_INT_detail_INCLUDED_INTTYPES_H
195 # if defined(__cplusplus) && !defined(__STDC_FORMAT_MACROS)
196 # define __STDC_FORMAT_MACROS
198 # include <inttypes.h>
202 #if defined(KWIML_INT_HAVE_STDINT_H) || defined(KWIML_INT_HAVE_INTTYPES_H)
203 #define KWIML_INT_HAVE_INT8_T 1
204 #define KWIML_INT_HAVE_UINT8_T 1
205 #define KWIML_INT_HAVE_INT16_T 1
206 #define KWIML_INT_HAVE_UINT16_T 1
207 #define KWIML_INT_HAVE_INT32_T 1
208 #define KWIML_INT_HAVE_UINT32_T 1
209 #define KWIML_INT_HAVE_INT64_T 1
210 #define KWIML_INT_HAVE_UINT64_T 1
211 #define KWIML_INT_HAVE_INTPTR_T 1
212 #define KWIML_INT_HAVE_UINTPTR_T 1
213 # if defined(__cplusplus)
214 # define KWIML_INT_detail_GLOBAL_NS(T) ::T
216 # define KWIML_INT_detail_GLOBAL_NS(T) T
220 #if defined(_AIX43) && !defined(_AIX50) && !defined(_AIX51)
221 /* AIX 4.3 defines these incorrectly with % and no quotes. */
222 # define KWIML_INT_BROKEN_PRId8 1
223 # define KWIML_INT_BROKEN_SCNd8 1
224 # define KWIML_INT_BROKEN_PRIi8 1
225 # define KWIML_INT_BROKEN_SCNi8 1
226 # define KWIML_INT_BROKEN_PRIo8 1
227 # define KWIML_INT_BROKEN_SCNo8 1
228 # define KWIML_INT_BROKEN_PRIu8 1
229 # define KWIML_INT_BROKEN_SCNu8 1
230 # define KWIML_INT_BROKEN_PRIx8 1
231 # define KWIML_INT_BROKEN_SCNx8 1
232 # define KWIML_INT_BROKEN_PRIX8 1
233 # define KWIML_INT_BROKEN_PRId16 1
234 # define KWIML_INT_BROKEN_SCNd16 1
235 # define KWIML_INT_BROKEN_PRIi16 1
236 # define KWIML_INT_BROKEN_SCNi16 1
237 # define KWIML_INT_BROKEN_PRIo16 1
238 # define KWIML_INT_BROKEN_SCNo16 1
239 # define KWIML_INT_BROKEN_PRIu16 1
240 # define KWIML_INT_BROKEN_SCNu16 1
241 # define KWIML_INT_BROKEN_PRIx16 1
242 # define KWIML_INT_BROKEN_SCNx16 1
243 # define KWIML_INT_BROKEN_PRIX16 1
244 # define KWIML_INT_BROKEN_PRId32 1
245 # define KWIML_INT_BROKEN_SCNd32 1
246 # define KWIML_INT_BROKEN_PRIi32 1
247 # define KWIML_INT_BROKEN_SCNi32 1
248 # define KWIML_INT_BROKEN_PRIo32 1
249 # define KWIML_INT_BROKEN_SCNo32 1
250 # define KWIML_INT_BROKEN_PRIu32 1
251 # define KWIML_INT_BROKEN_SCNu32 1
252 # define KWIML_INT_BROKEN_PRIx32 1
253 # define KWIML_INT_BROKEN_SCNx32 1
254 # define KWIML_INT_BROKEN_PRIX32 1
255 # define KWIML_INT_BROKEN_PRId64 1
256 # define KWIML_INT_BROKEN_SCNd64 1
257 # define KWIML_INT_BROKEN_PRIi64 1
258 # define KWIML_INT_BROKEN_SCNi64 1
259 # define KWIML_INT_BROKEN_PRIo64 1
260 # define KWIML_INT_BROKEN_SCNo64 1
261 # define KWIML_INT_BROKEN_PRIu64 1
262 # define KWIML_INT_BROKEN_SCNu64 1
263 # define KWIML_INT_BROKEN_PRIx64 1
264 # define KWIML_INT_BROKEN_SCNx64 1
265 # define KWIML_INT_BROKEN_PRIX64 1
266 # define KWIML_INT_BROKEN_PRIdPTR 1
267 # define KWIML_INT_BROKEN_SCNdPTR 1
268 # define KWIML_INT_BROKEN_PRIiPTR 1
269 # define KWIML_INT_BROKEN_SCNiPTR 1
270 # define KWIML_INT_BROKEN_PRIoPTR 1
271 # define KWIML_INT_BROKEN_SCNoPTR 1
272 # define KWIML_INT_BROKEN_PRIuPTR 1
273 # define KWIML_INT_BROKEN_SCNuPTR 1
274 # define KWIML_INT_BROKEN_PRIxPTR 1
275 # define KWIML_INT_BROKEN_SCNxPTR 1
276 # define KWIML_INT_BROKEN_PRIXPTR 1
279 #if defined(_MSC_VER) && _MSC_VER < 1900
280 /* MSVC scanf seems broken on 8-bit sizes until 19.00 */
281 # define KWIML_INT_BROKEN_SCNd8 1
282 # define KWIML_INT_BROKEN_SCNi8 1
283 # define KWIML_INT_BROKEN_SCNo8 1
284 # define KWIML_INT_BROKEN_SCNu8 1
285 # define KWIML_INT_BROKEN_SCNx8 1
288 #if (defined(__SUNPRO_C)||defined(__SUNPRO_CC)) && defined(_CHAR_IS_UNSIGNED)
289 # define KWIML_INT_BROKEN_INT8_T 1 /* system type defined incorrectly */
290 #elif defined(__BORLANDC__) && defined(_CHAR_UNSIGNED)
291 # define KWIML_INT_BROKEN_INT8_T 1 /* system type defined incorrectly */
294 /*--------------------------------------------------------------------------*/
295 #if !defined(KWIML_INT_int8_t)
296 # if defined(KWIML_INT_HAVE_INT8_T) && !defined(KWIML_INT_BROKEN_INT8_T)
297 # define KWIML_INT_int8_t KWIML_INT_detail_GLOBAL_NS(int8_t)
299 # define KWIML_INT_int8_t signed char
302 #if !defined(KWIML_INT_uint8_t)
303 # if defined(KWIML_INT_HAVE_UINT8_T)
304 # define KWIML_INT_uint8_t KWIML_INT_detail_GLOBAL_NS(uint8_t)
306 # define KWIML_INT_uint8_t unsigned char
310 #if defined(__INTEL_COMPILER)
312 # define KWIML_INT_private_NO_SCN8
314 #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
315 # define KWIML_INT_private_NO_SCN8
316 #elif defined(__BORLANDC__)
317 # define KWIML_INT_private_NO_SCN8
318 # define KWIML_INT_private_NO_SCN64
319 #elif defined(_MSC_VER) && _MSC_VER < 1900
320 # define KWIML_INT_private_NO_SCN8
321 #elif defined(__WATCOMC__)
322 # define KWIML_INT_private_NO_SCN8
323 # elif defined(__hpux) /* HP runtime lacks support (any compiler) */
324 # define KWIML_INT_private_NO_SCN8
328 #if !defined(KWIML_INT_PRId8)
329 # if defined(KWIML_INT_HAVE_INT8_T) && defined(PRId8) \
330 && !defined(KWIML_INT_BROKEN_PRId8)
331 # define KWIML_INT_PRId8 PRId8
333 # define KWIML_INT_PRId8 "d"
336 #if !defined(KWIML_INT_SCNd8)
337 # if defined(KWIML_INT_HAVE_INT8_T) && defined(SCNd8) \
338 && !defined(KWIML_INT_BROKEN_SCNd8)
339 # define KWIML_INT_SCNd8 SCNd8
340 # elif !defined(KWIML_INT_private_NO_SCN8)
341 # define KWIML_INT_SCNd8 "hhd"
344 #if !defined(KWIML_INT_PRIi8)
345 # if defined(KWIML_INT_HAVE_INT8_T) && defined(PRIi8) \
346 && !defined(KWIML_INT_BROKEN_PRIi8)
347 # define KWIML_INT_PRIi8 PRIi8
349 # define KWIML_INT_PRIi8 "i"
352 #if !defined(KWIML_INT_SCNi8)
353 # if defined(KWIML_INT_HAVE_INT8_T) && defined(SCNi8) \
354 && !defined(KWIML_INT_BROKEN_SCNi8)
355 # define KWIML_INT_SCNi8 SCNi8
356 # elif !defined(KWIML_INT_private_NO_SCN8)
357 # define KWIML_INT_SCNi8 "hhi"
361 /* 8-bit o, u, x, X */
362 #if !defined(KWIML_INT_PRIo8)
363 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(PRIo8) \
364 && !defined(KWIML_INT_BROKEN_PRIo8)
365 # define KWIML_INT_PRIo8 PRIo8
367 # define KWIML_INT_PRIo8 "o"
370 #if !defined(KWIML_INT_SCNo8)
371 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(SCNo8) \
372 && !defined(KWIML_INT_BROKEN_SCNo8)
373 # define KWIML_INT_SCNo8 SCNo8
374 # elif !defined(KWIML_INT_private_NO_SCN8)
375 # define KWIML_INT_SCNo8 "hho"
378 #if !defined(KWIML_INT_PRIu8)
379 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(PRIu8) \
380 && !defined(KWIML_INT_BROKEN_PRIu8)
381 # define KWIML_INT_PRIu8 PRIu8
383 # define KWIML_INT_PRIu8 "u"
386 #if !defined(KWIML_INT_SCNu8)
387 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(SCNu8) \
388 && !defined(KWIML_INT_BROKEN_SCNu8)
389 # define KWIML_INT_SCNu8 SCNu8
390 # elif !defined(KWIML_INT_private_NO_SCN8)
391 # define KWIML_INT_SCNu8 "hhu"
394 #if !defined(KWIML_INT_PRIx8)
395 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(PRIx8) \
396 && !defined(KWIML_INT_BROKEN_PRIx8)
397 # define KWIML_INT_PRIx8 PRIx8
399 # define KWIML_INT_PRIx8 "x"
402 #if !defined(KWIML_INT_SCNx8)
403 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(SCNx8) \
404 && !defined(KWIML_INT_BROKEN_SCNx8)
405 # define KWIML_INT_SCNx8 SCNx8
406 # elif !defined(KWIML_INT_private_NO_SCN8)
407 # define KWIML_INT_SCNx8 "hhx"
410 #if !defined(KWIML_INT_PRIX8)
411 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(PRIX8) \
412 && !defined(KWIML_INT_BROKEN_PRIX8)
413 # define KWIML_INT_PRIX8 PRIX8
415 # define KWIML_INT_PRIX8 "X"
419 /* 8-bit constants */
420 #if !defined(KWIML_INT_INT8_C)
421 # if defined(INT8_C) && !defined(KWIML_INT_BROKEN_INT8_C)
422 # define KWIML_INT_INT8_C(c) INT8_C(c)
424 # define KWIML_INT_INT8_C(c) c
427 #if !defined(KWIML_INT_UINT8_C)
428 # if defined(UINT8_C) && !defined(KWIML_INT_BROKEN_UINT8_C)
429 # define KWIML_INT_UINT8_C(c) UINT8_C(c)
431 # define KWIML_INT_UINT8_C(c) c ## u
435 /*--------------------------------------------------------------------------*/
436 #if !defined(KWIML_INT_int16_t)
437 # if defined(KWIML_INT_HAVE_INT16_T)
438 # define KWIML_INT_int16_t KWIML_INT_detail_GLOBAL_NS(int16_t)
440 # define KWIML_INT_int16_t signed short
443 #if !defined(KWIML_INT_uint16_t)
444 # if defined(KWIML_INT_HAVE_UINT16_T)
445 # define KWIML_INT_uint16_t KWIML_INT_detail_GLOBAL_NS(uint16_t)
447 # define KWIML_INT_uint16_t unsigned short
452 #if !defined(KWIML_INT_PRId16)
453 # if defined(KWIML_INT_HAVE_INT16_T) && defined(PRId16) \
454 && !defined(KWIML_INT_BROKEN_PRId16)
455 # define KWIML_INT_PRId16 PRId16
457 # define KWIML_INT_PRId16 "d"
460 #if !defined(KWIML_INT_SCNd16)
461 # if defined(KWIML_INT_HAVE_INT16_T) && defined(SCNd16) \
462 && !defined(KWIML_INT_BROKEN_SCNd16)
463 # define KWIML_INT_SCNd16 SCNd16
465 # define KWIML_INT_SCNd16 "hd"
468 #if !defined(KWIML_INT_PRIi16)
469 # if defined(KWIML_INT_HAVE_INT16_T) && defined(PRIi16) \
470 && !defined(KWIML_INT_BROKEN_PRIi16)
471 # define KWIML_INT_PRIi16 PRIi16
473 # define KWIML_INT_PRIi16 "i"
476 #if !defined(KWIML_INT_SCNi16)
477 # if defined(KWIML_INT_HAVE_INT16_T) && defined(SCNi16) \
478 && !defined(KWIML_INT_BROKEN_SCNi16)
479 # define KWIML_INT_SCNi16 SCNi16
481 # define KWIML_INT_SCNi16 "hi"
485 /* 16-bit o, u, x, X */
486 #if !defined(KWIML_INT_PRIo16)
487 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(PRIo16) \
488 && !defined(KWIML_INT_BROKEN_PRIo16)
489 # define KWIML_INT_PRIo16 PRIo16
491 # define KWIML_INT_PRIo16 "o"
494 #if !defined(KWIML_INT_SCNo16)
495 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(SCNo16) \
496 && !defined(KWIML_INT_BROKEN_SCNo16)
497 # define KWIML_INT_SCNo16 SCNo16
499 # define KWIML_INT_SCNo16 "ho"
502 #if !defined(KWIML_INT_PRIu16)
503 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(PRIu16) \
504 && !defined(KWIML_INT_BROKEN_PRIu16)
505 # define KWIML_INT_PRIu16 PRIu16
507 # define KWIML_INT_PRIu16 "u"
510 #if !defined(KWIML_INT_SCNu16)
511 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(SCNu16) \
512 && !defined(KWIML_INT_BROKEN_SCNu16)
513 # define KWIML_INT_SCNu16 SCNu16
515 # define KWIML_INT_SCNu16 "hu"
518 #if !defined(KWIML_INT_PRIx16)
519 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(PRIx16) \
520 && !defined(KWIML_INT_BROKEN_PRIx16)
521 # define KWIML_INT_PRIx16 PRIx16
523 # define KWIML_INT_PRIx16 "x"
526 #if !defined(KWIML_INT_SCNx16)
527 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(SCNx16) \
528 && !defined(KWIML_INT_BROKEN_SCNx16)
529 # define KWIML_INT_SCNx16 SCNx16
531 # define KWIML_INT_SCNx16 "hx"
534 #if !defined(KWIML_INT_PRIX16)
535 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(PRIX16) \
536 && !defined(KWIML_INT_BROKEN_PRIX16)
537 # define KWIML_INT_PRIX16 PRIX16
539 # define KWIML_INT_PRIX16 "X"
543 /* 16-bit constants */
544 #if !defined(KWIML_INT_INT16_C)
545 # if defined(INT16_C) && !defined(KWIML_INT_BROKEN_INT16_C)
546 # define KWIML_INT_INT16_C(c) INT16_C(c)
548 # define KWIML_INT_INT16_C(c) c
551 #if !defined(KWIML_INT_UINT16_C)
552 # if defined(UINT16_C) && !defined(KWIML_INT_BROKEN_UINT16_C)
553 # define KWIML_INT_UINT16_C(c) UINT16_C(c)
555 # define KWIML_INT_UINT16_C(c) c ## u
559 /*--------------------------------------------------------------------------*/
560 #if !defined(KWIML_INT_int32_t)
561 # if defined(KWIML_INT_HAVE_INT32_T)
562 # define KWIML_INT_int32_t KWIML_INT_detail_GLOBAL_NS(int32_t)
564 # define KWIML_INT_int32_t signed int
567 #if !defined(KWIML_INT_uint32_t)
568 # if defined(KWIML_INT_HAVE_UINT32_T)
569 # define KWIML_INT_uint32_t KWIML_INT_detail_GLOBAL_NS(uint32_t)
571 # define KWIML_INT_uint32_t unsigned int
576 #if !defined(KWIML_INT_PRId32)
577 # if defined(KWIML_INT_HAVE_INT32_T) && defined(PRId32) \
578 && !defined(KWIML_INT_BROKEN_PRId32)
579 # define KWIML_INT_PRId32 PRId32
581 # define KWIML_INT_PRId32 "d"
584 #if !defined(KWIML_INT_SCNd32)
585 # if defined(KWIML_INT_HAVE_INT32_T) && defined(SCNd32) \
586 && !defined(KWIML_INT_BROKEN_SCNd32)
587 # define KWIML_INT_SCNd32 SCNd32
589 # define KWIML_INT_SCNd32 "d"
592 #if !defined(KWIML_INT_PRIi32)
593 # if defined(KWIML_INT_HAVE_INT32_T) && defined(PRIi32) \
594 && !defined(KWIML_INT_BROKEN_PRIi32)
595 # define KWIML_INT_PRIi32 PRIi32
597 # define KWIML_INT_PRIi32 "i"
600 #if !defined(KWIML_INT_SCNi32)
601 # if defined(KWIML_INT_HAVE_INT32_T) && defined(SCNi32) \
602 && !defined(KWIML_INT_BROKEN_SCNi32)
603 # define KWIML_INT_SCNi32 SCNi32
605 # define KWIML_INT_SCNi32 "i"
609 /* 32-bit o, u, x, X */
610 #if !defined(KWIML_INT_PRIo32)
611 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(PRIo32) \
612 && !defined(KWIML_INT_BROKEN_PRIo32)
613 # define KWIML_INT_PRIo32 PRIo32
615 # define KWIML_INT_PRIo32 "o"
618 #if !defined(KWIML_INT_SCNo32)
619 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(SCNo32) \
620 && !defined(KWIML_INT_BROKEN_SCNo32)
621 # define KWIML_INT_SCNo32 SCNo32
623 # define KWIML_INT_SCNo32 "o"
626 #if !defined(KWIML_INT_PRIu32)
627 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(PRIu32) \
628 && !defined(KWIML_INT_BROKEN_PRIu32)
629 # define KWIML_INT_PRIu32 PRIu32
631 # define KWIML_INT_PRIu32 "u"
634 #if !defined(KWIML_INT_SCNu32)
635 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(SCNu32) \
636 && !defined(KWIML_INT_BROKEN_SCNu32)
637 # define KWIML_INT_SCNu32 SCNu32
639 # define KWIML_INT_SCNu32 "u"
642 #if !defined(KWIML_INT_PRIx32)
643 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(PRIx32) \
644 && !defined(KWIML_INT_BROKEN_PRIx32)
645 # define KWIML_INT_PRIx32 PRIx32
647 # define KWIML_INT_PRIx32 "x"
650 #if !defined(KWIML_INT_SCNx32)
651 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(SCNx32) \
652 && !defined(KWIML_INT_BROKEN_SCNx32)
653 # define KWIML_INT_SCNx32 SCNx32
655 # define KWIML_INT_SCNx32 "x"
658 #if !defined(KWIML_INT_PRIX32)
659 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(PRIX32) \
660 && !defined(KWIML_INT_BROKEN_PRIX32)
661 # define KWIML_INT_PRIX32 PRIX32
663 # define KWIML_INT_PRIX32 "X"
667 #if defined(__hpux) && defined(__GNUC__) && !defined(__LP64__) \
668 && defined(__CONCAT__) && defined(__CONCAT_U__)
669 /* Some HPs define UINT32_C incorrectly and break GNU. */
670 # define KWIML_INT_BROKEN_UINT32_C 1
673 /* 32-bit constants */
674 #if !defined(KWIML_INT_INT32_C)
675 # if defined(INT32_C) && !defined(KWIML_INT_BROKEN_INT32_C)
676 # define KWIML_INT_INT32_C(c) INT32_C(c)
678 # define KWIML_INT_INT32_C(c) c
681 #if !defined(KWIML_INT_UINT32_C)
682 # if defined(UINT32_C) && !defined(KWIML_INT_BROKEN_UINT32_C)
683 # define KWIML_INT_UINT32_C(c) UINT32_C(c)
685 # define KWIML_INT_UINT32_C(c) c ## u
689 /*--------------------------------------------------------------------------*/
690 #if !defined(KWIML_INT_int64_t) && !defined(KWIML_INT_NO_INT64_T)
691 # if defined(KWIML_INT_HAVE_INT64_T)
692 # define KWIML_INT_int64_t KWIML_INT_detail_GLOBAL_NS(int64_t)
693 # elif KWIML_ABI_SIZEOF_LONG == 8
694 # define KWIML_INT_int64_t signed long
695 # elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
696 # define KWIML_INT_int64_t signed long long
697 # elif defined(KWIML_ABI_SIZEOF___INT64)
698 # define KWIML_INT_int64_t signed __int64
699 # elif defined(KWIML_INT_NO_ERROR_INT64_T)
700 # define KWIML_INT_NO_INT64_T
702 # error "No type known for 'int64_t'."
705 #if !defined(KWIML_INT_uint64_t) && !defined(KWIML_INT_NO_UINT64_T)
706 # if defined(KWIML_INT_HAVE_UINT64_T)
707 # define KWIML_INT_uint64_t KWIML_INT_detail_GLOBAL_NS(uint64_t)
708 # elif KWIML_ABI_SIZEOF_LONG == 8
709 # define KWIML_INT_uint64_t unsigned long
710 # elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
711 # define KWIML_INT_uint64_t unsigned long long
712 # elif defined(KWIML_ABI_SIZEOF___INT64)
713 # define KWIML_INT_uint64_t unsigned __int64
714 # elif defined(KWIML_INT_NO_ERROR_UINT64_T)
715 # define KWIML_INT_NO_UINT64_T
717 # error "No type known for 'uint64_t'."
721 #if defined(__INTEL_COMPILER)
722 #elif defined(__BORLANDC__) && !defined(__CODEGEARC_VERSION__)
723 # define KWIML_INT_private_NO_FMTLL /* type 'long long' but not 'll' format */
724 # define KWIML_INT_BROKEN_INT64_C 1 /* system macro defined incorrectly */
725 # define KWIML_INT_BROKEN_UINT64_C 1 /* system macro defined incorrectly */
726 #elif defined(_MSC_VER) && _MSC_VER < 1400
727 # define KWIML_INT_private_NO_FMTLL /* type 'long long' but not 'll' format */
730 #if !defined(KWIML_INT_detail_FMT64)
731 # if KWIML_ABI_SIZEOF_LONG == 8
732 # define KWIML_INT_detail_FMT64 "l"
733 # elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
734 # if !defined(KWIML_INT_private_NO_FMTLL)
735 # define KWIML_INT_detail_FMT64 "ll"
737 # define KWIML_INT_detail_FMT64 "I64"
739 # elif defined(KWIML_ABI_SIZEOF___INT64)
740 # if defined(__BORLANDC__)
741 # define KWIML_INT_detail_FMT64 "L"
743 # define KWIML_INT_detail_FMT64 "I64"
748 #undef KWIML_INT_private_NO_FMTLL
751 #if !defined(KWIML_INT_PRId64)
752 # if defined(KWIML_INT_HAVE_INT64_T) && defined(PRId64) \
753 && !defined(KWIML_INT_BROKEN_PRId64)
754 # define KWIML_INT_PRId64 PRId64
755 # elif defined(KWIML_INT_detail_FMT64)
756 # define KWIML_INT_PRId64 KWIML_INT_detail_FMT64 "d"
759 #if !defined(KWIML_INT_SCNd64)
760 # if defined(KWIML_INT_HAVE_INT64_T) && defined(SCNd64) \
761 && !defined(KWIML_INT_BROKEN_SCNd64)
762 # define KWIML_INT_SCNd64 SCNd64
763 # elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
764 # define KWIML_INT_SCNd64 KWIML_INT_detail_FMT64 "d"
767 #if !defined(KWIML_INT_PRIi64)
768 # if defined(KWIML_INT_HAVE_INT64_T) && defined(PRIi64) \
769 && !defined(KWIML_INT_BROKEN_PRIi64)
770 # define KWIML_INT_PRIi64 PRIi64
771 # elif defined(KWIML_INT_detail_FMT64)
772 # define KWIML_INT_PRIi64 KWIML_INT_detail_FMT64 "d"
775 #if !defined(KWIML_INT_SCNi64)
776 # if defined(KWIML_INT_HAVE_INT64_T) && defined(SCNi64) \
777 && !defined(KWIML_INT_BROKEN_SCNi64)
778 # define KWIML_INT_SCNi64 SCNi64
779 # elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
780 # define KWIML_INT_SCNi64 KWIML_INT_detail_FMT64 "d"
784 /* 64-bit o, u, x, X */
785 #if !defined(KWIML_INT_PRIo64)
786 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(PRIo64) \
787 && !defined(KWIML_INT_BROKEN_PRIo64)
788 # define KWIML_INT_PRIo64 PRIo64
789 # elif defined(KWIML_INT_detail_FMT64)
790 # define KWIML_INT_PRIo64 KWIML_INT_detail_FMT64 "o"
793 #if !defined(KWIML_INT_SCNo64)
794 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(SCNo64) \
795 && !defined(KWIML_INT_BROKEN_SCNo64)
796 # define KWIML_INT_SCNo64 SCNo64
797 # elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
798 # define KWIML_INT_SCNo64 KWIML_INT_detail_FMT64 "o"
801 #if !defined(KWIML_INT_PRIu64)
802 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(PRIu64) \
803 && !defined(KWIML_INT_BROKEN_PRIu64)
804 # define KWIML_INT_PRIu64 PRIu64
805 # elif defined(KWIML_INT_detail_FMT64)
806 # define KWIML_INT_PRIu64 KWIML_INT_detail_FMT64 "u"
809 #if !defined(KWIML_INT_SCNu64)
810 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(SCNu64) \
811 && !defined(KWIML_INT_BROKEN_SCNu64)
812 # define KWIML_INT_SCNu64 SCNu64
813 # elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
814 # define KWIML_INT_SCNu64 KWIML_INT_detail_FMT64 "u"
817 #if !defined(KWIML_INT_PRIx64)
818 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(PRIx64) \
819 && !defined(KWIML_INT_BROKEN_PRIx64)
820 # define KWIML_INT_PRIx64 PRIx64
821 # elif defined(KWIML_INT_detail_FMT64)
822 # define KWIML_INT_PRIx64 KWIML_INT_detail_FMT64 "x"
825 #if !defined(KWIML_INT_SCNx64)
826 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(SCNx64) \
827 && !defined(KWIML_INT_BROKEN_SCNx64)
828 # define KWIML_INT_SCNx64 SCNx64
829 # elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
830 # define KWIML_INT_SCNx64 KWIML_INT_detail_FMT64 "x"
833 #if !defined(KWIML_INT_PRIX64)
834 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(PRIX64) \
835 && !defined(KWIML_INT_BROKEN_PRIX64)
836 # define KWIML_INT_PRIX64 PRIX64
837 # elif defined(KWIML_INT_detail_FMT64)
838 # define KWIML_INT_PRIX64 KWIML_INT_detail_FMT64 "X"
842 /* 64-bit constants */
843 #if !defined(KWIML_INT_INT64_C)
844 # if defined(KWIML_INT_HAVE_INT64_T) && defined(INT64_C) \
845 && !defined(KWIML_INT_BROKEN_INT64_C)
846 # define KWIML_INT_INT64_C(c) INT64_C(c)
847 # elif KWIML_ABI_SIZEOF_LONG == 8
848 # define KWIML_INT_INT64_C(c) c ## l
849 # elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
850 # define KWIML_INT_INT64_C(c) c ## ll
851 # elif defined(KWIML_ABI_SIZEOF___INT64)
852 # define KWIML_INT_INT64_C(c) c ## i64
855 #if !defined(KWIML_INT_UINT64_C)
856 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(UINT64_C) \
857 && !defined(KWIML_INT_BROKEN_UINT64_C)
858 # define KWIML_INT_UINT64_C(c) UINT64_C(c)
859 # elif KWIML_ABI_SIZEOF_LONG == 8
860 # define KWIML_INT_UINT64_C(c) c ## ul
861 # elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
862 # define KWIML_INT_UINT64_C(c) c ## ull
863 # elif defined(KWIML_ABI_SIZEOF___INT64)
864 # define KWIML_INT_UINT64_C(c) c ## ui64
868 /*--------------------------------------------------------------------------*/
869 #if !defined(KWIML_INT_intptr_t) && !defined(KWIML_INT_NO_INTPTR_T)
870 # if defined(KWIML_INT_HAVE_INTPTR_T)
871 # define KWIML_INT_intptr_t KWIML_INT_detail_GLOBAL_NS(intptr_t)
872 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
873 # define KWIML_INT_intptr_t KWIML_INT_int32_t
874 # elif !defined(KWIML_INT_NO_INT64_T)
875 # define KWIML_INT_intptr_t KWIML_INT_int64_t
876 # elif defined(KWIML_INT_NO_ERROR_INTPTR_T)
877 # define KWIML_INT_NO_INTPTR_T
879 # error "No type known for 'intptr_t'."
882 #if !defined(KWIML_INT_uintptr_t) && !defined(KWIML_INT_NO_UINTPTR_T)
883 # if defined(KWIML_INT_HAVE_UINTPTR_T)
884 # define KWIML_INT_uintptr_t KWIML_INT_detail_GLOBAL_NS(uintptr_t)
885 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
886 # define KWIML_INT_uintptr_t KWIML_INT_uint32_t
887 # elif !defined(KWIML_INT_NO_UINT64_T)
888 # define KWIML_INT_uintptr_t KWIML_INT_uint64_t
889 # elif defined(KWIML_INT_NO_ERROR_UINTPTR_T)
890 # define KWIML_INT_NO_UINTPTR_T
892 # error "No type known for 'uintptr_t'."
896 #if !defined(KWIML_INT_PRIdPTR)
897 # if defined(KWIML_INT_HAVE_INTPTR_T) && defined(PRIdPTR) \
898 && !defined(KWIML_INT_BROKEN_PRIdPTR)
899 # define KWIML_INT_PRIdPTR PRIdPTR
900 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
901 # define KWIML_INT_PRIdPTR KWIML_INT_PRId32
902 # elif !defined(KWIML_INT_NO_UINT64_T)
903 # define KWIML_INT_PRIdPTR KWIML_INT_PRId64
906 #if !defined(KWIML_INT_SCNdPTR)
907 # if defined(KWIML_INT_HAVE_INTPTR_T) && defined(SCNdPTR) \
908 && !defined(KWIML_INT_BROKEN_SCNdPTR)
909 # define KWIML_INT_SCNdPTR SCNdPTR
910 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
911 # define KWIML_INT_SCNdPTR KWIML_INT_SCNd32
912 # elif !defined(KWIML_INT_NO_UINT64_T)
913 # define KWIML_INT_SCNdPTR KWIML_INT_SCNd64
916 #if !defined(KWIML_INT_PRIiPTR)
917 # if defined(KWIML_INT_HAVE_INTPTR_T) && defined(PRIiPTR) \
918 && !defined(KWIML_INT_BROKEN_PRIiPTR)
919 # define KWIML_INT_PRIiPTR PRIiPTR
920 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
921 # define KWIML_INT_PRIiPTR KWIML_INT_PRIi32
922 # elif !defined(KWIML_INT_NO_UINT64_T)
923 # define KWIML_INT_PRIiPTR KWIML_INT_PRIi64
926 #if !defined(KWIML_INT_SCNiPTR)
927 # if defined(KWIML_INT_HAVE_INTPTR_T) && defined(SCNiPTR) \
928 && !defined(KWIML_INT_BROKEN_SCNiPTR)
929 # define KWIML_INT_SCNiPTR SCNiPTR
930 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
931 # define KWIML_INT_SCNiPTR KWIML_INT_SCNi32
932 # elif !defined(KWIML_INT_NO_UINT64_T)
933 # define KWIML_INT_SCNiPTR KWIML_INT_SCNi64
937 #if !defined(KWIML_INT_PRIoPTR)
938 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(PRIoPTR) \
939 && !defined(KWIML_INT_BROKEN_PRIoPTR)
940 # define KWIML_INT_PRIoPTR PRIoPTR
941 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
942 # define KWIML_INT_PRIoPTR KWIML_INT_PRIo32
943 # elif !defined(KWIML_INT_NO_UINT64_T)
944 # define KWIML_INT_PRIoPTR KWIML_INT_PRIo64
947 #if !defined(KWIML_INT_SCNoPTR)
948 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(SCNoPTR) \
949 && !defined(KWIML_INT_BROKEN_SCNoPTR)
950 # define KWIML_INT_SCNoPTR SCNoPTR
951 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
952 # define KWIML_INT_SCNoPTR KWIML_INT_SCNo32
953 # elif !defined(KWIML_INT_NO_UINT64_T)
954 # define KWIML_INT_SCNoPTR KWIML_INT_SCNo64
957 #if !defined(KWIML_INT_PRIuPTR)
958 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(PRIuPTR) \
959 && !defined(KWIML_INT_BROKEN_PRIuPTR)
960 # define KWIML_INT_PRIuPTR PRIuPTR
961 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
962 # define KWIML_INT_PRIuPTR KWIML_INT_PRIu32
963 # elif !defined(KWIML_INT_NO_UINT64_T)
964 # define KWIML_INT_PRIuPTR KWIML_INT_PRIu64
967 #if !defined(KWIML_INT_SCNuPTR)
968 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(SCNuPTR) \
969 && !defined(KWIML_INT_BROKEN_SCNuPTR)
970 # define KWIML_INT_SCNuPTR SCNuPTR
971 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
972 # define KWIML_INT_SCNuPTR KWIML_INT_SCNu32
973 # elif !defined(KWIML_INT_NO_UINT64_T)
974 # define KWIML_INT_SCNuPTR KWIML_INT_SCNu64
977 #if !defined(KWIML_INT_PRIxPTR)
978 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(PRIxPTR) \
979 && !defined(KWIML_INT_BROKEN_PRIxPTR)
980 # define KWIML_INT_PRIxPTR PRIxPTR
981 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
982 # define KWIML_INT_PRIxPTR KWIML_INT_PRIx32
983 # elif !defined(KWIML_INT_NO_UINT64_T)
984 # define KWIML_INT_PRIxPTR KWIML_INT_PRIx64
987 #if !defined(KWIML_INT_SCNxPTR)
988 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(SCNxPTR) \
989 && !defined(KWIML_INT_BROKEN_SCNxPTR)
990 # define KWIML_INT_SCNxPTR SCNxPTR
991 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
992 # define KWIML_INT_SCNxPTR KWIML_INT_SCNx32
993 # elif !defined(KWIML_INT_NO_UINT64_T)
994 # define KWIML_INT_SCNxPTR KWIML_INT_SCNx64
997 #if !defined(KWIML_INT_PRIXPTR)
998 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(PRIXPTR) \
999 && !defined(KWIML_INT_BROKEN_PRIXPTR)
1000 # define KWIML_INT_PRIXPTR PRIXPTR
1001 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
1002 # define KWIML_INT_PRIXPTR KWIML_INT_PRIX32
1003 # elif !defined(KWIML_INT_NO_UINT64_T)
1004 # define KWIML_INT_PRIXPTR KWIML_INT_PRIX64
1008 #undef KWIML_INT_private_NO_SCN64
1009 #undef KWIML_INT_private_NO_SCN8
1011 #endif /* KWIML_INT_private_DO_DEFINE */
1013 /*--------------------------------------------------------------------------*/
1014 #ifdef KWIML_INT_private_DO_VERIFY
1015 #undef KWIML_INT_private_DO_VERIFY
1017 #if defined(_MSC_VER)
1018 # pragma warning (push)
1019 # pragma warning (disable:4309) /* static_cast trunction of constant value */
1020 # pragma warning (disable:4310) /* cast truncates constant value */
1023 #if defined(__cplusplus) && !defined(__BORLANDC__)
1024 #define KWIML_INT_private_STATIC_CAST(t,v) static_cast<t>(v)
1026 #define KWIML_INT_private_STATIC_CAST(t,v) (t)(v)
1029 #define KWIML_INT_private_VERIFY(n, x, y) KWIML_INT_private_VERIFY_0(KWIML_INT_private_VERSION, n, x, y)
1030 #define KWIML_INT_private_VERIFY_0(V, n, x, y) KWIML_INT_private_VERIFY_1(V, n, x, y)
1031 #define KWIML_INT_private_VERIFY_1(V, n, x, y) extern int (*n##_v##V)[x]; extern int (*n##_v##V)[y]
1033 #define KWIML_INT_private_VERIFY_BOOL(m, b) KWIML_INT_private_VERIFY(KWIML_INT_detail_VERIFY_##m, 2, (b)?2:3)
1034 #define KWIML_INT_private_VERIFY_TYPE(t, s) KWIML_INT_private_VERIFY(KWIML_INT_detail_VERIFY_##t, s, sizeof(t))
1035 #define KWIML_INT_private_VERIFY_SIGN(t, u, o) \
1036 KWIML_INT_private_VERIFY_BOOL(SIGN_##t, KWIML_INT_private_STATIC_CAST( \
1037 t, KWIML_INT_private_STATIC_CAST(u, 1) << ((sizeof(t)<<3)-1)) o 0)
1039 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int8_t, 1);
1040 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint8_t, 1);
1041 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int16_t, 2);
1042 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint16_t, 2);
1043 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int32_t, 4);
1044 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint32_t, 4);
1045 #if !defined(KWIML_INT_NO_INT64_T)
1046 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int64_t, 8);
1048 #if !defined(KWIML_INT_NO_UINT64_T)
1049 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint64_t, 8);
1051 #if !defined(KWIML_INT_NO_INTPTR_T)
1052 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_intptr_t, sizeof(void*));
1054 #if !defined(KWIML_INT_NO_UINTPTR_T)
1055 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uintptr_t, sizeof(void*));
1058 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_int8_t, KWIML_INT_uint8_t, <);
1059 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint8_t, KWIML_INT_uint8_t, >);
1060 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_int16_t, KWIML_INT_uint16_t, <);
1061 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint16_t, KWIML_INT_uint16_t, >);
1062 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_int32_t, KWIML_INT_uint32_t, <);
1063 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint32_t, KWIML_INT_uint32_t, >);
1064 #if !defined(KWIML_INT_NO_INT64_T)
1065 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_int64_t, KWIML_INT_uint64_t, <);
1067 #if !defined(KWIML_INT_NO_UINT64_T)
1068 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint64_t, KWIML_INT_uint64_t, >);
1070 #if !defined(KWIML_INT_NO_INTPTR_T)
1071 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_intptr_t, KWIML_INT_uintptr_t, <);
1073 #if !defined(KWIML_INT_NO_UINTPTR_T)
1074 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uintptr_t, KWIML_INT_uintptr_t, >);
1077 #undef KWIML_INT_private_VERIFY_SIGN
1078 #undef KWIML_INT_private_VERIFY_TYPE
1079 #undef KWIML_INT_private_VERIFY_BOOL
1081 #undef KWIML_INT_private_VERIFY_1
1082 #undef KWIML_INT_private_VERIFY_0
1083 #undef KWIML_INT_private_VERIFY
1085 #undef KWIML_INT_private_STATIC_CAST
1087 #if defined(_MSC_VER)
1088 # pragma warning (pop)
1091 #endif /* KWIML_INT_private_DO_VERIFY */
1093 #undef KWIML_INT_private_VERSION