Annotation of embedaddon/libiconv/srclib/stdint.in.h, revision 1.1.1.3

1.1.1.3 ! misho       1: /* Copyright (C) 2001-2002, 2004-2019 Free Software Foundation, Inc.
1.1       misho       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
1.1.1.3 ! misho      16:    along with this program; if not, see <https://www.gnu.org/licenses/>.  */
1.1       misho      17: 
                     18: /*
                     19:  * ISO C 99 <stdint.h> for platforms that lack it.
                     20:  * <http://www.opengroup.org/susv3xbd/stdint.h.html>
                     21:  */
                     22: 
1.1.1.2   misho      23: #ifndef _@GUARD_PREFIX@_STDINT_H
                     24: 
                     25: #if __GNUC__ >= 3
                     26: @PRAGMA_SYSTEM_HEADER@
                     27: #endif
                     28: @PRAGMA_COLUMNS@
1.1       misho      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: 
1.1.1.3 ! misho      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: 
1.1       misho      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
1.1.1.3 ! misho      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: 
1.1       misho      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
1.1.1.2   misho      74:      _@GUARD_PREFIX@_STDINT_H is defined.
1.1       misho      75:      The include_next requires a split double-inclusion guard.  */
                     76: # @INCLUDE_NEXT@ @NEXT_STDINT_H@
                     77: #endif
                     78: 
1.1.1.2   misho      79: #if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
                     80: #define _@GUARD_PREFIX@_STDINT_H
1.1       misho      81: 
1.1.1.3 ! misho      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: 
1.1       misho      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.
1.1.1.3 ! misho     100:    Mac OS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
1.1       misho     101:    relies on the system <stdint.h> definitions, so include
                    102:    <sys/types.h> after @NEXT_STDINT_H@.  */
1.1.1.3 ! misho     103: # if @HAVE_SYS_TYPES_H@ && ! defined _AIX
        !           104: #  include <sys/types.h>
        !           105: # endif
1.1       misho     106: 
1.1.1.3 ! misho     107: # if @HAVE_INTTYPES_H@
1.1       misho     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.  */
1.1.1.3 ! misho     111: #  include <inttypes.h>
        !           112: # elif @HAVE_SYS_INTTYPES_H@
1.1       misho     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.  */
1.1.1.3 ! misho     115: #  include <sys/inttypes.h>
        !           116: # endif
1.1       misho     117: 
1.1.1.3 ! misho     118: # if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
1.1       misho     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>.  */
1.1.1.3 ! misho     122: #  include <sys/bitypes.h>
        !           123: # endif
1.1       misho     124: 
1.1.1.3 ! misho     125: # undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
1.1       misho     126: 
1.1.1.2   misho     127: /* Minimum and maximum values for an integer type under the usual assumption.
1.1       misho     128:    Return an unspecified value if BITS == 0, adding a check to pacify
                    129:    picky compilers.  */
                    130: 
