Home | History | Annotate | Download | only in lib
      1 /* -*- buffer-read-only: t -*- vi: set ro: */
      2 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
      3 /* Copyright (C) 2001-2002, 2004-2009 Free Software Foundation, Inc.
      4    Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
      5    This file is part of gnulib.
      6 
      7    This program is free software; you can redistribute it and/or modify
      8    it under the terms of the GNU General Public License as published by
      9    the Free Software Foundation; either version 3, or (at your option)
     10    any later version.
     11 
     12    This program is distributed in the hope that it will be useful,
     13    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15    GNU General Public License for more details.
     16 
     17    You should have received a copy of the GNU General Public License
     18    along with this program; if not, write to the Free Software Foundation,
     19    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
     20 
     21 /*
     22  * ISO C 99 <stdint.h> for platforms that lack it.
     23  * <http://www.opengroup.org/susv3xbd/stdint.h.html>
     24  */
     25 
     26 #ifndef _GL_STDINT_H
     27 
     28 /* When including a system file that in turn includes <inttypes.h>,
     29    use the system <inttypes.h>, not our substitute.  This avoids
     30    problems with (for example) VMS, whose <sys/bitypes.h> includes
     31    <inttypes.h>.  */
     32 #define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
     33 
     34 /* Get those types that are already defined in other system include
     35    files, so that we can "#define int8_t signed char" below without
     36    worrying about a later system include file containing a "typedef
     37    signed char int8_t;" that will get messed up by our macro.  Our
     38    macros should all be consistent with the system versions, except
     39    for the "fast" types and macros, which we recommend against using
     40    in public interfaces due to compiler differences.  */
     41 
     42 #if @HAVE_STDINT_H@
     43 # if defined __sgi && ! defined __c99
     44    /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
     45       with "This header file is to be used only for c99 mode compilations"
     46       diagnostics.  */
     47 #  define __STDINT_H__
     48 # endif
     49   /* Other systems may have an incomplete or buggy <stdint.h>.
     50      Include it before <inttypes.h>, since any "#include <stdint.h>"
     51      in <inttypes.h> would reinclude us, skipping our contents because
     52      _GL_STDINT_H is defined.
     53      The include_next requires a split double-inclusion guard.  */
     54 # if __GNUC__ >= 3
     55 @PRAGMA_SYSTEM_HEADER@
     56 # endif
     57 # @INCLUDE_NEXT@ @NEXT_STDINT_H@
     58 #endif
     59 
     60 #if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
     61 #define _GL_STDINT_H
     62 
     63 /* <sys/types.h> defines some of the stdint.h types as well, on glibc,
     64    IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
     65    AIX 5.2 <sys/types.h> isn't needed and causes troubles.
     66    MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
     67    relies on the system <stdint.h> definitions, so include
     68    <sys/types.h> after @NEXT_STDINT_H@.  */
     69 #if @HAVE_SYS_TYPES_H@ && ! defined _AIX
     70 # include <sys/types.h>
     71 #endif
     72 
     73 /* Get LONG_MIN, LONG_MAX, ULONG_MAX.  */
     74 #include <limits.h>
     75 
     76 #if @HAVE_INTTYPES_H@
     77   /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
     78      int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
     79      <inttypes.h> also defines intptr_t and uintptr_t.  */
     80 # include <inttypes.h>
     81 #elif @HAVE_SYS_INTTYPES_H@
     82   /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
     83      the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX.  */
     84 # include <sys/inttypes.h>
     85 #endif
     86 
     87 #if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
     88   /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
     89      int{8,16,32,64}_t and __BIT_TYPES_DEFINED__.  In libc5 >= 5.2.2 it is
     90      included by <sys/types.h>.  */
     91 # include <sys/bitypes.h>
     92 #endif
     93 
     94 #undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
     95 
     96 /* Minimum and maximum values for a integer type under the usual assumption.
     97    Return an unspecified value if BITS == 0, adding a check to pacify
     98    picky compilers.  */
     99 
    100 #define _STDINT_MIN(signed, bits, zero) \
    101   ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
    102 
    103 #define _STDINT_MAX(signed, bits, zero) \
    104   ((signed) \
    105    ? ~ _STDINT_MIN (signed, bits, zero) \
    106    : /* The expression for the unsigned case.  The subtraction of (signed) \
    107 	is a nop in the unsigned case and avoids "signed integer overflow" \
    108 	warnings in the signed case.  */ \
    109      ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
    110 
    111 /* 7.18.1.1. Exact-width integer types */
    112 
    113 /* Here we assume a standard architecture where the hardware integer
    114    types have 8, 16, 32, optionally 64 bits.  */
    115 
    116 #undef int8_t
    117 #undef uint8_t
    118 typedef signed char gl_int8_t;
    119 typedef unsigned char gl_uint8_t;
    120 #define int8_t gl_int8_t
    121 #define uint8_t gl_uint8_t
    122 
    123 #undef int16_t
    124 #undef uint16_t
    125 typedef short int gl_int16_t;
    126 typedef unsigned short int gl_uint16_t;
    127 #define int16_t gl_int16_t
    128 #define uint16_t gl_uint16_t
    129 
    130 #undef int32_t
    131 #undef uint32_t
    132 typedef int gl_int32_t;
    133 typedef unsigned int gl_uint32_t;
    134 #define int32_t gl_int32_t
    135 #define uint32_t gl_uint32_t
    136 
    137 /* Do not undefine int64_t if gnulib is not being used with 64-bit
    138    types, since otherwise it breaks platforms like Tandem/NSK.  */
    139 #if LONG_MAX >> 31 >> 31 == 1
    140 # undef int64_t
    141 typedef long int gl_int64_t;
    142 # define int64_t gl_int64_t
    143 # define GL_INT64_T
    144 #elif defined _MSC_VER
    145 # undef int64_t
    146 typedef __int64 gl_int64_t;
    147 # define int64_t gl_int64_t
    148 # define GL_INT64_T
    149 #elif @HAVE_LONG_LONG_INT@
    150 # undef int64_t
    151 typedef long long int gl_int64_t;
    152 # define int64_t gl_int64_t
    153 # define GL_INT64_T
    154 #endif
    155 
    156 #if ULONG_MAX >> 31 >> 31 >> 1 == 1
    157 # undef uint64_t
    158 typedef unsigned long int gl_uint64_t;
    159 # define uint64_t gl_uint64_t
    160 # define GL_UINT64_T
    161 #elif defined _MSC_VER
    162 # undef uint64_t
    163 typedef unsigned __int64 gl_uint64_t;
    164 # define uint64_t gl_uint64_t
    165 # define GL_UINT64_T
    166 #elif @HAVE_UNSIGNED_LONG_LONG_INT@
    167 # undef uint64_t
    168 typedef unsigned long long int gl_uint64_t;
    169 # define uint64_t gl_uint64_t
    170 # define GL_UINT64_T
    171 #endif
    172 
    173 /* Avoid collision with Solaris 2.5.1 <pthread.h> etc.  */
    174 #define _UINT8_T
    175 #define _UINT32_T
    176 #define _UINT64_T
    177 
    178 
    179 /* 7.18.1.2. Minimum-width integer types */
    180 
    181 /* Here we assume a standard architecture where the hardware integer
    182    types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
    183    are the same as the corresponding N_t types.  */
    184 
    185 #undef int_least8_t
    186 #undef uint_least8_t
    187 #undef int_least16_t
    188 #undef uint_least16_t
    189 #undef int_least32_t
    190 #undef uint_least32_t
    191 #undef int_least64_t
    192 #undef uint_least64_t
    193 #define int_least8_t int8_t
    194 #define uint_least8_t uint8_t
    195 #define int_least16_t int16_t
    196 #define uint_least16_t uint16_t
    197 #define int_least32_t int32_t
    198 #define uint_least32_t uint32_t
    199 #ifdef GL_INT64_T
    200 # define int_least64_t int64_t
    201 #endif
    202 #ifdef GL_UINT64_T
    203 # define uint_least64_t uint64_t
    204 #endif
    205 
    206 /* 7.18.1.3. Fastest minimum-width integer types */
    207 
    208 /* Note: Other <stdint.h> substitutes may define these types differently.
    209    It is not recommended to use these types in public header files. */
    210 
    211 /* Here we assume a standard architecture where the hardware integer
    212    types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
    213    are taken from the same list of types.  Assume that 'long int'
    214    is fast enough for all narrower integers.  */
    215 
    216 #undef int_fast8_t
    217 #undef uint_fast8_t
    218 #undef int_fast16_t
    219 #undef uint_fast16_t
    220 #undef int_fast32_t
    221 #undef uint_fast32_t
    222 #undef int_fast64_t
    223 #undef uint_fast64_t
    224 typedef long int gl_int_fast8_t;
    225 typedef unsigned long int gl_uint_fast8_t;
    226 typedef long int gl_int_fast16_t;
    227 typedef unsigned long int gl_uint_fast16_t;
    228 typedef long int gl_int_fast32_t;
    229 typedef unsigned long int gl_uint_fast32_t;
    230 #define int_fast8_t gl_int_fast8_t
    231 #define uint_fast8_t gl_uint_fast8_t
    232 #define int_fast16_t gl_int_fast16_t
    233 #define uint_fast16_t gl_uint_fast16_t
    234 #define int_fast32_t gl_int_fast32_t
    235 #define uint_fast32_t gl_uint_fast32_t
    236 #ifdef GL_INT64_T
    237 # define int_fast64_t int64_t
    238 #endif
    239 #ifdef GL_UINT64_T
    240 # define uint_fast64_t uint64_t
    241 #endif
    242 
    243 /* 7.18.1.4. Integer types capable of holding object pointers */
    244 
    245 #undef intptr_t
    246 #undef uintptr_t
    247 typedef long int gl_intptr_t;
    248 typedef unsigned long int gl_uintptr_t;
    249 #define intptr_t gl_intptr_t
    250 #define uintptr_t gl_uintptr_t
    251 
    252 /* 7.18.1.5. Greatest-width integer types */
    253 
    254 /* Note: These types are compiler dependent. It may be unwise to use them in
    255    public header files. */
    256 
    257 #undef intmax_t
    258 #if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
    259 typedef long long int gl_intmax_t;
    260 # define intmax_t gl_intmax_t
    261 #elif defined GL_INT64_T
    262 # define intmax_t int64_t
    263 #else
    264 typedef long int gl_intmax_t;
    265 # define intmax_t gl_intmax_t
    266 #endif
    267 
    268 #undef uintmax_t
    269 #if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
    270 typedef unsigned long long int gl_uintmax_t;
    271 # define uintmax_t gl_uintmax_t
    272 #elif defined GL_UINT64_T
    273 # define uintmax_t uint64_t
    274 #else
    275 typedef unsigned long int gl_uintmax_t;
    276 # define uintmax_t gl_uintmax_t
    277 #endif
    278 
    279 /* Verify that intmax_t and uintmax_t have the same size.  Too much code
    280    breaks if this is not the case.  If this check fails, the reason is likely
    281    to be found in the autoconf macros.  */
    282 typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - 1];
    283 
    284 /* 7.18.2. Limits of specified-width integer types */
    285 
    286 #if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
    287 
    288 /* 7.18.2.1. Limits of exact-width integer types */
    289 
    290 /* Here we assume a standard architecture where the hardware integer
    291    types have 8, 16, 32, optionally 64 bits.  */
    292 
    293 #undef INT8_MIN
    294 #undef INT8_MAX
    295 #undef UINT8_MAX
    296 #define INT8_MIN  (~ INT8_MAX)
    297 #define INT8_MAX  127
    298 #define UINT8_MAX  255
    299 
    300 #undef INT16_MIN
    301 #undef INT16_MAX
    302 #undef UINT16_MAX
    303 #define INT16_MIN  (~ INT16_MAX)
    304 #define INT16_MAX  32767
    305 #define UINT16_MAX  65535
    306 
    307 #undef INT32_MIN
    308 #undef INT32_MAX
    309 #undef UINT32_MAX
    310 #define INT32_MIN  (~ INT32_MAX)
    311 #define INT32_MAX  2147483647
    312 #define UINT32_MAX  4294967295U
    313 
    314 #undef INT64_MIN
    315 #undef INT64_MAX
    316 #ifdef GL_INT64_T
    317 /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
    318    evaluates the latter incorrectly in preprocessor expressions.  */
    319 # define INT64_MIN  (- INTMAX_C (1) << 63)
    320 # define INT64_MAX  INTMAX_C (9223372036854775807)
    321 #endif
    322 
    323 #undef UINT64_MAX
    324 #ifdef GL_UINT64_T
    325 # define UINT64_MAX  UINTMAX_C (18446744073709551615)
    326 #endif
    327 
    328 /* 7.18.2.2. Limits of minimum-width integer types */
    329 
    330 /* Here we assume a standard architecture where the hardware integer
    331    types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
    332    are the same as the corresponding N_t types.  */
    333 
    334 #undef INT_LEAST8_MIN
    335 #undef INT_LEAST8_MAX
    336 #undef UINT_LEAST8_MAX
    337 #define INT_LEAST8_MIN  INT8_MIN
    338 #define INT_LEAST8_MAX  INT8_MAX
    339 #define UINT_LEAST8_MAX  UINT8_MAX
    340 
    341 #undef INT_LEAST16_MIN
    342 #undef INT_LEAST16_MAX
    343 #undef UINT_LEAST16_MAX
    344 #define INT_LEAST16_MIN  INT16_MIN
    345 #define INT_LEAST16_MAX  INT16_MAX
    346 #define UINT_LEAST16_MAX  UINT16_MAX
    347 
    348 #undef INT_LEAST32_MIN
    349 #undef INT_LEAST32_MAX
    350 #undef UINT_LEAST32_MAX
    351 #define INT_LEAST32_MIN  INT32_MIN
    352 #define INT_LEAST32_MAX  INT32_MAX
    353 #define UINT_LEAST32_MAX  UINT32_MAX
    354 
    355 #undef INT_LEAST64_MIN
    356 #undef INT_LEAST64_MAX
    357 #ifdef GL_INT64_T
    358 # define INT_LEAST64_MIN  INT64_MIN
    359 # define INT_LEAST64_MAX  INT64_MAX
    360 #endif
    361 
    362 #undef UINT_LEAST64_MAX
    363 #ifdef GL_UINT64_T
    364 # define UINT_LEAST64_MAX  UINT64_MAX
    365 #endif
    366 
    367 /* 7.18.2.3. Limits of fastest minimum-width integer types */
    368 
    369 /* Here we assume a standard architecture where the hardware integer
    370    types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
    371    are taken from the same list of types.  */
    372 
    373 #undef INT_FAST8_MIN
    374 #undef INT_FAST8_MAX
    375 #undef UINT_FAST8_MAX
    376 #define INT_FAST8_MIN  LONG_MIN
    377 #define INT_FAST8_MAX  LONG_MAX
    378 #define UINT_FAST8_MAX  ULONG_MAX
    379 
    380 #undef INT_FAST16_MIN
    381 #undef INT_FAST16_MAX
    382 #undef UINT_FAST16_MAX
    383 #define INT_FAST16_MIN  LONG_MIN
    384 #define INT_FAST16_MAX  LONG_MAX
    385 #define UINT_FAST16_MAX  ULONG_MAX
    386 
    387 #undef INT_FAST32_MIN
    388 #undef INT_FAST32_MAX
    389 #undef UINT_FAST32_MAX
    390 #define INT_FAST32_MIN  LONG_MIN
    391 #define INT_FAST32_MAX  LONG_MAX
    392 #define UINT_FAST32_MAX  ULONG_MAX
    393 
    394 #undef INT_FAST64_MIN
    395 #undef INT_FAST64_MAX
    396 #ifdef GL_INT64_T
    397 # define INT_FAST64_MIN  INT64_MIN
    398 # define INT_FAST64_MAX  INT64_MAX
    399 #endif
    400 
    401 #undef UINT_FAST64_MAX
    402 #ifdef GL_UINT64_T
    403 # define UINT_FAST64_MAX  UINT64_MAX
    404 #endif
    405 
    406 /* 7.18.2.4. Limits of integer types capable of holding object pointers */
    407 
    408 #undef INTPTR_MIN
    409 #undef INTPTR_MAX
    410 #undef UINTPTR_MAX
    411 #define INTPTR_MIN  LONG_MIN
    412 #define INTPTR_MAX  LONG_MAX
    413 #define UINTPTR_MAX  ULONG_MAX
    414 
    415 /* 7.18.2.5. Limits of greatest-width integer types */
    416 
    417 #undef INTMAX_MIN
    418 #undef INTMAX_MAX
    419 #ifdef INT64_MAX
    420 # define INTMAX_MIN  INT64_MIN
    421 # define INTMAX_MAX  INT64_MAX
    422 #else
    423 # define INTMAX_MIN  INT32_MIN
    424 # define INTMAX_MAX  INT32_MAX
    425 #endif
    426 
    427 #undef UINTMAX_MAX
    428 #ifdef UINT64_MAX
    429 # define UINTMAX_MAX  UINT64_MAX
    430 #else
    431 # define UINTMAX_MAX  UINT32_MAX
    432 #endif
    433 
    434 /* 7.18.3. Limits of other integer types */
    435 
    436 /* ptrdiff_t limits */
    437 #undef PTRDIFF_MIN
    438 #undef PTRDIFF_MAX
    439 #if @APPLE_UNIVERSAL_BUILD@
    440 # ifdef _LP64
    441 #  define PTRDIFF_MIN  _STDINT_MIN (1, 64, 0l)
    442 #  define PTRDIFF_MAX  _STDINT_MAX (1, 64, 0l)
    443 # else
    444 #  define PTRDIFF_MIN  _STDINT_MIN (1, 32, 0)
    445 #  define PTRDIFF_MAX  _STDINT_MAX (1, 32, 0)
    446 # endif
    447 #else
    448 # define PTRDIFF_MIN  \
    449     _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
    450 # define PTRDIFF_MAX  \
    451     _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
    452 #endif
    453 
    454 /* sig_atomic_t limits */
    455 #undef SIG_ATOMIC_MIN
    456 #undef SIG_ATOMIC_MAX
    457 #define SIG_ATOMIC_MIN  \
    458    _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
    459 		0@SIG_ATOMIC_T_SUFFIX@)
    460 #define SIG_ATOMIC_MAX  \
    461    _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
    462 		0@SIG_ATOMIC_T_SUFFIX@)
    463 
    464 
    465 /* size_t limit */
    466 #undef SIZE_MAX
    467 #if @APPLE_UNIVERSAL_BUILD@
    468 # ifdef _LP64
    469 #  define SIZE_MAX  _STDINT_MAX (0, 64, 0ul)
    470 # else
    471 #  define SIZE_MAX  _STDINT_MAX (0, 32, 0ul)
    472 # endif
    473 #else
    474 # define SIZE_MAX  _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
    475 #endif
    476 
    477 /* wchar_t limits */
    478 /* Get WCHAR_MIN, WCHAR_MAX.
    479    This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested
    480    includes <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
    481    <stdint.h> and assumes its types are already defined.  */
    482 #if ! (defined WCHAR_MIN && defined WCHAR_MAX)
    483 # define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
    484 # include <wchar.h>
    485 # undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
    486 #endif
    487 #undef WCHAR_MIN
    488 #undef WCHAR_MAX
    489 #define WCHAR_MIN  \
    490    _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
    491 #define WCHAR_MAX  \
    492    _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
    493 
    494 /* wint_t limits */
    495 #undef WINT_MIN
    496 #undef WINT_MAX
    497 #define WINT_MIN  \
    498    _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
    499 #define WINT_MAX  \
    500    _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
    501 
    502 #endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
    503 
    504 /* 7.18.4. Macros for integer constants */
    505 
    506 #if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
    507 
    508 /* 7.18.4.1. Macros for minimum-width integer constants */
    509 /* According to ISO C 99 Technical Corrigendum 1 */
    510 
    511 /* Here we assume a standard architecture where the hardware integer
    512    types have 8, 16, 32, optionally 64 bits, and int is 32 bits.  */
    513 
    514 #undef INT8_C
    515 #undef UINT8_C
    516 #define INT8_C(x) x
    517 #define UINT8_C(x) x
    518 
    519 #undef INT16_C
    520 #undef UINT16_C
    521 #define INT16_C(x) x
    522 #define UINT16_C(x) x
    523 
    524 #undef INT32_C
    525 #undef UINT32_C
    526 #define INT32_C(x) x
    527 #define UINT32_C(x) x ## U
    528 
    529 #undef INT64_C
    530 #undef UINT64_C
    531 #if LONG_MAX >> 31 >> 31 == 1
    532 # define INT64_C(x) x##L
    533 #elif defined _MSC_VER
    534 # define INT64_C(x) x##i64
    535 #elif @HAVE_LONG_LONG_INT@
    536 # define INT64_C(x) x##LL
    537 #endif
    538 #if ULONG_MAX >> 31 >> 31 >> 1 == 1
    539 # define UINT64_C(x) x##UL
    540 #elif defined _MSC_VER
    541 # define UINT64_C(x) x##ui64
    542 #elif @HAVE_UNSIGNED_LONG_LONG_INT@
    543 # define UINT64_C(x) x##ULL
    544 #endif
    545 
    546 /* 7.18.4.2. Macros for greatest-width integer constants */
    547 
    548 #undef INTMAX_C
    549 #if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
    550 # define INTMAX_C(x)   x##LL
    551 #elif defined GL_INT64_T
    552 # define INTMAX_C(x)   INT64_C(x)
    553 #else
    554 # define INTMAX_C(x)   x##L
    555 #endif
    556 
    557 #undef UINTMAX_C
    558 #if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
    559 # define UINTMAX_C(x)  x##ULL
    560 #elif defined GL_UINT64_T
    561 # define UINTMAX_C(x)  UINT64_C(x)
    562 #else
    563 # define UINTMAX_C(x)  x##UL
    564 #endif
    565 
    566 #endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
    567 
    568 #endif /* _GL_STDINT_H */
    569 #endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
    570