root/lib/stdint.in.h

/* [<][>][^][v][top][bottom][index][help] */
     1 /* Copyright (C) 2001-2002, 2004-2023 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 */

/* [<][>][^][v][top][bottom][index][help] */