/*============================================================================
  Kitware Information Macro Library
  Copyright 2010-2018 Kitware, Inc.
  All rights reserved.

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
  are met:

  * Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.

  * Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.

  * Neither the name of Kitware, Inc. nor the names of its contributors
    may be used to endorse or promote products derived from this
    software without specific prior written permission.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
============================================================================*/
/*
This header defines macros with information about sized integer types.
Only information that can be determined using the preprocessor at
compilation time is available.  No try-compile results may be added
here.  Instead we memorize results on platforms of interest.

An includer may optionally define the following macros to suppress errors:

Input:
  KWIML_INT_NO_VERIFY          = skip verification declarations
  KWIML_INT_NO_ERROR_INT64_T   = type 'KWIML_INT_int64_t' is optional (*)
  KWIML_INT_NO_ERROR_UINT64_T  = type 'KWIML_INT_uint64_t' is optional (*)
  KWIML_INT_NO_ERROR_INTPTR_T  = type 'KWIML_INT_intptr_t' is optional (*)
  KWIML_INT_NO_ERROR_UINTPTR_T = type 'KWIML_INT_uintptr_t' is optional (*)

An includer may optionally define the following macros to override defaults.
Either way, an includer may test these macros after inclusion:

  KWIML_INT_HAVE_STDINT_H   = include <stdint.h>
  KWIML_INT_NO_STDINT_H     = do not include <stdint.h>
  KWIML_INT_HAVE_INTTYPES_H = include <inttypes.h>
  KWIML_INT_NO_INTTYPES_H   = do not include <inttypes.h>

An includer may test the following macros after inclusion:

  KWIML_INT_VERSION         = interface version number # of this header

  KWIML_INT_HAVE_INT#_T     = type 'int#_t' is available
  KWIML_INT_HAVE_UINT#_T    = type 'uint#_t' is available
                                # = 8, 16, 32, 64, PTR

  KWIML_INT_int#_t          = signed integer type exactly # bits wide
  KWIML_INT_uint#_t         = unsigned integer type exactly # bits wide
                                # = 8, 16, 32, 64 (*), ptr (*)

  KWIML_INT_NO_INT64_T      = type 'KWIML_INT_int64_t' not available
  KWIML_INT_NO_UINT64_T     = type 'KWIML_INT_uint64_t' not available
  KWIML_INT_NO_INTPTR_T     = type 'KWIML_INT_intptr_t' not available
  KWIML_INT_NO_UINTPTR_T    = type 'KWIML_INT_uintptr_t' not available

  KWIML_INT_INT#_C(c)       = signed integer constant at least # bits wide
  KWIML_INT_UINT#_C(c)      = unsigned integer constant at least # bits wide
                                # = 8, 16, 32, 64 (*)

  KWIML_INT_<fmt>#          = print or scan format, <fmt> in table below
                                # = 8, 16, 32, 64, PTR (*)

             signed                unsigned
           ----------- ------------------------------
          |  decimal  | decimal  octal   hexadecimal |
    print | PRId PRIi |  PRIu    PRIo    PRIx  PRIX  |
     scan | SCNd SCNi |  SCNu    SCNo    SCNx        |
           ----------- ------------------------------

    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_INT#_C  = macro INT#_C is incorrect if defined
  KWIML_INT_BROKEN_UINT#_C = macro UINT#_C is incorrect if defined
    Some compilers define integer constant macros incorrectly and
    cannot handle literals as large as the integer type or even
    produce bad preprocessor syntax.

  KWIML_INT_BROKEN_INT8_T   = type 'int8_t' is available but incorrect
    Some compilers have a flag to make 'char' (un)signed but do not account
    for it while defining int8_t in the non-default case.

  The broken cases do not affect correctness of the macros documented above.
*/

#include "abi.h"

#define KWIML_INT_private_VERSION 1

/* Guard definition of this version.  */
#ifndef KWIML_INT_detail_DEFINED_VERSION_1
# define KWIML_INT_detail_DEFINED_VERSION_1 1
# define KWIML_INT_private_DO_DEFINE
#endif

/* Guard verification of this version.  */
#if !defined(KWIML_INT_NO_VERIFY)
# ifndef KWIML_INT_detail_VERIFIED_VERSION_1
#  define KWIML_INT_detail_VERIFIED_VERSION_1
#  define KWIML_INT_private_DO_VERIFY
# endif
#endif

