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_ ]