KWIML: Add interface to report broken integer format macros

The <inttypes.h> header on some platforms define the integer format
macros incorrectly for some of the integer types.  Document macros that
we can define to report such platforms to the includer.  Check these
reports before trusting the system-defined macros.
This commit is contained in:
Brad King 2012-06-06 14:23:13 -04:00
parent 10272e6403
commit e1b0fc9c9a
1 changed files with 114 additions and 55 deletions

169
INT.h.in
View File

@ -87,6 +87,10 @@ An includer may test the following macros after inclusion:
The SCN*8 and SCN*64 format macros will not be defined on systems
with scanf implementations known not to support them.
@KWIML@_INT_BROKEN_<fmt># = macro <fmt># is incorrect if defined
Some compilers define integer format macros incorrectly for their
own formatted print/scan implementations.
@KWIML@_INT_BROKEN_INT64_C = macro INT64_C is incorrect if defined
@KWIML@_INT_BROKEN_UINT64_C = macro UINT64_C is incorrect if defined
Some compilers define integer constant macros incorrectly and
@ -208,59 +212,70 @@ An includer may test the following macros after inclusion:
#endif
/* 8-bit d, i */
#if defined(@KWIML@_INT_HAVE_INT8_T) && defined(PRId8)
#if defined(@KWIML@_INT_HAVE_INT8_T) && defined(PRId8) \
&& !defined(@KWIML@_INT_BROKEN_PRId8)
# define @KWIML@_INT_PRId8 PRId8
#else
# define @KWIML@_INT_PRId8 "d"
#endif
#if defined(@KWIML@_INT_HAVE_INT8_T) && defined(SCNd8)
#if defined(@KWIML@_INT_HAVE_INT8_T) && defined(SCNd8) \
&& !defined(@KWIML@_INT_BROKEN_SCNd8)
# define @KWIML@_INT_SCNd8 SCNd8
#elif !defined(@KWIML@_INT__NO_SCN8)
# define @KWIML@_INT_SCNd8 "hhd"
#endif
#if defined(@KWIML@_INT_HAVE_INT8_T) && defined(PRIi8)
#if defined(@KWIML@_INT_HAVE_INT8_T) && defined(PRIi8) \
&& !defined(@KWIML@_INT_BROKEN_PRIi8)
# define @KWIML@_INT_PRIi8 PRIi8
#else
# define @KWIML@_INT_PRIi8 "i"
#endif
#if defined(@KWIML@_INT_HAVE_INT8_T) && defined(SCNi8)
#if defined(@KWIML@_INT_HAVE_INT8_T) && defined(SCNi8) \
&& !defined(@KWIML@_INT_BROKEN_SCNi8)
# define @KWIML@_INT_SCNi8 SCNi8
#elif !defined(@KWIML@_INT__NO_SCN8)
# define @KWIML@_INT_SCNi8 "hhi"
#endif
/* 8-bit o, u, x, X */
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(PRIo8)
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(PRIo8) \
&& !defined(@KWIML@_INT_BROKEN_PRIo8)
# define @KWIML@_INT_PRIo8 PRIo8
#else
# define @KWIML@_INT_PRIo8 "o"
#endif
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(SCNo8)
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(SCNo8) \
&& !defined(@KWIML@_INT_BROKEN_SCNo8)
# define @KWIML@_INT_SCNo8 SCNo8
#elif !defined(@KWIML@_INT__NO_SCN8)
# define @KWIML@_INT_SCNo8 "hho"
#endif
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(PRIu8)
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(PRIu8) \
&& !defined(@KWIML@_INT_BROKEN_PRIu8)
# define @KWIML@_INT_PRIu8 PRIu8
#else
# define @KWIML@_INT_PRIu8 "u"
#endif
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(SCNu8)
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(SCNu8) \
&& !defined(@KWIML@_INT_BROKEN_SCNu8)
# define @KWIML@_INT_SCNu8 SCNu8
#elif !defined(@KWIML@_INT__NO_SCN8)
# define @KWIML@_INT_SCNu8 "hhu"
#endif
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(PRIx8)
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(PRIx8) \
&& !defined(@KWIML@_INT_BROKEN_PRIx8)
# define @KWIML@_INT_PRIx8 PRIx8
#else
# define @KWIML@_INT_PRIx8 "x"
#endif
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(SCNx8)
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(SCNx8) \
&& !defined(@KWIML@_INT_BROKEN_SCNx8)
# define @KWIML@_INT_SCNx8 SCNx8
#elif !defined(@KWIML@_INT__NO_SCN8)
# define @KWIML@_INT_SCNx8 "hhx"
#endif
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(PRIX8)
#if defined(@KWIML@_INT_HAVE_UINT8_T) && defined(PRIX8) \
&& !defined(@KWIML@_INT_BROKEN_PRIX8)
# define @KWIML@_INT_PRIX8 PRIX8
#else
# define @KWIML@_INT_PRIX8 "X"
@ -291,59 +306,70 @@ An includer may test the following macros after inclusion:
#endif
/* 16-bit d, i */
#if defined(@KWIML@_INT_HAVE_INT16_T) && defined(PRId16)
#if defined(@KWIML@_INT_HAVE_INT16_T) && defined(PRId16) \
&& !defined(@KWIML@_INT_BROKEN_PRId16)
# define @KWIML@_INT_PRId16 PRId16
#else
# define @KWIML@_INT_PRId16 "d"
#endif
#if defined(@KWIML@_INT_HAVE_INT16_T) && defined(SCNd16)
#if defined(@KWIML@_INT_HAVE_INT16_T) && defined(SCNd16) \
&& !defined(@KWIML@_INT_BROKEN_SCNd16)
# define @KWIML@_INT_SCNd16 SCNd16
#else
# define @KWIML@_INT_SCNd16 "hd"
#endif
#if defined(@KWIML@_INT_HAVE_INT16_T) && defined(PRIi16)
#if defined(@KWIML@_INT_HAVE_INT16_T) && defined(PRIi16) \
&& !defined(@KWIML@_INT_BROKEN_PRIi16)
# define @KWIML@_INT_PRIi16 PRIi16
#else
# define @KWIML@_INT_PRIi16 "i"
#endif
#if defined(@KWIML@_INT_HAVE_INT16_T) && defined(SCNi16)
#if defined(@KWIML@_INT_HAVE_INT16_T) && defined(SCNi16) \
&& !defined(@KWIML@_INT_BROKEN_SCNi16)
# define @KWIML@_INT_SCNi16 SCNi16
#else
# define @KWIML@_INT_SCNi16 "hi"
#endif
/* 16-bit o, u, x, X */
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(PRIo16)
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(PRIo16) \
&& !defined(@KWIML@_INT_BROKEN_PRIo16)
# define @KWIML@_INT_PRIo16 PRIo16
#else
# define @KWIML@_INT_PRIo16 "o"
#endif
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(SCNo16)
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(SCNo16) \
&& !defined(@KWIML@_INT_BROKEN_SCNo16)
# define @KWIML@_INT_SCNo16 SCNo16
#else
# define @KWIML@_INT_SCNo16 "ho"
#endif
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(PRIu16)
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(PRIu16) \
&& !defined(@KWIML@_INT_BROKEN_PRIu16)
# define @KWIML@_INT_PRIu16 PRIu16
#else
# define @KWIML@_INT_PRIu16 "u"
#endif
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(SCNu16)
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(SCNu16) \
&& !defined(@KWIML@_INT_BROKEN_SCNu16)
# define @KWIML@_INT_SCNu16 SCNu16
#else
# define @KWIML@_INT_SCNu16 "hu"
#endif
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(PRIx16)
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(PRIx16) \
&& !defined(@KWIML@_INT_BROKEN_PRIx16)
# define @KWIML@_INT_PRIx16 PRIx16
#else
# define @KWIML@_INT_PRIx16 "x"
#endif
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(SCNx16)
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(SCNx16) \
&& !defined(@KWIML@_INT_BROKEN_SCNx16)
# define @KWIML@_INT_SCNx16 SCNx16
#else
# define @KWIML@_INT_SCNx16 "hx"
#endif
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(PRIX16)
#if defined(@KWIML@_INT_HAVE_UINT16_T) && defined(PRIX16) \
&& !defined(@KWIML@_INT_BROKEN_PRIX16)
# define @KWIML@_INT_PRIX16 PRIX16
#else
# define @KWIML@_INT_PRIX16 "X"
@ -374,59 +400,70 @@ An includer may test the following macros after inclusion:
#endif
/* 32-bit d, i */
#if defined(@KWIML@_INT_HAVE_INT32_T) && defined(PRId32)
#if defined(@KWIML@_INT_HAVE_INT32_T) && defined(PRId32) \
&& !defined(@KWIML@_INT_BROKEN_PRId32)
# define @KWIML@_INT_PRId32 PRId32
#else
# define @KWIML@_INT_PRId32 "d"
#endif
#if defined(@KWIML@_INT_HAVE_INT32_T) && defined(SCNd32)
#if defined(@KWIML@_INT_HAVE_INT32_T) && defined(SCNd32) \
&& !defined(@KWIML@_INT_BROKEN_SCNd32)
# define @KWIML@_INT_SCNd32 SCNd32
#else
# define @KWIML@_INT_SCNd32 "d"
#endif
#if defined(@KWIML@_INT_HAVE_INT32_T) && defined(PRIi32)
#if defined(@KWIML@_INT_HAVE_INT32_T) && defined(PRIi32) \
&& !defined(@KWIML@_INT_BROKEN_PRIi32)
# define @KWIML@_INT_PRIi32 PRIi32
#else
# define @KWIML@_INT_PRIi32 "i"
#endif
#if defined(@KWIML@_INT_HAVE_INT32_T) && defined(SCNi32)
#if defined(@KWIML@_INT_HAVE_INT32_T) && defined(SCNi32) \
&& !defined(@KWIML@_INT_BROKEN_SCNi32)
# define @KWIML@_INT_SCNi32 SCNi32
#else
# define @KWIML@_INT_SCNi32 "i"
#endif
/* 32-bit o, u, x, X */
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(PRIo32)
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(PRIo32) \
&& !defined(@KWIML@_INT_BROKEN_PRIo32)
# define @KWIML@_INT_PRIo32 PRIo32
#else
# define @KWIML@_INT_PRIo32 "o"
#endif
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(SCNo32)
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(SCNo32) \
&& !defined(@KWIML@_INT_BROKEN_SCNo32)
# define @KWIML@_INT_SCNo32 SCNo32
#else
# define @KWIML@_INT_SCNo32 "o"
#endif
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(PRIu32)
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(PRIu32) \
&& !defined(@KWIML@_INT_BROKEN_PRIu32)
# define @KWIML@_INT_PRIu32 PRIu32
#else
# define @KWIML@_INT_PRIu32 "u"
#endif
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(SCNu32)
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(SCNu32) \
&& !defined(@KWIML@_INT_BROKEN_SCNu32)
# define @KWIML@_INT_SCNu32 SCNu32
#else
# define @KWIML@_INT_SCNu32 "u"
#endif
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(PRIx32)
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(PRIx32) \
&& !defined(@KWIML@_INT_BROKEN_PRIx32)
# define @KWIML@_INT_PRIx32 PRIx32
#else
# define @KWIML@_INT_PRIx32 "x"
#endif
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(SCNx32)
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(SCNx32) \
&& !defined(@KWIML@_INT_BROKEN_SCNx32)
# define @KWIML@_INT_SCNx32 SCNx32
#else
# define @KWIML@_INT_SCNx32 "x"
#endif
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(PRIX32)
#if defined(@KWIML@_INT_HAVE_UINT32_T) && defined(PRIX32) \
&& !defined(@KWIML@_INT_BROKEN_PRIX32)
# define @KWIML@_INT_PRIX32 PRIX32
#else
# define @KWIML@_INT_PRIX32 "X"
@ -498,59 +535,70 @@ An includer may test the following macros after inclusion:
#endif
/* 64-bit d, i */
#if defined(@KWIML@_INT_HAVE_INT64_T) && defined(PRId64)
#if defined(@KWIML@_INT_HAVE_INT64_T) && defined(PRId64) \
&& !defined(@KWIML@_INT_BROKEN_PRId64)
# define @KWIML@_INT_PRId64 PRId64
#elif defined(@KWIML@_INT__FMT64)
# define @KWIML@_INT_PRId64 @KWIML@_INT__FMT64 "d"
#endif
#if defined(@KWIML@_INT_HAVE_INT64_T) && defined(SCNd64)
#if defined(@KWIML@_INT_HAVE_INT64_T) && defined(SCNd64) \
&& !defined(@KWIML@_INT_BROKEN_SCNd64)
# define @KWIML@_INT_SCNd64 SCNd64
#elif defined(@KWIML@_INT__FMT64) && !defined(@KWIML@_INT__NO_SCN64)
# define @KWIML@_INT_SCNd64 @KWIML@_INT__FMT64 "d"
#endif
#if defined(@KWIML@_INT_HAVE_INT64_T) && defined(PRIi64)
#if defined(@KWIML@_INT_HAVE_INT64_T) && defined(PRIi64) \
&& !defined(@KWIML@_INT_BROKEN_PRIi64)
# define @KWIML@_INT_PRIi64 PRIi64
#elif defined(@KWIML@_INT__FMT64)
# define @KWIML@_INT_PRIi64 @KWIML@_INT__FMT64 "d"
#endif
#if defined(@KWIML@_INT_HAVE_INT64_T) && defined(SCNi64)
#if defined(@KWIML@_INT_HAVE_INT64_T) && defined(SCNi64) \
&& !defined(@KWIML@_INT_BROKEN_SCNi64)
# define @KWIML@_INT_SCNi64 SCNi64
#elif defined(@KWIML@_INT__FMT64) && !defined(@KWIML@_INT__NO_SCN64)
# define @KWIML@_INT_SCNi64 @KWIML@_INT__FMT64 "d"
#endif
/* 64-bit o, u, x, X */
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(PRIo64)
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(PRIo64) \
&& !defined(@KWIML@_INT_BROKEN_PRIo64)
# define @KWIML@_INT_PRIo64 PRIo64
#elif defined(@KWIML@_INT__FMT64)
# define @KWIML@_INT_PRIo64 @KWIML@_INT__FMT64 "o"
#endif
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(SCNo64)
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(SCNo64) \
&& !defined(@KWIML@_INT_BROKEN_SCNo64)
# define @KWIML@_INT_SCNo64 SCNo64
#elif defined(@KWIML@_INT__FMT64) && !defined(@KWIML@_INT__NO_SCN64)
# define @KWIML@_INT_SCNo64 @KWIML@_INT__FMT64 "o"
#endif
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(PRIu64)
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(PRIu64) \
&& !defined(@KWIML@_INT_BROKEN_PRIu64)
# define @KWIML@_INT_PRIu64 PRIu64
#elif defined(@KWIML@_INT__FMT64)
# define @KWIML@_INT_PRIu64 @KWIML@_INT__FMT64 "u"
#endif
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(SCNu64)
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(SCNu64) \
&& !defined(@KWIML@_INT_BROKEN_SCNu64)
# define @KWIML@_INT_SCNu64 SCNu64
#elif defined(@KWIML@_INT__FMT64) && !defined(@KWIML@_INT__NO_SCN64)
# define @KWIML@_INT_SCNu64 @KWIML@_INT__FMT64 "u"
#endif
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(PRIx64)
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(PRIx64) \
&& !defined(@KWIML@_INT_BROKEN_PRIx64)
# define @KWIML@_INT_PRIx64 PRIx64
#elif defined(@KWIML@_INT__FMT64)
# define @KWIML@_INT_PRIx64 @KWIML@_INT__FMT64 "x"
#endif
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(SCNx64)
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(SCNx64) \
&& !defined(@KWIML@_INT_BROKEN_SCNx64)
# define @KWIML@_INT_SCNx64 SCNx64
#elif defined(@KWIML@_INT__FMT64) && !defined(@KWIML@_INT__NO_SCN64)
# define @KWIML@_INT_SCNx64 @KWIML@_INT__FMT64 "x"
#endif
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(PRIX64)
#if defined(@KWIML@_INT_HAVE_UINT64_T) && defined(PRIX64) \
&& !defined(@KWIML@_INT_BROKEN_PRIX64)
# define @KWIML@_INT_PRIX64 PRIX64
#elif defined(@KWIML@_INT__FMT64)
# define @KWIML@_INT_PRIX64 @KWIML@_INT__FMT64 "X"
@ -602,28 +650,32 @@ An includer may test the following macros after inclusion:
# error "No type known for 'uintptr_t'."
#endif
#if defined(@KWIML@_INT_HAVE_INTPTR_T) && defined(PRIdPTR)
#if defined(@KWIML@_INT_HAVE_INTPTR_T) && defined(PRIdPTR) \
&& !defined(@KWIML@_INT_BROKEN_PRIdPTR)
# define @KWIML@_INT_PRIdPTR PRIdPTR
#elif @KWIML@_ABI_SIZEOF_DATA_PTR == 4
# define @KWIML@_INT_PRIdPTR @KWIML@_INT_PRId32
#elif !defined(@KWIML@_INT_NO_UINT64_T)
# define @KWIML@_INT_PRIdPTR @KWIML@_INT_PRId64
#endif
#if defined(@KWIML@_INT_HAVE_INTPTR_T) && defined(SCNdPTR)
#if defined(@KWIML@_INT_HAVE_INTPTR_T) && defined(SCNdPTR) \
&& !defined(@KWIML@_INT_BROKEN_SCNdPTR)
# define @KWIML@_INT_SCNdPTR SCNdPTR
#elif @KWIML@_ABI_SIZEOF_DATA_PTR == 4
# define @KWIML@_INT_SCNdPTR @KWIML@_INT_SCNd32
#elif !defined(@KWIML@_INT_NO_UINT64_T)
# define @KWIML@_INT_SCNdPTR @KWIML@_INT_SCNd64
#endif
#if defined(@KWIML@_INT_HAVE_INTPTR_T) && defined(PRIiPTR)
#if defined(@KWIML@_INT_HAVE_INTPTR_T) && defined(PRIiPTR) \
&& !defined(@KWIML@_INT_BROKEN_PRIiPTR)
# define @KWIML@_INT_PRIiPTR PRIiPTR
#elif @KWIML@_ABI_SIZEOF_DATA_PTR == 4
# define @KWIML@_INT_PRIiPTR @KWIML@_INT_PRIi32
#elif !defined(@KWIML@_INT_NO_UINT64_T)
# define @KWIML@_INT_PRIiPTR @KWIML@_INT_PRIi64
#endif
#if defined(@KWIML@_INT_HAVE_INTPTR_T) && defined(SCNiPTR)
#if defined(@KWIML@_INT_HAVE_INTPTR_T) && defined(SCNiPTR) \
&& !defined(@KWIML@_INT_BROKEN_SCNiPTR)
# define @KWIML@_INT_SCNiPTR SCNiPTR
#elif @KWIML@_ABI_SIZEOF_DATA_PTR == 4
# define @KWIML@_INT_SCNiPTR @KWIML@_INT_SCNi32
@ -631,49 +683,56 @@ An includer may test the following macros after inclusion:
# define @KWIML@_INT_SCNiPTR @KWIML@_INT_SCNi64
#endif
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(PRIoPTR)
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(PRIoPTR) \
&& !defined(@KWIML@_INT_BROKEN_PRIoPTR)
# define @KWIML@_INT_PRIoPTR PRIoPTR
#elif @KWIML@_ABI_SIZEOF_DATA_PTR == 4
# define @KWIML@_INT_PRIoPTR @KWIML@_INT_PRIo32
#elif !defined(@KWIML@_INT_NO_UINT64_T)
# define @KWIML@_INT_PRIoPTR @KWIML@_INT_PRIo64
#endif
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(SCNoPTR)
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(SCNoPTR) \
&& !defined(@KWIML@_INT_BROKEN_SCNoPTR)
# define @KWIML@_INT_SCNoPTR SCNoPTR
#elif @KWIML@_ABI_SIZEOF_DATA_PTR == 4
# define @KWIML@_INT_SCNoPTR @KWIML@_INT_SCNo32
#elif !defined(@KWIML@_INT_NO_UINT64_T)
# define @KWIML@_INT_SCNoPTR @KWIML@_INT_SCNo64
#endif
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(PRIuPTR)
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(PRIuPTR) \
&& !defined(@KWIML@_INT_BROKEN_PRIuPTR)
# define @KWIML@_INT_PRIuPTR PRIuPTR
#elif @KWIML@_ABI_SIZEOF_DATA_PTR == 4
# define @KWIML@_INT_PRIuPTR @KWIML@_INT_PRIu32
#elif !defined(@KWIML@_INT_NO_UINT64_T)
# define @KWIML@_INT_PRIuPTR @KWIML@_INT_PRIu64
#endif
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(SCNuPTR)
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(SCNuPTR) \
&& !defined(@KWIML@_INT_BROKEN_SCNuPTR)
# define @KWIML@_INT_SCNuPTR SCNuPTR
#elif @KWIML@_ABI_SIZEOF_DATA_PTR == 4
# define @KWIML@_INT_SCNuPTR @KWIML@_INT_SCNu32
#elif !defined(@KWIML@_INT_NO_UINT64_T)
# define @KWIML@_INT_SCNuPTR @KWIML@_INT_SCNu64
#endif
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(PRIxPTR)
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(PRIxPTR) \
&& !defined(@KWIML@_INT_BROKEN_PRIxPTR)
# define @KWIML@_INT_PRIxPTR PRIxPTR
#elif @KWIML@_ABI_SIZEOF_DATA_PTR == 4
# define @KWIML@_INT_PRIxPTR @KWIML@_INT_PRIx32
#elif !defined(@KWIML@_INT_NO_UINT64_T)
# define @KWIML@_INT_PRIxPTR @KWIML@_INT_PRIx64
#endif
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(SCNxPTR)
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(SCNxPTR) \
&& !defined(@KWIML@_INT_BROKEN_SCNxPTR)
# define @KWIML@_INT_SCNxPTR SCNxPTR
#elif @KWIML@_ABI_SIZEOF_DATA_PTR == 4
# define @KWIML@_INT_SCNxPTR @KWIML@_INT_SCNx32
#elif !defined(@KWIML@_INT_NO_UINT64_T)
# define @KWIML@_INT_SCNxPTR @KWIML@_INT_SCNx64
#endif
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(PRIXPTR)
#if defined(@KWIML@_INT_HAVE_UINTPTR_T) && defined(PRIXPTR) \
&& !defined(@KWIML@_INT_BROKEN_PRIXPTR)
# define @KWIML@_INT_PRIXPTR PRIXPTR
#elif @KWIML@_ABI_SIZEOF_DATA_PTR == 4
# define @KWIML@_INT_PRIXPTR @KWIML@_INT_PRIX32