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