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