00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00031
00032 #ifndef _MSC_VER // [
00033 #error "Use this header only with Microsoft Visual C++ compilers!"
00034 #endif // _MSC_VER ]
00035
00036 #ifndef _MSC_STDINT_H_ // [
00037 #define _MSC_STDINT_H_
00038
00039 #if _MSC_VER > 1000
00040 #pragma once
00041 #endif
00042
00043 #include <limits.h>
00044
00045
00046
00047
00048
00049 #ifdef __cplusplus
00050 extern "C" {
00051 #endif
00052 # include <wchar.h>
00053 #ifdef __cplusplus
00054 }
00055 #endif
00056
00057
00058 #ifndef _W64
00059 # if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
00060 # define _W64 __w64
00061 # else
00062 # define _W64
00063 # endif
00064 #endif
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074 #if (_MSC_VER < 1300)
00075 typedef signed char int8_t;
00076 typedef signed short int16_t;
00077 typedef signed int int32_t;
00078 typedef unsigned char uint8_t;
00079 typedef unsigned short uint16_t;
00080 typedef unsigned int uint32_t;
00081 #else
00082 typedef signed __int8 int8_t;
00083 typedef signed __int16 int16_t;
00084 typedef signed __int32 int32_t;
00085 typedef unsigned __int8 uint8_t;
00086 typedef unsigned __int16 uint16_t;
00087 typedef unsigned __int32 uint32_t;
00088 #endif
00089 typedef signed __int64 int64_t;
00090 typedef unsigned __int64 uint64_t;
00091
00092
00093
00094 typedef int8_t int_least8_t;
00095 typedef int16_t int_least16_t;
00096 typedef int32_t int_least32_t;
00097 typedef int64_t int_least64_t;
00098 typedef uint8_t uint_least8_t;
00099 typedef uint16_t uint_least16_t;
00100 typedef uint32_t uint_least32_t;
00101 typedef uint64_t uint_least64_t;
00102
00103
00104 typedef int8_t int_fast8_t;
00105 typedef int16_t int_fast16_t;
00106 typedef int32_t int_fast32_t;
00107 typedef int64_t int_fast64_t;
00108 typedef uint8_t uint_fast8_t;
00109 typedef uint16_t uint_fast16_t;
00110 typedef uint32_t uint_fast32_t;
00111 typedef uint64_t uint_fast64_t;
00112
00113
00114 #ifdef _WIN64 // [
00115 typedef signed __int64 intptr_t;
00116 typedef unsigned __int64 uintptr_t;
00117 #else // _WIN64 ][
00118 typedef _W64 signed int intptr_t;
00119 typedef _W64 unsigned int uintptr_t;
00120 #endif // _WIN64 ]
00121
00122
00123 typedef int64_t intmax_t;
00124 typedef uint64_t uintmax_t;
00125
00126
00127
00128
00129 #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
00130
00131
00132 #define INT8_MIN ((int8_t)_I8_MIN)
00133 #define INT8_MAX _I8_MAX
00134 #define INT16_MIN ((int16_t)_I16_MIN)
00135 #define INT16_MAX _I16_MAX
00136 #define INT32_MIN ((int32_t)_I32_MIN)
00137 #define INT32_MAX _I32_MAX
00138 #define INT64_MIN ((int64_t)_I64_MIN)
00139 #define INT64_MAX _I64_MAX
00140 #define UINT8_MAX _UI8_MAX
00141 #define UINT16_MAX _UI16_MAX
00142 #define UINT32_MAX _UI32_MAX
00143 #define UINT64_MAX _UI64_MAX
00144
00145
00146 #define INT_LEAST8_MIN INT8_MIN
00147 #define INT_LEAST8_MAX INT8_MAX
00148 #define INT_LEAST16_MIN INT16_MIN
00149 #define INT_LEAST16_MAX INT16_MAX
00150 #define INT_LEAST32_MIN INT32_MIN
00151 #define INT_LEAST32_MAX INT32_MAX
00152 #define INT_LEAST64_MIN INT64_MIN
00153 #define INT_LEAST64_MAX INT64_MAX
00154 #define UINT_LEAST8_MAX UINT8_MAX
00155 #define UINT_LEAST16_MAX UINT16_MAX
00156 #define UINT_LEAST32_MAX UINT32_MAX
00157 #define UINT_LEAST64_MAX UINT64_MAX
00158
00159
00160 #define INT_FAST8_MIN INT8_MIN
00161 #define INT_FAST8_MAX INT8_MAX
00162 #define INT_FAST16_MIN INT16_MIN
00163 #define INT_FAST16_MAX INT16_MAX
00164 #define INT_FAST32_MIN INT32_MIN
00165 #define INT_FAST32_MAX INT32_MAX
00166 #define INT_FAST64_MIN INT64_MIN
00167 #define INT_FAST64_MAX INT64_MAX
00168 #define UINT_FAST8_MAX UINT8_MAX
00169 #define UINT_FAST16_MAX UINT16_MAX
00170 #define UINT_FAST32_MAX UINT32_MAX
00171 #define UINT_FAST64_MAX UINT64_MAX
00172
00173
00174 #ifdef _WIN64 // [
00175 # define INTPTR_MIN INT64_MIN
00176 # define INTPTR_MAX INT64_MAX
00177 # define UINTPTR_MAX UINT64_MAX
00178 #else // _WIN64 ][
00179 # define INTPTR_MIN INT32_MIN
00180 # define INTPTR_MAX INT32_MAX
00181 # define UINTPTR_MAX UINT32_MAX
00182 #endif // _WIN64 ]
00183
00184
00185 #define INTMAX_MIN INT64_MIN
00186 #define INTMAX_MAX INT64_MAX
00187 #define UINTMAX_MAX UINT64_MAX
00188
00189
00190
00191 #ifdef _WIN64 // [
00192 # define PTRDIFF_MIN _I64_MIN
00193 # define PTRDIFF_MAX _I64_MAX
00194 #else // _WIN64 ][
00195 # define PTRDIFF_MIN _I32_MIN
00196 # define PTRDIFF_MAX _I32_MAX
00197 #endif // _WIN64 ]
00198
00199 #define SIG_ATOMIC_MIN INT_MIN
00200 #define SIG_ATOMIC_MAX INT_MAX
00201
00202 #ifndef SIZE_MAX // [
00203 # ifdef _WIN64 // [
00204 # define SIZE_MAX _UI64_MAX
00205 # else // _WIN64 ][
00206 # define SIZE_MAX _UI32_MAX
00207 # endif // _WIN64 ]
00208 #endif // SIZE_MAX ]
00209
00210
00211 #ifndef WCHAR_MIN // [
00212 # define WCHAR_MIN 0
00213 #endif // WCHAR_MIN ]
00214 #ifndef WCHAR_MAX // [
00215 # define WCHAR_MAX _UI16_MAX
00216 #endif // WCHAR_MAX ]
00217
00218 #define WINT_MIN 0
00219 #define WINT_MAX _UI16_MAX
00220
00221 #endif // __STDC_LIMIT_MACROS ]
00222
00223
00224
00225
00226 #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
00227
00228
00229
00230 #define INT8_C(val) val##i8
00231 #define INT16_C(val) val##i16
00232 #define INT32_C(val) val##i32
00233 #define INT64_C(val) val##i64
00234
00235 #define UINT8_C(val) val##ui8
00236 #define UINT16_C(val) val##ui16
00237 #define UINT32_C(val) val##ui32
00238 #define UINT64_C(val) val##ui64
00239
00240
00241 #define INTMAX_C INT64_C
00242 #define UINTMAX_C UINT64_C
00243
00244 #endif // __STDC_CONSTANT_MACROS ]
00245
00246
00247 #endif // _MSC_STDINT_H_ ]
00248