#ifdef KWIML_INT_private_DO_DEFINE
#undef KWIML_INT_private_DO_DEFINE

/* Define version as most recent of those included.  */
#if !defined(KWIML_INT_VERSION) || KWIML_INT_VERSION < KWIML_INT_private_VERSION
# undef KWIML_INT_VERSION
# define KWIML_INT_VERSION 1
#endif

/*--------------------------------------------------------------------------*/
#if defined(KWIML_INT_HAVE_STDINT_H) /* Already defined. */
#elif defined(KWIML_INT_NO_STDINT_H) /* Already defined. */
#elif defined(HAVE_STDINT_H) /* Optionally provided by includer.  */
# define KWIML_INT_HAVE_STDINT_H 1
#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
# define KWIML_INT_HAVE_STDINT_H 1
#elif defined(_MSC_VER) /* MSVC */
# if _MSC_VER >= 1600
#  define KWIML_INT_HAVE_STDINT_H 1
# else
#  define KWIML_INT_NO_STDINT_H 1
# endif
#elif defined(__BORLANDC__) /* Borland */
# if __BORLANDC__ >= 0x560
#  define KWIML_INT_HAVE_STDINT_H 1
# else
#  define KWIML_INT_NO_STDINT_H 1
# endif
#elif defined(__WATCOMC__) /* Watcom */
# define KWIML_INT_NO_STDINT_H 1
#endif

/*--------------------------------------------------------------------------*/
#if defined(KWIML_INT_HAVE_INTTYPES_H) /* Already defined. */
#elif defined(KWIML_INT_NO_INTTYPES_H) /* Already defined. */
#elif defined(HAVE_INTTYPES_H) /* Optionally provided by includer.  */
# define KWIML_INT_HAVE_INTTYPES_H 1
#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
# define KWIML_INT_HAVE_INTTYPES_H 1
#elif defined(_MSC_VER) /* MSVC */
# define KWIML_INT_NO_INTTYPES_H 1
#elif defined(__BORLANDC__) /* Borland */
# define KWIML_INT_NO_INTTYPES_H 1
#elif defined(__WATCOMC__) /* Watcom */
# define KWIML_INT_NO_INTTYPES_H 1
#else /* Assume it exists.  */
# define KWIML_INT_HAVE_INTTYPES_H 1
#endif

/*--------------------------------------------------------------------------*/
#if defined(KWIML_INT_HAVE_STDINT_H) && defined(KWIML_INT_NO_STDINT_H)
# error "Both KWIML_INT_HAVE_STDINT_H and KWIML_INT_NO_STDINT_H defined!"
#endif
#if defined(KWIML_INT_HAVE_INTTYPES_H) && defined(KWIML_INT_NO_INTTYPES_H)
# error "Both KWIML_INT_HAVE_INTTYPES_H and KWIML_INT_NO_INTTYPES_H defined!"
#endif

#if defined(KWIML_INT_HAVE_STDINT_H)
# ifndef KWIML_INT_detail_INCLUDED_STDINT_H
#  define KWIML_INT_detail_INCLUDED_STDINT_H
#  include <stdint.h>
# endif
#endif
#if defined(KWIML_INT_HAVE_INTTYPES_H)
# ifndef KWIML_INT_detail_INCLUDED_INTTYPES_H
#  define KWIML_INT_detail_INCLUDED_INTTYPES_H
#  if defined(__cplusplus) && !defined(__STDC_FORMAT_MACROS)
#   define __STDC_FORMAT_MACROS
#  endif
#  include <inttypes.h>
# endif
#endif

#if defined(KWIML_INT_HAVE_STDINT_H) || defined(KWIML_INT_HAVE_INTTYPES_H)
#define KWIML_INT_HAVE_INT8_T 1
#define KWIML_INT_HAVE_UINT8_T 1
#define KWIML_INT_HAVE_INT16_T 1
#define KWIML_INT_HAVE_UINT16_T 1
#define KWIML_INT_HAVE_INT32_T 1
#define KWIML_INT_HAVE_UINT32_T 1
#define KWIML_INT_HAVE_INT64_T 1
#define KWIML_INT_HAVE_UINT64_T 1
#define KWIML_INT_HAVE_INTPTR_T 1
#define KWIML_INT_HAVE_UINTPTR_T 1
# if defined(__cplusplus)
#  define KWIML_INT_detail_GLOBAL_NS(T) ::T
# else
#  define KWIML_INT_detail_GLOBAL_NS(T) T
# endif
#endif

