File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srclib / stdint.in.h
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 13:38:46 2021 UTC (3 years, 3 months ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_16p0, HEAD
libiconv 1.16

    1: /* Copyright (C) 2001-2002, 2004-2019 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 program is free software; you can redistribute it and/or modify
    6:    it under the terms of the GNU General Public License as published by
    7:    the Free Software Foundation; either version 3, or (at your option)
    8:    any later version.
    9: 
   10:    This program 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 General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU 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:  * <http://www.opengroup.org/susv3xbd/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 @GNULIB_OVERRIDES_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: #  elif @HAVE_LONG_LONG_INT@
  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: #  elif @HAVE_UNSIGNED_LONG_LONG_INT@
  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: # ifndef _INTPTR_T_DECLARED
  306: # undef intptr_t
  307: # undef uintptr_t
  308: typedef long int gl_intptr_t;
  309: typedef unsigned long int gl_uintptr_t;
  310: # define intptr_t gl_intptr_t
  311: # define uintptr_t gl_uintptr_t
  312: # endif
  313: 
  314: /* 7.18.1.5. Greatest-width integer types */
  315: 
  316: /* Note: These types are compiler dependent. It may be unwise to use them in
  317:    public header files. */
  318: 
  319: /* If the system defines INTMAX_MAX, assume that intmax_t works, and
  320:    similarly for UINTMAX_MAX and uintmax_t.  This avoids problems with
  321:    assuming one type where another is used by the system.  */
  322: 
  323: # ifndef INTMAX_MAX
  324: #  undef INTMAX_C
  325: #  undef intmax_t
  326: #  if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
  327: typedef long long int gl_intmax_t;
  328: #   define intmax_t gl_intmax_t
  329: #  elif defined GL_INT64_T
  330: #   define intmax_t int64_t
  331: #  else
  332: typedef long int gl_intmax_t;
  333: #   define intmax_t gl_intmax_t
  334: #  endif
  335: # endif
  336: 
  337: # ifndef UINTMAX_MAX
  338: #  undef UINTMAX_C
  339: #  undef uintmax_t
  340: #  if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
  341: typedef unsigned long long int gl_uintmax_t;
  342: #   define uintmax_t gl_uintmax_t
  343: #  elif defined GL_UINT64_T
  344: #   define uintmax_t uint64_t
  345: #  else
  346: typedef unsigned long int gl_uintmax_t;
  347: #   define uintmax_t gl_uintmax_t
  348: #  endif
  349: # endif
  350: 
  351: /* Verify that intmax_t and uintmax_t have the same size.  Too much code
  352:    breaks if this is not the case.  If this check fails, the reason is likely
  353:    to be found in the autoconf macros.  */
  354: typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
  355:                                 ? 1 : -1];
  356: 
  357: # define GNULIB_defined_stdint_types 1
  358: # endif /* !GNULIB_defined_stdint_types */
  359: 
  360: /* 7.18.2. Limits of specified-width integer types */
  361: 
  362: /* 7.18.2.1. Limits of exact-width integer types */
  363: 
  364: /* Here we assume a standard architecture where the hardware integer
  365:    types have 8, 16, 32, optionally 64 bits.  */
  366: 
  367: # undef INT8_MIN
  368: # undef INT8_MAX
  369: # undef UINT8_MAX
  370: # define INT8_MIN  (~ INT8_MAX)
  371: # define INT8_MAX  127
  372: # define UINT8_MAX  255
  373: 
  374: # undef INT16_MIN
  375: # undef INT16_MAX
  376: # undef UINT16_MAX
  377: # define INT16_MIN  (~ INT16_MAX)
  378: # define INT16_MAX  32767
  379: # define UINT16_MAX  65535
  380: 
  381: # undef INT32_MIN
  382: # undef INT32_MAX
  383: # undef UINT32_MAX
  384: # define INT32_MIN  (~ INT32_MAX)
  385: # define INT32_MAX  2147483647
  386: # define UINT32_MAX  4294967295U
  387: 
  388: # if defined GL_INT64_T && ! defined INT64_MAX
  389: /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
  390:    evaluates the latter incorrectly in preprocessor expressions.  */
  391: #  define INT64_MIN  (- INTMAX_C (1) << 63)
  392: #  define INT64_MAX  INTMAX_C (9223372036854775807)
  393: # endif
  394: 
  395: # if defined GL_UINT64_T && ! defined UINT64_MAX
  396: #  define UINT64_MAX  UINTMAX_C (18446744073709551615)
  397: # endif
  398: 
  399: /* 7.18.2.2. Limits of minimum-width integer types */
  400: 
  401: /* Here we assume a standard architecture where the hardware integer
  402:    types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
  403:    are the same as the corresponding N_t types.  */
  404: 
  405: # undef INT_LEAST8_MIN
  406: # undef INT_LEAST8_MAX
  407: # undef UINT_LEAST8_MAX
  408: # define INT_LEAST8_MIN  INT8_MIN
  409: # define INT_LEAST8_MAX  INT8_MAX
  410: # define UINT_LEAST8_MAX  UINT8_MAX
  411: 
  412: # undef INT_LEAST16_MIN
  413: # undef INT_LEAST16_MAX
  414: # undef UINT_LEAST16_MAX
  415: # define INT_LEAST16_MIN  INT16_MIN
  416: # define INT_LEAST16_MAX  INT16_MAX
  417: # define UINT_LEAST16_MAX  UINT16_MAX
  418: 
  419: # undef INT_LEAST32_MIN
  420: # undef INT_LEAST32_MAX
  421: # undef UINT_LEAST32_MAX
  422: # define INT_LEAST32_MIN  INT32_MIN
  423: # define INT_LEAST32_MAX  INT32_MAX
  424: # define UINT_LEAST32_MAX  UINT32_MAX
  425: 
  426: # undef INT_LEAST64_MIN
  427: # undef INT_LEAST64_MAX
  428: # ifdef GL_INT64_T
  429: #  define INT_LEAST64_MIN  INT64_MIN
  430: #  define INT_LEAST64_MAX  INT64_MAX
  431: # endif
  432: 
  433: # undef UINT_LEAST64_MAX
  434: # ifdef GL_UINT64_T
  435: #  define UINT_LEAST64_MAX  UINT64_MAX
  436: # endif
  437: 
  438: /* 7.18.2.3. Limits of fastest minimum-width integer types */
  439: 
  440: /* Here we assume a standard architecture where the hardware integer
  441:    types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
  442:    are taken from the same list of types.  */
  443: 
  444: # undef INT_FAST8_MIN
  445: # undef INT_FAST8_MAX
  446: # undef UINT_FAST8_MAX
  447: # define INT_FAST8_MIN  SCHAR_MIN
  448: # define INT_FAST8_MAX  SCHAR_MAX
  449: # define UINT_FAST8_MAX  UCHAR_MAX
  450: 
  451: # undef INT_FAST16_MIN
  452: # undef INT_FAST16_MAX
  453: # undef UINT_FAST16_MAX
  454: # define INT_FAST16_MIN  INT_FAST32_MIN
  455: # define INT_FAST16_MAX  INT_FAST32_MAX
  456: # define UINT_FAST16_MAX  UINT_FAST32_MAX
  457: 
  458: # undef INT_FAST32_MIN
  459: # undef INT_FAST32_MAX
  460: # undef UINT_FAST32_MAX
  461: # ifdef __sun
  462: #  define INT_FAST32_MIN  INT_MIN
  463: #  define INT_FAST32_MAX  INT_MAX
  464: #  define UINT_FAST32_MAX  UINT_MAX
  465: # else
  466: #  define INT_FAST32_MIN  LONG_MIN
  467: #  define INT_FAST32_MAX  LONG_MAX
  468: #  define UINT_FAST32_MAX  ULONG_MAX
  469: # endif
  470: 
  471: # undef INT_FAST64_MIN
  472: # undef INT_FAST64_MAX
  473: # ifdef GL_INT64_T
  474: #  define INT_FAST64_MIN  INT64_MIN
  475: #  define INT_FAST64_MAX  INT64_MAX
  476: # endif
  477: 
  478: # undef UINT_FAST64_MAX
  479: # ifdef GL_UINT64_T
  480: #  define UINT_FAST64_MAX  UINT64_MAX
  481: # endif
  482: 
  483: /* 7.18.2.4. Limits of integer types capable of holding object pointers */
  484: 
  485: # undef INTPTR_MIN
  486: # undef INTPTR_MAX
  487: # undef UINTPTR_MAX
  488: # define INTPTR_MIN  LONG_MIN
  489: # define INTPTR_MAX  LONG_MAX
  490: # define UINTPTR_MAX  ULONG_MAX
  491: 
  492: /* 7.18.2.5. Limits of greatest-width integer types */
  493: 
  494: # ifndef INTMAX_MAX
  495: #  undef INTMAX_MIN
  496: #  ifdef INT64_MAX
  497: #   define INTMAX_MIN  INT64_MIN
  498: #   define INTMAX_MAX  INT64_MAX
  499: #  else
  500: #   define INTMAX_MIN  INT32_MIN
  501: #   define INTMAX_MAX  INT32_MAX
  502: #  endif
  503: # endif
  504: 
  505: # ifndef UINTMAX_MAX
  506: #  ifdef UINT64_MAX
  507: #   define UINTMAX_MAX  UINT64_MAX
  508: #  else
  509: #   define UINTMAX_MAX  UINT32_MAX
  510: #  endif
  511: # endif
  512: 
  513: /* 7.18.3. Limits of other integer types */
  514: 
  515: /* ptrdiff_t limits */
  516: # undef PTRDIFF_MIN
  517: # undef PTRDIFF_MAX
  518: # if @APPLE_UNIVERSAL_BUILD@
  519: #  ifdef _LP64
  520: #   define PTRDIFF_MIN  _STDINT_SIGNED_MIN (64, 0l)
  521: #   define PTRDIFF_MAX  _STDINT_MAX (1, 64, 0l)
  522: #  else
  523: #   define PTRDIFF_MIN  _STDINT_SIGNED_MIN (32, 0)
  524: #   define PTRDIFF_MAX  _STDINT_MAX (1, 32, 0)
  525: #  endif
  526: # else
  527: #  define PTRDIFF_MIN  \
  528:     _STDINT_SIGNED_MIN (@BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
  529: #  define PTRDIFF_MAX  \
  530:     _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
  531: # endif
  532: 
  533: /* sig_atomic_t limits */
  534: # undef SIG_ATOMIC_MIN
  535: # undef SIG_ATOMIC_MAX
  536: # if @HAVE_SIGNED_SIG_ATOMIC_T@
  537: #  define SIG_ATOMIC_MIN  \
  538:     _STDINT_SIGNED_MIN (@BITSIZEOF_SIG_ATOMIC_T@, 0@SIG_ATOMIC_T_SUFFIX@)
  539: # else
  540: #  define SIG_ATOMIC_MIN  \
  541:     _STDINT_UNSIGNED_MIN (@BITSIZEOF_SIG_ATOMIC_T@, 0@SIG_ATOMIC_T_SUFFIX@)
  542: # endif
  543: # define SIG_ATOMIC_MAX  \
  544:    _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
  545:                 0@SIG_ATOMIC_T_SUFFIX@)
  546: 
  547: 
  548: /* size_t limit */
  549: # undef SIZE_MAX
  550: # if @APPLE_UNIVERSAL_BUILD@
  551: #  ifdef _LP64
  552: #   define SIZE_MAX  _STDINT_MAX (0, 64, 0ul)
  553: #  else
  554: #   define SIZE_MAX  _STDINT_MAX (0, 32, 0ul)
  555: #  endif
  556: # else
  557: #  define SIZE_MAX  _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
  558: # endif
  559: 
  560: /* wchar_t limits */
  561: /* Get WCHAR_MIN, WCHAR_MAX.
  562:    This include is not on the top, above, because on OSF/1 4.0 we have a
  563:    sequence of nested includes
  564:    <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
  565:    <stdint.h> and assumes its types are already defined.  */
  566: # if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX)
  567:   /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
  568:      included before <wchar.h>.  */
  569: #  include <stddef.h>
  570: #  include <stdio.h>
  571: #  include <time.h>
  572: #  define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
  573: #  include <wchar.h>
  574: #  undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
  575: # endif
  576: # undef WCHAR_MIN
  577: # undef WCHAR_MAX
  578: # if @HAVE_SIGNED_WCHAR_T@
  579: #  define WCHAR_MIN  \
  580:     _STDINT_SIGNED_MIN (@BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
  581: # else
  582: #  define WCHAR_MIN  \
  583:     _STDINT_UNSIGNED_MIN (@BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
  584: # endif
  585: # define WCHAR_MAX  \
  586:    _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
  587: 
  588: /* wint_t limits */
  589: # undef WINT_MIN
  590: # undef WINT_MAX
  591: # if @HAVE_SIGNED_WINT_T@
  592: #  define WINT_MIN  \
  593:     _STDINT_SIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
  594: # else
  595: #  define WINT_MIN  \
  596:     _STDINT_UNSIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
  597: # endif
  598: # define WINT_MAX  \
  599:    _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
  600: 
  601: /* 7.18.4. Macros for integer constants */
  602: 
  603: /* 7.18.4.1. Macros for minimum-width integer constants */
  604: /* According to ISO C 99 Technical Corrigendum 1 */
  605: 
  606: /* Here we assume a standard architecture where the hardware integer
  607:    types have 8, 16, 32, optionally 64 bits, and int is 32 bits.  */
  608: 
  609: # undef INT8_C
  610: # undef UINT8_C
  611: # define INT8_C(x) x
  612: # define UINT8_C(x) x
  613: 
  614: # undef INT16_C
  615: # undef UINT16_C
  616: # define INT16_C(x) x
  617: # define UINT16_C(x) x
  618: 
  619: # undef INT32_C
  620: # undef UINT32_C
  621: # define INT32_C(x) x
  622: # define UINT32_C(x) x ## U
  623: 
  624: # undef INT64_C
  625: # undef UINT64_C
  626: # if LONG_MAX >> 31 >> 31 == 1
  627: #  define INT64_C(x) x##L
  628: # elif defined _MSC_VER
  629: #  define INT64_C(x) x##i64
  630: # elif @HAVE_LONG_LONG_INT@
  631: #  define INT64_C(x) x##LL
  632: # endif
  633: # if ULONG_MAX >> 31 >> 31 >> 1 == 1
  634: #  define UINT64_C(x) x##UL
  635: # elif defined _MSC_VER
  636: #  define UINT64_C(x) x##ui64
  637: # elif @HAVE_UNSIGNED_LONG_LONG_INT@
  638: #  define UINT64_C(x) x##ULL
  639: # endif
  640: 
  641: /* 7.18.4.2. Macros for greatest-width integer constants */
  642: 
  643: # ifndef INTMAX_C
  644: #  if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
  645: #   define INTMAX_C(x)   x##LL
  646: #  elif defined GL_INT64_T
  647: #   define INTMAX_C(x)   INT64_C(x)
  648: #  else
  649: #   define INTMAX_C(x)   x##L
  650: #  endif
  651: # endif
  652: 
  653: # ifndef UINTMAX_C
  654: #  if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
  655: #   define UINTMAX_C(x)  x##ULL
  656: #  elif defined GL_UINT64_T
  657: #   define UINTMAX_C(x)  UINT64_C(x)
  658: #  else
  659: #   define UINTMAX_C(x)  x##UL
  660: #  endif
  661: # endif
  662: 
  663: #endif /* !@HAVE_C99_STDINT_H@ */
  664: 
  665: /* Macros specified by ISO/IEC TS 18661-1:2014.  */
  666: 
  667: #if (!defined UINTMAX_WIDTH \
  668:      && (defined _GNU_SOURCE || defined __STDC_WANT_IEC_60559_BFP_EXT__))
  669: # ifdef INT8_MAX
  670: #  define INT8_WIDTH _GL_INTEGER_WIDTH (INT8_MIN, INT8_MAX)
  671: # endif
  672: # ifdef UINT8_MAX
  673: #  define UINT8_WIDTH _GL_INTEGER_WIDTH (0, UINT8_MAX)
  674: # endif
  675: # ifdef INT16_MAX
  676: #  define INT16_WIDTH _GL_INTEGER_WIDTH (INT16_MIN, INT16_MAX)
  677: # endif
  678: # ifdef UINT16_MAX
  679: #  define UINT16_WIDTH _GL_INTEGER_WIDTH (0, UINT16_MAX)
  680: # endif
  681: # ifdef INT32_MAX
  682: #  define INT32_WIDTH _GL_INTEGER_WIDTH (INT32_MIN, INT32_MAX)
  683: # endif
  684: # ifdef UINT32_MAX
  685: #  define UINT32_WIDTH _GL_INTEGER_WIDTH (0, UINT32_MAX)
  686: # endif
  687: # ifdef INT64_MAX
  688: #  define INT64_WIDTH _GL_INTEGER_WIDTH (INT64_MIN, INT64_MAX)
  689: # endif
  690: # ifdef UINT64_MAX
  691: #  define UINT64_WIDTH _GL_INTEGER_WIDTH (0, UINT64_MAX)
  692: # endif
  693: # define INT_LEAST8_WIDTH _GL_INTEGER_WIDTH (INT_LEAST8_MIN, INT_LEAST8_MAX)
  694: # define UINT_LEAST8_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST8_MAX)
  695: # define INT_LEAST16_WIDTH _GL_INTEGER_WIDTH (INT_LEAST16_MIN, INT_LEAST16_MAX)
  696: # define UINT_LEAST16_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST16_MAX)
  697: # define INT_LEAST32_WIDTH _GL_INTEGER_WIDTH (INT_LEAST32_MIN, INT_LEAST32_MAX)
  698: # define UINT_LEAST32_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST32_MAX)
  699: # define INT_LEAST64_WIDTH _GL_INTEGER_WIDTH (INT_LEAST64_MIN, INT_LEAST64_MAX)
  700: # define UINT_LEAST64_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST64_MAX)
  701: # define INT_FAST8_WIDTH _GL_INTEGER_WIDTH (INT_FAST8_MIN, INT_FAST8_MAX)
  702: # define UINT_FAST8_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST8_MAX)
  703: # define INT_FAST16_WIDTH _GL_INTEGER_WIDTH (INT_FAST16_MIN, INT_FAST16_MAX)
  704: # define UINT_FAST16_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST16_MAX)
  705: # define INT_FAST32_WIDTH _GL_INTEGER_WIDTH (INT_FAST32_MIN, INT_FAST32_MAX)
  706: # define UINT_FAST32_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST32_MAX)
  707: # define INT_FAST64_WIDTH _GL_INTEGER_WIDTH (INT_FAST64_MIN, INT_FAST64_MAX)
  708: # define UINT_FAST64_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST64_MAX)
  709: # define INTPTR_WIDTH _GL_INTEGER_WIDTH (INTPTR_MIN, INTPTR_MAX)
  710: # define UINTPTR_WIDTH _GL_INTEGER_WIDTH (0, UINTPTR_MAX)
  711: # define INTMAX_WIDTH _GL_INTEGER_WIDTH (INTMAX_MIN, INTMAX_MAX)
  712: # define UINTMAX_WIDTH _GL_INTEGER_WIDTH (0, UINTMAX_MAX)
  713: # define PTRDIFF_WIDTH _GL_INTEGER_WIDTH (PTRDIFF_MIN, PTRDIFF_MAX)
  714: # define SIZE_WIDTH _GL_INTEGER_WIDTH (0, SIZE_MAX)
  715: # define WCHAR_WIDTH _GL_INTEGER_WIDTH (WCHAR_MIN, WCHAR_MAX)
  716: # ifdef WINT_MAX
  717: #  define WINT_WIDTH _GL_INTEGER_WIDTH (WINT_MIN, WINT_MAX)
  718: # endif
  719: # ifdef SIG_ATOMIC_MAX
  720: #  define SIG_ATOMIC_WIDTH _GL_INTEGER_WIDTH (SIG_ATOMIC_MIN, SIG_ATOMIC_MAX)
  721: # endif
  722: #endif /* !WINT_WIDTH && (_GNU_SOURCE || __STDC_WANT_IEC_60559_BFP_EXT__) */
  723: 
  724: #endif /* _@GUARD_PREFIX@_STDINT_H */
  725: #endif /* !(defined __ANDROID__ && ...) */
  726: #endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>