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 #if (_MSC_VER < 1300) && defined(__cplusplus)
00049 extern "C++" {
00050 #endif
00051 # include <wchar.h>
00052 #if (_MSC_VER < 1300) && defined(__cplusplus)
00053 }
00054 #endif
00055
00056
00057
00058
00059 typedef __int8 int8_t;
00060 typedef __int16 int16_t;
00061 typedef __int32 int32_t;
00062 typedef __int64 int64_t;
00063 typedef unsigned __int8 uint8_t;
00064 typedef unsigned __int16 uint16_t;
00065 typedef unsigned __int32 uint32_t;
00066 typedef unsigned __int64 uint64_t;
00067
00068
00069 typedef int8_t int_least8_t;
00070 typedef int16_t int_least16_t;
00071 typedef int32_t int_least32_t;
00072 typedef int64_t int_least64_t;
00073 typedef uint8_t uint_least8_t;
00074 typedef uint16_t uint_least16_t;
00075 typedef uint32_t uint_least32_t;
00076 typedef uint64_t uint_least64_t;
00077
00078
00079 typedef int8_t int_fast8_t;
00080 typedef int16_t int_fast16_t;
00081 typedef int32_t int_fast32_t;
00082 typedef int64_t int_fast64_t;
00083 typedef uint8_t uint_fast8_t;
00084 typedef uint16_t uint_fast16_t;
00085 typedef uint32_t uint_fast32_t;
00086 typedef uint64_t uint_fast64_t;
00087
00088
00089 #ifdef _WIN64 // [
00090 typedef __int64 intptr_t;
00091 typedef unsigned __int64 uintptr_t;
00092 #else // _WIN64 ][
00093 typedef int intptr_t;
00094 typedef unsigned int uintptr_t;
00095 #endif // _WIN64 ]
00096
00097
00098 typedef int64_t intmax_t;
00099 typedef uint64_t uintmax_t;
00100
00101
00102
00103
00104 #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
00105
00106
00107 #define INT8_MIN ((int8_t)_I8_MIN)
00108 #define INT8_MAX _I8_MAX
00109 #define INT16_MIN ((int16_t)_I16_MIN)
00110 #define INT16_MAX _I16_MAX
00111 #define INT32_MIN ((int32_t)_I32_MIN)
00112 #define INT32_MAX _I32_MAX
00113 #define INT64_MIN ((int64_t)_I64_MIN)
00114 #define INT64_MAX _I64_MAX
00115 #define UINT8_MAX _UI8_MAX
00116 #define UINT16_MAX _UI16_MAX
00117 #define UINT32_MAX _UI32_MAX
00118 #define UINT64_MAX _UI64_MAX
00119
00120
00121 #define INT_LEAST8_MIN INT8_MIN
00122 #define INT_LEAST8_MAX INT8_MAX
00123 #define INT_LEAST16_MIN INT16_MIN
00124 #define INT_LEAST16_MAX INT16_MAX
00125 #define INT_LEAST32_MIN INT32_MIN
00126 #define INT_LEAST32_MAX INT32_MAX
00127 #define INT_LEAST64_MIN INT64_MIN
00128 #define INT_LEAST64_MAX INT64_MAX
00129 #define UINT_LEAST8_MAX UINT8_MAX
00130 #define UINT_LEAST16_MAX UINT16_MAX
00131 #define UINT_LEAST32_MAX UINT32_MAX
00132 #define UINT_LEAST64_MAX UINT64_MAX
00133
00134
00135 #define INT_FAST8_MIN INT8_MIN
00136 #define INT_FAST8_MAX INT8_MAX
00137 #define INT_FAST16_MIN INT16_MIN
00138 #define INT_FAST16_MAX INT16_MAX
00139 #define INT_FAST32_MIN INT32_MIN
00140 #define INT_FAST32_MAX INT32_MAX
00141 #define INT_FAST64_MIN INT64_MIN
00142 #define INT_FAST64_MAX INT64_MAX
00143 #define UINT_FAST8_MAX UINT8_MAX
00144 #define UINT_FAST16_MAX UINT16_MAX
00145 #define UINT_FAST32_MAX UINT32_MAX
00146 #define UINT_FAST64_MAX UINT64_MAX
00147
00148
00149 #ifdef _WIN64 // [
00150 # define INTPTR_MIN INT64_MIN
00151 # define INTPTR_MAX INT64_MAX
00152 # define UINTPTR_MAX UINT64_MAX
00153 #else // _WIN64 ][
00154 # define INTPTR_MIN INT32_MIN
00155 # define INTPTR_MAX INT32_MAX
00156 # define UINTPTR_MAX UINT32_MAX
00157 #endif // _WIN64 ]
00158
00159
00160 #define INTMAX_MIN INT64_MIN
00161 #define INTMAX_MAX INT64_MAX
00162 #define UINTMAX_MAX UINT64_MAX
00163
00164
00165
00166 #ifdef _WIN64 // [
00167 # define PTRDIFF_MIN _I64_MIN
00168 # define PTRDIFF_MAX _I64_MAX
00169 #else // _WIN64 ][
00170 # define PTRDIFF_MIN _I32_MIN
00171 # define PTRDIFF_MAX _I32_MAX
00172 #endif // _WIN64 ]
00173
00174 #define SIG_ATOMIC_MIN INT_MIN
00175 #define SIG_ATOMIC_MAX INT_MAX
00176
00177 #ifndef SIZE_MAX // [
00178 # ifdef _WIN64 // [
00179 # define SIZE_MAX _UI64_MAX
00180 # else // _WIN64 ][
00181 # define SIZE_MAX _UI32_MAX
00182 # endif // _WIN64 ]
00183 #endif // SIZE_MAX ]
00184
00185
00186 #ifndef WCHAR_MIN // [
00187 # define WCHAR_MIN 0
00188 #endif // WCHAR_MIN ]
00189 #ifndef WCHAR_MAX // [
00190 # define WCHAR_MAX _UI16_MAX
00191 #endif // WCHAR_MAX ]
00192
00193 #define WINT_MIN 0
00194 #define WINT_MAX _UI16_MAX
00195
00196 #endif // __STDC_LIMIT_MACROS ]
00197
00198
00199
00200
00201 #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
00202
00203
00204
00205 #define INT8_C(val) val##i8
00206 #define INT16_C(val) val##i16
00207 #define INT32_C(val) val##i32
00208 #define INT64_C(val) val##i64
00209
00210 #define UINT8_C(val) val##ui8
00211 #define UINT16_C(val) val##ui16
00212 #define UINT32_C(val) val##ui32
00213 #define UINT64_C(val) val##ui64
00214
00215
00216 #define INTMAX_C INT64_C
00217 #define UINTMAX_C UINT64_C
00218
00219 #endif // __STDC_CONSTANT_MACROS ]
00220
00221
00222 #endif // _MSC_STDINT_H_ ]