#if defined(_AIX43) && !defined(_AIX50) && !defined(_AIX51)
  /* AIX 4.3 defines these incorrectly with % and no quotes. */
# define KWIML_INT_BROKEN_PRId8 1
# define KWIML_INT_BROKEN_SCNd8 1
# define KWIML_INT_BROKEN_PRIi8 1
# define KWIML_INT_BROKEN_SCNi8 1
# define KWIML_INT_BROKEN_PRIo8 1
# define KWIML_INT_BROKEN_SCNo8 1
# define KWIML_INT_BROKEN_PRIu8 1
# define KWIML_INT_BROKEN_SCNu8 1
# define KWIML_INT_BROKEN_PRIx8 1
# define KWIML_INT_BROKEN_SCNx8 1
# define KWIML_INT_BROKEN_PRIX8 1
# define KWIML_INT_BROKEN_PRId16 1
# define KWIML_INT_BROKEN_SCNd16 1
# define KWIML_INT_BROKEN_PRIi16 1
# define KWIML_INT_BROKEN_SCNi16 1
# define KWIML_INT_BROKEN_PRIo16 1
# define KWIML_INT_BROKEN_SCNo16 1
# define KWIML_INT_BROKEN_PRIu16 1
# define KWIML_INT_BROKEN_SCNu16 1
# define KWIML_INT_BROKEN_PRIx16 1
# define KWIML_INT_BROKEN_SCNx16 1
# define KWIML_INT_BROKEN_PRIX16 1
# define KWIML_INT_BROKEN_PRId32 1
# define KWIML_INT_BROKEN_SCNd32 1
# define KWIML_INT_BROKEN_PRIi32 1
# define KWIML_INT_BROKEN_SCNi32 1
# define KWIML_INT_BROKEN_PRIo32 1
# define KWIML_INT_BROKEN_SCNo32 1
# define KWIML_INT_BROKEN_PRIu32 1
# define KWIML_INT_BROKEN_SCNu32 1
# define KWIML_INT_BROKEN_PRIx32 1
# define KWIML_INT_BROKEN_SCNx32 1
# define KWIML_INT_BROKEN_PRIX32 1
# define KWIML_INT_BROKEN_PRId64 1
# define KWIML_INT_BROKEN_SCNd64 1
# define KWIML_INT_BROKEN_PRIi64 1
# define KWIML_INT_BROKEN_SCNi64 1
# define KWIML_INT_BROKEN_PRIo64 1
# define KWIML_INT_BROKEN_SCNo64 1
# define KWIML_INT_BROKEN_PRIu64 1
# define KWIML_INT_BROKEN_SCNu64 1
# define KWIML_INT_BROKEN_PRIx64 1
# define KWIML_INT_BROKEN_SCNx64 1
# define KWIML_INT_BROKEN_PRIX64 1
# define KWIML_INT_BROKEN_PRIdPTR 1
# define KWIML_INT_BROKEN_SCNdPTR 1
# define KWIML_INT_BROKEN_PRIiPTR 1
# define KWIML_INT_BROKEN_SCNiPTR 1
# define KWIML_INT_BROKEN_PRIoPTR 1
# define KWIML_INT_BROKEN_SCNoPTR 1
# define KWIML_INT_BROKEN_PRIuPTR 1
# define KWIML_INT_BROKEN_SCNuPTR 1
# define KWIML_INT_BROKEN_PRIxPTR 1
# define KWIML_INT_BROKEN_SCNxPTR 1
# define KWIML_INT_BROKEN_PRIXPTR 1
#endif

#if (defined(__SUNPRO_C)||defined(__SUNPRO_CC)) && defined(_CHAR_IS_UNSIGNED)
# define KWIML_INT_BROKEN_INT8_T 1 /* system type defined incorrectly */
#elif defined(__BORLANDC__) && defined(_CHAR_UNSIGNED)
# define KWIML_INT_BROKEN_INT8_T 1 /* system type defined incorrectly */
#endif

/*--------------------------------------------------------------------------*/
#if !defined(KWIML_INT_int8_t)
# if defined(KWIML_INT_HAVE_INT8_T) && !defined(KWIML_INT_BROKEN_INT8_T)
#  define KWIML_INT_int8_t KWIML_INT_detail_GLOBAL_NS(int8_t)
# else
#  define KWIML_INT_int8_t signed char
# endif
#endif
#if !defined(KWIML_INT_uint8_t)
# if defined(KWIML_INT_HAVE_UINT8_T)
#  define KWIML_INT_uint8_t KWIML_INT_detail_GLOBAL_NS(uint8_t)
# else
#  define KWIML_INT_uint8_t unsigned char
# endif
#endif