1.1.1.3 ! misho     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))
1.1       misho     138: 
1.1.1.3 ! misho     139: # define _STDINT_MAX(signed, bits, zero) \
        !           140:     (((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
1.1       misho     141: 
1.1.1.2   misho     142: #if !GNULIB_defined_stdint_types
                    143: 
1.1       misho     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: 
1.1.1.3 ! misho     149: # undef int8_t
        !           150: # undef uint8_t
1.1       misho     151: typedef signed char gl_int8_t;
                    152: typedef unsigned char gl_uint8_t;
1.1.1.3 ! misho     153: # define int8_t gl_int8_t
        !           154: # define uint8_t gl_uint8_t
1.1       misho     155: 
1.1.1.3 ! misho     156: # undef int16_t
        !           157: # undef uint16_t
1.1       misho     158: typedef short int gl_int16_t;
                    159: typedef unsigned short int gl_uint16_t;
1.1.1.3 ! misho     160: # define int16_t gl_int16_t
        !           161: # define uint16_t gl_uint16_t
1.1       misho     162: 
1.1.1.3 ! misho     163: # undef int32_t
        !           164: # undef uint32_t
1.1       misho     165: typedef int gl_int32_t;
                    166: typedef unsigned int gl_uint32_t;
1.1.1.3 ! misho     167: # define int32_t gl_int32_t
        !           168: # define uint32_t gl_uint32_t
1.1       misho     169: 
1.1.1.2   misho     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: 
1.1.1.3 ! misho     176: # ifdef INT64_MAX
        !           177: #  define GL_INT64_T
        !           178: # else
1.1       misho     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.  */
1.1.1.3 ! misho     181: #  if LONG_MAX >> 31 >> 31 == 1
        !           182: #   undef int64_t
1.1       misho     183: typedef long int gl_int64_t;
1.1.1.3 ! misho     184: #   define int64_t gl_int64_t
        !           185: #   define GL_INT64_T
        !           186: #  elif defined _MSC_VER
        !           187: #   undef int64_t
1.1       misho     188: typedef __int64 gl_int64_t;
1.1.1.3 ! misho     189: #   define int64_t gl_int64_t
        !           190: #   define GL_INT64_T
        !           191: #  elif @HAVE_LONG_LONG_INT@
        !           192: #   undef int64_t
1.1       misho     193: typedef long long int gl_int64_t;
1.1.1.3 ! misho     194: #   define int64_t gl_int64_t
        !           195: #   define GL_INT64_T
        !           196: #  endif
1.1.1.2   misho     197: # endif
1.1       misho     198: 
1.1.1.3 ! misho     199: # ifdef UINT64_MAX
1.1.1.2   misho     200: #  define GL_UINT64_T
1.1.1.3 ! misho     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
1.1       misho     209: typedef unsigned __int64 gl_uint64_t;
1.1.1.3 ! misho     210: #   define uint64_t gl_uint64_t
        !           211: #   define GL_UINT64_T
        !           212: #  elif @HAVE_UNSIGNED_LONG_LONG_INT@
        !           213: #   undef uint64_t
1.1       misho     214: typedef unsigned long long int gl_uint64_t;
1.1.1.3 ! misho     215: #   define uint64_t gl_uint64_t
        !           216: #   define GL_UINT64_T
        !           217: #  endif
1.1.1.2   misho     218: # endif
1.1       misho     219: 
                    220: /* Avoid collision with Solaris 2.5.1 <pthread.h> etc.  */
1.1.1.3 ! misho     221: # define _UINT8_T
        !           222: # define _UINT32_T
        !           223: # define _UINT64_T
1.1       misho     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: 
1.1.1.3 ! misho     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
1.1       misho     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
1.1.1.3 ! misho     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
1.1       misho     281: typedef long int gl_int_fast32_t;
                    282: typedef unsigned long int gl_uint_fast32_t;
1.1.1.3 ! misho     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
1.1       misho     299: 
                    300: /* 7.18.1.4. Integer types capable of holding object pointers */
                    301: 
1.1.1.3 ! misho     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
1.1       misho     308: typedef long int gl_intptr_t;
                    309: typedef unsigned long int gl_uintptr_t;
1.1.1.3 ! misho     310: # define intptr_t gl_intptr_t
        !           311: # define uintptr_t gl_uintptr_t
        !           312: # endif
1.1       misho     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: 
1.1.1.2   misho     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: 
1.1.1.3 ! misho     323: # ifndef INTMAX_MAX
        !           324: #  undef INTMAX_C
        !           325: #  undef intmax_t
        !           326: #  if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
1.1       misho     327: typedef long long int gl_intmax_t;
1.1.1.3 ! misho     328: #   define intmax_t gl_intmax_t
        !           329: #  elif defined GL_INT64_T
        !           330: #   define intmax_t int64_t
        !           331: #  else
1.1       misho     332: typedef long int gl_intmax_t;
1.1.1.3 ! misho     333: #   define intmax_t gl_intmax_t
        !           334: #  endif
1.1.1.2   misho     335: # endif
1.1       misho     336: 
1.1.1.3 ! misho     337: # ifndef UINTMAX_MAX
        !           338: #  undef UINTMAX_C
        !           339: #  undef uintmax_t
        !           340: #  if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
1.1       misho     341: typedef unsigned long long int gl_uintmax_t;
1.1.1.3 ! misho     342: #   define uintmax_t gl_uintmax_t
        !           343: #  elif defined GL_UINT64_T
        !           344: #   define uintmax_t uint64_t
        !           345: #  else
1.1       misho     346: typedef unsigned long int gl_uintmax_t;
1.1.1.3 ! misho     347: #   define uintmax_t gl_uintmax_t
        !           348: #  endif
1.1.1.2   misho     349: # endif
1.1       misho     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.  */
1.1.1.2   misho     354: typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
                    355:                                 ? 1 : -1];
                    356: 
1.1.1.3 ! misho     357: # define GNULIB_defined_stdint_types 1
        !           358: # endif /* !GNULIB_defined_stdint_types */
1.1       misho     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: 
1.1.1.3 ! misho     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
1.1       misho     387: 
1.1.1.3 ! misho     388: # if defined GL_INT64_T && ! defined INT64_MAX
1.1       misho     389: /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
                    390:    evaluates the latter incorrectly in preprocessor expressions.  */
1.1.1.3 ! misho     391: #  define INT64_MIN  (- INTMAX_C (1) << 63)
        !           392: #  define INT64_MAX  INTMAX_C (9223372036854775807)
        !           393: # endif
1.1       misho     394: 
1.1.1.3 ! misho     395: # if defined GL_UINT64_T && ! defined UINT64_MAX
        !           396: #  define UINT64_MAX  UINTMAX_C (18446744073709551615)
        !           397: # endif
1.1       misho     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: 
1.1.1.3 ! misho     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
1.1       misho     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: 
1.1.1.3 ! misho     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
1.1       misho     470: 
1.1.1.3 ! misho     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
1.1       misho     482: 
                    483: /* 7.18.2.4. Limits of integer types capable of holding object pointers */
                    484: 
1.1.1.3 ! misho     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
1.1       misho     491: 
                    492: /* 7.18.2.5. Limits of greatest-width integer types */
                    493: 
1.1.1.3 ! misho     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
1.1.1.2   misho     511: # endif
1.1       misho     512: 
                    513: /* 7.18.3. Limits of other integer types */
                    514: 
                    515: /* ptrdiff_t limits */
1.1.1.3 ! misho     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
1.1       misho     526: # else
1.1.1.3 ! misho     527: #  define PTRDIFF_MIN  \
        !           528:     _STDINT_SIGNED_MIN (@BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
        !           529: #  define PTRDIFF_MAX  \
1.1       misho     530:     _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
1.1.1.3 ! misho     531: # endif
1.1       misho     532: 
                    533: /* sig_atomic_t limits */
1.1.1.3 ! misho     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  \
1.1       misho     544:    _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
1.1.1.2   misho     545:                 0@SIG_ATOMIC_T_SUFFIX@)
1.1       misho     546: 
                    547: 
                    548: /* size_t limit */
1.1.1.3 ! misho     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
1.1       misho     556: # else
1.1.1.3 ! misho     557: #  define SIZE_MAX  _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
1.1       misho     558: # endif
                    559: 
                    560: /* wchar_t limits */
                    561: /* Get WCHAR_MIN, WCHAR_MAX.
1.1.1.2   misho     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
1.1       misho     565:    <stdint.h> and assumes its types are already defined.  */
1.1.1.3 ! misho     566: # if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX)
1.1.1.2   misho     567:   /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
                    568:      included before <wchar.h>.  */
1.1.1.3 ! misho     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  \
1.1       misho     586:    _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
                    587: 
                    588: /* wint_t limits */
1.1.1.3 ! misho     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  \
1.1       misho     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: 
1.1.1.3 ! misho     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
1.1       misho     640: 
                    641: /* 7.18.4.2. Macros for greatest-width integer constants */
                    642: 
1.1.1.3 ! misho     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
1.1.1.2   misho     651: # endif
1.1       misho     652: 
1.1.1.3 ! misho     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
1.1.1.2   misho     661: # endif
1.1       misho     662: 
1.1.1.3 ! misho     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__) */
1.1       misho     723: 
1.1.1.2   misho     724: #endif /* _@GUARD_PREFIX@_STDINT_H */
1.1.1.3 ! misho     725: #endif /* !(defined __ANDROID__ && ...) */
1.1.1.2   misho     726: #endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */

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