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