11591693c7b415e9869157c711fe11263c95d74eDavid Li// ISO C9x  compliant stdint.h for Microsoft Visual Studio
21591693c7b415e9869157c711fe11263c95d74eDavid Li// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
31591693c7b415e9869157c711fe11263c95d74eDavid Li//
41591693c7b415e9869157c711fe11263c95d74eDavid Li//  Copyright (c) 2006-2008 Alexander Chemeris
51591693c7b415e9869157c711fe11263c95d74eDavid Li//
61591693c7b415e9869157c711fe11263c95d74eDavid Li// Redistribution and use in source and binary forms, with or without
71591693c7b415e9869157c711fe11263c95d74eDavid Li// modification, are permitted provided that the following conditions are met:
81591693c7b415e9869157c711fe11263c95d74eDavid Li//
91591693c7b415e9869157c711fe11263c95d74eDavid Li//   1. Redistributions of source code must retain the above copyright notice,
101591693c7b415e9869157c711fe11263c95d74eDavid Li//      this list of conditions and the following disclaimer.
111591693c7b415e9869157c711fe11263c95d74eDavid Li//
121591693c7b415e9869157c711fe11263c95d74eDavid Li//   2. Redistributions in binary form must reproduce the above copyright
131591693c7b415e9869157c711fe11263c95d74eDavid Li//      notice, this list of conditions and the following disclaimer in the
141591693c7b415e9869157c711fe11263c95d74eDavid Li//      documentation and/or other materials provided with the distribution.
151591693c7b415e9869157c711fe11263c95d74eDavid Li//
161591693c7b415e9869157c711fe11263c95d74eDavid Li//   3. The name of the author may be used to endorse or promote products
171591693c7b415e9869157c711fe11263c95d74eDavid Li//      derived from this software without specific prior written permission.
181591693c7b415e9869157c711fe11263c95d74eDavid Li//
191591693c7b415e9869157c711fe11263c95d74eDavid Li// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
201591693c7b415e9869157c711fe11263c95d74eDavid Li// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
211591693c7b415e9869157c711fe11263c95d74eDavid Li// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
221591693c7b415e9869157c711fe11263c95d74eDavid Li// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
231591693c7b415e9869157c711fe11263c95d74eDavid Li// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
241591693c7b415e9869157c711fe11263c95d74eDavid Li// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
251591693c7b415e9869157c711fe11263c95d74eDavid Li// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
261591693c7b415e9869157c711fe11263c95d74eDavid Li// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
271591693c7b415e9869157c711fe11263c95d74eDavid Li// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
281591693c7b415e9869157c711fe11263c95d74eDavid Li// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
291591693c7b415e9869157c711fe11263c95d74eDavid Li//
301591693c7b415e9869157c711fe11263c95d74eDavid Li///////////////////////////////////////////////////////////////////////////////
311591693c7b415e9869157c711fe11263c95d74eDavid Li
321591693c7b415e9869157c711fe11263c95d74eDavid Li#ifndef _MSC_VER // [
331591693c7b415e9869157c711fe11263c95d74eDavid Li#error "Use this header only with Microsoft Visual C++ compilers!"
341591693c7b415e9869157c711fe11263c95d74eDavid Li#endif // _MSC_VER ]
351591693c7b415e9869157c711fe11263c95d74eDavid Li
361591693c7b415e9869157c711fe11263c95d74eDavid Li#ifndef _MSC_STDINT_H_ // [
371591693c7b415e9869157c711fe11263c95d74eDavid Li#define _MSC_STDINT_H_
381591693c7b415e9869157c711fe11263c95d74eDavid Li
391591693c7b415e9869157c711fe11263c95d74eDavid Li#if _MSC_VER > 1000
401591693c7b415e9869157c711fe11263c95d74eDavid Li#pragma once
411591693c7b415e9869157c711fe11263c95d74eDavid Li#endif
421591693c7b415e9869157c711fe11263c95d74eDavid Li
431591693c7b415e9869157c711fe11263c95d74eDavid Li#include <limits.h>
441591693c7b415e9869157c711fe11263c95d74eDavid Li
451591693c7b415e9869157c711fe11263c95d74eDavid Li// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
461591693c7b415e9869157c711fe11263c95d74eDavid Li// compiling for ARM we should wrap <wchar.h> include with 'extern "C++" {}'
471591693c7b415e9869157c711fe11263c95d74eDavid Li// or compiler give many errors like this:
481591693c7b415e9869157c711fe11263c95d74eDavid Li//   error C2733: second C linkage of overloaded function 'wmemchr' not allowed
491591693c7b415e9869157c711fe11263c95d74eDavid Li#ifdef __cplusplus
501591693c7b415e9869157c711fe11263c95d74eDavid Liextern "C" {
511591693c7b415e9869157c711fe11263c95d74eDavid Li#endif
521591693c7b415e9869157c711fe11263c95d74eDavid Li#  include <wchar.h>
531591693c7b415e9869157c711fe11263c95d74eDavid Li#ifdef __cplusplus
541591693c7b415e9869157c711fe11263c95d74eDavid Li}
551591693c7b415e9869157c711fe11263c95d74eDavid Li#endif
561591693c7b415e9869157c711fe11263c95d74eDavid Li
571591693c7b415e9869157c711fe11263c95d74eDavid Li// Define _W64 macros to mark types changing their size, like intptr_t.
581591693c7b415e9869157c711fe11263c95d74eDavid Li#ifndef _W64
591591693c7b415e9869157c711fe11263c95d74eDavid Li#  if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
601591693c7b415e9869157c711fe11263c95d74eDavid Li#     define _W64 __w64
611591693c7b415e9869157c711fe11263c95d74eDavid Li#  else
621591693c7b415e9869157c711fe11263c95d74eDavid Li#     define _W64
631591693c7b415e9869157c711fe11263c95d74eDavid Li#  endif
641591693c7b415e9869157c711fe11263c95d74eDavid Li#endif
651591693c7b415e9869157c711fe11263c95d74eDavid Li
661591693c7b415e9869157c711fe11263c95d74eDavid Li
671591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.1 Integer types
681591693c7b415e9869157c711fe11263c95d74eDavid Li
691591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.1.1 Exact-width integer types
701591693c7b415e9869157c711fe11263c95d74eDavid Li
711591693c7b415e9869157c711fe11263c95d74eDavid Li// Visual Studio 6 and Embedded Visual C++ 4 doesn't
721591693c7b415e9869157c711fe11263c95d74eDavid Li// realize that, e.g. char has the same size as __int8
731591693c7b415e9869157c711fe11263c95d74eDavid Li// so we give up on __intX for them.
741591693c7b415e9869157c711fe11263c95d74eDavid Li#if (_MSC_VER < 1300)
751591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef signed char       int8_t;
761591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef signed short      int16_t;
771591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef signed int        int32_t;
781591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef unsigned char     uint8_t;
791591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef unsigned short    uint16_t;
801591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef unsigned int      uint32_t;
811591693c7b415e9869157c711fe11263c95d74eDavid Li#else
821591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef signed __int8     int8_t;
831591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef signed __int16    int16_t;
841591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef signed __int32    int32_t;
851591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef unsigned __int8   uint8_t;
861591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef unsigned __int16  uint16_t;
871591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef unsigned __int32  uint32_t;
881591693c7b415e9869157c711fe11263c95d74eDavid Li#endif
891591693c7b415e9869157c711fe11263c95d74eDavid Litypedef signed __int64       int64_t;
901591693c7b415e9869157c711fe11263c95d74eDavid Litypedef unsigned __int64     uint64_t;
911591693c7b415e9869157c711fe11263c95d74eDavid Li
921591693c7b415e9869157c711fe11263c95d74eDavid Li
931591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.1.2 Minimum-width integer types
941591693c7b415e9869157c711fe11263c95d74eDavid Litypedef int8_t    int_least8_t;
951591693c7b415e9869157c711fe11263c95d74eDavid Litypedef int16_t   int_least16_t;
961591693c7b415e9869157c711fe11263c95d74eDavid Litypedef int32_t   int_least32_t;
971591693c7b415e9869157c711fe11263c95d74eDavid Litypedef int64_t   int_least64_t;
981591693c7b415e9869157c711fe11263c95d74eDavid Litypedef uint8_t   uint_least8_t;
991591693c7b415e9869157c711fe11263c95d74eDavid Litypedef uint16_t  uint_least16_t;
1001591693c7b415e9869157c711fe11263c95d74eDavid Litypedef uint32_t  uint_least32_t;
1011591693c7b415e9869157c711fe11263c95d74eDavid Litypedef uint64_t  uint_least64_t;
1021591693c7b415e9869157c711fe11263c95d74eDavid Li
1031591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.1.3 Fastest minimum-width integer types
1041591693c7b415e9869157c711fe11263c95d74eDavid Litypedef int8_t    int_fast8_t;
1051591693c7b415e9869157c711fe11263c95d74eDavid Litypedef int16_t   int_fast16_t;
1061591693c7b415e9869157c711fe11263c95d74eDavid Litypedef int32_t   int_fast32_t;
1071591693c7b415e9869157c711fe11263c95d74eDavid Litypedef int64_t   int_fast64_t;
1081591693c7b415e9869157c711fe11263c95d74eDavid Litypedef uint8_t   uint_fast8_t;
1091591693c7b415e9869157c711fe11263c95d74eDavid Litypedef uint16_t  uint_fast16_t;
1101591693c7b415e9869157c711fe11263c95d74eDavid Litypedef uint32_t  uint_fast32_t;
1111591693c7b415e9869157c711fe11263c95d74eDavid Litypedef uint64_t  uint_fast64_t;
1121591693c7b415e9869157c711fe11263c95d74eDavid Li
1131591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.1.4 Integer types capable of holding object pointers
1141591693c7b415e9869157c711fe11263c95d74eDavid Li#ifdef _WIN64 // [
1151591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef signed __int64    intptr_t;
1161591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef unsigned __int64  uintptr_t;
1171591693c7b415e9869157c711fe11263c95d74eDavid Li#else // _WIN64 ][
1181591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef _W64 signed int   intptr_t;
1191591693c7b415e9869157c711fe11263c95d74eDavid Li   typedef _W64 unsigned int uintptr_t;
1201591693c7b415e9869157c711fe11263c95d74eDavid Li#endif // _WIN64 ]
1211591693c7b415e9869157c711fe11263c95d74eDavid Li
1221591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.1.5 Greatest-width integer types
1231591693c7b415e9869157c711fe11263c95d74eDavid Litypedef int64_t   intmax_t;
1241591693c7b415e9869157c711fe11263c95d74eDavid Litypedef uint64_t  uintmax_t;
1251591693c7b415e9869157c711fe11263c95d74eDavid Li
1261591693c7b415e9869157c711fe11263c95d74eDavid Li
1271591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.2 Limits of specified-width integer types
1281591693c7b415e9869157c711fe11263c95d74eDavid Li
1291591693c7b415e9869157c711fe11263c95d74eDavid Li#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [   See footnote 220 at page 257 and footnote 221 at page 259
1301591693c7b415e9869157c711fe11263c95d74eDavid Li
1311591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.2.1 Limits of exact-width integer types
1321591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT8_MIN     ((int8_t)_I8_MIN)
1331591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT8_MAX     _I8_MAX
1341591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT16_MIN    ((int16_t)_I16_MIN)
1351591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT16_MAX    _I16_MAX
1361591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT32_MIN    ((int32_t)_I32_MIN)
1371591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT32_MAX    _I32_MAX
1381591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT64_MIN    ((int64_t)_I64_MIN)
1391591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT64_MAX    _I64_MAX
1401591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT8_MAX    _UI8_MAX
1411591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT16_MAX   _UI16_MAX
1421591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT32_MAX   _UI32_MAX
1431591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT64_MAX   _UI64_MAX
1441591693c7b415e9869157c711fe11263c95d74eDavid Li
1451591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.2.2 Limits of minimum-width integer types
1461591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_LEAST8_MIN    INT8_MIN
1471591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_LEAST8_MAX    INT8_MAX
1481591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_LEAST16_MIN   INT16_MIN
1491591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_LEAST16_MAX   INT16_MAX
1501591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_LEAST32_MIN   INT32_MIN
1511591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_LEAST32_MAX   INT32_MAX
1521591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_LEAST64_MIN   INT64_MIN
1531591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_LEAST64_MAX   INT64_MAX
1541591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT_LEAST8_MAX   UINT8_MAX
1551591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT_LEAST16_MAX  UINT16_MAX
1561591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT_LEAST32_MAX  UINT32_MAX
1571591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT_LEAST64_MAX  UINT64_MAX
1581591693c7b415e9869157c711fe11263c95d74eDavid Li
1591591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.2.3 Limits of fastest minimum-width integer types
1601591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_FAST8_MIN    INT8_MIN
1611591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_FAST8_MAX    INT8_MAX
1621591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_FAST16_MIN   INT16_MIN
1631591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_FAST16_MAX   INT16_MAX
1641591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_FAST32_MIN   INT32_MIN
1651591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_FAST32_MAX   INT32_MAX
1661591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_FAST64_MIN   INT64_MIN
1671591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT_FAST64_MAX   INT64_MAX
1681591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT_FAST8_MAX   UINT8_MAX
1691591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT_FAST16_MAX  UINT16_MAX
1701591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT_FAST32_MAX  UINT32_MAX
1711591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT_FAST64_MAX  UINT64_MAX
1721591693c7b415e9869157c711fe11263c95d74eDavid Li
1731591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.2.4 Limits of integer types capable of holding object pointers
1741591693c7b415e9869157c711fe11263c95d74eDavid Li#ifdef _WIN64 // [
1751591693c7b415e9869157c711fe11263c95d74eDavid Li#  define INTPTR_MIN   INT64_MIN
1761591693c7b415e9869157c711fe11263c95d74eDavid Li#  define INTPTR_MAX   INT64_MAX
1771591693c7b415e9869157c711fe11263c95d74eDavid Li#  define UINTPTR_MAX  UINT64_MAX
1781591693c7b415e9869157c711fe11263c95d74eDavid Li#else // _WIN64 ][
1791591693c7b415e9869157c711fe11263c95d74eDavid Li#  define INTPTR_MIN   INT32_MIN
1801591693c7b415e9869157c711fe11263c95d74eDavid Li#  define INTPTR_MAX   INT32_MAX
1811591693c7b415e9869157c711fe11263c95d74eDavid Li#  define UINTPTR_MAX  UINT32_MAX
1821591693c7b415e9869157c711fe11263c95d74eDavid Li#endif // _WIN64 ]
1831591693c7b415e9869157c711fe11263c95d74eDavid Li
1841591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.2.5 Limits of greatest-width integer types
1851591693c7b415e9869157c711fe11263c95d74eDavid Li#define INTMAX_MIN   INT64_MIN
1861591693c7b415e9869157c711fe11263c95d74eDavid Li#define INTMAX_MAX   INT64_MAX
1871591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINTMAX_MAX  UINT64_MAX
1881591693c7b415e9869157c711fe11263c95d74eDavid Li
1891591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.3 Limits of other integer types
1901591693c7b415e9869157c711fe11263c95d74eDavid Li
1911591693c7b415e9869157c711fe11263c95d74eDavid Li#ifdef _WIN64 // [
1921591693c7b415e9869157c711fe11263c95d74eDavid Li#  define PTRDIFF_MIN  _I64_MIN
1931591693c7b415e9869157c711fe11263c95d74eDavid Li#  define PTRDIFF_MAX  _I64_MAX
1941591693c7b415e9869157c711fe11263c95d74eDavid Li#else  // _WIN64 ][
1951591693c7b415e9869157c711fe11263c95d74eDavid Li#  define PTRDIFF_MIN  _I32_MIN
1961591693c7b415e9869157c711fe11263c95d74eDavid Li#  define PTRDIFF_MAX  _I32_MAX
1971591693c7b415e9869157c711fe11263c95d74eDavid Li#endif  // _WIN64 ]
1981591693c7b415e9869157c711fe11263c95d74eDavid Li
1991591693c7b415e9869157c711fe11263c95d74eDavid Li#define SIG_ATOMIC_MIN  INT_MIN
2001591693c7b415e9869157c711fe11263c95d74eDavid Li#define SIG_ATOMIC_MAX  INT_MAX
2011591693c7b415e9869157c711fe11263c95d74eDavid Li
2021591693c7b415e9869157c711fe11263c95d74eDavid Li#ifndef SIZE_MAX // [
2031591693c7b415e9869157c711fe11263c95d74eDavid Li#  ifdef _WIN64 // [
2041591693c7b415e9869157c711fe11263c95d74eDavid Li#     define SIZE_MAX  _UI64_MAX
2051591693c7b415e9869157c711fe11263c95d74eDavid Li#  else // _WIN64 ][
2061591693c7b415e9869157c711fe11263c95d74eDavid Li#     define SIZE_MAX  _UI32_MAX
2071591693c7b415e9869157c711fe11263c95d74eDavid Li#  endif // _WIN64 ]
2081591693c7b415e9869157c711fe11263c95d74eDavid Li#endif // SIZE_MAX ]
2091591693c7b415e9869157c711fe11263c95d74eDavid Li
2101591693c7b415e9869157c711fe11263c95d74eDavid Li// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
2111591693c7b415e9869157c711fe11263c95d74eDavid Li#ifndef WCHAR_MIN // [
2121591693c7b415e9869157c711fe11263c95d74eDavid Li#  define WCHAR_MIN  0
2131591693c7b415e9869157c711fe11263c95d74eDavid Li#endif  // WCHAR_MIN ]
2141591693c7b415e9869157c711fe11263c95d74eDavid Li#ifndef WCHAR_MAX // [
2151591693c7b415e9869157c711fe11263c95d74eDavid Li#  define WCHAR_MAX  _UI16_MAX
2161591693c7b415e9869157c711fe11263c95d74eDavid Li#endif  // WCHAR_MAX ]
2171591693c7b415e9869157c711fe11263c95d74eDavid Li
2181591693c7b415e9869157c711fe11263c95d74eDavid Li#define WINT_MIN  0
2191591693c7b415e9869157c711fe11263c95d74eDavid Li#define WINT_MAX  _UI16_MAX
2201591693c7b415e9869157c711fe11263c95d74eDavid Li
2211591693c7b415e9869157c711fe11263c95d74eDavid Li#endif // __STDC_LIMIT_MACROS ]
2221591693c7b415e9869157c711fe11263c95d74eDavid Li
2231591693c7b415e9869157c711fe11263c95d74eDavid Li
2241591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.4 Limits of other integer types
2251591693c7b415e9869157c711fe11263c95d74eDavid Li
2261591693c7b415e9869157c711fe11263c95d74eDavid Li#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [   See footnote 224 at page 260
2271591693c7b415e9869157c711fe11263c95d74eDavid Li
2281591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.4.1 Macros for minimum-width integer constants
2291591693c7b415e9869157c711fe11263c95d74eDavid Li
2301591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT8_C(val)  val##i8
2311591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT16_C(val) val##i16
2321591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT32_C(val) val##i32
2331591693c7b415e9869157c711fe11263c95d74eDavid Li#define INT64_C(val) val##i64
2341591693c7b415e9869157c711fe11263c95d74eDavid Li
2351591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT8_C(val)  val##ui8
2361591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT16_C(val) val##ui16
2371591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT32_C(val) val##ui32
2381591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINT64_C(val) val##ui64
2391591693c7b415e9869157c711fe11263c95d74eDavid Li
2401591693c7b415e9869157c711fe11263c95d74eDavid Li// 7.18.4.2 Macros for greatest-width integer constants
2411591693c7b415e9869157c711fe11263c95d74eDavid Li#define INTMAX_C   INT64_C
2421591693c7b415e9869157c711fe11263c95d74eDavid Li#define UINTMAX_C  UINT64_C
2431591693c7b415e9869157c711fe11263c95d74eDavid Li
2441591693c7b415e9869157c711fe11263c95d74eDavid Li#endif // __STDC_CONSTANT_MACROS ]
2451591693c7b415e9869157c711fe11263c95d74eDavid Li
2461591693c7b415e9869157c711fe11263c95d74eDavid Li
2471591693c7b415e9869157c711fe11263c95d74eDavid Li#endif // _MSC_STDINT_H_ ]
248