1.1 --- a/msc/stdint.h Mon Sep 09 10:48:08 2013 +0200 1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 1.3 @@ -1,247 +0,0 @@ 1.4 -// ISO C9x compliant stdint.h for Microsoft Visual Studio 1.5 -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 1.6 -// 1.7 -// Copyright (c) 2006-2008 Alexander Chemeris 1.8 -// 1.9 -// Redistribution and use in source and binary forms, with or without 1.10 -// modification, are permitted provided that the following conditions are met: 1.11 -// 1.12 -// 1. Redistributions of source code must retain the above copyright notice, 1.13 -// this list of conditions and the following disclaimer. 1.14 -// 1.15 -// 2. Redistributions in binary form must reproduce the above copyright 1.16 -// notice, this list of conditions and the following disclaimer in the 1.17 -// documentation and/or other materials provided with the distribution. 1.18 -// 1.19 -// 3. The name of the author may be used to endorse or promote products 1.20 -// derived from this software without specific prior written permission. 1.21 -// 1.22 -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 1.23 -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1.24 -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 1.25 -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1.26 -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 1.27 -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 1.28 -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 1.29 -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 1.30 -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 1.31 -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1.32 -// 1.33 -/////////////////////////////////////////////////////////////////////////////// 1.34 - 1.35 -#ifndef _MSC_VER // [ 1.36 -#error "Use this header only with Microsoft Visual C++ compilers!" 1.37 -#endif // _MSC_VER ] 1.38 - 1.39 -#ifndef _MSC_STDINT_H_ // [ 1.40 -#define _MSC_STDINT_H_ 1.41 - 1.42 -#if _MSC_VER > 1000 1.43 -#pragma once 1.44 -#endif 1.45 - 1.46 -#include <limits.h> 1.47 - 1.48 -// For Visual Studio 6 in C++ mode and for many Visual Studio versions when 1.49 -// compiling for ARM we should wrap <wchar.h> include with 'extern "C++" {}' 1.50 -// or compiler give many errors like this: 1.51 -// error C2733: second C linkage of overloaded function 'wmemchr' not allowed 1.52 -#ifdef __cplusplus 1.53 -extern "C" { 1.54 -#endif 1.55 -# include <wchar.h> 1.56 -#ifdef __cplusplus 1.57 -} 1.58 -#endif 1.59 - 1.60 -// Define _W64 macros to mark types changing their size, like intptr_t. 1.61 -#ifndef _W64 1.62 -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 1.63 -# define _W64 __w64 1.64 -# else 1.65 -# define _W64 1.66 -# endif 1.67 -#endif 1.68 - 1.69 - 1.70 -// 7.18.1 Integer types 1.71 - 1.72 -// 7.18.1.1 Exact-width integer types 1.73 - 1.74 -// Visual Studio 6 and Embedded Visual C++ 4 doesn't 1.75 -// realize that, e.g. char has the same size as __int8 1.76 -// so we give up on __intX for them. 1.77 -#if (_MSC_VER < 1300) 1.78 - typedef signed char int8_t; 1.79 - typedef signed short int16_t; 1.80 - typedef signed int int32_t; 1.81 - typedef unsigned char uint8_t; 1.82 - typedef unsigned short uint16_t; 1.83 - typedef unsigned int uint32_t; 1.84 -#else 1.85 - typedef signed __int8 int8_t; 1.86 - typedef signed __int16 int16_t; 1.87 - typedef signed __int32 int32_t; 1.88 - typedef unsigned __int8 uint8_t; 1.89 - typedef unsigned __int16 uint16_t; 1.90 - typedef unsigned __int32 uint32_t; 1.91 -#endif 1.92 -typedef signed __int64 int64_t; 1.93 -typedef unsigned __int64 uint64_t; 1.94 - 1.95 - 1.96 -// 7.18.1.2 Minimum-width integer types 1.97 -typedef int8_t int_least8_t; 1.98 -typedef int16_t int_least16_t; 1.99 -typedef int32_t int_least32_t; 1.100 -typedef int64_t int_least64_t; 1.101 -typedef uint8_t uint_least8_t; 1.102 -typedef uint16_t uint_least16_t; 1.103 -typedef uint32_t uint_least32_t; 1.104 -typedef uint64_t uint_least64_t; 1.105 - 1.106 -// 7.18.1.3 Fastest minimum-width integer types 1.107 -typedef int8_t int_fast8_t; 1.108 -typedef int16_t int_fast16_t; 1.109 -typedef int32_t int_fast32_t; 1.110 -typedef int64_t int_fast64_t; 1.111 -typedef uint8_t uint_fast8_t; 1.112 -typedef uint16_t uint_fast16_t; 1.113 -typedef uint32_t uint_fast32_t; 1.114 -typedef uint64_t uint_fast64_t; 1.115 - 1.116 -// 7.18.1.4 Integer types capable of holding object pointers 1.117 -#ifdef _WIN64 // [ 1.118 - typedef signed __int64 intptr_t; 1.119 - typedef unsigned __int64 uintptr_t; 1.120 -#else // _WIN64 ][ 1.121 - typedef _W64 signed int intptr_t; 1.122 - typedef _W64 unsigned int uintptr_t; 1.123 -#endif // _WIN64 ] 1.124 - 1.125 -// 7.18.1.5 Greatest-width integer types 1.126 -typedef int64_t intmax_t; 1.127 -typedef uint64_t uintmax_t; 1.128 - 1.129 - 1.130 -// 7.18.2 Limits of specified-width integer types 1.131 - 1.132 -#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 1.133 - 1.134 -// 7.18.2.1 Limits of exact-width integer types 1.135 -#define INT8_MIN ((int8_t)_I8_MIN) 1.136 -#define INT8_MAX _I8_MAX 1.137 -#define INT16_MIN ((int16_t)_I16_MIN) 1.138 -#define INT16_MAX _I16_MAX 1.139 -#define INT32_MIN ((int32_t)_I32_MIN) 1.140 -#define INT32_MAX _I32_MAX 1.141 -#define INT64_MIN ((int64_t)_I64_MIN) 1.142 -#define INT64_MAX _I64_MAX 1.143 -#define UINT8_MAX _UI8_MAX 1.144 -#define UINT16_MAX _UI16_MAX 1.145 -#define UINT32_MAX _UI32_MAX 1.146 -#define UINT64_MAX _UI64_MAX 1.147 - 1.148 -// 7.18.2.2 Limits of minimum-width integer types 1.149 -#define INT_LEAST8_MIN INT8_MIN 1.150 -#define INT_LEAST8_MAX INT8_MAX 1.151 -#define INT_LEAST16_MIN INT16_MIN 1.152 -#define INT_LEAST16_MAX INT16_MAX 1.153 -#define INT_LEAST32_MIN INT32_MIN 1.154 -#define INT_LEAST32_MAX INT32_MAX 1.155 -#define INT_LEAST64_MIN INT64_MIN 1.156 -#define INT_LEAST64_MAX INT64_MAX 1.157 -#define UINT_LEAST8_MAX UINT8_MAX 1.158 -#define UINT_LEAST16_MAX UINT16_MAX 1.159 -#define UINT_LEAST32_MAX UINT32_MAX 1.160 -#define UINT_LEAST64_MAX UINT64_MAX 1.161 - 1.162 -// 7.18.2.3 Limits of fastest minimum-width integer types 1.163 -#define INT_FAST8_MIN INT8_MIN 1.164 -#define INT_FAST8_MAX INT8_MAX 1.165 -#define INT_FAST16_MIN INT16_MIN 1.166 -#define INT_FAST16_MAX INT16_MAX 1.167 -#define INT_FAST32_MIN INT32_MIN 1.168 -#define INT_FAST32_MAX INT32_MAX 1.169 -#define INT_FAST64_MIN INT64_MIN 1.170 -#define INT_FAST64_MAX INT64_MAX 1.171 -#define UINT_FAST8_MAX UINT8_MAX 1.172 -#define UINT_FAST16_MAX UINT16_MAX 1.173 -#define UINT_FAST32_MAX UINT32_MAX 1.174 -#define UINT_FAST64_MAX UINT64_MAX 1.175 - 1.176 -// 7.18.2.4 Limits of integer types capable of holding object pointers 1.177 -#ifdef _WIN64 // [ 1.178 -# define INTPTR_MIN INT64_MIN 1.179 -# define INTPTR_MAX INT64_MAX 1.180 -# define UINTPTR_MAX UINT64_MAX 1.181 -#else // _WIN64 ][ 1.182 -# define INTPTR_MIN INT32_MIN 1.183 -# define INTPTR_MAX INT32_MAX 1.184 -# define UINTPTR_MAX UINT32_MAX 1.185 -#endif // _WIN64 ] 1.186 - 1.187 -// 7.18.2.5 Limits of greatest-width integer types 1.188 -#define INTMAX_MIN INT64_MIN 1.189 -#define INTMAX_MAX INT64_MAX 1.190 -#define UINTMAX_MAX UINT64_MAX 1.191 - 1.192 -// 7.18.3 Limits of other integer types 1.193 - 1.194 -#ifdef _WIN64 // [ 1.195 -# define PTRDIFF_MIN _I64_MIN 1.196 -# define PTRDIFF_MAX _I64_MAX 1.197 -#else // _WIN64 ][ 1.198 -# define PTRDIFF_MIN _I32_MIN 1.199 -# define PTRDIFF_MAX _I32_MAX 1.200 -#endif // _WIN64 ] 1.201 - 1.202 -#define SIG_ATOMIC_MIN INT_MIN 1.203 -#define SIG_ATOMIC_MAX INT_MAX 1.204 - 1.205 -#ifndef SIZE_MAX // [ 1.206 -# ifdef _WIN64 // [ 1.207 -# define SIZE_MAX _UI64_MAX 1.208 -# else // _WIN64 ][ 1.209 -# define SIZE_MAX _UI32_MAX 1.210 -# endif // _WIN64 ] 1.211 -#endif // SIZE_MAX ] 1.212 - 1.213 -// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h> 1.214 -#ifndef WCHAR_MIN // [ 1.215 -# define WCHAR_MIN 0 1.216 -#endif // WCHAR_MIN ] 1.217 -#ifndef WCHAR_MAX // [ 1.218 -# define WCHAR_MAX _UI16_MAX 1.219 -#endif // WCHAR_MAX ] 1.220 - 1.221 -#define WINT_MIN 0 1.222 -#define WINT_MAX _UI16_MAX 1.223 - 1.224 -#endif // __STDC_LIMIT_MACROS ] 1.225 - 1.226 - 1.227 -// 7.18.4 Limits of other integer types 1.228 - 1.229 -#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 1.230 - 1.231 -// 7.18.4.1 Macros for minimum-width integer constants 1.232 - 1.233 -#define INT8_C(val) val##i8 1.234 -#define INT16_C(val) val##i16 1.235 -#define INT32_C(val) val##i32 1.236 -#define INT64_C(val) val##i64 1.237 - 1.238 -#define UINT8_C(val) val##ui8 1.239 -#define UINT16_C(val) val##ui16 1.240 -#define UINT32_C(val) val##ui32 1.241 -#define UINT64_C(val) val##ui64 1.242 - 1.243 -// 7.18.4.2 Macros for greatest-width integer constants 1.244 -#define INTMAX_C INT64_C 1.245 -#define UINTMAX_C UINT64_C 1.246 - 1.247 -#endif // __STDC_CONSTANT_MACROS ] 1.248 - 1.249 - 1.250 -#endif // _MSC_STDINT_H_ ]