root/maint/gnulib/lib/stdint.in.h

/* [previous][next][first][last][top][bottom][index][help] */
   1 /* Copyright (C) 2001-2002, 2004-2021 Free Software Foundation, Inc.
   2    Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
   3    This file is part of gnulib.
   4 
   5    This file is free software: you can redistribute it and/or modify
   6    it under the terms of the GNU Lesser General Public License as
   7    published by the Free Software Foundation; either version 2.1 of the
   8    License, or (at your option) any later version.
   9 
  10    This file is distributed in the hope that it will be useful,
  11    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13    GNU Lesser General Public License for more details.
  14 
  15    You should have received a copy of the GNU Lesser General Public License
  16    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
  17 
  18 /*
  19  * ISO C 99 <stdint.h> for platforms that lack it.
  20  * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdint.h.html>
  21  */
  22 
  23 #ifndef _@GUARD_PREFIX@_STDINT_H
  24 
  25 #if __GNUC__ >= 3
  26 @PRAGMA_SYSTEM_HEADER@
  27 #endif
  28 @PRAGMA_COLUMNS@
  29 
  30 /* When including a system file that in turn includes <inttypes.h>,
  31    use the system <inttypes.h>, not our substitute.  This avoids
  32    problems with (for example) VMS, whose <sys/bitypes.h> includes
  33    <inttypes.h>.  */
  34 #define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
  35 
  36 /* On Android (Bionic libc), <sys/types.h> includes this file before
  37    having defined 'time_t'.  Therefore in this case avoid including
  38    other system header files; just include the system's <stdint.h>.
  39    Ideally we should test __BIONIC__ here, but it is only defined after
  40    <sys/cdefs.h> has been included; hence test __ANDROID__ instead.  */
  41 #if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H
  42 # @INCLUDE_NEXT@ @NEXT_STDINT_H@
  43 #else
  44 
  45 /* Get those types that are already defined in other system include
  46    files, so that we can "#define int8_t signed char" below without
  47    worrying about a later system include file containing a "typedef
  48    signed char int8_t;" that will get messed up by our macro.  Our
  49    macros should all be consistent with the system versions, except
  50    for the "fast" types and macros, which we recommend against using
  51    in public interfaces due to compiler differences.  */
  52 
  53 #if @HAVE_STDINT_H@
  54 # if defined __sgi && ! defined __c99
  55    /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
  56       with "This header file is to be used only for c99 mode compilations"
  57       diagnostics.  */
  58 #  define __STDINT_H__
  59 # endif
  60 
  61   /* Some pre-C++11 <stdint.h> implementations need this.  */
  62 # ifdef __cplusplus
  63 #  ifndef __STDC_CONSTANT_MACROS
  64 #   define __STDC_CONSTANT_MACROS 1
  65 #  endif
  66 #  ifndef __STDC_LIMIT_MACROS
  67 #   define __STDC_LIMIT_MACROS 1
  68 #  endif
  69 # endif
  70 
  71   /* Other systems may have an incomplete or buggy <stdint.h>.
  72      Include it before <inttypes.h>, since any "#include <stdint.h>"
  73      in <inttypes.h> would reinclude us, skipping our contents because
  74      _@GUARD_PREFIX@_STDINT_H is defined.
  75      The include_next requires a split double-inclusion guard.  */
  76 # @INCLUDE_NEXT@ @NEXT_STDINT_H@
  77 #endif
  78 
  79 #if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
  80 #define _@GUARD_PREFIX@_STDINT_H
  81 
  82 /* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX,
  83    LONG_MIN, LONG_MAX, ULONG_MAX, _GL_INTEGER_WIDTH.  */
  84 #include <limits.h>
  85 
  86 /* Override WINT_MIN and WINT_MAX if gnulib's <wchar.h> or <wctype.h> overrides
  87    wint_t.  */
  88 #if @GNULIBHEADERS_OVERRIDE_WINT_T@
  89 # undef WINT_MIN
  90 # undef WINT_MAX
  91 # define WINT_MIN 0x0U
  92 # define WINT_MAX 0xffffffffU
  93 #endif
  94 
  95 #if ! @HAVE_C99_STDINT_H@
  96 
  97 /* <sys/types.h> defines some of the stdint.h types as well, on glibc,
  98    IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
  99    AIX 5.2 <sys/types.h> isn't needed and causes troubles.
 100    Mac OS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
 101    relies on the system <stdint.h> definitions, so include
 102    <sys/types.h> after @NEXT_STDINT_H@.  */
 103 # if @HAVE_SYS_TYPES_H@ && ! defined _AIX
 104 #  include <sys/types.h>
 105 # endif
 106 
 107 # if @HAVE_INTTYPES_H@
 108   /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
 109      int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
 110      <inttypes.h> also defines intptr_t and uintptr_t.  */
 111 #  include <inttypes.h>
 112 # elif @HAVE_SYS_INTTYPES_H@
 113   /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
 114      the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX.  */
 115 #  include <sys/inttypes.h>
 116 # endif
 117 
 118 # if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
 119   /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
 120      int{8,16,32,64}_t and __BIT_TYPES_DEFINED__.  In libc5 >= 5.2.2 it is
 121      included by <sys/types.h>.  */
 122 #  include <sys/bitypes.h>
 123 # endif
 124 
 125 # undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
 126 
 127 /* Minimum and maximum values for an integer type under the usual assumption.
 128    Return an unspecified value if BITS == 0, adding a check to pacify
 129    picky compilers.  */
 130 
 131 /* These are separate macros, because if you try to merge these macros into
 132    a single one, HP-UX cc rejects the resulting expression in constant
 133    expressions.  */
 134 # define _STDINT_UNSIGNED_MIN(bits, zero) \
 135     (zero)
 136 # define _STDINT_SIGNED_MIN(bits, zero) \
 137     (~ _STDINT_MAX (1, bits, zero))
 138 
 139 # define _STDINT_MAX(signed, bits, zero) \
 140     (((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
 141 
 142 #if !GNULIB_defined_stdint_types
 143 
 144 /* 7.18.1.1. Exact-width integer types */
 145 
 146 /* Here we assume a standard architecture where the hardware integer
 147    types have 8, 16, 32, optionally 64 bits.  */
 148 
 149 # undef int8_t
 150 # undef uint8_t
 151 typedef signed char gl_int8_t;
 152 typedef unsigned char gl_uint8_t;
 153 # define int8_t gl_int8_t
 154 # define uint8_t gl_uint8_t
 155 
 156 # undef int16_t
 157 # undef uint16_t
 158 typedef short int gl_int16_t;
 159 typedef unsigned short int gl_uint16_t;
 160 # define int16_t gl_int16_t
 161 # define uint16_t gl_uint16_t
 162 
 163 # undef int32_t
 164 # undef uint32_t
 165 typedef int gl_int32_t;
 166 typedef unsigned int gl_uint32_t;
 167 # define int32_t gl_int32_t
 168 # define uint32_t gl_uint32_t
 169 
 170 /* If the system defines INT64_MAX, assume int64_t works.  That way,
 171    if the underlying platform defines int64_t to be a 64-bit long long
 172    int, the code below won't mistakenly define it to be a 64-bit long
 173    int, which would mess up C++ name mangling.  We must use #ifdef
 174    rather than #if, to avoid an error with HP-UX 10.20 cc.  */
 175 
 176 # ifdef INT64_MAX
 177 #  define GL_INT64_T
 178 # else
 179 /* Do not undefine int64_t if gnulib is not being used with 64-bit
 180    types, since otherwise it breaks platforms like Tandem/NSK.  */
 181 #  if LONG_MAX >> 31 >> 31 == 1
 182 #   undef int64_t
 183 typedef long int gl_int64_t;
 184 #   define int64_t gl_int64_t
 185 #   define GL_INT64_T
 186 #  elif defined _MSC_VER
 187 #   undef int64_t
 188 typedef __int64 gl_int64_t;
 189 #   define int64_t gl_int64_t
 190 #   define GL_INT64_T
 191 #  else
 192 #   undef int64_t
 193 typedef long long int gl_int64_t;
 194 #   define int64_t gl_int64_t
 195 #   define GL_INT64_T
 196 #  endif
 197 # endif
 198 
 199 # ifdef UINT64_MAX
 200 #  define GL_UINT64_T
 201 # else
 202 #  if ULONG_MAX >> 31 >> 31 >> 1 == 1
 203 #   undef uint64_t
 204 typedef unsigned long int gl_uint64_t;
 205 #   define uint64_t gl_uint64_t
 206 #   define GL_UINT64_T
 207 #  elif defined _MSC_VER
 208 #   undef uint64_t
 209 typedef unsigned __int64 gl_uint64_t;
 210 #   define uint64_t gl_uint64_t
 211 #   define GL_UINT64_T
 212 #  else
 213 #   undef uint64_t
 214 typedef unsigned long long int gl_uint64_t;
 215 #   define uint64_t gl_uint64_t
 216 #   define GL_UINT64_T
 217 #  endif
 218 # endif
 219 
 220 /* Avoid collision with Solaris 2.5.1 <pthread.h> etc.  */
 221 # define _UINT8_T
 222 # define _UINT32_T
 223 # define _UINT64_T
 224 
 225 
 226 /* 7.18.1.2. Minimum-width integer types */
 227 
 228 /* Here we assume a standard architecture where the hardware integer
 229    types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
 230    are the same as the corresponding N_t types.  */
 231 
 232 # undef int_least8_t
 233 # undef uint_least8_t
 234 # undef int_least16_t
 235 # undef uint_least16_t
 236 # undef int_least32_t
 237 # undef uint_least32_t
 238 # undef int_least64_t
 239 # undef uint_least64_t
 240 # define int_least8_t int8_t
 241 # define uint_least8_t uint8_t
 242 # define int_least16_t int16_t
 243 # define uint_least16_t uint16_t
 244 # define int_least32_t int32_t
 245 # define uint_least32_t uint32_t
 246 # ifdef GL_INT64_T
 247 #  define int_least64_t int64_t
 248 # endif
 249 # ifdef GL_UINT64_T
 250 #  define uint_least64_t uint64_t
 251 # endif
 252 
 253 /* 7.18.1.3. Fastest minimum-width integer types */
 254 
 255 /* Note: Other <stdint.h> substitutes may define these types differently.
 256    It is not recommended to use these types in public header files. */
 257 
 258 /* Here we assume a standard architecture where the hardware integer
 259    types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
 260    are taken from the same list of types.  The following code normally
 261    uses types consistent with glibc, as that lessens the chance of
 262    incompatibility with older GNU hosts.  */
 263 
 264 # undef int_fast8_t
 265 # undef uint_fast8_t
 266 # undef int_fast16_t
 267 # undef uint_fast16_t
 268 # undef int_fast32_t
 269 # undef uint_fast32_t
 270 # undef int_fast64_t
 271 # undef uint_fast64_t
 272 typedef signed char gl_int_fast8_t;
 273 typedef unsigned char gl_uint_fast8_t;
 274 
 275 # ifdef __sun
 276 /* Define types compatible with SunOS 5.10, so that code compiled under
 277    earlier SunOS versions works with code compiled under SunOS 5.10.  */
 278 typedef int gl_int_fast32_t;
 279 typedef unsigned int gl_uint_fast32_t;
 280 # else
 281 typedef long int gl_int_fast32_t;
 282 typedef unsigned long int gl_uint_fast32_t;
 283 # endif
 284 typedef gl_int_fast32_t gl_int_fast16_t;
 285 typedef gl_uint_fast32_t gl_uint_fast16_t;
 286 
 287 # define int_fast8_t gl_int_fast8_t
 288 # define uint_fast8_t gl_uint_fast8_t
 289 # define int_fast16_t gl_int_fast16_t
 290 # define uint_fast16_t gl_uint_fast16_t
 291 # define int_fast32_t gl_int_fast32_t
 292 # define uint_fast32_t gl_uint_fast32_t
 293 # ifdef GL_INT64_T
 294 #  define int_fast64_t int64_t
 295 # endif
 296 # ifdef GL_UINT64_T
 297 #  define uint_fast64_t uint64_t
 298 # endif
 299 
 300 /* 7.18.1.4. Integer types capable of holding object pointers */
 301 
 302 /* kLIBC's <stdint.h> defines _INTPTR_T_DECLARED and needs its own
 303    definitions of intptr_t and uintptr_t (which use int and unsigned)
 304    to avoid clashes with declarations of system functions like sbrk.
 305    Similarly, MinGW WSL-5.4.1 <stdint.h> needs its own intptr_t and
 306    uintptr_t to avoid conflicting declarations of system functions like
 307    _findclose in <io.h>.  */
 308 # if !((defined __KLIBC__ && defined _INTPTR_T_DECLARED) \
 309        || defined __MINGW32__)
 310 #  undef intptr_t
 311 #  undef uintptr_t
 312 #  ifdef _WIN64
 313 typedef long long int gl_intptr_t;
 314 typedef unsigned long long int gl_uintptr_t;
 315 #  else
 316 typedef long int gl_intptr_t;
 317 typedef unsigned long int gl_uintptr_t;
 318 #  endif
 319 #  define intptr_t gl_intptr_t
 320 #  define uintptr_t gl_uintptr_t
 321 # endif
 322 
 323 /* 7.18.1.5. Greatest-width integer types */
 324 
 325 /* Note: These types are compiler dependent. It may be unwise to use them in
 326    public header files. */
 327 
 328 /* If the system defines INTMAX_MAX, assume that intmax_t works, and
 329    similarly for UINTMAX_MAX and uintmax_t.  This avoids problems with
 330    assuming one type where another is used by the system.  */
 331 
 332 # ifndef INTMAX_MAX
 333 #  undef INTMAX_C
 334 #  undef intmax_t
 335 #  if LONG_MAX >> 30 == 1
 336 typedef long long int gl_intmax_t;
 337 #   define intmax_t gl_intmax_t
 338 #  elif defined GL_INT64_T
 339 #   define intmax_t int64_t
 340 #  else
 341 typedef long int gl_intmax_t;
 342 #   define intmax_t gl_intmax_t
 343 #  endif
 344 # endif
 345 
 346 # ifndef UINTMAX_MAX
 347 #  undef UINTMAX_C
 348 #  undef uintmax_t
 349 #  if ULONG_MAX >> 31 == 1
 350 typedef unsigned long long int gl_uintmax_t;
 351 #   define uintmax_t gl_uintmax_t
 352 #  elif defined GL_UINT64_T
 353 #   define uintmax_t uint64_t
 354 #  else
 355 typedef unsigned long int gl_uintmax_t;
 356 #   define uintmax_t gl_uintmax_t
 357 #  endif
 358 # endif
 359 
 360 /* Verify that intmax_t and uintmax_t have the same size.  Too much code
 361    breaks if this is not the case.  If this check fails, the reason is likely
 362    to be found in the autoconf macros.  */
 363 typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
 364                                 ? 1 : -1];
 365 
 366 # define GNULIB_defined_stdint_types 1
 367 # endif /* !GNULIB_defined_stdint_types */
 368 
 369 /* 7.18.2. Limits of specified-width integer types */
 370 
 371 /* 7.18.2.1. Limits of exact-width integer types */
 372 
 373 /* Here we assume a standard architecture where the hardware integer
 374    types have 8, 16, 32, optionally 64 bits.  */
 375 
 376 # undef INT8_MIN
 377 # undef INT8_MAX
 378 # undef UINT8_MAX
 379 # define INT8_MIN  (~ INT8_MAX)
 380 # define INT8_MAX  127
 381 # define UINT8_MAX  255
 382 
 383 # undef INT16_MIN
 384 # undef INT16_MAX
 385 # undef UINT16_MAX
 386 # define INT16_MIN  (~ INT16_MAX)
 387 # define INT16_MAX  32767
 388 # define UINT16_MAX  65535
 389 
 390 # undef INT32_MIN
 391 # undef INT32_MAX
 392 # undef UINT32_MAX
 393 # define INT32_MIN  (~ INT32_MAX)
 394 # define INT32_MAX  2147483647
 395 # define UINT32_MAX  4294967295U
 396 
 397 # if defined GL_INT64_T && ! defined INT64_MAX
 398 /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
 399    evaluates the latter incorrectly in preprocessor expressions.  */
 400 #  define INT64_MIN  (- INTMAX_C (1) << 63)
 401 #  define INT64_MAX  INTMAX_C (9223372036854775807)
 402 # endif
 403 
 404 # if defined GL_UINT64_T && ! defined UINT64_MAX
 405 #  define UINT64_MAX  UINTMAX_C (18446744073709551615)
 406 # endif
 407 
 408 /* 7.18.2.2. Limits of minimum-width integer types */
 409 
 410 /* Here we assume a standard architecture where the hardware integer
 411    types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
 412    are the same as the corresponding N_t types.  */
 413 
 414 # undef INT_LEAST8_MIN
 415 # undef INT_LEAST8_MAX
 416 # undef UINT_LEAST8_MAX
 417 # define INT_LEAST8_MIN  INT8_MIN
 418 # define INT_LEAST8_MAX  INT8_MAX
 419 # define UINT_LEAST8_MAX  UINT8_MAX
 420 
 421 # undef INT_LEAST16_MIN
 422 # undef INT_LEAST16_MAX
 423 # undef UINT_LEAST16_MAX
 424 # define INT_LEAST16_MIN  INT16_MIN
 425 # define INT_LEAST16_MAX  INT16_MAX
 426 # define UINT_LEAST16_MAX  UINT16_MAX
 427 
 428 # undef INT_LEAST32_MIN
 429 # undef INT_LEAST32_MAX
 430 # undef UINT_LEAST32_MAX
 431 # define INT_LEAST32_MIN  INT32_MIN
 432 # define INT_LEAST32_MAX  INT32_MAX
 433 # define UINT_LEAST32_MAX  UINT32_MAX
 434 
 435 # undef INT_LEAST64_MIN
 436 # undef INT_LEAST64_MAX
 437 # ifdef GL_INT64_T
 438 #  define INT_LEAST64_MIN  INT64_MIN
 439 #  define INT_LEAST64_MAX  INT64_MAX
 440 # endif
 441 
 442 # undef UINT_LEAST64_MAX
 443 # ifdef GL_UINT64_T
 444 #  define UINT_LEAST64_MAX  UINT64_MAX
 445 # endif
 446 
 447 /* 7.18.2.3. Limits of fastest minimum-width integer types */
 448 
 449 /* Here we assume a standard architecture where the hardware integer
 450    types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
 451    are taken from the same list of types.  */
 452 
 453 # undef INT_FAST8_MIN
 454 # undef INT_FAST8_MAX
 455 # undef UINT_FAST8_MAX
 456 # define INT_FAST8_MIN  SCHAR_MIN
 457 # define INT_FAST8_MAX  SCHAR_MAX
 458 # define UINT_FAST8_MAX  UCHAR_MAX
 459 
 460 # undef INT_FAST16_MIN
 461 # undef INT_FAST16_MAX
 462 # undef UINT_FAST16_MAX
 463 # define INT_FAST16_MIN  INT_FAST32_MIN
 464 # define INT_FAST16_MAX  INT_FAST32_MAX
 465 # define UINT_FAST16_MAX  UINT_FAST32_MAX
 466 
 467 # undef INT_FAST32_MIN
 468 # undef INT_FAST32_MAX
 469 # undef UINT_FAST32_MAX
 470 # ifdef __sun
 471 #  define INT_FAST32_MIN  INT_MIN
 472 #  define INT_FAST32_MAX  INT_MAX
 473 #  define UINT_FAST32_MAX  UINT_MAX
 474 # else
 475 #  define INT_FAST32_MIN  LONG_MIN
 476 #  define INT_FAST32_MAX  LONG_MAX
 477 #  define UINT_FAST32_MAX  ULONG_MAX
 478 # endif
 479 
 480 # undef INT_FAST64_MIN
 481 # undef INT_FAST64_MAX
 482 # ifdef GL_INT64_T
 483 #  define INT_FAST64_MIN  INT64_MIN
 484 #  define INT_FAST64_MAX  INT64_MAX
 485 # endif
 486 
 487 # undef UINT_FAST64_MAX
 488 # ifdef GL_UINT64_T
 489 #  define UINT_FAST64_MAX  UINT64_MAX
 490 # endif
 491 
 492 /* 7.18.2.4. Limits of integer types capable of holding object pointers */
 493 
 494 # undef INTPTR_MIN
 495 # undef INTPTR_MAX
 496 # undef UINTPTR_MAX
 497 # ifdef _WIN64
 498 #  define INTPTR_MIN  LLONG_MIN
 499 #  define INTPTR_MAX  LLONG_MAX
 500 #  define UINTPTR_MAX  ULLONG_MAX
 501 # else
 502 #  define INTPTR_MIN  LONG_MIN
 503 #  define INTPTR_MAX  LONG_MAX
 504 #  define UINTPTR_MAX  ULONG_MAX
 505 # endif
 506 
 507 /* 7.18.2.5. Limits of greatest-width integer types */
 508 
 509 # ifndef INTMAX_MAX
 510 #  undef INTMAX_MIN
 511 #  ifdef INT64_MAX
 512 #   define INTMAX_MIN  INT64_MIN
 513 #   define INTMAX_MAX  INT64_MAX
 514 #  else
 515 #   define INTMAX_MIN  INT32_MIN
 516 #   define INTMAX_MAX  INT32_MAX
 517 #  endif
 518 # endif
 519 
 520 # ifndef UINTMAX_MAX
 521 #  ifdef UINT64_MAX
 522 #   define UINTMAX_MAX  UINT64_MAX
 523 #  else
 524 #   define UINTMAX_MAX  UINT32_MAX
 525 #  endif
 526 # endif
 527 
 528 /* 7.18.3. Limits of other integer types */
 529 
 530 /* ptrdiff_t limits */
 531 # undef PTRDIFF_MIN
 532 # undef PTRDIFF_MAX
 533 # if @APPLE_UNIVERSAL_BUILD@
 534 #  ifdef _LP64
 535 #   define PTRDIFF_MIN  _STDINT_SIGNED_MIN (64, 0l)
 536 #   define PTRDIFF_MAX  _STDINT_MAX (1, 64, 0l)
 537 #  else
 538 #   define PTRDIFF_MIN  _STDINT_SIGNED_MIN (32, 0)
 539 #   define PTRDIFF_MAX  _STDINT_MAX (1, 32, 0)
 540 #  endif
 541 # else
 542 #  define PTRDIFF_MIN  \
 543     _STDINT_SIGNED_MIN (@BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
 544 #  define PTRDIFF_MAX  \
 545     _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
 546 # endif
 547 
 548 /* sig_atomic_t limits */
 549 # undef SIG_ATOMIC_MIN
 550 # undef SIG_ATOMIC_MAX
 551 # if @HAVE_SIGNED_SIG_ATOMIC_T@
 552 #  define SIG_ATOMIC_MIN  \
 553     _STDINT_SIGNED_MIN (@BITSIZEOF_SIG_ATOMIC_T@, 0@SIG_ATOMIC_T_SUFFIX@)
 554 # else
 555 #  define SIG_ATOMIC_MIN  \
 556     _STDINT_UNSIGNED_MIN (@BITSIZEOF_SIG_ATOMIC_T@, 0@SIG_ATOMIC_T_SUFFIX@)
 557 # endif
 558 # define SIG_ATOMIC_MAX  \
 559    _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
 560                 0@SIG_ATOMIC_T_SUFFIX@)
 561 
 562 
 563 /* size_t limit */
 564 # undef SIZE_MAX
 565 # if @APPLE_UNIVERSAL_BUILD@
 566 #  ifdef _LP64
 567 #   define SIZE_MAX  _STDINT_MAX (0, 64, 0ul)
 568 #  else
 569 #   define SIZE_MAX  _STDINT_MAX (0, 32, 0ul)
 570 #  endif
 571 # else
 572 #  define SIZE_MAX  _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
 573 # endif
 574 
 575 /* wchar_t limits */
 576 /* Get WCHAR_MIN, WCHAR_MAX.
 577    This include is not on the top, above, because on OSF/1 4.0 we have a
 578    sequence of nested includes
 579    <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
 580    <stdint.h> and assumes its types are already defined.  */
 581 # if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX)
 582 #  define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
 583 #  include <wchar.h>
 584 #  undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
 585 # endif
 586 # undef WCHAR_MIN
 587 # undef WCHAR_MAX
 588 # if @HAVE_SIGNED_WCHAR_T@
 589 #  define WCHAR_MIN  \
 590     _STDINT_SIGNED_MIN (@BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
 591 # else
 592 #  define WCHAR_MIN  \
 593     _STDINT_UNSIGNED_MIN (@BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
 594 # endif
 595 # define WCHAR_MAX  \
 596    _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
 597 
 598 /* wint_t limits */
 599 /* If gnulib's <wchar.h> or <wctype.h> overrides wint_t, @WINT_T_SUFFIX@ is not
 600    accurate, therefore use the definitions from above.  */
 601 # if !@GNULIBHEADERS_OVERRIDE_WINT_T@
 602 #  undef WINT_MIN
 603 #  undef WINT_MAX
 604 #  if @HAVE_SIGNED_WINT_T@
 605 #   define WINT_MIN  \
 606      _STDINT_SIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
 607 #  else
 608 #   define WINT_MIN  \
 609      _STDINT_UNSIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
 610 #  endif
 611 #  define WINT_MAX  \
 612     _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
 613 # endif
 614 
 615 /* 7.18.4. Macros for integer constants */
 616 
 617 /* 7.18.4.1. Macros for minimum-width integer constants */
 618 /* According to ISO C 99 Technical Corrigendum 1 */
 619 
 620 /* Here we assume a standard architecture where the hardware integer
 621    types have 8, 16, 32, optionally 64 bits, and int is 32 bits.  */
 622 
 623 # undef INT8_C
 624 # undef UINT8_C
 625 # define INT8_C(x) x
 626 # define UINT8_C(x) x
 627 
 628 # undef INT16_C
 629 # undef UINT16_C
 630 # define INT16_C(x) x
 631 # define UINT16_C(x) x
 632 
 633 # undef INT32_C
 634 # undef UINT32_C
 635 # define INT32_C(x) x
 636 # define UINT32_C(x) x ## U
 637 
 638 # undef INT64_C
 639 # undef UINT64_C
 640 # if LONG_MAX >> 31 >> 31 == 1
 641 #  define INT64_C(x) x##L
 642 # elif defined _MSC_VER
 643 #  define INT64_C(x) x##i64
 644 # else
 645 #  define INT64_C(x) x##LL
 646 # endif
 647 # if ULONG_MAX >> 31 >> 31 >> 1 == 1
 648 #  define UINT64_C(x) x##UL
 649 # elif defined _MSC_VER
 650 #  define UINT64_C(x) x##ui64
 651 # else
 652 #  define UINT64_C(x) x##ULL
 653 # endif
 654 
 655 /* 7.18.4.2. Macros for greatest-width integer constants */
 656 
 657 # ifndef INTMAX_C
 658 #  if LONG_MAX >> 30 == 1
 659 #   define INTMAX_C(x)   x##LL
 660 #  elif defined GL_INT64_T
 661 #   define INTMAX_C(x)   INT64_C(x)
 662 #  else
 663 #   define INTMAX_C(x)   x##L
 664 #  endif
 665 # endif
 666 
 667 # ifndef UINTMAX_C
 668 #  if ULONG_MAX >> 31 == 1
 669 #   define UINTMAX_C(x)  x##ULL
 670 #  elif defined GL_UINT64_T
 671 #   define UINTMAX_C(x)  UINT64_C(x)
 672 #  else
 673 #   define UINTMAX_C(x)  x##UL
 674 #  endif
 675 # endif
 676 
 677 #endif /* !@HAVE_C99_STDINT_H@ */
 678 
 679 /* Macros specified by ISO/IEC TS 18661-1:2014.  */
 680 
 681 #if (!defined UINTMAX_WIDTH \
 682      && (defined _GNU_SOURCE || defined __STDC_WANT_IEC_60559_BFP_EXT__))
 683 # ifdef INT8_MAX
 684 #  define INT8_WIDTH _GL_INTEGER_WIDTH (INT8_MIN, INT8_MAX)
 685 # endif
 686 # ifdef UINT8_MAX
 687 #  define UINT8_WIDTH _GL_INTEGER_WIDTH (0, UINT8_MAX)
 688 # endif
 689 # ifdef INT16_MAX
 690 #  define INT16_WIDTH _GL_INTEGER_WIDTH (INT16_MIN, INT16_MAX)
 691 # endif
 692 # ifdef UINT16_MAX
 693 #  define UINT16_WIDTH _GL_INTEGER_WIDTH (0, UINT16_MAX)
 694 # endif
 695 # ifdef INT32_MAX
 696 #  define INT32_WIDTH _GL_INTEGER_WIDTH (INT32_MIN, INT32_MAX)
 697 # endif
 698 # ifdef UINT32_MAX
 699 #  define UINT32_WIDTH _GL_INTEGER_WIDTH (0, UINT32_MAX)
 700 # endif
 701 # ifdef INT64_MAX
 702 #  define INT64_WIDTH _GL_INTEGER_WIDTH (INT64_MIN, INT64_MAX)
 703 # endif
 704 # ifdef UINT64_MAX
 705 #  define UINT64_WIDTH _GL_INTEGER_WIDTH (0, UINT64_MAX)
 706 # endif
 707 # define INT_LEAST8_WIDTH _GL_INTEGER_WIDTH (INT_LEAST8_MIN, INT_LEAST8_MAX)
 708 # define UINT_LEAST8_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST8_MAX)
 709 # define INT_LEAST16_WIDTH _GL_INTEGER_WIDTH (INT_LEAST16_MIN, INT_LEAST16_MAX)
 710 # define UINT_LEAST16_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST16_MAX)
 711 # define INT_LEAST32_WIDTH _GL_INTEGER_WIDTH (INT_LEAST32_MIN, INT_LEAST32_MAX)
 712 # define UINT_LEAST32_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST32_MAX)
 713 # define INT_LEAST64_WIDTH _GL_INTEGER_WIDTH (INT_LEAST64_MIN, INT_LEAST64_MAX)
 714 # define UINT_LEAST64_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST64_MAX)
 715 # define INT_FAST8_WIDTH _GL_INTEGER_WIDTH (INT_FAST8_MIN, INT_FAST8_MAX)
 716 # define UINT_FAST8_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST8_MAX)
 717 # define INT_FAST16_WIDTH _GL_INTEGER_WIDTH (INT_FAST16_MIN, INT_FAST16_MAX)
 718 # define UINT_FAST16_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST16_MAX)
 719 # define INT_FAST32_WIDTH _GL_INTEGER_WIDTH (INT_FAST32_MIN, INT_FAST32_MAX)
 720 # define UINT_FAST32_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST32_MAX)
 721 # define INT_FAST64_WIDTH _GL_INTEGER_WIDTH (INT_FAST64_MIN, INT_FAST64_MAX)
 722 # define UINT_FAST64_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST64_MAX)
 723 # define INTPTR_WIDTH _GL_INTEGER_WIDTH (INTPTR_MIN, INTPTR_MAX)
 724 # define UINTPTR_WIDTH _GL_INTEGER_WIDTH (0, UINTPTR_MAX)
 725 # define INTMAX_WIDTH _GL_INTEGER_WIDTH (INTMAX_MIN, INTMAX_MAX)
 726 # define UINTMAX_WIDTH _GL_INTEGER_WIDTH (0, UINTMAX_MAX)
 727 # define PTRDIFF_WIDTH _GL_INTEGER_WIDTH (PTRDIFF_MIN, PTRDIFF_MAX)
 728 # define SIZE_WIDTH _GL_INTEGER_WIDTH (0, SIZE_MAX)
 729 # define WCHAR_WIDTH _GL_INTEGER_WIDTH (WCHAR_MIN, WCHAR_MAX)
 730 # ifdef WINT_MAX
 731 #  define WINT_WIDTH _GL_INTEGER_WIDTH (WINT_MIN, WINT_MAX)
 732 # endif
 733 # ifdef SIG_ATOMIC_MAX
 734 #  define SIG_ATOMIC_WIDTH _GL_INTEGER_WIDTH (SIG_ATOMIC_MIN, SIG_ATOMIC_MAX)
 735 # endif
 736 #endif /* !WINT_WIDTH && (_GNU_SOURCE || __STDC_WANT_IEC_60559_BFP_EXT__) */
 737 
 738 #endif /* _@GUARD_PREFIX@_STDINT_H */
 739 #endif /* !(defined __ANDROID__ && ...) */
 740 #endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */

/* [previous][next][first][last][top][bottom][index][help] */