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