| 1 | //  boost cstdint.hpp header file  ------------------------------------------// | 
|---|
| 2 |  | 
|---|
| 3 | //  (C) Copyright Beman Dawes 1999.  | 
|---|
| 4 | //  (C) Copyright Jens Mauer 2001   | 
|---|
| 5 | //  (C) Copyright John Maddock 2001  | 
|---|
| 6 | //  Distributed under the Boost | 
|---|
| 7 | //  Software License, Version 1.0. (See accompanying file | 
|---|
| 8 | //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | 
|---|
| 9 |  | 
|---|
| 10 | //  See http://www.boost.org/libs/integer for documentation. | 
|---|
| 11 |  | 
|---|
| 12 | //  Revision History | 
|---|
| 13 | //   31 Oct 01  use BOOST_HAS_LONG_LONG to check for "long long" (Jens M.) | 
|---|
| 14 | //   16 Apr 01  check LONGLONG_MAX when looking for "long long" (Jens Maurer) | 
|---|
| 15 | //   23 Jan 01  prefer "long" over "int" for int32_t and intmax_t (Jens Maurer) | 
|---|
| 16 | //   12 Nov 00  Merged <boost/stdint.h> (Jens Maurer) | 
|---|
| 17 | //   23 Sep 00  Added INTXX_C macro support (John Maddock). | 
|---|
| 18 | //   22 Sep 00  Better 64-bit support (John Maddock) | 
|---|
| 19 | //   29 Jun 00  Reimplement to avoid including stdint.h within namespace boost | 
|---|
| 20 | //    8 Aug 99  Initial version (Beman Dawes) | 
|---|
| 21 |  | 
|---|
| 22 |  | 
|---|
| 23 | #ifndef BOOST_CSTDINT_HPP | 
|---|
| 24 | #define BOOST_CSTDINT_HPP | 
|---|
| 25 |  | 
|---|
| 26 | #include <boost/config.hpp> | 
|---|
| 27 |  | 
|---|
| 28 |  | 
|---|
| 29 | #ifdef BOOST_HAS_STDINT_H | 
|---|
| 30 |  | 
|---|
| 31 | // The following #include is an implementation artifact; not part of interface. | 
|---|
| 32 | # ifdef __hpux | 
|---|
| 33 | // HP-UX has a vaguely nice <stdint.h> in a non-standard location | 
|---|
| 34 | #   include <inttypes.h> | 
|---|
| 35 | #   ifdef __STDC_32_MODE__ | 
|---|
| 36 |       // this is triggered with GCC, because it defines __cplusplus < 199707L | 
|---|
| 37 | #     define BOOST_NO_INT64_T | 
|---|
| 38 | #   endif  | 
|---|
| 39 | # elif defined(__FreeBSD__) || defined(__IBMCPP__) | 
|---|
| 40 | #   include <inttypes.h> | 
|---|
| 41 | # else | 
|---|
| 42 | #   include <stdint.h> | 
|---|
| 43 |  | 
|---|
| 44 | // There is a bug in Cygwin two _C macros | 
|---|
| 45 | #   if defined(__STDC_CONSTANT_MACROS) && defined(__CYGWIN__) | 
|---|
| 46 | #     undef INTMAX_C | 
|---|
| 47 | #     undef UINTMAX_C | 
|---|
| 48 | #     define INTMAX_C(c) c##LL | 
|---|
| 49 | #     define UINTMAX_C(c) c##ULL | 
|---|
| 50 | #   endif | 
|---|
| 51 |  | 
|---|
| 52 | # endif | 
|---|
| 53 |  | 
|---|
| 54 | #ifdef __QNX__ | 
|---|
| 55 |  | 
|---|
| 56 | // QNX (Dinkumware stdlib) defines these as non-standard names. | 
|---|
| 57 | // Reflect to the standard names. | 
|---|
| 58 |  | 
|---|
| 59 | typedef ::intleast8_t int_least8_t; | 
|---|
| 60 | typedef ::intfast8_t int_fast8_t; | 
|---|
| 61 | typedef ::uintleast8_t uint_least8_t; | 
|---|
| 62 | typedef ::uintfast8_t uint_fast8_t; | 
|---|
| 63 |  | 
|---|
| 64 | typedef ::intleast16_t int_least16_t; | 
|---|
| 65 | typedef ::intfast16_t int_fast16_t; | 
|---|
| 66 | typedef ::uintleast16_t uint_least16_t; | 
|---|
| 67 | typedef ::uintfast16_t uint_fast16_t; | 
|---|
| 68 |  | 
|---|
| 69 | typedef ::intleast32_t int_least32_t; | 
|---|
| 70 | typedef ::intfast32_t int_fast32_t; | 
|---|
| 71 | typedef ::uintleast32_t uint_least32_t; | 
|---|
| 72 | typedef ::uintfast32_t uint_fast32_t; | 
|---|
| 73 |  | 
|---|
| 74 | # ifndef BOOST_NO_INT64_T | 
|---|
| 75 |  | 
|---|
| 76 | typedef ::intleast64_t int_least64_t; | 
|---|
| 77 | typedef ::intfast64_t int_fast64_t; | 
|---|
| 78 | typedef ::uintleast64_t uint_least64_t; | 
|---|
| 79 | typedef ::uintfast64_t uint_fast64_t; | 
|---|
| 80 |  | 
|---|
| 81 | # endif | 
|---|
| 82 |  | 
|---|
| 83 | #endif | 
|---|
| 84 |  | 
|---|
| 85 | namespace boost | 
|---|
| 86 | { | 
|---|
| 87 |  | 
|---|
| 88 |   using ::int8_t;              | 
|---|
| 89 |   using ::int_least8_t;        | 
|---|
| 90 |   using ::int_fast8_t;         | 
|---|
| 91 |   using ::uint8_t;             | 
|---|
| 92 |   using ::uint_least8_t;       | 
|---|
| 93 |   using ::uint_fast8_t;        | 
|---|
| 94 |                       | 
|---|
| 95 |   using ::int16_t;             | 
|---|
| 96 |   using ::int_least16_t;       | 
|---|
| 97 |   using ::int_fast16_t;        | 
|---|
| 98 |   using ::uint16_t;            | 
|---|
| 99 |   using ::uint_least16_t;      | 
|---|
| 100 |   using ::uint_fast16_t;       | 
|---|
| 101 |                       | 
|---|
| 102 |   using ::int32_t;             | 
|---|
| 103 |   using ::int_least32_t;       | 
|---|
| 104 |   using ::int_fast32_t;        | 
|---|
| 105 |   using ::uint32_t;            | 
|---|
| 106 |   using ::uint_least32_t;      | 
|---|
| 107 |   using ::uint_fast32_t;       | 
|---|
| 108 |                       | 
|---|
| 109 | # ifndef BOOST_NO_INT64_T | 
|---|
| 110 |  | 
|---|
| 111 |   using ::int64_t;             | 
|---|
| 112 |   using ::int_least64_t;       | 
|---|
| 113 |   using ::int_fast64_t;        | 
|---|
| 114 |   using ::uint64_t;            | 
|---|
| 115 |   using ::uint_least64_t;      | 
|---|
| 116 |   using ::uint_fast64_t;       | 
|---|
| 117 |                       | 
|---|
| 118 | # endif | 
|---|
| 119 |  | 
|---|
| 120 |   using ::intmax_t;       | 
|---|
| 121 |   using ::uintmax_t;      | 
|---|
| 122 |  | 
|---|
| 123 | } // namespace boost | 
|---|
| 124 |  | 
|---|
| 125 | #elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) || defined(__osf__) | 
|---|
| 126 | // FreeBSD and Tru64 have an <inttypes.h> that contains much of what we need. | 
|---|
| 127 | # include <inttypes.h> | 
|---|
| 128 |  | 
|---|
| 129 | namespace boost { | 
|---|
| 130 |  | 
|---|
| 131 |   using ::int8_t;              | 
|---|
| 132 |   typedef int8_t int_least8_t;        | 
|---|
| 133 |   typedef int8_t int_fast8_t;         | 
|---|
| 134 |   using ::uint8_t;             | 
|---|
| 135 |   typedef uint8_t uint_least8_t;       | 
|---|
| 136 |   typedef uint8_t uint_fast8_t;        | 
|---|
| 137 |                       | 
|---|
| 138 |   using ::int16_t;             | 
|---|
| 139 |   typedef int16_t int_least16_t;       | 
|---|
| 140 |   typedef int16_t int_fast16_t;        | 
|---|
| 141 |   using ::uint16_t;            | 
|---|
| 142 |   typedef uint16_t uint_least16_t;      | 
|---|
| 143 |   typedef uint16_t uint_fast16_t;       | 
|---|
| 144 |                       | 
|---|
| 145 |   using ::int32_t;             | 
|---|
| 146 |   typedef int32_t int_least32_t;       | 
|---|
| 147 |   typedef int32_t int_fast32_t;        | 
|---|
| 148 |   using ::uint32_t;            | 
|---|
| 149 |   typedef uint32_t uint_least32_t;      | 
|---|
| 150 |   typedef uint32_t uint_fast32_t;       | 
|---|
| 151 |           | 
|---|
| 152 | # ifndef BOOST_NO_INT64_T           | 
|---|
| 153 |  | 
|---|
| 154 |   using ::int64_t;             | 
|---|
| 155 |   typedef int64_t int_least64_t;       | 
|---|
| 156 |   typedef int64_t int_fast64_t;        | 
|---|
| 157 |   using ::uint64_t;            | 
|---|
| 158 |   typedef uint64_t uint_least64_t;      | 
|---|
| 159 |   typedef uint64_t uint_fast64_t;       | 
|---|
| 160 |  | 
|---|
| 161 |   typedef int64_t intmax_t; | 
|---|
| 162 |   typedef uint64_t uintmax_t; | 
|---|
| 163 |  | 
|---|
| 164 | # else | 
|---|
| 165 |  | 
|---|
| 166 |   typedef int32_t intmax_t; | 
|---|
| 167 |   typedef uint32_t uintmax_t; | 
|---|
| 168 |  | 
|---|
| 169 | # endif | 
|---|
| 170 |  | 
|---|
| 171 | } // namespace boost | 
|---|
| 172 |  | 
|---|
| 173 | #else  // BOOST_HAS_STDINT_H | 
|---|
| 174 |  | 
|---|
| 175 | # include <boost/limits.hpp> // implementation artifact; not part of interface | 
|---|
| 176 | # include <limits.h>         // needed for limits macros | 
|---|
| 177 |  | 
|---|
| 178 |  | 
|---|
| 179 | namespace boost | 
|---|
| 180 | { | 
|---|
| 181 |  | 
|---|
| 182 | //  These are fairly safe guesses for some 16-bit, and most 32-bit and 64-bit | 
|---|
| 183 | //  platforms.  For other systems, they will have to be hand tailored. | 
|---|
| 184 | // | 
|---|
| 185 | //  Because the fast types are assumed to be the same as the undecorated types, | 
|---|
| 186 | //  it may be possible to hand tailor a more efficient implementation.  Such | 
|---|
| 187 | //  an optimization may be illusionary; on the Intel x86-family 386 on, for | 
|---|
| 188 | //  example, byte arithmetic and load/stores are as fast as "int" sized ones. | 
|---|
| 189 |  | 
|---|
| 190 | //  8-bit types  ------------------------------------------------------------// | 
|---|
| 191 |  | 
|---|
| 192 | # if UCHAR_MAX == 0xff | 
|---|
| 193 |      typedef signed char     int8_t; | 
|---|
| 194 |      typedef signed char     int_least8_t; | 
|---|
| 195 |      typedef signed char     int_fast8_t; | 
|---|
| 196 |      typedef unsigned char   uint8_t; | 
|---|
| 197 |      typedef unsigned char   uint_least8_t; | 
|---|
| 198 |      typedef unsigned char   uint_fast8_t; | 
|---|
| 199 | # else | 
|---|
| 200 | #    error defaults not correct; you must hand modify boost/cstdint.hpp | 
|---|
| 201 | # endif | 
|---|
| 202 |  | 
|---|
| 203 | //  16-bit types  -----------------------------------------------------------// | 
|---|
| 204 |  | 
|---|
| 205 | # if USHRT_MAX == 0xffff | 
|---|
| 206 | #  if defined(__crayx1) | 
|---|
| 207 |      // The Cray X1 has a 16-bit short, however it is not recommend | 
|---|
| 208 |      // for use in performance critical code. | 
|---|
| 209 |      typedef short           int16_t; | 
|---|
| 210 |      typedef short           int_least16_t; | 
|---|
| 211 |      typedef int             int_fast16_t; | 
|---|
| 212 |      typedef unsigned short  uint16_t; | 
|---|
| 213 |      typedef unsigned short  uint_least16_t; | 
|---|
| 214 |      typedef unsigned int    uint_fast16_t; | 
|---|
| 215 | #  else | 
|---|
| 216 |      typedef short           int16_t; | 
|---|
| 217 |      typedef short           int_least16_t; | 
|---|
| 218 |      typedef short           int_fast16_t; | 
|---|
| 219 |      typedef unsigned short  uint16_t; | 
|---|
| 220 |      typedef unsigned short  uint_least16_t; | 
|---|
| 221 |      typedef unsigned short  uint_fast16_t; | 
|---|
| 222 | #  endif | 
|---|
| 223 | # elif (USHRT_MAX == 0xffffffff) && defined(CRAY) | 
|---|
| 224 |      // no 16-bit types on Cray: | 
|---|
| 225 |      typedef short           int_least16_t; | 
|---|
| 226 |      typedef short           int_fast16_t; | 
|---|
| 227 |      typedef unsigned short  uint_least16_t; | 
|---|
| 228 |      typedef unsigned short  uint_fast16_t; | 
|---|
| 229 | # else | 
|---|
| 230 | #    error defaults not correct; you must hand modify boost/cstdint.hpp | 
|---|
| 231 | # endif | 
|---|
| 232 |  | 
|---|
| 233 | //  32-bit types  -----------------------------------------------------------// | 
|---|
| 234 |  | 
|---|
| 235 | # if ULONG_MAX == 0xffffffff | 
|---|
| 236 |      typedef long            int32_t; | 
|---|
| 237 |      typedef long            int_least32_t; | 
|---|
| 238 |      typedef long            int_fast32_t; | 
|---|
| 239 |      typedef unsigned long   uint32_t; | 
|---|
| 240 |      typedef unsigned long   uint_least32_t; | 
|---|
| 241 |      typedef unsigned long   uint_fast32_t; | 
|---|
| 242 | # elif UINT_MAX == 0xffffffff | 
|---|
| 243 |      typedef int             int32_t; | 
|---|
| 244 |      typedef int             int_least32_t; | 
|---|
| 245 |      typedef int             int_fast32_t; | 
|---|
| 246 |      typedef unsigned int    uint32_t; | 
|---|
| 247 |      typedef unsigned int    uint_least32_t; | 
|---|
| 248 |      typedef unsigned int    uint_fast32_t; | 
|---|
| 249 | # else | 
|---|
| 250 | #    error defaults not correct; you must hand modify boost/cstdint.hpp | 
|---|
| 251 | # endif | 
|---|
| 252 |  | 
|---|
| 253 | //  64-bit types + intmax_t and uintmax_t  ----------------------------------// | 
|---|
| 254 |  | 
|---|
| 255 | # if defined(BOOST_HAS_LONG_LONG) && \ | 
|---|
| 256 |    !defined(BOOST_MSVC) && !defined(__BORLANDC__) && \ | 
|---|
| 257 |    (!defined(__GLIBCPP__) || defined(_GLIBCPP_USE_LONG_LONG)) && \ | 
|---|
| 258 |    (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX)) | 
|---|
| 259 | #    if defined(__hpux) | 
|---|
| 260 |      // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions | 
|---|
| 261 | #    elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) || (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) || (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL) | 
|---|
| 262 |                                                                  // 2**64 - 1 | 
|---|
| 263 | #    else | 
|---|
| 264 | #       error defaults not correct; you must hand modify boost/cstdint.hpp | 
|---|
| 265 | #    endif | 
|---|
| 266 |  | 
|---|
| 267 |      typedef  ::boost::long_long_type            intmax_t; | 
|---|
| 268 |      typedef  ::boost::ulong_long_type   uintmax_t; | 
|---|
| 269 |      typedef  ::boost::long_long_type            int64_t; | 
|---|
| 270 |      typedef  ::boost::long_long_type            int_least64_t; | 
|---|
| 271 |      typedef  ::boost::long_long_type            int_fast64_t; | 
|---|
| 272 |      typedef  ::boost::ulong_long_type   uint64_t; | 
|---|
| 273 |      typedef  ::boost::ulong_long_type   uint_least64_t; | 
|---|
| 274 |      typedef  ::boost::ulong_long_type   uint_fast64_t; | 
|---|
| 275 |  | 
|---|
| 276 | # elif ULONG_MAX != 0xffffffff | 
|---|
| 277 |  | 
|---|
| 278 | #    if ULONG_MAX == 18446744073709551615 // 2**64 - 1 | 
|---|
| 279 |      typedef long                 intmax_t; | 
|---|
| 280 |      typedef unsigned long        uintmax_t; | 
|---|
| 281 |      typedef long                 int64_t; | 
|---|
| 282 |      typedef long                 int_least64_t; | 
|---|
| 283 |      typedef long                 int_fast64_t; | 
|---|
| 284 |      typedef unsigned long        uint64_t; | 
|---|
| 285 |      typedef unsigned long        uint_least64_t; | 
|---|
| 286 |      typedef unsigned long        uint_fast64_t; | 
|---|
| 287 | #    else | 
|---|
| 288 | #       error defaults not correct; you must hand modify boost/cstdint.hpp | 
|---|
| 289 | #    endif | 
|---|
| 290 | # elif defined(__GNUC__) && defined(BOOST_HAS_LONG_LONG) | 
|---|
| 291 |      __extension__ typedef long long            intmax_t; | 
|---|
| 292 |      __extension__ typedef unsigned long long   uintmax_t; | 
|---|
| 293 |      __extension__ typedef long long            int64_t; | 
|---|
| 294 |      __extension__ typedef long long            int_least64_t; | 
|---|
| 295 |      __extension__ typedef long long            int_fast64_t; | 
|---|
| 296 |      __extension__ typedef unsigned long long   uint64_t; | 
|---|
| 297 |      __extension__ typedef unsigned long long   uint_least64_t; | 
|---|
| 298 |      __extension__ typedef unsigned long long   uint_fast64_t; | 
|---|
| 299 | # elif defined(BOOST_HAS_MS_INT64) | 
|---|
| 300 |      // | 
|---|
| 301 |      // we have Borland/Intel/Microsoft __int64: | 
|---|
| 302 |      // | 
|---|
| 303 |      typedef __int64             intmax_t; | 
|---|
| 304 |      typedef unsigned __int64    uintmax_t; | 
|---|
| 305 |      typedef __int64             int64_t; | 
|---|
| 306 |      typedef __int64             int_least64_t; | 
|---|
| 307 |      typedef __int64             int_fast64_t; | 
|---|
| 308 |      typedef unsigned __int64    uint64_t; | 
|---|
| 309 |      typedef unsigned __int64    uint_least64_t; | 
|---|
| 310 |      typedef unsigned __int64    uint_fast64_t; | 
|---|
| 311 | # else // assume no 64-bit integers | 
|---|
| 312 | #  define BOOST_NO_INT64_T | 
|---|
| 313 |      typedef int32_t              intmax_t; | 
|---|
| 314 |      typedef uint32_t             uintmax_t; | 
|---|
| 315 | # endif | 
|---|
| 316 |  | 
|---|
| 317 | } // namespace boost | 
|---|
| 318 |  | 
|---|
| 319 |  | 
|---|
| 320 | #endif // BOOST_HAS_STDINT_H | 
|---|
| 321 |  | 
|---|
| 322 | #endif // BOOST_CSTDINT_HPP | 
|---|
| 323 |  | 
|---|
| 324 |  | 
|---|
| 325 | /**************************************************** | 
|---|
| 326 |  | 
|---|
| 327 | Macro definition section: | 
|---|
| 328 |  | 
|---|
| 329 | Define various INTXX_C macros only if | 
|---|
| 330 | __STDC_CONSTANT_MACROS is defined. | 
|---|
| 331 |  | 
|---|
| 332 | Undefine the macros if __STDC_CONSTANT_MACROS is | 
|---|
| 333 | not defined and the macros are (cf <cassert>). | 
|---|
| 334 |  | 
|---|
| 335 | Added 23rd September 2000 (John Maddock). | 
|---|
| 336 | Modified 11th September 2001 to be excluded when | 
|---|
| 337 | BOOST_HAS_STDINT_H is defined (John Maddock). | 
|---|
| 338 |  | 
|---|
| 339 | ******************************************************/ | 
|---|
| 340 |  | 
|---|
| 341 | #if defined(__STDC_CONSTANT_MACROS) && !defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && !defined(BOOST_HAS_STDINT_H) | 
|---|
| 342 | # define BOOST__STDC_CONSTANT_MACROS_DEFINED | 
|---|
| 343 | # if defined(BOOST_HAS_MS_INT64) | 
|---|
| 344 | // | 
|---|
| 345 | // Borland/Intel/Microsoft compilers have width specific suffixes: | 
|---|
| 346 | // | 
|---|
| 347 | #  define INT8_C(value)     value##i8 | 
|---|
| 348 | #  define INT16_C(value)    value##i16 | 
|---|
| 349 | #  define INT32_C(value)    value##i32 | 
|---|
| 350 | #  define INT64_C(value)    value##i64 | 
|---|
| 351 | #  ifdef __BORLANDC__ | 
|---|
| 352 |     // Borland bug: appending ui8 makes the type a signed char | 
|---|
| 353 | #   define UINT8_C(value)    static_cast<unsigned char>(value##u) | 
|---|
| 354 | #  else | 
|---|
| 355 | #   define UINT8_C(value)    value##ui8 | 
|---|
| 356 | #  endif | 
|---|
| 357 | #  define UINT16_C(value)   value##ui16 | 
|---|
| 358 | #  define UINT32_C(value)   value##ui32 | 
|---|
| 359 | #  define UINT64_C(value)   value##ui64 | 
|---|
| 360 | #  define INTMAX_C(value)   value##i64 | 
|---|
| 361 | #  define UINTMAX_C(value)  value##ui64 | 
|---|
| 362 |  | 
|---|
| 363 | # else | 
|---|
| 364 | //  do it the old fashioned way: | 
|---|
| 365 |  | 
|---|
| 366 | //  8-bit types  ------------------------------------------------------------// | 
|---|
| 367 |  | 
|---|
| 368 | #  if UCHAR_MAX == 0xff | 
|---|
| 369 | #   define INT8_C(value) static_cast<boost::int8_t>(value) | 
|---|
| 370 | #   define UINT8_C(value) static_cast<boost::uint8_t>(value##u) | 
|---|
| 371 | #  endif | 
|---|
| 372 |  | 
|---|
| 373 | //  16-bit types  -----------------------------------------------------------// | 
|---|
| 374 |  | 
|---|
| 375 | #  if USHRT_MAX == 0xffff | 
|---|
| 376 | #   define INT16_C(value) static_cast<boost::int16_t>(value) | 
|---|
| 377 | #   define UINT16_C(value) static_cast<boost::uint16_t>(value##u) | 
|---|
| 378 | #  endif | 
|---|
| 379 |  | 
|---|
| 380 | //  32-bit types  -----------------------------------------------------------// | 
|---|
| 381 |  | 
|---|
| 382 | #  if UINT_MAX == 0xffffffff | 
|---|
| 383 | #   define INT32_C(value) value | 
|---|
| 384 | #   define UINT32_C(value) value##u | 
|---|
| 385 | #  elif ULONG_MAX == 0xffffffff | 
|---|
| 386 | #   define INT32_C(value) value##L | 
|---|
| 387 | #   define UINT32_C(value) value##uL | 
|---|
| 388 | #  endif | 
|---|
| 389 |  | 
|---|
| 390 | //  64-bit types + intmax_t and uintmax_t  ----------------------------------// | 
|---|
| 391 |  | 
|---|
| 392 | #  if defined(BOOST_HAS_LONG_LONG) && \ | 
|---|
| 393 |     (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX)) | 
|---|
| 394 |  | 
|---|
| 395 | #    if defined(__hpux) | 
|---|
| 396 |      // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions | 
|---|
| 397 | #    elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615U) ||  \ | 
|---|
| 398 |         (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615U) ||  \ | 
|---|
| 399 |         (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615U) | 
|---|
| 400 |  | 
|---|
| 401 | #    else | 
|---|
| 402 | #       error defaults not correct; you must hand modify boost/cstdint.hpp | 
|---|
| 403 | #    endif | 
|---|
| 404 | #    define INT64_C(value) value##LL | 
|---|
| 405 | #    define UINT64_C(value) value##uLL | 
|---|
| 406 | #  elif ULONG_MAX != 0xffffffff | 
|---|
| 407 |  | 
|---|
| 408 | #    if ULONG_MAX == 18446744073709551615 // 2**64 - 1 | 
|---|
| 409 | #       define INT64_C(value) value##L | 
|---|
| 410 | #       define UINT64_C(value) value##uL | 
|---|
| 411 | #    else | 
|---|
| 412 | #       error defaults not correct; you must hand modify boost/cstdint.hpp | 
|---|
| 413 | #    endif | 
|---|
| 414 | #  endif | 
|---|
| 415 |  | 
|---|
| 416 | #  ifdef BOOST_NO_INT64_T | 
|---|
| 417 | #   define INTMAX_C(value) INT32_C(value) | 
|---|
| 418 | #   define UINTMAX_C(value) UINT32_C(value) | 
|---|
| 419 | #  else | 
|---|
| 420 | #   define INTMAX_C(value) INT64_C(value) | 
|---|
| 421 | #   define UINTMAX_C(value) UINT64_C(value) | 
|---|
| 422 | #  endif | 
|---|
| 423 |  | 
|---|
| 424 | # endif // Borland/Microsoft specific width suffixes | 
|---|
| 425 |  | 
|---|
| 426 |  | 
|---|
| 427 | #elif defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && !defined(__STDC_CONSTANT_MACROS) && !defined(BOOST_HAS_STDINT_H) | 
|---|
| 428 | // | 
|---|
| 429 | // undef all the macros: | 
|---|
| 430 | // | 
|---|
| 431 | # undef INT8_C | 
|---|
| 432 | # undef INT16_C | 
|---|
| 433 | # undef INT32_C | 
|---|
| 434 | # undef INT64_C | 
|---|
| 435 | # undef UINT8_C | 
|---|
| 436 | # undef UINT16_C | 
|---|
| 437 | # undef UINT32_C | 
|---|
| 438 | # undef UINT64_C | 
|---|
| 439 | # undef INTMAX_C | 
|---|
| 440 | # undef UINTMAX_C | 
|---|
| 441 |  | 
|---|
| 442 | #endif // __STDC_CONSTANT_MACROS_DEFINED etc. | 
|---|
| 443 |  | 
|---|
| 444 |  | 
|---|
| 445 |  | 
|---|
| 446 |  | 
|---|