#if defined(__INTEL_COMPILER)
# if defined(_WIN32)
#  define KWIML_INT_private_NO_SCN8
# endif
#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
# define KWIML_INT_private_NO_SCN8
#elif defined(__BORLANDC__)
# define KWIML_INT_private_NO_SCN8
# define KWIML_INT_private_NO_SCN64
#elif defined(_MSC_VER)
# define KWIML_INT_private_NO_SCN8
#elif defined(__WATCOMC__)
# define KWIML_INT_private_NO_SCN8
# elif defined(__hpux) /* HP runtime lacks support (any compiler) */
# define KWIML_INT_private_NO_SCN8
#endif

/* 8-bit d, i */
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_SCNd8)
# if defined(KWIML_INT_HAVE_INT8_T) && defined(SCNd8) \
   && !defined(KWIML_INT_BROKEN_SCNd8)
#  define KWIML_INT_SCNd8 SCNd8
# elif !defined(KWIML_INT_private_NO_SCN8)
#  define KWIML_INT_SCNd8 "hhd"
# endif
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_SCNi8)
# if defined(KWIML_INT_HAVE_INT8_T) && defined(SCNi8) \
   && !defined(KWIML_INT_BROKEN_SCNi8)
#  define KWIML_INT_SCNi8 SCNi8
# elif !defined(KWIML_INT_private_NO_SCN8)
#  define KWIML_INT_SCNi8 "hhi"
# endif
#endif

/* 8-bit o, u, x, X */
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_SCNo8)
# if defined(KWIML_INT_HAVE_UINT8_T) && defined(SCNo8) \
   && !defined(KWIML_INT_BROKEN_SCNo8)
#  define KWIML_INT_SCNo8 SCNo8
# elif !defined(KWIML_INT_private_NO_SCN8)
#  define KWIML_INT_SCNo8 "hho"
# endif
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_SCNu8)
# if defined(KWIML_INT_HAVE_UINT8_T) && defined(SCNu8) \
   && !defined(KWIML_INT_BROKEN_SCNu8)
#  define KWIML_INT_SCNu8 SCNu8
# elif !defined(KWIML_INT_private_NO_SCN8)
#  define KWIML_INT_SCNu8 "hhu"
# endif
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_SCNx8)
# if defined(KWIML_INT_HAVE_UINT8_T) && defined(SCNx8) \
   && !defined(KWIML_INT_BROKEN_SCNx8)
#  define KWIML_INT_SCNx8 SCNx8
# elif !defined(KWIML_INT_private_NO_SCN8)
#  define KWIML_INT_SCNx8 "hhx"
# endif
#endif
#if !defined(KWIML_INT_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
#endif

/* 8-bit constants */
#if !defined(KWIML_INT_INT8_C)
# if defined(INT8_C) && !defined(KWIML_INT_BROKEN_INT8_C)
#  define KWIML_INT_INT8_C(c) INT8_C(c)
# else
#  define KWIML_INT_INT8_C(c) c
# endif
#endif
#if !defined(KWIML_INT_UINT8_C)
# if defined(UINT8_C) && !defined(KWIML_INT_BROKEN_UINT8_C)
#  define KWIML_INT_UINT8_C(c) UINT8_C(c)
# else
#  define KWIML_INT_UINT8_C(c) c ## u
# endif
#endif

/*--------------------------------------------------------------------------*/
#if !defined(KWIML_INT_int16_t)
# if defined(KWIML_INT_HAVE_INT16_T)
#  define KWIML_INT_int16_t KWIML_INT_detail_GLOBAL_NS(int16_t)
# else
#  define KWIML_INT_int16_t signed short
# endif
#endif
#if !defined(KWIML_INT_uint16_t)
# if defined(KWIML_INT_HAVE_UINT16_T)
#  define KWIML_INT_uint16_t KWIML_INT_detail_GLOBAL_NS(uint16_t)
# else
#  define KWIML_INT_uint16_t unsigned short
# endif
#endif

/* 16-bit d, i */
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif

/* 16-bit o, u, x, X */
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif

