1 /*============================================================================
2   Kitware Information Macro Library
3   Copyright 2010-2018 Kitware, Inc.
4   All rights reserved.
5 
6   Redistribution and use in source and binary forms, with or without
7   modification, are permitted provided that the following conditions
8   are met:
9 
10   * Redistributions of source code must retain the above copyright
11     notice, this list of conditions and the following disclaimer.
12 
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.
16 
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.
20 
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 ============================================================================*/
33 /*
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.
38 
39 An includer may optionally define the following macros to suppress errors:
40 
41 Input:
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 (*)
47 
48 An includer may optionally define the following macros to override defaults.
49 Either way, an includer may test these macros after inclusion:
50 
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>
55 
56 An includer may test the following macros after inclusion:
57 
58   KWIML_INT_VERSION         = interface version number # of this header
59 
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
63 
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 (*)
67 
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
72 
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
75                                 # = 8, 16, 32, 64 (*)
76 
77   KWIML_INT_<fmt>#          = print or scan format, <fmt> in table below
78                                 # = 8, 16, 32, 64, PTR (*)
79 
80              signed                unsigned
81            ----------- ------------------------------
82           |  decimal  | decimal  octal   hexadecimal |
83     print | PRId PRIi |  PRIu    PRIo    PRIx  PRIX  |
84      scan | SCNd SCNi |  SCNu    SCNo    SCNx        |
85            ----------- ------------------------------
86 
87     The SCN*8 and SCN*64 format macros will not be defined on systems
88     with scanf implementations known not to support them.
89 
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.
93 
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.
99 
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.
103 
104   The broken cases do not affect correctness of the macros documented above.
105 */
106 
107 #include "abi.h"
108 
109 #define KWIML_INT_private_VERSION 1
110 
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
115 #endif
116 
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
122 # endif
123 #endif
124 
125 #ifdef KWIML_INT_private_DO_DEFINE
126 #undef KWIML_INT_private_DO_DEFINE
127 
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
132 #endif
133 
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
144 # else
145 #  define KWIML_INT_NO_STDINT_H 1
146 # endif
147 #elif defined(__BORLANDC__) /* Borland */
148 # if __BORLANDC__ >= 0x560
149 #  define KWIML_INT_HAVE_STDINT_H 1
150 # else
151 #  define KWIML_INT_NO_STDINT_H 1
152 # endif
153 #elif defined(__WATCOMC__) /* Watcom */
154 # define KWIML_INT_NO_STDINT_H 1
155 #endif
156 
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
167 # else
168 #  define KWIML_INT_NO_INTTYPES_H 1
169 # endif
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
176 #endif
177 
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!"
181 #endif
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!"
184 #endif
185 
186 #if defined(KWIML_INT_HAVE_STDINT_H)
187 # ifndef KWIML_INT_detail_INCLUDED_STDINT_H
188 #  define KWIML_INT_detail_INCLUDED_STDINT_H
189 #  include <stdint.h>
190 # endif
191 #endif
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
197 #  endif
198 #  include <inttypes.h>
199 # endif
200 #endif
201 
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
215 # else
216 #  define KWIML_INT_detail_GLOBAL_NS(T) T
217 # endif
218 #endif
219 
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
277 #endif
278 
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
286 #endif
287 
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 */
292 #endif
293 
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)
298 # else
299 #  define KWIML_INT_int8_t signed char
300 # endif
301 #endif
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)
305 # else
306 #  define KWIML_INT_uint8_t unsigned char
307 # endif
308 #endif
309 
310 #if defined(__INTEL_COMPILER)
311 # if defined(_WIN32)
312 #  define KWIML_INT_private_NO_SCN8
313 # endif
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
325 #endif
326 
327 /* 8-bit d, i */
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
332 # else
333 #  define KWIML_INT_PRId8   "d"
334 # endif
335 #endif
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"
342 # endif
343 #endif
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
348 # else
349 #  define KWIML_INT_PRIi8   "i"
350 # endif
351 #endif
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"
358 # endif
359 #endif
360 
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
366 # else
367 #  define KWIML_INT_PRIo8   "o"
368 # endif
369 #endif
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"
376 # endif
377 #endif
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
382 # else
383 #  define KWIML_INT_PRIu8   "u"
384 # endif
385 #endif
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"
392 # endif
393 #endif
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
398 # else
399 #  define KWIML_INT_PRIx8   "x"
400 # endif
401 #endif
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"
408 # endif
409 #endif
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
414 # else
415 #  define KWIML_INT_PRIX8   "X"
416 # endif
417 #endif
418 
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)
423 # else
424 #  define KWIML_INT_INT8_C(c) c
425 # endif
426 #endif
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)
430 # else
431 #  define KWIML_INT_UINT8_C(c) c ## u
432 # endif
433 #endif
434 
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)
439 # else
440 #  define KWIML_INT_int16_t signed short
441 # endif
442 #endif
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)
446 # else
447 #  define KWIML_INT_uint16_t unsigned short
448 # endif
449 #endif
450 
451 /* 16-bit d, i */
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
456 # else
457 #  define KWIML_INT_PRId16  "d"
458 # endif
459 #endif
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
464 # else
465 #  define KWIML_INT_SCNd16 "hd"
466 # endif
467 #endif
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
472 # else
473 #  define KWIML_INT_PRIi16  "i"
474 # endif
475 #endif
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
480 # else
481 #  define KWIML_INT_SCNi16 "hi"
482 # endif
483 #endif
484 
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
490 # else
491 #  define KWIML_INT_PRIo16  "o"
492 # endif
493 #endif
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
498 # else
499 #  define KWIML_INT_SCNo16 "ho"
500 # endif
501 #endif
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
506 # else
507 #  define KWIML_INT_PRIu16  "u"
508 # endif
509 #endif
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
514 # else
515 #  define KWIML_INT_SCNu16 "hu"
516 # endif
517 #endif
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
522 # else
523 #  define KWIML_INT_PRIx16  "x"
524 # endif
525 #endif
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
530 # else
531 #  define KWIML_INT_SCNx16 "hx"
532 # endif
533 #endif
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
538 # else
539 #  define KWIML_INT_PRIX16  "X"
540 # endif
541 #endif
542 
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)
547 # else
548 #  define KWIML_INT_INT16_C(c) c
549 # endif
550 #endif
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)
554 # else
555 #  define KWIML_INT_UINT16_C(c) c ## u
556 # endif
557 #endif
558 
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)
563 # else
564 #  define KWIML_INT_int32_t signed int
565 # endif
566 #endif
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)
570 # else
571 #  define KWIML_INT_uint32_t unsigned int
572 # endif
573 #endif
574 
575 /* 32-bit d, i */
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
580 # else
581 #  define KWIML_INT_PRId32 "d"
582 # endif
583 #endif
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
588 # else
589 #  define KWIML_INT_SCNd32 "d"
590 # endif
591 #endif
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
596 # else
597 #  define KWIML_INT_PRIi32 "i"
598 # endif
599 #endif
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
604 # else
605 #  define KWIML_INT_SCNi32 "i"
606 # endif
607 #endif
608 
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
614 # else
615 #  define KWIML_INT_PRIo32 "o"
616 # endif
617 #endif
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
622 # else
623 #  define KWIML_INT_SCNo32 "o"
624 # endif
625 #endif
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
630 # else
631 #  define KWIML_INT_PRIu32 "u"
632 # endif
633 #endif
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
638 # else
639 #  define KWIML_INT_SCNu32 "u"
640 # endif
641 #endif
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
646 # else
647 #  define KWIML_INT_PRIx32 "x"
648 # endif
649 #endif
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
654 # else
655 #  define KWIML_INT_SCNx32 "x"
656 # endif
657 #endif
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
662 # else
663 #  define KWIML_INT_PRIX32 "X"
664 # endif
665 #endif
666 
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
671 #endif
672 
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)
677 # else
678 #  define KWIML_INT_INT32_C(c) c
679 # endif
680 #endif
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)
684 # else
685 #  define KWIML_INT_UINT32_C(c) c ## u
686 # endif
687 #endif
688 
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
701 # else
702 #  error "No type known for 'int64_t'."
703 # endif
704 #endif
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
716 # else
717 #  error "No type known for 'uint64_t'."
718 # endif
719 #endif
720 
721 #if defined(__INTEL_COMPILER)
722 #elif defined(__BORLANDC__)
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 */
728 #endif
729 
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"
736 #  else
737 #   define KWIML_INT_detail_FMT64 "I64"
738 #  endif
739 # elif defined(KWIML_ABI_SIZEOF___INT64)
740 #  if defined(__BORLANDC__)
741 #   define KWIML_INT_detail_FMT64 "L"
742 #  else
743 #   define KWIML_INT_detail_FMT64 "I64"
744 #  endif
745 # endif
746 #endif
747 
748 #undef KWIML_INT_private_NO_FMTLL
749 
750 /* 64-bit d, i */
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"
757 # endif
758 #endif
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"
765 # endif
766 #endif
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"
773 # endif
774 #endif
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"
781 # endif
782 #endif
783 
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"
791 # endif
792 #endif
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"
799 # endif
800 #endif
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"
807 # endif
808 #endif
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"
815 # endif
816 #endif
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"
823 # endif
824 #endif
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"
831 # endif
832 #endif
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"
839 # endif
840 #endif
841 
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
853 # endif
854 #endif
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
865 # endif
866 #endif
867 
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
878 # else
879 #  error "No type known for 'intptr_t'."
880 # endif
881 #endif
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
891 # else
892 #  error "No type known for 'uintptr_t'."
893 # endif
894 #endif
895 
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
904 # endif
905 #endif
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
914 # endif
915 #endif
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
924 # endif
925 #endif
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
934 # endif
935 #endif
936 
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
945 # endif
946 #endif
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
955 # endif
956 #endif
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
965 # endif
966 #endif
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
975 # endif
976 #endif
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
985 # endif
986 #endif
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
995 # endif
996 #endif
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
1005 # endif
1006 #endif
1007 
1008 #undef KWIML_INT_private_NO_SCN64
1009 #undef KWIML_INT_private_NO_SCN8
1010 
1011 #endif /* KWIML_INT_private_DO_DEFINE */
1012 
1013 /*--------------------------------------------------------------------------*/
1014 #ifdef KWIML_INT_private_DO_VERIFY
1015 #undef KWIML_INT_private_DO_VERIFY
1016 
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 */
1021 #endif
1022 
1023 #if defined(__cplusplus) && !defined(__BORLANDC__)
1024 #define KWIML_INT_private_STATIC_CAST(t,v) static_cast<t>(v)
1025 #else
1026 #define KWIML_INT_private_STATIC_CAST(t,v) (t)(v)
1027 #endif
1028 
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]
1032 
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)
1038 
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);
1047 #endif
1048 #if !defined(KWIML_INT_NO_UINT64_T)
1049 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint64_t,  8);
1050 #endif
1051 #if !defined(KWIML_INT_NO_INTPTR_T)
1052 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_intptr_t,  sizeof(void*));
1053 #endif
1054 #if !defined(KWIML_INT_NO_UINTPTR_T)
1055 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uintptr_t, sizeof(void*));
1056 #endif
1057 
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,  <);
1066 #endif
1067 #if !defined(KWIML_INT_NO_UINT64_T)
1068 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint64_t,  KWIML_INT_uint64_t,  >);
1069 #endif
1070 #if !defined(KWIML_INT_NO_INTPTR_T)
1071 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_intptr_t,  KWIML_INT_uintptr_t, <);
1072 #endif
1073 #if !defined(KWIML_INT_NO_UINTPTR_T)
1074 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uintptr_t, KWIML_INT_uintptr_t, >);
1075 #endif
1076 
1077 #undef KWIML_INT_private_VERIFY_SIGN
1078 #undef KWIML_INT_private_VERIFY_TYPE
1079 #undef KWIML_INT_private_VERIFY_BOOL
1080 
1081 #undef KWIML_INT_private_VERIFY_1
1082 #undef KWIML_INT_private_VERIFY_0
1083 #undef KWIML_INT_private_VERIFY
1084 
1085 #undef KWIML_INT_private_STATIC_CAST
1086 
1087 #if defined(_MSC_VER)
1088 # pragma warning (pop)
1089 #endif
1090 
1091 #endif /* KWIML_INT_private_DO_VERIFY  */
1092 
1093 #undef KWIML_INT_private_VERSION
1094