1e462795ff5d4c7359f9e8637c10544bb2de70107tturney// ISO C9x compliant stdint.h for Microsoft Visual Studio 2e462795ff5d4c7359f9e8637c10544bb2de70107tturney// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 3e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 4e462795ff5d4c7359f9e8637c10544bb2de70107tturney// Copyright (c) 2006-2013 Alexander Chemeris 5e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 6e462795ff5d4c7359f9e8637c10544bb2de70107tturney// Redistribution and use in source and binary forms, with or without 7e462795ff5d4c7359f9e8637c10544bb2de70107tturney// modification, are permitted provided that the following conditions are met: 8e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 9e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 1. Redistributions of source code must retain the above copyright notice, 10e462795ff5d4c7359f9e8637c10544bb2de70107tturney// this list of conditions and the following disclaimer. 11e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 12e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 2. Redistributions in binary form must reproduce the above copyright 13e462795ff5d4c7359f9e8637c10544bb2de70107tturney// notice, this list of conditions and the following disclaimer in the 14e462795ff5d4c7359f9e8637c10544bb2de70107tturney// documentation and/or other materials provided with the distribution. 15e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 16e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 3. Neither the name of the product nor the names of its contributors may 17e462795ff5d4c7359f9e8637c10544bb2de70107tturney// be used to endorse or promote products derived from this software 18e462795ff5d4c7359f9e8637c10544bb2de70107tturney// without specific prior written permission. 19e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 20e462795ff5d4c7359f9e8637c10544bb2de70107tturney// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 21e462795ff5d4c7359f9e8637c10544bb2de70107tturney// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 22e462795ff5d4c7359f9e8637c10544bb2de70107tturney// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 23e462795ff5d4c7359f9e8637c10544bb2de70107tturney// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24e462795ff5d4c7359f9e8637c10544bb2de70107tturney// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25e462795ff5d4c7359f9e8637c10544bb2de70107tturney// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 26e462795ff5d4c7359f9e8637c10544bb2de70107tturney// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27e462795ff5d4c7359f9e8637c10544bb2de70107tturney// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 28e462795ff5d4c7359f9e8637c10544bb2de70107tturney// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 29e462795ff5d4c7359f9e8637c10544bb2de70107tturney// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 31e462795ff5d4c7359f9e8637c10544bb2de70107tturney/////////////////////////////////////////////////////////////////////////////// 32e462795ff5d4c7359f9e8637c10544bb2de70107tturney 33e462795ff5d4c7359f9e8637c10544bb2de70107tturney// The above software in this distribution may have been modified by 34e462795ff5d4c7359f9e8637c10544bb2de70107tturney// THL A29 Limited ("Tencent Modifications"). 35e462795ff5d4c7359f9e8637c10544bb2de70107tturney// All Tencent Modifications are Copyright (C) 2015 THL A29 Limited. 36e462795ff5d4c7359f9e8637c10544bb2de70107tturney 37e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifndef _MSC_VER // [ 38e462795ff5d4c7359f9e8637c10544bb2de70107tturney#error "Use this header only with Microsoft Visual C++ compilers!" 39e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // _MSC_VER ] 40e462795ff5d4c7359f9e8637c10544bb2de70107tturney 41e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifndef _MSC_STDINT_H_ // [ 42e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define _MSC_STDINT_H_ 43e462795ff5d4c7359f9e8637c10544bb2de70107tturney 44e462795ff5d4c7359f9e8637c10544bb2de70107tturney#if _MSC_VER > 1000 45e462795ff5d4c7359f9e8637c10544bb2de70107tturney#pragma once 46e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif 47e462795ff5d4c7359f9e8637c10544bb2de70107tturney 48e462795ff5d4c7359f9e8637c10544bb2de70107tturney// miloyip: Originally Visual Studio 2010 uses its own stdint.h. However it generates warning with INT64_C(), so change to use this file for vs2010. 49e462795ff5d4c7359f9e8637c10544bb2de70107tturney#if _MSC_VER >= 1600 // [ 50e462795ff5d4c7359f9e8637c10544bb2de70107tturney#include <stdint.h> 51e462795ff5d4c7359f9e8637c10544bb2de70107tturney 52e462795ff5d4c7359f9e8637c10544bb2de70107tturney#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 53e462795ff5d4c7359f9e8637c10544bb2de70107tturney 54e462795ff5d4c7359f9e8637c10544bb2de70107tturney#undef INT8_C 55e462795ff5d4c7359f9e8637c10544bb2de70107tturney#undef INT16_C 56e462795ff5d4c7359f9e8637c10544bb2de70107tturney#undef INT32_C 57e462795ff5d4c7359f9e8637c10544bb2de70107tturney#undef INT64_C 58e462795ff5d4c7359f9e8637c10544bb2de70107tturney#undef UINT8_C 59e462795ff5d4c7359f9e8637c10544bb2de70107tturney#undef UINT16_C 60e462795ff5d4c7359f9e8637c10544bb2de70107tturney#undef UINT32_C 61e462795ff5d4c7359f9e8637c10544bb2de70107tturney#undef UINT64_C 62e462795ff5d4c7359f9e8637c10544bb2de70107tturney 63e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.4.1 Macros for minimum-width integer constants 64e462795ff5d4c7359f9e8637c10544bb2de70107tturney 65e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT8_C(val) val##i8 66e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT16_C(val) val##i16 67e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT32_C(val) val##i32 68e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT64_C(val) val##i64 69e462795ff5d4c7359f9e8637c10544bb2de70107tturney 70e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT8_C(val) val##ui8 71e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT16_C(val) val##ui16 72e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT32_C(val) val##ui32 73e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT64_C(val) val##ui64 74e462795ff5d4c7359f9e8637c10544bb2de70107tturney 75e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.4.2 Macros for greatest-width integer constants 76e462795ff5d4c7359f9e8637c10544bb2de70107tturney// These #ifndef's are needed to prevent collisions with <boost/cstdint.hpp>. 77e462795ff5d4c7359f9e8637c10544bb2de70107tturney// Check out Issue 9 for the details. 78e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifndef INTMAX_C // [ 79e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define INTMAX_C INT64_C 80e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // INTMAX_C ] 81e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifndef UINTMAX_C // [ 82e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define UINTMAX_C UINT64_C 83e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // UINTMAX_C ] 84e462795ff5d4c7359f9e8637c10544bb2de70107tturney 85e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // __STDC_CONSTANT_MACROS ] 86e462795ff5d4c7359f9e8637c10544bb2de70107tturney 87e462795ff5d4c7359f9e8637c10544bb2de70107tturney#else // ] _MSC_VER >= 1700 [ 88e462795ff5d4c7359f9e8637c10544bb2de70107tturney 89e462795ff5d4c7359f9e8637c10544bb2de70107tturney#include <limits.h> 90e462795ff5d4c7359f9e8637c10544bb2de70107tturney 91e462795ff5d4c7359f9e8637c10544bb2de70107tturney// For Visual Studio 6 in C++ mode and for many Visual Studio versions when 92e462795ff5d4c7359f9e8637c10544bb2de70107tturney// compiling for ARM we should wrap <wchar.h> include with 'extern "C++" {}' 93e462795ff5d4c7359f9e8637c10544bb2de70107tturney// or compiler give many errors like this: 94e462795ff5d4c7359f9e8637c10544bb2de70107tturney// error C2733: second C linkage of overloaded function 'wmemchr' not allowed 95e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifdef __cplusplus 96e462795ff5d4c7359f9e8637c10544bb2de70107tturneyextern "C" { 97e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif 98e462795ff5d4c7359f9e8637c10544bb2de70107tturney# include <wchar.h> 99e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifdef __cplusplus 100e462795ff5d4c7359f9e8637c10544bb2de70107tturney} 101e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif 102e462795ff5d4c7359f9e8637c10544bb2de70107tturney 103e462795ff5d4c7359f9e8637c10544bb2de70107tturney// Define _W64 macros to mark types changing their size, like intptr_t. 104e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifndef _W64 105e462795ff5d4c7359f9e8637c10544bb2de70107tturney# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 106e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define _W64 __w64 107e462795ff5d4c7359f9e8637c10544bb2de70107tturney# else 108e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define _W64 109e462795ff5d4c7359f9e8637c10544bb2de70107tturney# endif 110e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif 111e462795ff5d4c7359f9e8637c10544bb2de70107tturney 112e462795ff5d4c7359f9e8637c10544bb2de70107tturney 113e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.1 Integer types 114e462795ff5d4c7359f9e8637c10544bb2de70107tturney 115e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.1.1 Exact-width integer types 116e462795ff5d4c7359f9e8637c10544bb2de70107tturney 117e462795ff5d4c7359f9e8637c10544bb2de70107tturney// Visual Studio 6 and Embedded Visual C++ 4 doesn't 118e462795ff5d4c7359f9e8637c10544bb2de70107tturney// realize that, e.g. char has the same size as __int8 119e462795ff5d4c7359f9e8637c10544bb2de70107tturney// so we give up on __intX for them. 120e462795ff5d4c7359f9e8637c10544bb2de70107tturney#if (_MSC_VER < 1300) 121e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef signed char int8_t; 122e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef signed short int16_t; 123e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef signed int int32_t; 124e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef unsigned char uint8_t; 125e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef unsigned short uint16_t; 126e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef unsigned int uint32_t; 127e462795ff5d4c7359f9e8637c10544bb2de70107tturney#else 128e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef signed __int8 int8_t; 129e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef signed __int16 int16_t; 130e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef signed __int32 int32_t; 131e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef unsigned __int8 uint8_t; 132e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef unsigned __int16 uint16_t; 133e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef unsigned __int32 uint32_t; 134e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif 135e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef signed __int64 int64_t; 136e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef unsigned __int64 uint64_t; 137e462795ff5d4c7359f9e8637c10544bb2de70107tturney 138e462795ff5d4c7359f9e8637c10544bb2de70107tturney 139e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.1.2 Minimum-width integer types 140e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef int8_t int_least8_t; 141e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef int16_t int_least16_t; 142e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef int32_t int_least32_t; 143e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef int64_t int_least64_t; 144e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef uint8_t uint_least8_t; 145e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef uint16_t uint_least16_t; 146e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef uint32_t uint_least32_t; 147e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef uint64_t uint_least64_t; 148e462795ff5d4c7359f9e8637c10544bb2de70107tturney 149e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.1.3 Fastest minimum-width integer types 150e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef int8_t int_fast8_t; 151e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef int16_t int_fast16_t; 152e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef int32_t int_fast32_t; 153e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef int64_t int_fast64_t; 154e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef uint8_t uint_fast8_t; 155e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef uint16_t uint_fast16_t; 156e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef uint32_t uint_fast32_t; 157e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef uint64_t uint_fast64_t; 158e462795ff5d4c7359f9e8637c10544bb2de70107tturney 159e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.1.4 Integer types capable of holding object pointers 160e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifdef _WIN64 // [ 161e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef signed __int64 intptr_t; 162e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef unsigned __int64 uintptr_t; 163e462795ff5d4c7359f9e8637c10544bb2de70107tturney#else // _WIN64 ][ 164e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef _W64 signed int intptr_t; 165e462795ff5d4c7359f9e8637c10544bb2de70107tturney typedef _W64 unsigned int uintptr_t; 166e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // _WIN64 ] 167e462795ff5d4c7359f9e8637c10544bb2de70107tturney 168e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.1.5 Greatest-width integer types 169e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef int64_t intmax_t; 170e462795ff5d4c7359f9e8637c10544bb2de70107tturneytypedef uint64_t uintmax_t; 171e462795ff5d4c7359f9e8637c10544bb2de70107tturney 172e462795ff5d4c7359f9e8637c10544bb2de70107tturney 173e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.2 Limits of specified-width integer types 174e462795ff5d4c7359f9e8637c10544bb2de70107tturney 175e462795ff5d4c7359f9e8637c10544bb2de70107tturney#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 176e462795ff5d4c7359f9e8637c10544bb2de70107tturney 177e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.2.1 Limits of exact-width integer types 178e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT8_MIN ((int8_t)_I8_MIN) 179e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT8_MAX _I8_MAX 180e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT16_MIN ((int16_t)_I16_MIN) 181e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT16_MAX _I16_MAX 182e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT32_MIN ((int32_t)_I32_MIN) 183e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT32_MAX _I32_MAX 184e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT64_MIN ((int64_t)_I64_MIN) 185e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT64_MAX _I64_MAX 186e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT8_MAX _UI8_MAX 187e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT16_MAX _UI16_MAX 188e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT32_MAX _UI32_MAX 189e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT64_MAX _UI64_MAX 190e462795ff5d4c7359f9e8637c10544bb2de70107tturney 191e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.2.2 Limits of minimum-width integer types 192e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_LEAST8_MIN INT8_MIN 193e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_LEAST8_MAX INT8_MAX 194e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_LEAST16_MIN INT16_MIN 195e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_LEAST16_MAX INT16_MAX 196e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_LEAST32_MIN INT32_MIN 197e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_LEAST32_MAX INT32_MAX 198e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_LEAST64_MIN INT64_MIN 199e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_LEAST64_MAX INT64_MAX 200e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT_LEAST8_MAX UINT8_MAX 201e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT_LEAST16_MAX UINT16_MAX 202e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT_LEAST32_MAX UINT32_MAX 203e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT_LEAST64_MAX UINT64_MAX 204e462795ff5d4c7359f9e8637c10544bb2de70107tturney 205e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.2.3 Limits of fastest minimum-width integer types 206e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_FAST8_MIN INT8_MIN 207e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_FAST8_MAX INT8_MAX 208e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_FAST16_MIN INT16_MIN 209e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_FAST16_MAX INT16_MAX 210e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_FAST32_MIN INT32_MIN 211e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_FAST32_MAX INT32_MAX 212e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_FAST64_MIN INT64_MIN 213e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT_FAST64_MAX INT64_MAX 214e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT_FAST8_MAX UINT8_MAX 215e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT_FAST16_MAX UINT16_MAX 216e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT_FAST32_MAX UINT32_MAX 217e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT_FAST64_MAX UINT64_MAX 218e462795ff5d4c7359f9e8637c10544bb2de70107tturney 219e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.2.4 Limits of integer types capable of holding object pointers 220e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifdef _WIN64 // [ 221e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define INTPTR_MIN INT64_MIN 222e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define INTPTR_MAX INT64_MAX 223e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define UINTPTR_MAX UINT64_MAX 224e462795ff5d4c7359f9e8637c10544bb2de70107tturney#else // _WIN64 ][ 225e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define INTPTR_MIN INT32_MIN 226e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define INTPTR_MAX INT32_MAX 227e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define UINTPTR_MAX UINT32_MAX 228e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // _WIN64 ] 229e462795ff5d4c7359f9e8637c10544bb2de70107tturney 230e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.2.5 Limits of greatest-width integer types 231e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INTMAX_MIN INT64_MIN 232e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INTMAX_MAX INT64_MAX 233e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINTMAX_MAX UINT64_MAX 234e462795ff5d4c7359f9e8637c10544bb2de70107tturney 235e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.3 Limits of other integer types 236e462795ff5d4c7359f9e8637c10544bb2de70107tturney 237e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifdef _WIN64 // [ 238e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define PTRDIFF_MIN _I64_MIN 239e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define PTRDIFF_MAX _I64_MAX 240e462795ff5d4c7359f9e8637c10544bb2de70107tturney#else // _WIN64 ][ 241e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define PTRDIFF_MIN _I32_MIN 242e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define PTRDIFF_MAX _I32_MAX 243e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // _WIN64 ] 244e462795ff5d4c7359f9e8637c10544bb2de70107tturney 245e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define SIG_ATOMIC_MIN INT_MIN 246e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define SIG_ATOMIC_MAX INT_MAX 247e462795ff5d4c7359f9e8637c10544bb2de70107tturney 248e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifndef SIZE_MAX // [ 249e462795ff5d4c7359f9e8637c10544bb2de70107tturney# ifdef _WIN64 // [ 250e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define SIZE_MAX _UI64_MAX 251e462795ff5d4c7359f9e8637c10544bb2de70107tturney# else // _WIN64 ][ 252e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define SIZE_MAX _UI32_MAX 253e462795ff5d4c7359f9e8637c10544bb2de70107tturney# endif // _WIN64 ] 254e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // SIZE_MAX ] 255e462795ff5d4c7359f9e8637c10544bb2de70107tturney 256e462795ff5d4c7359f9e8637c10544bb2de70107tturney// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h> 257e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifndef WCHAR_MIN // [ 258e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define WCHAR_MIN 0 259e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // WCHAR_MIN ] 260e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifndef WCHAR_MAX // [ 261e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define WCHAR_MAX _UI16_MAX 262e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // WCHAR_MAX ] 263e462795ff5d4c7359f9e8637c10544bb2de70107tturney 264e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define WINT_MIN 0 265e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define WINT_MAX _UI16_MAX 266e462795ff5d4c7359f9e8637c10544bb2de70107tturney 267e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // __STDC_LIMIT_MACROS ] 268e462795ff5d4c7359f9e8637c10544bb2de70107tturney 269e462795ff5d4c7359f9e8637c10544bb2de70107tturney 270e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.4 Limits of other integer types 271e462795ff5d4c7359f9e8637c10544bb2de70107tturney 272e462795ff5d4c7359f9e8637c10544bb2de70107tturney#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 273e462795ff5d4c7359f9e8637c10544bb2de70107tturney 274e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.4.1 Macros for minimum-width integer constants 275e462795ff5d4c7359f9e8637c10544bb2de70107tturney 276e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT8_C(val) val##i8 277e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT16_C(val) val##i16 278e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT32_C(val) val##i32 279e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define INT64_C(val) val##i64 280e462795ff5d4c7359f9e8637c10544bb2de70107tturney 281e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT8_C(val) val##ui8 282e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT16_C(val) val##ui16 283e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT32_C(val) val##ui32 284e462795ff5d4c7359f9e8637c10544bb2de70107tturney#define UINT64_C(val) val##ui64 285e462795ff5d4c7359f9e8637c10544bb2de70107tturney 286e462795ff5d4c7359f9e8637c10544bb2de70107tturney// 7.18.4.2 Macros for greatest-width integer constants 287e462795ff5d4c7359f9e8637c10544bb2de70107tturney// These #ifndef's are needed to prevent collisions with <boost/cstdint.hpp>. 288e462795ff5d4c7359f9e8637c10544bb2de70107tturney// Check out Issue 9 for the details. 289e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifndef INTMAX_C // [ 290e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define INTMAX_C INT64_C 291e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // INTMAX_C ] 292e462795ff5d4c7359f9e8637c10544bb2de70107tturney#ifndef UINTMAX_C // [ 293e462795ff5d4c7359f9e8637c10544bb2de70107tturney# define UINTMAX_C UINT64_C 294e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // UINTMAX_C ] 295e462795ff5d4c7359f9e8637c10544bb2de70107tturney 296e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // __STDC_CONSTANT_MACROS ] 297e462795ff5d4c7359f9e8637c10544bb2de70107tturney 298e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // _MSC_VER >= 1600 ] 299e462795ff5d4c7359f9e8637c10544bb2de70107tturney 300e462795ff5d4c7359f9e8637c10544bb2de70107tturney#endif // _MSC_STDINT_H_ ] 301