/* 16-bit constants */
#if !defined(KWIML_INT_INT16_C)
# if defined(INT16_C) && !defined(KWIML_INT_BROKEN_INT16_C)
#  define KWIML_INT_INT16_C(c) INT16_C(c)
# else
#  define KWIML_INT_INT16_C(c) c
# endif
#endif
#if !defined(KWIML_INT_UINT16_C)
# if defined(UINT16_C) && !defined(KWIML_INT_BROKEN_UINT16_C)
#  define KWIML_INT_UINT16_C(c) UINT16_C(c)
# else
#  define KWIML_INT_UINT16_C(c) c ## u
# endif
#endif

/*--------------------------------------------------------------------------*/
#if !defined(KWIML_INT_int32_t)
# if defined(KWIML_INT_HAVE_INT32_T)
#  define KWIML_INT_int32_t KWIML_INT_detail_GLOBAL_NS(int32_t)
# else
#  define KWIML_INT_int32_t signed int
# endif
#endif
#if !defined(KWIML_INT_uint32_t)
# if defined(KWIML_INT_HAVE_UINT32_T)
#  define KWIML_INT_uint32_t KWIML_INT_detail_GLOBAL_NS(uint32_t)
# else
#  define KWIML_INT_uint32_t unsigned int
# endif
#endif

/* 32-bit d, i */
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif

/* 32-bit o, u, x, X */
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif

#if defined(__hpux) && defined(__GNUC__) && !defined(__LP64__) \
 && defined(__CONCAT__) && defined(__CONCAT_U__)
  /* Some HPs define UINT32_C incorrectly and break GNU.  */
# define KWIML_INT_BROKEN_UINT32_C 1
#endif

/* 32-bit constants */
#if !defined(KWIML_INT_INT32_C)
# if defined(INT32_C) && !defined(KWIML_INT_BROKEN_INT32_C)
#  define KWIML_INT_INT32_C(c) INT32_C(c)
# else
#  define KWIML_INT_INT32_C(c) c
# endif
#endif
#if !defined(KWIML_INT_UINT32_C)
# if defined(UINT32_C) && !defined(KWIML_INT_BROKEN_UINT32_C)
#  define KWIML_INT_UINT32_C(c) UINT32_C(c)
# else
#  define KWIML_INT_UINT32_C(c) c ## u
# endif
#endif

/*--------------------------------------------------------------------------*/
#if !defined(KWIML_INT_int64_t) && !defined(KWIML_INT_NO_INT64_T)
# if defined(KWIML_INT_HAVE_INT64_T)
#  define KWIML_INT_int64_t KWIML_INT_detail_GLOBAL_NS(int64_t)
# elif KWIML_ABI_SIZEOF_LONG == 8
#  define KWIML_INT_int64_t signed long
# elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
#  define KWIML_INT_int64_t signed long long
# elif defined(KWIML_ABI_SIZEOF___INT64)
#  define KWIML_INT_int64_t signed __int64
# elif defined(KWIML_INT_NO_ERROR_INT64_T)
#  define KWIML_INT_NO_INT64_T
# else
#  error "No type known for 'int64_t'."
# endif
#endif
#if !defined(KWIML_INT_uint64_t) && !defined(KWIML_INT_NO_UINT64_T)
# if defined(KWIML_INT_HAVE_UINT64_T)
#  define KWIML_INT_uint64_t KWIML_INT_detail_GLOBAL_NS(uint64_t)
# elif KWIML_ABI_SIZEOF_LONG == 8
#  define KWIML_INT_uint64_t unsigned long
# elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
#  define KWIML_INT_uint64_t unsigned long long
# elif defined(KWIML_ABI_SIZEOF___INT64)
#  define KWIML_INT_uint64_t unsigned __int64
# elif defined(KWIML_INT_NO_ERROR_UINT64_T)
#  define KWIML_INT_NO_UINT64_T
# else
#  error "No type known for 'uint64_t'."
# endif
#endif

#if defined(__INTEL_COMPILER)
#elif defined(__BORLANDC__)
# define KWIML_INT_private_NO_FMTLL /* type 'long long' but not 'll' format */
# define KWIML_INT_BROKEN_INT64_C 1  /* system macro defined incorrectly */
# define KWIML_INT_BROKEN_UINT64_C 1 /* system macro defined incorrectly */
#elif defined(_MSC_VER) && _MSC_VER < 1400
# define KWIML_INT_private_NO_FMTLL /* type 'long long' but not 'll' format */
#endif

