1 /*============================================================================
2   Kitware Information Macro Library
3   Copyright 2010-2017 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 # define KWIML_INT_NO_INTTYPES_H 1
166 #elif defined(__BORLANDC__) /* Borland */
167 # define KWIML_INT_NO_INTTYPES_H 1
168 #elif defined(__WATCOMC__) /* Watcom */
169 # define KWIML_INT_NO_INTTYPES_H 1
170 #else /* Assume it exists.  */
171 # define KWIML_INT_HAVE_INTTYPES_H 1
172 #endif
173 
174 /*--------------------------------------------------------------------------*/
175 #if defined(KWIML_INT_HAVE_STDINT_H) && defined(KWIML_INT_NO_STDINT_H)
176 # error "Both KWIML_INT_HAVE_STDINT_H and KWIML_INT_NO_STDINT_H defined!"
177 #endif
178 #if defined(KWIML_INT_HAVE_INTTYPES_H) && defined(KWIML_INT_NO_INTTYPES_H)
179 # error "Both KWIML_INT_HAVE_INTTYPES_H and KWIML_INT_NO_INTTYPES_H defined!"
180 #endif
181 
182 #if defined(KWIML_INT_HAVE_STDINT_H)
183 # ifndef KWIML_INT_detail_INCLUDED_STDINT_H
184 #  define KWIML_INT_detail_INCLUDED_STDINT_H
185 #  include <stdint.h>
186 # endif
187 #endif
188 #if defined(KWIML_INT_HAVE_INTTYPES_H)
189 # ifndef KWIML_INT_detail_INCLUDED_INTTYPES_H
190 #  define KWIML_INT_detail_INCLUDED_INTTYPES_H
191 #  if defined(__cplusplus) && !defined(__STDC_FORMAT_MACROS)
192 #   define __STDC_FORMAT_MACROS
193 #  endif
194 #  include <inttypes.h>
195 # endif
196 #endif
197 
198 #if defined(KWIML_INT_HAVE_STDINT_H) || defined(KWIML_INT_HAVE_INTTYPES_H)
199 #define KWIML_INT_HAVE_INT8_T 1
200 #define KWIML_INT_HAVE_UINT8_T 1
201 #define KWIML_INT_HAVE_INT16_T 1
202 #define KWIML_INT_HAVE_UINT16_T 1
203 #define KWIML_INT_HAVE_INT32_T 1
204 #define KWIML_INT_HAVE_UINT32_T 1
205 #define KWIML_INT_HAVE_INT64_T 1
206 #define KWIML_INT_HAVE_UINT64_T 1
207 #define KWIML_INT_HAVE_INTPTR_T 1
208 #define KWIML_INT_HAVE_UINTPTR_T 1
209 # if defined(__cplusplus)
210 #  define KWIML_INT_detail_GLOBAL_NS(T) ::T
211 # else
212 #  define KWIML_INT_detail_GLOBAL_NS(T) T
213 # endif
214 #endif
215 
216 #if defined(_AIX43) && !defined(_AIX50) && !defined(_AIX51)
217   /* AIX 4.3 defines these incorrectly with % and no quotes. */
218 # define KWIML_INT_BROKEN_PRId8 1
219 # define KWIML_INT_BROKEN_SCNd8 1
220 # define KWIML_INT_BROKEN_PRIi8 1
221 # define KWIML_INT_BROKEN_SCNi8 1
222 # define KWIML_INT_BROKEN_PRIo8 1
223 # define KWIML_INT_BROKEN_SCNo8 1
224 # define KWIML_INT_BROKEN_PRIu8 1
225 # define KWIML_INT_BROKEN_SCNu8 1
226 # define KWIML_INT_BROKEN_PRIx8 1
227 # define KWIML_INT_BROKEN_SCNx8 1
228 # define KWIML_INT_BROKEN_PRIX8 1
229 # define KWIML_INT_BROKEN_PRId16 1
230 # define KWIML_INT_BROKEN_SCNd16 1
231 # define KWIML_INT_BROKEN_PRIi16 1
232 # define KWIML_INT_BROKEN_SCNi16 1
233 # define KWIML_INT_BROKEN_PRIo16 1
234 # define KWIML_INT_BROKEN_SCNo16 1
235 # define KWIML_INT_BROKEN_PRIu16 1
236 # define KWIML_INT_BROKEN_SCNu16 1
237 # define KWIML_INT_BROKEN_PRIx16 1
238 # define KWIML_INT_BROKEN_SCNx16 1
239 # define KWIML_INT_BROKEN_PRIX16 1
240 # define KWIML_INT_BROKEN_PRId32 1
241 # define KWIML_INT_BROKEN_SCNd32 1
242 # define KWIML_INT_BROKEN_PRIi32 1
243 # define KWIML_INT_BROKEN_SCNi32 1
244 # define KWIML_INT_BROKEN_PRIo32 1
245 # define KWIML_INT_BROKEN_SCNo32 1
246 # define KWIML_INT_BROKEN_PRIu32 1
247 # define KWIML_INT_BROKEN_SCNu32 1
248 # define KWIML_INT_BROKEN_PRIx32 1
249 # define KWIML_INT_BROKEN_SCNx32 1
250 # define KWIML_INT_BROKEN_PRIX32 1
251 # define KWIML_INT_BROKEN_PRId64 1
252 # define KWIML_INT_BROKEN_SCNd64 1
253 # define KWIML_INT_BROKEN_PRIi64 1
254 # define KWIML_INT_BROKEN_SCNi64 1
255 # define KWIML_INT_BROKEN_PRIo64 1
256 # define KWIML_INT_BROKEN_SCNo64 1
257 # define KWIML_INT_BROKEN_PRIu64 1
258 # define KWIML_INT_BROKEN_SCNu64 1
259 # define KWIML_INT_BROKEN_PRIx64 1
260 # define KWIML_INT_BROKEN_SCNx64 1
261 # define KWIML_INT_BROKEN_PRIX64 1
262 # define KWIML_INT_BROKEN_PRIdPTR 1
263 # define KWIML_INT_BROKEN_SCNdPTR 1
264 # define KWIML_INT_BROKEN_PRIiPTR 1
265 # define KWIML_INT_BROKEN_SCNiPTR 1
266 # define KWIML_INT_BROKEN_PRIoPTR 1
267 # define KWIML_INT_BROKEN_SCNoPTR 1
268 # define KWIML_INT_BROKEN_PRIuPTR 1
269 # define KWIML_INT_BROKEN_SCNuPTR 1
270 # define KWIML_INT_BROKEN_PRIxPTR 1
271 # define KWIML_INT_BROKEN_SCNxPTR 1
272 # define KWIML_INT_BROKEN_PRIXPTR 1
273 #endif
274 
275 #if (defined(__SUNPRO_C)||defined(__SUNPRO_CC)) && defined(_CHAR_IS_UNSIGNED)
276 # define KWIML_INT_BROKEN_INT8_T 1 /* system type defined incorrectly */
277 #elif defined(__BORLANDC__) && defined(_CHAR_UNSIGNED)
278 # define KWIML_INT_BROKEN_INT8_T 1 /* system type defined incorrectly */
279 #endif
280 
281 /*--------------------------------------------------------------------------*/
282 #if !defined(KWIML_INT_int8_t)
283 # if defined(KWIML_INT_HAVE_INT8_T) && !defined(KWIML_INT_BROKEN_INT8_T)
284 #  define KWIML_INT_int8_t KWIML_INT_detail_GLOBAL_NS(int8_t)
285 # else
286 #  define KWIML_INT_int8_t signed char
287 # endif
288 #endif
289 #if !defined(KWIML_INT_uint8_t)
290 # if defined(KWIML_INT_HAVE_UINT8_T)
291 #  define KWIML_INT_uint8_t KWIML_INT_detail_GLOBAL_NS(uint8_t)
292 # else
293 #  define KWIML_INT_uint8_t unsigned char
294 # endif
295 #endif
296 
297 #if defined(__INTEL_COMPILER)
298 # if defined(_WIN32)
299 #  define KWIML_INT_private_NO_SCN8
300 # endif
301 #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
302 # define KWIML_INT_private_NO_SCN8
303 #elif defined(__BORLANDC__)
304 # define KWIML_INT_private_NO_SCN8
305 # define KWIML_INT_private_NO_SCN64
306 #elif defined(_MSC_VER)
307 # define KWIML_INT_private_NO_SCN8
308 #elif defined(__WATCOMC__)
309 # define KWIML_INT_private_NO_SCN8
310 # elif defined(__hpux) /* HP runtime lacks support (any compiler) */
311 # define KWIML_INT_private_NO_SCN8
312 #endif
313 
314 /* 8-bit d, i */
315 #if !defined(KWIML_INT_PRId8)
316 # if defined(KWIML_INT_HAVE_INT8_T) && defined(PRId8) \
317    && !defined(KWIML_INT_BROKEN_PRId8)
318 #  define KWIML_INT_PRId8 PRId8
319 # else
320 #  define KWIML_INT_PRId8   "d"
321 # endif
322 #endif
323 #if !defined(KWIML_INT_SCNd8)
324 # if defined(KWIML_INT_HAVE_INT8_T) && defined(SCNd8) \
325    && !defined(KWIML_INT_BROKEN_SCNd8)
326 #  define KWIML_INT_SCNd8 SCNd8
327 # elif !defined(KWIML_INT_private_NO_SCN8)
328 #  define KWIML_INT_SCNd8 "hhd"
329 # endif
330 #endif
331 #if !defined(KWIML_INT_PRIi8)
332 # if defined(KWIML_INT_HAVE_INT8_T) && defined(PRIi8) \
333    && !defined(KWIML_INT_BROKEN_PRIi8)
334 #  define KWIML_INT_PRIi8 PRIi8
335 # else
336 #  define KWIML_INT_PRIi8   "i"
337 # endif
338 #endif
339 #if !defined(KWIML_INT_SCNi8)
340 # if defined(KWIML_INT_HAVE_INT8_T) && defined(SCNi8) \
341    && !defined(KWIML_INT_BROKEN_SCNi8)
342 #  define KWIML_INT_SCNi8 SCNi8
343 # elif !defined(KWIML_INT_private_NO_SCN8)
344 #  define KWIML_INT_SCNi8 "hhi"
345 # endif
346 #endif
347 
348 /* 8-bit o, u, x, X */
349 #if !defined(KWIML_INT_PRIo8)
350 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(PRIo8) \
351    && !defined(KWIML_INT_BROKEN_PRIo8)
352 #  define KWIML_INT_PRIo8 PRIo8
353 # else
354 #  define KWIML_INT_PRIo8   "o"
355 # endif
356 #endif
357 #if !defined(KWIML_INT_SCNo8)
358 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(SCNo8) \
359    && !defined(KWIML_INT_BROKEN_SCNo8)
360 #  define KWIML_INT_SCNo8 SCNo8
361 # elif !defined(KWIML_INT_private_NO_SCN8)
362 #  define KWIML_INT_SCNo8 "hho"
363 # endif
364 #endif
365 #if !defined(KWIML_INT_PRIu8)
366 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(PRIu8) \
367    && !defined(KWIML_INT_BROKEN_PRIu8)
368 #  define KWIML_INT_PRIu8 PRIu8
369 # else
370 #  define KWIML_INT_PRIu8   "u"
371 # endif
372 #endif
373 #if !defined(KWIML_INT_SCNu8)
374 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(SCNu8) \
375    && !defined(KWIML_INT_BROKEN_SCNu8)
376 #  define KWIML_INT_SCNu8 SCNu8
377 # elif !defined(KWIML_INT_private_NO_SCN8)
378 #  define KWIML_INT_SCNu8 "hhu"
379 # endif
380 #endif
381 #if !defined(KWIML_INT_PRIx8)
382 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(PRIx8) \
383    && !defined(KWIML_INT_BROKEN_PRIx8)
384 #  define KWIML_INT_PRIx8 PRIx8
385 # else
386 #  define KWIML_INT_PRIx8   "x"
387 # endif
388 #endif
389 #if !defined(KWIML_INT_SCNx8)
390 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(SCNx8) \
391    && !defined(KWIML_INT_BROKEN_SCNx8)
392 #  define KWIML_INT_SCNx8 SCNx8
393 # elif !defined(KWIML_INT_private_NO_SCN8)
394 #  define KWIML_INT_SCNx8 "hhx"
395 # endif
396 #endif
397 #if !defined(KWIML_INT_PRIX8)
398 # if defined(KWIML_INT_HAVE_UINT8_T) && defined(PRIX8) \
399    && !defined(KWIML_INT_BROKEN_PRIX8)
400 #  define KWIML_INT_PRIX8 PRIX8
401 # else
402 #  define KWIML_INT_PRIX8   "X"
403 # endif
404 #endif
405 
406 /* 8-bit constants */
407 #if !defined(KWIML_INT_INT8_C)
408 # if defined(INT8_C) && !defined(KWIML_INT_BROKEN_INT8_C)
409 #  define KWIML_INT_INT8_C(c) INT8_C(c)
410 # else
411 #  define KWIML_INT_INT8_C(c) c
412 # endif
413 #endif
414 #if !defined(KWIML_INT_UINT8_C)
415 # if defined(UINT8_C) && !defined(KWIML_INT_BROKEN_UINT8_C)
416 #  define KWIML_INT_UINT8_C(c) UINT8_C(c)
417 # else
418 #  define KWIML_INT_UINT8_C(c) c ## u
419 # endif
420 #endif
421 
422 /*--------------------------------------------------------------------------*/
423 #if !defined(KWIML_INT_int16_t)
424 # if defined(KWIML_INT_HAVE_INT16_T)
425 #  define KWIML_INT_int16_t KWIML_INT_detail_GLOBAL_NS(int16_t)
426 # else
427 #  define KWIML_INT_int16_t signed short
428 # endif
429 #endif
430 #if !defined(KWIML_INT_uint16_t)
431 # if defined(KWIML_INT_HAVE_UINT16_T)
432 #  define KWIML_INT_uint16_t KWIML_INT_detail_GLOBAL_NS(uint16_t)
433 # else
434 #  define KWIML_INT_uint16_t unsigned short
435 # endif
436 #endif
437 
438 /* 16-bit d, i */
439 #if !defined(KWIML_INT_PRId16)
440 # if defined(KWIML_INT_HAVE_INT16_T) && defined(PRId16) \
441    && !defined(KWIML_INT_BROKEN_PRId16)
442 #  define KWIML_INT_PRId16 PRId16
443 # else
444 #  define KWIML_INT_PRId16  "d"
445 # endif
446 #endif
447 #if !defined(KWIML_INT_SCNd16)
448 # if defined(KWIML_INT_HAVE_INT16_T) && defined(SCNd16) \
449    && !defined(KWIML_INT_BROKEN_SCNd16)
450 #  define KWIML_INT_SCNd16 SCNd16
451 # else
452 #  define KWIML_INT_SCNd16 "hd"
453 # endif
454 #endif
455 #if !defined(KWIML_INT_PRIi16)
456 # if defined(KWIML_INT_HAVE_INT16_T) && defined(PRIi16) \
457    && !defined(KWIML_INT_BROKEN_PRIi16)
458 #  define KWIML_INT_PRIi16 PRIi16
459 # else
460 #  define KWIML_INT_PRIi16  "i"
461 # endif
462 #endif
463 #if !defined(KWIML_INT_SCNi16)
464 # if defined(KWIML_INT_HAVE_INT16_T) && defined(SCNi16) \
465    && !defined(KWIML_INT_BROKEN_SCNi16)
466 #  define KWIML_INT_SCNi16 SCNi16
467 # else
468 #  define KWIML_INT_SCNi16 "hi"
469 # endif
470 #endif
471 
472 /* 16-bit o, u, x, X */
473 #if !defined(KWIML_INT_PRIo16)
474 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(PRIo16) \
475    && !defined(KWIML_INT_BROKEN_PRIo16)
476 #  define KWIML_INT_PRIo16 PRIo16
477 # else
478 #  define KWIML_INT_PRIo16  "o"
479 # endif
480 #endif
481 #if !defined(KWIML_INT_SCNo16)
482 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(SCNo16) \
483    && !defined(KWIML_INT_BROKEN_SCNo16)
484 #  define KWIML_INT_SCNo16 SCNo16
485 # else
486 #  define KWIML_INT_SCNo16 "ho"
487 # endif
488 #endif
489 #if !defined(KWIML_INT_PRIu16)
490 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(PRIu16) \
491    && !defined(KWIML_INT_BROKEN_PRIu16)
492 #  define KWIML_INT_PRIu16 PRIu16
493 # else
494 #  define KWIML_INT_PRIu16  "u"
495 # endif
496 #endif
497 #if !defined(KWIML_INT_SCNu16)
498 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(SCNu16) \
499    && !defined(KWIML_INT_BROKEN_SCNu16)
500 #  define KWIML_INT_SCNu16 SCNu16
501 # else
502 #  define KWIML_INT_SCNu16 "hu"
503 # endif
504 #endif
505 #if !defined(KWIML_INT_PRIx16)
506 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(PRIx16) \
507    && !defined(KWIML_INT_BROKEN_PRIx16)
508 #  define KWIML_INT_PRIx16 PRIx16
509 # else
510 #  define KWIML_INT_PRIx16  "x"
511 # endif
512 #endif
513 #if !defined(KWIML_INT_SCNx16)
514 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(SCNx16) \
515    && !defined(KWIML_INT_BROKEN_SCNx16)
516 #  define KWIML_INT_SCNx16 SCNx16
517 # else
518 #  define KWIML_INT_SCNx16 "hx"
519 # endif
520 #endif
521 #if !defined(KWIML_INT_PRIX16)
522 # if defined(KWIML_INT_HAVE_UINT16_T) && defined(PRIX16) \
523    && !defined(KWIML_INT_BROKEN_PRIX16)
524 #  define KWIML_INT_PRIX16 PRIX16
525 # else
526 #  define KWIML_INT_PRIX16  "X"
527 # endif
528 #endif
529 
530 /* 16-bit constants */
531 #if !defined(KWIML_INT_INT16_C)
532 # if defined(INT16_C) && !defined(KWIML_INT_BROKEN_INT16_C)
533 #  define KWIML_INT_INT16_C(c) INT16_C(c)
534 # else
535 #  define KWIML_INT_INT16_C(c) c
536 # endif
537 #endif
538 #if !defined(KWIML_INT_UINT16_C)
539 # if defined(UINT16_C) && !defined(KWIML_INT_BROKEN_UINT16_C)
540 #  define KWIML_INT_UINT16_C(c) UINT16_C(c)
541 # else
542 #  define KWIML_INT_UINT16_C(c) c ## u
543 # endif
544 #endif
545 
546 /*--------------------------------------------------------------------------*/
547 #if !defined(KWIML_INT_int32_t)
548 # if defined(KWIML_INT_HAVE_INT32_T)
549 #  define KWIML_INT_int32_t KWIML_INT_detail_GLOBAL_NS(int32_t)
550 # else
551 #  define KWIML_INT_int32_t signed int
552 # endif
553 #endif
554 #if !defined(KWIML_INT_uint32_t)
555 # if defined(KWIML_INT_HAVE_UINT32_T)
556 #  define KWIML_INT_uint32_t KWIML_INT_detail_GLOBAL_NS(uint32_t)
557 # else
558 #  define KWIML_INT_uint32_t unsigned int
559 # endif
560 #endif
561 
562 /* 32-bit d, i */
563 #if !defined(KWIML_INT_PRId32)
564 # if defined(KWIML_INT_HAVE_INT32_T) && defined(PRId32) \
565    && !defined(KWIML_INT_BROKEN_PRId32)
566 #  define KWIML_INT_PRId32 PRId32
567 # else
568 #  define KWIML_INT_PRId32 "d"
569 # endif
570 #endif
571 #if !defined(KWIML_INT_SCNd32)
572 # if defined(KWIML_INT_HAVE_INT32_T) && defined(SCNd32) \
573    && !defined(KWIML_INT_BROKEN_SCNd32)
574 #  define KWIML_INT_SCNd32 SCNd32
575 # else
576 #  define KWIML_INT_SCNd32 "d"
577 # endif
578 #endif
579 #if !defined(KWIML_INT_PRIi32)
580 # if defined(KWIML_INT_HAVE_INT32_T) && defined(PRIi32) \
581    && !defined(KWIML_INT_BROKEN_PRIi32)
582 #  define KWIML_INT_PRIi32 PRIi32
583 # else
584 #  define KWIML_INT_PRIi32 "i"
585 # endif
586 #endif
587 #if !defined(KWIML_INT_SCNi32)
588 # if defined(KWIML_INT_HAVE_INT32_T) && defined(SCNi32) \
589    && !defined(KWIML_INT_BROKEN_SCNi32)
590 #  define KWIML_INT_SCNi32 SCNi32
591 # else
592 #  define KWIML_INT_SCNi32 "i"
593 # endif
594 #endif
595 
596 /* 32-bit o, u, x, X */
597 #if !defined(KWIML_INT_PRIo32)
598 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(PRIo32) \
599    && !defined(KWIML_INT_BROKEN_PRIo32)
600 #  define KWIML_INT_PRIo32 PRIo32
601 # else
602 #  define KWIML_INT_PRIo32 "o"
603 # endif
604 #endif
605 #if !defined(KWIML_INT_SCNo32)
606 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(SCNo32) \
607    && !defined(KWIML_INT_BROKEN_SCNo32)
608 #  define KWIML_INT_SCNo32 SCNo32
609 # else
610 #  define KWIML_INT_SCNo32 "o"
611 # endif
612 #endif
613 #if !defined(KWIML_INT_PRIu32)
614 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(PRIu32) \
615    && !defined(KWIML_INT_BROKEN_PRIu32)
616 #  define KWIML_INT_PRIu32 PRIu32
617 # else
618 #  define KWIML_INT_PRIu32 "u"
619 # endif
620 #endif
621 #if !defined(KWIML_INT_SCNu32)
622 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(SCNu32) \
623    && !defined(KWIML_INT_BROKEN_SCNu32)
624 #  define KWIML_INT_SCNu32 SCNu32
625 # else
626 #  define KWIML_INT_SCNu32 "u"
627 # endif
628 #endif
629 #if !defined(KWIML_INT_PRIx32)
630 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(PRIx32) \
631    && !defined(KWIML_INT_BROKEN_PRIx32)
632 #  define KWIML_INT_PRIx32 PRIx32
633 # else
634 #  define KWIML_INT_PRIx32 "x"
635 # endif
636 #endif
637 #if !defined(KWIML_INT_SCNx32)
638 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(SCNx32) \
639    && !defined(KWIML_INT_BROKEN_SCNx32)
640 #  define KWIML_INT_SCNx32 SCNx32
641 # else
642 #  define KWIML_INT_SCNx32 "x"
643 # endif
644 #endif
645 #if !defined(KWIML_INT_PRIX32)
646 # if defined(KWIML_INT_HAVE_UINT32_T) && defined(PRIX32) \
647    && !defined(KWIML_INT_BROKEN_PRIX32)
648 #  define KWIML_INT_PRIX32 PRIX32
649 # else
650 #  define KWIML_INT_PRIX32 "X"
651 # endif
652 #endif
653 
654 #if defined(__hpux) && defined(__GNUC__) && !defined(__LP64__) \
655  && defined(__CONCAT__) && defined(__CONCAT_U__)
656   /* Some HPs define UINT32_C incorrectly and break GNU.  */
657 # define KWIML_INT_BROKEN_UINT32_C 1
658 #endif
659 
660 /* 32-bit constants */
661 #if !defined(KWIML_INT_INT32_C)
662 # if defined(INT32_C) && !defined(KWIML_INT_BROKEN_INT32_C)
663 #  define KWIML_INT_INT32_C(c) INT32_C(c)
664 # else
665 #  define KWIML_INT_INT32_C(c) c
666 # endif
667 #endif
668 #if !defined(KWIML_INT_UINT32_C)
669 # if defined(UINT32_C) && !defined(KWIML_INT_BROKEN_UINT32_C)
670 #  define KWIML_INT_UINT32_C(c) UINT32_C(c)
671 # else
672 #  define KWIML_INT_UINT32_C(c) c ## u
673 # endif
674 #endif
675 
676 /*--------------------------------------------------------------------------*/
677 #if !defined(KWIML_INT_int64_t) && !defined(KWIML_INT_NO_INT64_T)
678 # if defined(KWIML_INT_HAVE_INT64_T)
679 #  define KWIML_INT_int64_t KWIML_INT_detail_GLOBAL_NS(int64_t)
680 # elif KWIML_ABI_SIZEOF_LONG == 8
681 #  define KWIML_INT_int64_t signed long
682 # elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
683 #  define KWIML_INT_int64_t signed long long
684 # elif defined(KWIML_ABI_SIZEOF___INT64)
685 #  define KWIML_INT_int64_t signed __int64
686 # elif defined(KWIML_INT_NO_ERROR_INT64_T)
687 #  define KWIML_INT_NO_INT64_T
688 # else
689 #  error "No type known for 'int64_t'."
690 # endif
691 #endif
692 #if !defined(KWIML_INT_uint64_t) && !defined(KWIML_INT_NO_UINT64_T)
693 # if defined(KWIML_INT_HAVE_UINT64_T)
694 #  define KWIML_INT_uint64_t KWIML_INT_detail_GLOBAL_NS(uint64_t)
695 # elif KWIML_ABI_SIZEOF_LONG == 8
696 #  define KWIML_INT_uint64_t unsigned long
697 # elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
698 #  define KWIML_INT_uint64_t unsigned long long
699 # elif defined(KWIML_ABI_SIZEOF___INT64)
700 #  define KWIML_INT_uint64_t unsigned __int64
701 # elif defined(KWIML_INT_NO_ERROR_UINT64_T)
702 #  define KWIML_INT_NO_UINT64_T
703 # else
704 #  error "No type known for 'uint64_t'."
705 # endif
706 #endif
707 
708 #if defined(__INTEL_COMPILER)
709 #elif defined(__BORLANDC__)
710 # define KWIML_INT_private_NO_FMTLL /* type 'long long' but not 'll' format */
711 # define KWIML_INT_BROKEN_INT64_C 1  /* system macro defined incorrectly */
712 # define KWIML_INT_BROKEN_UINT64_C 1 /* system macro defined incorrectly */
713 #elif defined(_MSC_VER) && _MSC_VER < 1400
714 # define KWIML_INT_private_NO_FMTLL /* type 'long long' but not 'll' format */
715 #endif
716 
717 #if !defined(KWIML_INT_detail_FMT64)
718 # if KWIML_ABI_SIZEOF_LONG == 8
719 #  define KWIML_INT_detail_FMT64 "l"
720 # elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
721 #  if !defined(KWIML_INT_private_NO_FMTLL)
722 #   define KWIML_INT_detail_FMT64 "ll"
723 #  else
724 #   define KWIML_INT_detail_FMT64 "I64"
725 #  endif
726 # elif defined(KWIML_ABI_SIZEOF___INT64)
727 #  if defined(__BORLANDC__)
728 #   define KWIML_INT_detail_FMT64 "L"
729 #  else
730 #   define KWIML_INT_detail_FMT64 "I64"
731 #  endif
732 # endif
733 #endif
734 
735 #undef KWIML_INT_private_NO_FMTLL
736 
737 /* 64-bit d, i */
738 #if !defined(KWIML_INT_PRId64)
739 # if defined(KWIML_INT_HAVE_INT64_T) && defined(PRId64) \
740    && !defined(KWIML_INT_BROKEN_PRId64)
741 #  define KWIML_INT_PRId64 PRId64
742 # elif defined(KWIML_INT_detail_FMT64)
743 #  define KWIML_INT_PRId64 KWIML_INT_detail_FMT64 "d"
744 # endif
745 #endif
746 #if !defined(KWIML_INT_SCNd64)
747 # if defined(KWIML_INT_HAVE_INT64_T) && defined(SCNd64) \
748    && !defined(KWIML_INT_BROKEN_SCNd64)
749 #  define KWIML_INT_SCNd64 SCNd64
750 # elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
751 #  define KWIML_INT_SCNd64 KWIML_INT_detail_FMT64 "d"
752 # endif
753 #endif
754 #if !defined(KWIML_INT_PRIi64)
755 # if defined(KWIML_INT_HAVE_INT64_T) && defined(PRIi64) \
756    && !defined(KWIML_INT_BROKEN_PRIi64)
757 #  define KWIML_INT_PRIi64 PRIi64
758 # elif defined(KWIML_INT_detail_FMT64)
759 #  define KWIML_INT_PRIi64 KWIML_INT_detail_FMT64 "d"
760 # endif
761 #endif
762 #if !defined(KWIML_INT_SCNi64)
763 # if defined(KWIML_INT_HAVE_INT64_T) && defined(SCNi64) \
764    && !defined(KWIML_INT_BROKEN_SCNi64)
765 #  define KWIML_INT_SCNi64 SCNi64
766 # elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
767 #  define KWIML_INT_SCNi64 KWIML_INT_detail_FMT64 "d"
768 # endif
769 #endif
770 
771 /* 64-bit o, u, x, X */
772 #if !defined(KWIML_INT_PRIo64)
773 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(PRIo64) \
774    && !defined(KWIML_INT_BROKEN_PRIo64)
775 #  define KWIML_INT_PRIo64 PRIo64
776 # elif defined(KWIML_INT_detail_FMT64)
777 #  define KWIML_INT_PRIo64 KWIML_INT_detail_FMT64 "o"
778 # endif
779 #endif
780 #if !defined(KWIML_INT_SCNo64)
781 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(SCNo64) \
782    && !defined(KWIML_INT_BROKEN_SCNo64)
783 #  define KWIML_INT_SCNo64 SCNo64
784 # elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
785 #  define KWIML_INT_SCNo64 KWIML_INT_detail_FMT64 "o"
786 # endif
787 #endif
788 #if !defined(KWIML_INT_PRIu64)
789 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(PRIu64) \
790    && !defined(KWIML_INT_BROKEN_PRIu64)
791 #  define KWIML_INT_PRIu64 PRIu64
792 # elif defined(KWIML_INT_detail_FMT64)
793 #  define KWIML_INT_PRIu64 KWIML_INT_detail_FMT64 "u"
794 # endif
795 #endif
796 #if !defined(KWIML_INT_SCNu64)
797 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(SCNu64) \
798    && !defined(KWIML_INT_BROKEN_SCNu64)
799 #  define KWIML_INT_SCNu64 SCNu64
800 # elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
801 #  define KWIML_INT_SCNu64 KWIML_INT_detail_FMT64 "u"
802 # endif
803 #endif
804 #if !defined(KWIML_INT_PRIx64)
805 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(PRIx64) \
806    && !defined(KWIML_INT_BROKEN_PRIx64)
807 #  define KWIML_INT_PRIx64 PRIx64
808 # elif defined(KWIML_INT_detail_FMT64)
809 #  define KWIML_INT_PRIx64 KWIML_INT_detail_FMT64 "x"
810 # endif
811 #endif
812 #if !defined(KWIML_INT_SCNx64)
813 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(SCNx64) \
814    && !defined(KWIML_INT_BROKEN_SCNx64)
815 #  define KWIML_INT_SCNx64 SCNx64
816 # elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
817 #  define KWIML_INT_SCNx64 KWIML_INT_detail_FMT64 "x"
818 # endif
819 #endif
820 #if !defined(KWIML_INT_PRIX64)
821 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(PRIX64) \
822    && !defined(KWIML_INT_BROKEN_PRIX64)
823 #  define KWIML_INT_PRIX64 PRIX64
824 # elif defined(KWIML_INT_detail_FMT64)
825 #  define KWIML_INT_PRIX64 KWIML_INT_detail_FMT64 "X"
826 # endif
827 #endif
828 
829 /* 64-bit constants */
830 #if !defined(KWIML_INT_INT64_C)
831 # if defined(KWIML_INT_HAVE_INT64_T) && defined(INT64_C) \
832    && !defined(KWIML_INT_BROKEN_INT64_C)
833 #  define KWIML_INT_INT64_C(c) INT64_C(c)
834 # elif KWIML_ABI_SIZEOF_LONG == 8
835 #  define KWIML_INT_INT64_C(c) c ## l
836 # elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
837 #  define KWIML_INT_INT64_C(c) c ## ll
838 # elif defined(KWIML_ABI_SIZEOF___INT64)
839 #  define KWIML_INT_INT64_C(c) c ## i64
840 # endif
841 #endif
842 #if !defined(KWIML_INT_UINT64_C)
843 # if defined(KWIML_INT_HAVE_UINT64_T) && defined(UINT64_C) \
844    && !defined(KWIML_INT_BROKEN_UINT64_C)
845 #  define KWIML_INT_UINT64_C(c) UINT64_C(c)
846 # elif KWIML_ABI_SIZEOF_LONG == 8
847 #  define KWIML_INT_UINT64_C(c) c ## ul
848 # elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
849 #  define KWIML_INT_UINT64_C(c) c ## ull
850 # elif defined(KWIML_ABI_SIZEOF___INT64)
851 #  define KWIML_INT_UINT64_C(c) c ## ui64
852 # endif
853 #endif
854 
855 /*--------------------------------------------------------------------------*/
856 #if !defined(KWIML_INT_intptr_t) && !defined(KWIML_INT_NO_INTPTR_T)
857 # if defined(KWIML_INT_HAVE_INTPTR_T)
858 #  define KWIML_INT_intptr_t KWIML_INT_detail_GLOBAL_NS(intptr_t)
859 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
860 #  define KWIML_INT_intptr_t KWIML_INT_int32_t
861 # elif !defined(KWIML_INT_NO_INT64_T)
862 #  define KWIML_INT_intptr_t KWIML_INT_int64_t
863 # elif defined(KWIML_INT_NO_ERROR_INTPTR_T)
864 #  define KWIML_INT_NO_INTPTR_T
865 # else
866 #  error "No type known for 'intptr_t'."
867 # endif
868 #endif
869 #if !defined(KWIML_INT_uintptr_t) && !defined(KWIML_INT_NO_UINTPTR_T)
870 # if defined(KWIML_INT_HAVE_UINTPTR_T)
871 #  define KWIML_INT_uintptr_t KWIML_INT_detail_GLOBAL_NS(uintptr_t)
872 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
873 #  define KWIML_INT_uintptr_t KWIML_INT_uint32_t
874 # elif !defined(KWIML_INT_NO_UINT64_T)
875 #  define KWIML_INT_uintptr_t KWIML_INT_uint64_t
876 # elif defined(KWIML_INT_NO_ERROR_UINTPTR_T)
877 #  define KWIML_INT_NO_UINTPTR_T
878 # else
879 #  error "No type known for 'uintptr_t'."
880 # endif
881 #endif
882 
883 #if !defined(KWIML_INT_PRIdPTR)
884 # if defined(KWIML_INT_HAVE_INTPTR_T) && defined(PRIdPTR) \
885    && !defined(KWIML_INT_BROKEN_PRIdPTR)
886 #  define KWIML_INT_PRIdPTR PRIdPTR
887 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
888 #  define KWIML_INT_PRIdPTR KWIML_INT_PRId32
889 # elif !defined(KWIML_INT_NO_UINT64_T)
890 #  define KWIML_INT_PRIdPTR KWIML_INT_PRId64
891 # endif
892 #endif
893 #if !defined(KWIML_INT_SCNdPTR)
894 # if defined(KWIML_INT_HAVE_INTPTR_T) && defined(SCNdPTR) \
895    && !defined(KWIML_INT_BROKEN_SCNdPTR)
896 #  define KWIML_INT_SCNdPTR SCNdPTR
897 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
898 #  define KWIML_INT_SCNdPTR KWIML_INT_SCNd32
899 # elif !defined(KWIML_INT_NO_UINT64_T)
900 #  define KWIML_INT_SCNdPTR KWIML_INT_SCNd64
901 # endif
902 #endif
903 #if !defined(KWIML_INT_PRIiPTR)
904 # if defined(KWIML_INT_HAVE_INTPTR_T) && defined(PRIiPTR) \
905    && !defined(KWIML_INT_BROKEN_PRIiPTR)
906 #  define KWIML_INT_PRIiPTR PRIiPTR
907 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
908 #  define KWIML_INT_PRIiPTR KWIML_INT_PRIi32
909 # elif !defined(KWIML_INT_NO_UINT64_T)
910 #  define KWIML_INT_PRIiPTR KWIML_INT_PRIi64
911 # endif
912 #endif
913 #if !defined(KWIML_INT_SCNiPTR)
914 # if defined(KWIML_INT_HAVE_INTPTR_T) && defined(SCNiPTR) \
915    && !defined(KWIML_INT_BROKEN_SCNiPTR)
916 #  define KWIML_INT_SCNiPTR SCNiPTR
917 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
918 #  define KWIML_INT_SCNiPTR KWIML_INT_SCNi32
919 # elif !defined(KWIML_INT_NO_UINT64_T)
920 #  define KWIML_INT_SCNiPTR KWIML_INT_SCNi64
921 # endif
922 #endif
923 
924 #if !defined(KWIML_INT_PRIoPTR)
925 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(PRIoPTR) \
926    && !defined(KWIML_INT_BROKEN_PRIoPTR)
927 #  define KWIML_INT_PRIoPTR PRIoPTR
928 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
929 #  define KWIML_INT_PRIoPTR KWIML_INT_PRIo32
930 # elif !defined(KWIML_INT_NO_UINT64_T)
931 #  define KWIML_INT_PRIoPTR KWIML_INT_PRIo64
932 # endif
933 #endif
934 #if !defined(KWIML_INT_SCNoPTR)
935 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(SCNoPTR) \
936    && !defined(KWIML_INT_BROKEN_SCNoPTR)
937 #  define KWIML_INT_SCNoPTR SCNoPTR
938 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
939 #  define KWIML_INT_SCNoPTR KWIML_INT_SCNo32
940 # elif !defined(KWIML_INT_NO_UINT64_T)
941 #  define KWIML_INT_SCNoPTR KWIML_INT_SCNo64
942 # endif
943 #endif
944 #if !defined(KWIML_INT_PRIuPTR)
945 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(PRIuPTR) \
946    && !defined(KWIML_INT_BROKEN_PRIuPTR)
947 #  define KWIML_INT_PRIuPTR PRIuPTR
948 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
949 #  define KWIML_INT_PRIuPTR KWIML_INT_PRIu32
950 # elif !defined(KWIML_INT_NO_UINT64_T)
951 #  define KWIML_INT_PRIuPTR KWIML_INT_PRIu64
952 # endif
953 #endif
954 #if !defined(KWIML_INT_SCNuPTR)
955 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(SCNuPTR) \
956    && !defined(KWIML_INT_BROKEN_SCNuPTR)
957 #  define KWIML_INT_SCNuPTR SCNuPTR
958 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
959 #  define KWIML_INT_SCNuPTR KWIML_INT_SCNu32
960 # elif !defined(KWIML_INT_NO_UINT64_T)
961 #  define KWIML_INT_SCNuPTR KWIML_INT_SCNu64
962 # endif
963 #endif
964 #if !defined(KWIML_INT_PRIxPTR)
965 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(PRIxPTR) \
966    && !defined(KWIML_INT_BROKEN_PRIxPTR)
967 #  define KWIML_INT_PRIxPTR PRIxPTR
968 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
969 #  define KWIML_INT_PRIxPTR KWIML_INT_PRIx32
970 # elif !defined(KWIML_INT_NO_UINT64_T)
971 #  define KWIML_INT_PRIxPTR KWIML_INT_PRIx64
972 # endif
973 #endif
974 #if !defined(KWIML_INT_SCNxPTR)
975 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(SCNxPTR) \
976    && !defined(KWIML_INT_BROKEN_SCNxPTR)
977 #  define KWIML_INT_SCNxPTR SCNxPTR
978 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
979 #  define KWIML_INT_SCNxPTR KWIML_INT_SCNx32
980 # elif !defined(KWIML_INT_NO_UINT64_T)
981 #  define KWIML_INT_SCNxPTR KWIML_INT_SCNx64
982 # endif
983 #endif
984 #if !defined(KWIML_INT_PRIXPTR)
985 # if defined(KWIML_INT_HAVE_UINTPTR_T) && defined(PRIXPTR) \
986    && !defined(KWIML_INT_BROKEN_PRIXPTR)
987 #  define KWIML_INT_PRIXPTR PRIXPTR
988 # elif KWIML_ABI_SIZEOF_DATA_PTR == 4
989 #  define KWIML_INT_PRIXPTR KWIML_INT_PRIX32
990 # elif !defined(KWIML_INT_NO_UINT64_T)
991 #  define KWIML_INT_PRIXPTR KWIML_INT_PRIX64
992 # endif
993 #endif
994 
995 #undef KWIML_INT_private_NO_SCN64
996 #undef KWIML_INT_private_NO_SCN8
997 
998 #endif /* KWIML_INT_private_DO_DEFINE */
999 
1000 /*--------------------------------------------------------------------------*/
1001 #ifdef KWIML_INT_private_DO_VERIFY
1002 #undef KWIML_INT_private_DO_VERIFY
1003 
1004 #if defined(_MSC_VER)
1005 # pragma warning (push)
1006 # pragma warning (disable:4309) /* static_cast trunction of constant value */
1007 # pragma warning (disable:4310) /* cast truncates constant value */
1008 #endif
1009 
1010 #ifdef __cplusplus
1011 #define KWIML_INT_private_STATIC_CAST(t,v) static_cast<t>(v)
1012 #else
1013 #define KWIML_INT_private_STATIC_CAST(t,v) (t)(v)
1014 #endif
1015 
1016 #define KWIML_INT_private_VERIFY(n, x, y) KWIML_INT_private_VERIFY_0(KWIML_INT_private_VERSION, n, x, y)
1017 #define KWIML_INT_private_VERIFY_0(V, n, x, y) KWIML_INT_private_VERIFY_1(V, n, x, y)
1018 #define KWIML_INT_private_VERIFY_1(V, n, x, y) extern int (*n##_v##V)[x]; extern int (*n##_v##V)[y]
1019 
1020 #define KWIML_INT_private_VERIFY_BOOL(m, b) KWIML_INT_private_VERIFY(KWIML_INT_detail_VERIFY_##m, 2, (b)?2:3)
1021 #define KWIML_INT_private_VERIFY_TYPE(t, s) KWIML_INT_private_VERIFY(KWIML_INT_detail_VERIFY_##t, s, sizeof(t))
1022 #define KWIML_INT_private_VERIFY_SIGN(t, u, o) \
1023   KWIML_INT_private_VERIFY_BOOL(SIGN_##t, KWIML_INT_private_STATIC_CAST( \
1024       t, KWIML_INT_private_STATIC_CAST(u, 1) << ((sizeof(t)<<3)-1)) o 0)
1025 
1026 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int8_t,    1);
1027 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint8_t,   1);
1028 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int16_t,   2);
1029 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint16_t,  2);
1030 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int32_t,   4);
1031 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint32_t,  4);
1032 #if !defined(KWIML_INT_NO_INT64_T)
1033 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int64_t,   8);
1034 #endif
1035 #if !defined(KWIML_INT_NO_UINT64_T)
1036 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint64_t,  8);
1037 #endif
1038 #if !defined(KWIML_INT_NO_INTPTR_T)
1039 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_intptr_t,  sizeof(void*));
1040 #endif
1041 #if !defined(KWIML_INT_NO_UINTPTR_T)
1042 KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uintptr_t, sizeof(void*));
1043 #endif
1044 
1045 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_int8_t,    KWIML_INT_uint8_t,   <);
1046 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint8_t,   KWIML_INT_uint8_t,   >);
1047 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_int16_t,   KWIML_INT_uint16_t,  <);
1048 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint16_t,  KWIML_INT_uint16_t,  >);
1049 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_int32_t,   KWIML_INT_uint32_t,  <);
1050 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint32_t,  KWIML_INT_uint32_t,  >);
1051 #if !defined(KWIML_INT_NO_INT64_T)
1052 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_int64_t,   KWIML_INT_uint64_t,  <);
1053 #endif
1054 #if !defined(KWIML_INT_NO_UINT64_T)
1055 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint64_t,  KWIML_INT_uint64_t,  >);
1056 #endif
1057 #if !defined(KWIML_INT_NO_INTPTR_T)
1058 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_intptr_t,  KWIML_INT_uintptr_t, <);
1059 #endif
1060 #if !defined(KWIML_INT_NO_UINTPTR_T)
1061 KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uintptr_t, KWIML_INT_uintptr_t, >);
1062 #endif
1063 
1064 #undef KWIML_INT_private_VERIFY_SIGN
1065 #undef KWIML_INT_private_VERIFY_TYPE
1066 #undef KWIML_INT_private_VERIFY_BOOL
1067 
1068 #undef KWIML_INT_private_VERIFY_1
1069 #undef KWIML_INT_private_VERIFY_0
1070 #undef KWIML_INT_private_VERIFY
1071 
1072 #undef KWIML_INT_private_STATIC_CAST
1073 
1074 #if defined(_MSC_VER)
1075 # pragma warning (pop)
1076 #endif
1077 
1078 #endif /* KWIML_INT_private_DO_VERIFY  */
1079 
1080 #undef KWIML_INT_private_VERSION
1081