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

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

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