#if !defined(KWIML_INT_detail_FMT64)
# if KWIML_ABI_SIZEOF_LONG == 8
#  define KWIML_INT_detail_FMT64 "l"
# elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
#  if !defined(KWIML_INT_private_NO_FMTLL)
#   define KWIML_INT_detail_FMT64 "ll"
#  else
#   define KWIML_INT_detail_FMT64 "I64"
#  endif
# elif defined(KWIML_ABI_SIZEOF___INT64)
#  if defined(__BORLANDC__)
#   define KWIML_INT_detail_FMT64 "L"
#  else
#   define KWIML_INT_detail_FMT64 "I64"
#  endif
# endif
#endif

#undef KWIML_INT_private_NO_FMTLL

/* 64-bit d, i */
#if !defined(KWIML_INT_PRId64)
# if defined(KWIML_INT_HAVE_INT64_T) && defined(PRId64) \
   && !defined(KWIML_INT_BROKEN_PRId64)
#  define KWIML_INT_PRId64 PRId64
# elif defined(KWIML_INT_detail_FMT64)
#  define KWIML_INT_PRId64 KWIML_INT_detail_FMT64 "d"
# endif
#endif
#if !defined(KWIML_INT_SCNd64)
# if defined(KWIML_INT_HAVE_INT64_T) && defined(SCNd64) \
   && !defined(KWIML_INT_BROKEN_SCNd64)
#  define KWIML_INT_SCNd64 SCNd64
# elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
#  define KWIML_INT_SCNd64 KWIML_INT_detail_FMT64 "d"
# endif
#endif
#if !defined(KWIML_INT_PRIi64)
# if defined(KWIML_INT_HAVE_INT64_T) && defined(PRIi64) \
   && !defined(KWIML_INT_BROKEN_PRIi64)
#  define KWIML_INT_PRIi64 PRIi64
# elif defined(KWIML_INT_detail_FMT64)
#  define KWIML_INT_PRIi64 KWIML_INT_detail_FMT64 "d"
# endif
#endif
#if !defined(KWIML_INT_SCNi64)
# if defined(KWIML_INT_HAVE_INT64_T) && defined(SCNi64) \
   && !defined(KWIML_INT_BROKEN_SCNi64)
#  define KWIML_INT_SCNi64 SCNi64
# elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
#  define KWIML_INT_SCNi64 KWIML_INT_detail_FMT64 "d"
# endif
#endif

/* 64-bit o, u, x, X */
#if !defined(KWIML_INT_PRIo64)
# if defined(KWIML_INT_HAVE_UINT64_T) && defined(PRIo64) \
   && !defined(KWIML_INT_BROKEN_PRIo64)
#  define KWIML_INT_PRIo64 PRIo64
# elif defined(KWIML_INT_detail_FMT64)
#  define KWIML_INT_PRIo64 KWIML_INT_detail_FMT64 "o"
# endif
#endif
#if !defined(KWIML_INT_SCNo64)
# if defined(KWIML_INT_HAVE_UINT64_T) && defined(SCNo64) \
   && !defined(KWIML_INT_BROKEN_SCNo64)
#  define KWIML_INT_SCNo64 SCNo64
# elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
#  define KWIML_INT_SCNo64 KWIML_INT_detail_FMT64 "o"
# endif
#endif
#if !defined(KWIML_INT_PRIu64)
# if defined(KWIML_INT_HAVE_UINT64_T) && defined(PRIu64) \
   && !defined(KWIML_INT_BROKEN_PRIu64)
#  define KWIML_INT_PRIu64 PRIu64
# elif defined(KWIML_INT_detail_FMT64)
#  define KWIML_INT_PRIu64 KWIML_INT_detail_FMT64 "u"
# endif
#endif
#if !defined(KWIML_INT_SCNu64)
# if defined(KWIML_INT_HAVE_UINT64_T) && defined(SCNu64) \
   && !defined(KWIML_INT_BROKEN_SCNu64)
#  define KWIML_INT_SCNu64 SCNu64
# elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
#  define KWIML_INT_SCNu64 KWIML_INT_detail_FMT64 "u"
# endif
#endif
#if !defined(KWIML_INT_PRIx64)
# if defined(KWIML_INT_HAVE_UINT64_T) && defined(PRIx64) \
   && !defined(KWIML_INT_BROKEN_PRIx64)
#  define KWIML_INT_PRIx64 PRIx64
# elif defined(KWIML_INT_detail_FMT64)
#  define KWIML_INT_PRIx64 KWIML_INT_detail_FMT64 "x"
# endif
#endif
#if !defined(KWIML_INT_SCNx64)
# if defined(KWIML_INT_HAVE_UINT64_T) && defined(SCNx64) \
   && !defined(KWIML_INT_BROKEN_SCNx64)
#  define KWIML_INT_SCNx64 SCNx64
# elif defined(KWIML_INT_detail_FMT64) && !defined(KWIML_INT_private_NO_SCN64)
#  define KWIML_INT_SCNx64 KWIML_INT_detail_FMT64 "x"
# endif
#endif
#if !defined(KWIML_INT_PRIX64)
# if defined(KWIML_INT_HAVE_UINT64_T) && defined(PRIX64) \
   && !defined(KWIML_INT_BROKEN_PRIX64)
#  define KWIML_INT_PRIX64 PRIX64
# elif defined(KWIML_INT_detail_FMT64)
#  define KWIML_INT_PRIX64 KWIML_INT_detail_FMT64 "X"
# endif
#endif

/* 64-bit constants */
#if !defined(KWIML_INT_INT64_C)
# if defined(KWIML_INT_HAVE_INT64_T) && defined(INT64_C) \
   && !defined(KWIML_INT_BROKEN_INT64_C)
#  define KWIML_INT_INT64_C(c) INT64_C(c)
# elif KWIML_ABI_SIZEOF_LONG == 8
#  define KWIML_INT_INT64_C(c) c ## l
# elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
#  define KWIML_INT_INT64_C(c) c ## ll
# elif defined(KWIML_ABI_SIZEOF___INT64)
#  define KWIML_INT_INT64_C(c) c ## i64
# endif
#endif
#if !defined(KWIML_INT_UINT64_C)
# if defined(KWIML_INT_HAVE_UINT64_T) && defined(UINT64_C) \
   && !defined(KWIML_INT_BROKEN_UINT64_C)
#  define KWIML_INT_UINT64_C(c) UINT64_C(c)
# elif KWIML_ABI_SIZEOF_LONG == 8
#  define KWIML_INT_UINT64_C(c) c ## ul
# elif defined(KWIML_ABI_SIZEOF_LONG_LONG) && KWIML_ABI_SIZEOF_LONG_LONG == 8
#  define KWIML_INT_UINT64_C(c) c ## ull
# elif defined(KWIML_ABI_SIZEOF___INT64)
#  define KWIML_INT_UINT64_C(c) c ## ui64
# endif
#endif

/*--------------------------------------------------------------------------*/
#if !defined(KWIML_INT_intptr_t) && !defined(KWIML_INT_NO_INTPTR_T)
# if defined(KWIML_INT_HAVE_INTPTR_T)
#  define KWIML_INT_intptr_t KWIML_INT_detail_GLOBAL_NS(intptr_t)
# elif KWIML_ABI_SIZEOF_DATA_PTR == 4
#  define KWIML_INT_intptr_t KWIML_INT_int32_t
# elif !defined(KWIML_INT_NO_INT64_T)
#  define KWIML_INT_intptr_t KWIML_INT_int64_t
# elif defined(KWIML_INT_NO_ERROR_INTPTR_T)
#  define KWIML_INT_NO_INTPTR_T
# else
#  error "No type known for 'intptr_t'."
# endif
#endif
#if !defined(KWIML_INT_uintptr_t) && !defined(KWIML_INT_NO_UINTPTR_T)
# if defined(KWIML_INT_HAVE_UINTPTR_T)
#  define KWIML_INT_uintptr_t KWIML_INT_detail_GLOBAL_NS(uintptr_t)
# elif KWIML_ABI_SIZEOF_DATA_PTR == 4
#  define KWIML_INT_uintptr_t KWIML_INT_uint32_t
# elif !defined(KWIML_INT_NO_UINT64_T)
#  define KWIML_INT_uintptr_t KWIML_INT_uint64_t
# elif defined(KWIML_INT_NO_ERROR_UINTPTR_T)
#  define KWIML_INT_NO_UINTPTR_T
# else
#  error "No type known for 'uintptr_t'."
# endif
#endif

#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
# elif !defined(KWIML_INT_NO_UINT64_T)
#  define KWIML_INT_SCNiPTR KWIML_INT_SCNi64
# endif
#endif

#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif
#if !defined(KWIML_INT_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
#endif

#undef KWIML_INT_private_NO_SCN64
#undef KWIML_INT_private_NO_SCN8

#endif /* KWIML_INT_private_DO_DEFINE */

/*--------------------------------------------------------------------------*/
#ifdef KWIML_INT_private_DO_VERIFY
#undef KWIML_INT_private_DO_VERIFY

#if defined(_MSC_VER)
# pragma warning (push)
# pragma warning (disable:4309) /* static_cast trunction of constant value */
# pragma warning (disable:4310) /* cast truncates constant value */
#endif

#if defined(__cplusplus) && !defined(__BORLANDC__)
#define KWIML_INT_private_STATIC_CAST(t,v) static_cast<t>(v)
#else
#define KWIML_INT_private_STATIC_CAST(t,v) (t)(v)
#endif

#define KWIML_INT_private_VERIFY(n, x, y) KWIML_INT_private_VERIFY_0(KWIML_INT_private_VERSION, n, x, y)
#define KWIML_INT_private_VERIFY_0(V, n, x, y) KWIML_INT_private_VERIFY_1(V, n, x, y)
#define KWIML_INT_private_VERIFY_1(V, n, x, y) extern int (*n##_v##V)[x]; extern int (*n##_v##V)[y]

#define KWIML_INT_private_VERIFY_BOOL(m, b) KWIML_INT_private_VERIFY(KWIML_INT_detail_VERIFY_##m, 2, (b)?2:3)
#define KWIML_INT_private_VERIFY_TYPE(t, s) KWIML_INT_private_VERIFY(KWIML_INT_detail_VERIFY_##t, s, sizeof(t))
#define KWIML_INT_private_VERIFY_SIGN(t, u, o) \
  KWIML_INT_private_VERIFY_BOOL(SIGN_##t, KWIML_INT_private_STATIC_CAST( \
      t, KWIML_INT_private_STATIC_CAST(u, 1) << ((sizeof(t)<<3)-1)) o 0)

KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int8_t,    1);
KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint8_t,   1);
KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int16_t,   2);
KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint16_t,  2);
KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int32_t,   4);
KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint32_t,  4);
#if !defined(KWIML_INT_NO_INT64_T)
KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int64_t,   8);
#endif
#if !defined(KWIML_INT_NO_UINT64_T)
KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint64_t,  8);
#endif
#if !defined(KWIML_INT_NO_INTPTR_T)
KWIML_INT_private_VERIFY_TYPE(KWIML_INT_intptr_t,  sizeof(void*));
#endif
#if !defined(KWIML_INT_NO_UINTPTR_T)
KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uintptr_t, sizeof(void*));
#endif

KWIML_INT_private_VERIFY_SIGN(KWIML_INT_int8_t,    KWIML_INT_uint8_t,   <);
KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint8_t,   KWIML_INT_uint8_t,   >);
KWIML_INT_private_VERIFY_SIGN(KWIML_INT_int16_t,   KWIML_INT_uint16_t,  <);
KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint16_t,  KWIML_INT_uint16_t,  >);
KWIML_INT_private_VERIFY_SIGN(KWIML_INT_int32_t,   KWIML_INT_uint32_t,  <);
KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint32_t,  KWIML_INT_uint32_t,  >);
#if !defined(KWIML_INT_NO_INT64_T)
KWIML_INT_private_VERIFY_SIGN(KWIML_INT_int64_t,   KWIML_INT_uint64_t,  <);
#endif
#if !defined(KWIML_INT_NO_UINT64_T)
KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uint64_t,  KWIML_INT_uint64_t,  >);
#endif
#if !defined(KWIML_INT_NO_INTPTR_T)
KWIML_INT_private_VERIFY_SIGN(KWIML_INT_intptr_t,  KWIML_INT_uintptr_t, <);
#endif
#if !defined(KWIML_INT_NO_UINTPTR_T)
KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uintptr_t, KWIML_INT_uintptr_t, >);
#endif

#undef KWIML_INT_private_VERIFY_SIGN
#undef KWIML_INT_private_VERIFY_TYPE
#undef KWIML_INT_private_VERIFY_BOOL

#undef KWIML_INT_private_VERIFY_1
#undef KWIML_INT_private_VERIFY_0
#undef KWIML_INT_private_VERIFY

#undef KWIML_INT_private_STATIC_CAST

#if defined(_MSC_VER)
# pragma warning (pop)
#endif

#endif /* KWIML_INT_private_DO_VERIFY  */

#undef KWIML_INT_private_VERSION
