exp2l: Work around a NetBSD 10.0/i386 bug.
[gnulib.git] / lib / inttypes.in.h
blobb9ab8a4b424e3921f517868f9fc95529dce04f88
1 /* Copyright (C) 2006-2024 Free Software Foundation, Inc.
2 Written by Paul Eggert, Bruno Haible, Derek Price.
3 This file is part of gnulib.
5 This file is free software: you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as
7 published by the Free Software Foundation; either version 2.1 of the
8 License, or (at your option) any later version.
10 This file 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 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public License
16 along with this program. If not, see <https://www.gnu.org/licenses/>. */
19 * ISO C 99 <inttypes.h> for platforms that lack it.
20 * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/inttypes.h.html>
23 #if __GNUC__ >= 3
24 @PRAGMA_SYSTEM_HEADER@
25 #endif
26 @PRAGMA_COLUMNS@
28 /* Include the original <inttypes.h> if it exists, and if this file
29 has not been included yet or if this file includes gnulib stdint.h
30 which in turn includes this file.
31 The include_next requires a split double-inclusion guard. */
32 #if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
33 # if @HAVE_INTTYPES_H@
35 /* Some pre-C++11 <stdint.h> implementations need this. */
36 # if defined __cplusplus && ! defined __STDC_FORMAT_MACROS
37 # define __STDC_FORMAT_MACROS 1
38 # endif
40 # @INCLUDE_NEXT@ @NEXT_INTTYPES_H@
42 # define _GL_FINISHED_INCLUDING_SYSTEM_INTTYPES_H
43 # endif
44 #endif
46 #if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
47 #define INTTYPES_H
49 /* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*. */
50 #if !_GL_CONFIG_H_INCLUDED
51 #error "Please include config.h first."
52 #endif
54 /* Include <stdint.h> or the gnulib replacement.
55 But avoid namespace pollution on glibc systems. */
56 #ifndef __GLIBC__
57 # include <stdint.h>
58 #endif
59 /* Get CHAR_BIT, INT_MAX, LONG_MAX, etc. */
60 #include <limits.h>
61 /* On mingw, __USE_MINGW_ANSI_STDIO only works if <stdio.h> is also included */
62 #if defined _WIN32 && ! defined __CYGWIN__
63 # include <stdio.h>
64 #endif
66 #if !(INT_MAX == 0x7fffffff && INT_MIN + INT_MAX == -1)
67 # error "This file assumes that 'int' is 32-bit two's complement. Please report your platform and compiler to <bug-gnulib@gnu.org>."
68 #endif
70 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
72 /* The definition of _GL_ARG_NONNULL is copied here. */
74 /* The definition of _GL_WARN_ON_USE is copied here. */
76 /* 7.8.1 Macros for format specifiers */
78 #if defined _TNS_R_TARGET
79 /* Tandem NonStop R series and compatible platforms released before
80 July 2005 support %Ld but not %lld. */
81 # define _LONG_LONG_FORMAT_PREFIX "L"
82 #else
83 # define _LONG_LONG_FORMAT_PREFIX "ll"
84 #endif
86 #if !defined PRId8
87 # ifdef INT8_MAX
88 # define PRId8 "d"
89 # endif
90 #endif
91 #if !defined PRIi8
92 # ifdef INT8_MAX
93 # define PRIi8 "i"
94 # endif
95 #endif
96 #if !defined PRIo8
97 # ifdef UINT8_MAX
98 # define PRIo8 "o"
99 # endif
100 #endif
101 #if !defined PRIu8
102 # ifdef UINT8_MAX
103 # define PRIu8 "u"
104 # endif
105 #endif
106 #if !defined PRIx8
107 # ifdef UINT8_MAX
108 # define PRIx8 "x"
109 # endif
110 #endif
111 #if !defined PRIX8
112 # ifdef UINT8_MAX
113 # define PRIX8 "X"
114 # endif
115 #endif
116 #if !defined PRId16
117 # ifdef INT16_MAX
118 # define PRId16 "d"
119 # endif
120 #endif
121 #if !defined PRIi16
122 # ifdef INT16_MAX
123 # define PRIi16 "i"
124 # endif
125 #endif
126 #if !defined PRIo16
127 # ifdef UINT16_MAX
128 # define PRIo16 "o"
129 # endif
130 #endif
131 #if !defined PRIu16
132 # ifdef UINT16_MAX
133 # define PRIu16 "u"
134 # endif
135 #endif
136 #if !defined PRIx16
137 # ifdef UINT16_MAX
138 # define PRIx16 "x"
139 # endif
140 #endif
141 #if !defined PRIX16
142 # ifdef UINT16_MAX
143 # define PRIX16 "X"
144 # endif
145 #endif
146 #if !defined PRId32
147 # ifdef INT32_MAX
148 # define PRId32 "d"
149 # endif
150 #endif
151 #if !defined PRIi32
152 # ifdef INT32_MAX
153 # define PRIi32 "i"
154 # endif
155 #endif
156 #if !defined PRIo32
157 # ifdef UINT32_MAX
158 # define PRIo32 "o"
159 # endif
160 #endif
161 #if !defined PRIu32
162 # ifdef UINT32_MAX
163 # define PRIu32 "u"
164 # endif
165 #endif
166 #if !defined PRIx32
167 # ifdef UINT32_MAX
168 # define PRIx32 "x"
169 # endif
170 #endif
171 #if !defined PRIX32
172 # ifdef UINT32_MAX
173 # define PRIX32 "X"
174 # endif
175 #endif
176 #ifdef INT64_MAX
177 # if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@)
178 # define _PRI64_PREFIX "l"
179 # elif defined _MSC_VER || defined __MINGW32__
180 # define _PRI64_PREFIX "I64"
181 # elif LONG_MAX >> 30 == 1
182 # define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX
183 # endif
184 # if !defined PRId64
185 # define PRId64 _PRI64_PREFIX "d"
186 # endif
187 # if !defined PRIi64
188 # define PRIi64 _PRI64_PREFIX "i"
189 # endif
190 #endif
191 #ifdef UINT64_MAX
192 # if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
193 # define _PRIu64_PREFIX "l"
194 # elif defined _MSC_VER || defined __MINGW32__
195 # define _PRIu64_PREFIX "I64"
196 # elif ULONG_MAX >> 31 == 1
197 # define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX
198 # endif
199 # if !defined PRIo64
200 # define PRIo64 _PRIu64_PREFIX "o"
201 # endif
202 # if !defined PRIu64
203 # define PRIu64 _PRIu64_PREFIX "u"
204 # endif
205 # if !defined PRIx64
206 # define PRIx64 _PRIu64_PREFIX "x"
207 # endif
208 # if !defined PRIX64
209 # define PRIX64 _PRIu64_PREFIX "X"
210 # endif
211 #endif
213 #if !defined PRIdLEAST8
214 # define PRIdLEAST8 "d"
215 #endif
216 #if !defined PRIiLEAST8
217 # define PRIiLEAST8 "i"
218 #endif
219 #if !defined PRIoLEAST8
220 # define PRIoLEAST8 "o"
221 #endif
222 #if !defined PRIuLEAST8
223 # define PRIuLEAST8 "u"
224 #endif
225 #if !defined PRIxLEAST8
226 # define PRIxLEAST8 "x"
227 #endif
228 #if !defined PRIXLEAST8
229 # define PRIXLEAST8 "X"
230 #endif
231 #if !defined PRIdLEAST16
232 # define PRIdLEAST16 "d"
233 #endif
234 #if !defined PRIiLEAST16
235 # define PRIiLEAST16 "i"
236 #endif
237 #if !defined PRIoLEAST16
238 # define PRIoLEAST16 "o"
239 #endif
240 #if !defined PRIuLEAST16
241 # define PRIuLEAST16 "u"
242 #endif
243 #if !defined PRIxLEAST16
244 # define PRIxLEAST16 "x"
245 #endif
246 #if !defined PRIXLEAST16
247 # define PRIXLEAST16 "X"
248 #endif
249 #if !defined PRIdLEAST32
250 # define PRIdLEAST32 "d"
251 #endif
252 #if !defined PRIiLEAST32
253 # define PRIiLEAST32 "i"
254 #endif
255 #if !defined PRIoLEAST32
256 # define PRIoLEAST32 "o"
257 #endif
258 #if !defined PRIuLEAST32
259 # define PRIuLEAST32 "u"
260 #endif
261 #if !defined PRIxLEAST32
262 # define PRIxLEAST32 "x"
263 #endif
264 #if !defined PRIXLEAST32
265 # define PRIXLEAST32 "X"
266 #endif
267 #ifdef INT64_MAX
268 # if !defined PRIdLEAST64
269 # define PRIdLEAST64 PRId64
270 # endif
271 # if !defined PRIiLEAST64
272 # define PRIiLEAST64 PRIi64
273 # endif
274 #endif
275 #ifdef UINT64_MAX
276 # if !defined PRIoLEAST64
277 # define PRIoLEAST64 PRIo64
278 # endif
279 # if !defined PRIuLEAST64
280 # define PRIuLEAST64 PRIu64
281 # endif
282 # if !defined PRIxLEAST64
283 # define PRIxLEAST64 PRIx64
284 # endif
285 # if !defined PRIXLEAST64
286 # define PRIXLEAST64 PRIX64
287 # endif
288 #endif
290 #if !defined PRIdFAST8
291 # if INT_FAST8_MAX > INT32_MAX
292 # define PRIdFAST8 PRId64
293 # else
294 # define PRIdFAST8 "d"
295 # endif
296 #endif
297 #if !defined PRIiFAST8
298 # if INT_FAST8_MAX > INT32_MAX
299 # define PRIiFAST8 PRIi64
300 # else
301 # define PRIiFAST8 "i"
302 # endif
303 #endif
304 #if !defined PRIoFAST8
305 # if UINT_FAST8_MAX > UINT32_MAX
306 # define PRIoFAST8 PRIo64
307 # else
308 # define PRIoFAST8 "o"
309 # endif
310 #endif
311 #if !defined PRIuFAST8
312 # if UINT_FAST8_MAX > UINT32_MAX
313 # define PRIuFAST8 PRIu64
314 # else
315 # define PRIuFAST8 "u"
316 # endif
317 #endif
318 #if !defined PRIxFAST8
319 # if UINT_FAST8_MAX > UINT32_MAX
320 # define PRIxFAST8 PRIx64
321 # else
322 # define PRIxFAST8 "x"
323 # endif
324 #endif
325 #if !defined PRIXFAST8
326 # if UINT_FAST8_MAX > UINT32_MAX
327 # define PRIXFAST8 PRIX64
328 # else
329 # define PRIXFAST8 "X"
330 # endif
331 #endif
332 #if !defined PRIdFAST16
333 # if INT_FAST16_MAX > INT32_MAX
334 # define PRIdFAST16 PRId64
335 # else
336 # define PRIdFAST16 "d"
337 # endif
338 #endif
339 #if !defined PRIiFAST16
340 # if INT_FAST16_MAX > INT32_MAX
341 # define PRIiFAST16 PRIi64
342 # else
343 # define PRIiFAST16 "i"
344 # endif
345 #endif
346 #if !defined PRIoFAST16
347 # if UINT_FAST16_MAX > UINT32_MAX
348 # define PRIoFAST16 PRIo64
349 # else
350 # define PRIoFAST16 "o"
351 # endif
352 #endif
353 #if !defined PRIuFAST16
354 # if UINT_FAST16_MAX > UINT32_MAX
355 # define PRIuFAST16 PRIu64
356 # else
357 # define PRIuFAST16 "u"
358 # endif
359 #endif
360 #if !defined PRIxFAST16
361 # if UINT_FAST16_MAX > UINT32_MAX
362 # define PRIxFAST16 PRIx64
363 # else
364 # define PRIxFAST16 "x"
365 # endif
366 #endif
367 #if !defined PRIXFAST16
368 # if UINT_FAST16_MAX > UINT32_MAX
369 # define PRIXFAST16 PRIX64
370 # else
371 # define PRIXFAST16 "X"
372 # endif
373 #endif
374 #if !defined PRIdFAST32
375 # if INT_FAST32_MAX > INT32_MAX
376 # define PRIdFAST32 PRId64
377 # else
378 # define PRIdFAST32 "d"
379 # endif
380 #endif
381 #if !defined PRIiFAST32
382 # if INT_FAST32_MAX > INT32_MAX
383 # define PRIiFAST32 PRIi64
384 # else
385 # define PRIiFAST32 "i"
386 # endif
387 #endif
388 #if !defined PRIoFAST32
389 # if UINT_FAST32_MAX > UINT32_MAX
390 # define PRIoFAST32 PRIo64
391 # else
392 # define PRIoFAST32 "o"
393 # endif
394 #endif
395 #if !defined PRIuFAST32
396 # if UINT_FAST32_MAX > UINT32_MAX
397 # define PRIuFAST32 PRIu64
398 # else
399 # define PRIuFAST32 "u"
400 # endif
401 #endif
402 #if !defined PRIxFAST32
403 # if UINT_FAST32_MAX > UINT32_MAX
404 # define PRIxFAST32 PRIx64
405 # else
406 # define PRIxFAST32 "x"
407 # endif
408 #endif
409 #if !defined PRIXFAST32
410 # if UINT_FAST32_MAX > UINT32_MAX
411 # define PRIXFAST32 PRIX64
412 # else
413 # define PRIXFAST32 "X"
414 # endif
415 #endif
416 #ifdef INT64_MAX
417 # if !defined PRIdFAST64
418 # define PRIdFAST64 PRId64
419 # endif
420 # if !defined PRIiFAST64
421 # define PRIiFAST64 PRIi64
422 # endif
423 #endif
424 #ifdef UINT64_MAX
425 # if !defined PRIoFAST64
426 # define PRIoFAST64 PRIo64
427 # endif
428 # if !defined PRIuFAST64
429 # define PRIuFAST64 PRIu64
430 # endif
431 # if !defined PRIxFAST64
432 # define PRIxFAST64 PRIx64
433 # endif
434 # if !defined PRIXFAST64
435 # define PRIXFAST64 PRIX64
436 # endif
437 #endif
439 #if !defined PRIdMAX
440 # if @INT32_MAX_LT_INTMAX_MAX@
441 # define PRIdMAX PRId64
442 # else
443 # define PRIdMAX "ld"
444 # endif
445 #endif
446 #if !defined PRIiMAX
447 # if @INT32_MAX_LT_INTMAX_MAX@
448 # define PRIiMAX PRIi64
449 # else
450 # define PRIiMAX "li"
451 # endif
452 #endif
453 #if !defined PRIoMAX
454 # if @UINT32_MAX_LT_UINTMAX_MAX@
455 # define PRIoMAX PRIo64
456 # else
457 # define PRIoMAX "lo"
458 # endif
459 #endif
460 #if !defined PRIuMAX
461 # if @UINT32_MAX_LT_UINTMAX_MAX@
462 # define PRIuMAX PRIu64
463 # else
464 # define PRIuMAX "lu"
465 # endif
466 #endif
467 #if !defined PRIxMAX
468 # if @UINT32_MAX_LT_UINTMAX_MAX@
469 # define PRIxMAX PRIx64
470 # else
471 # define PRIxMAX "lx"
472 # endif
473 #endif
474 #if !defined PRIXMAX
475 # if @UINT32_MAX_LT_UINTMAX_MAX@
476 # define PRIXMAX PRIX64
477 # else
478 # define PRIXMAX "lX"
479 # endif
480 #endif
482 #if !defined PRIdPTR
483 # ifdef INTPTR_MAX
484 # define PRIdPTR @PRIPTR_PREFIX@ "d"
485 # endif
486 #endif
487 #if !defined PRIiPTR
488 # ifdef INTPTR_MAX
489 # define PRIiPTR @PRIPTR_PREFIX@ "i"
490 # endif
491 #endif
492 #if !defined PRIoPTR
493 # ifdef UINTPTR_MAX
494 # define PRIoPTR @PRIPTR_PREFIX@ "o"
495 # endif
496 #endif
497 #if !defined PRIuPTR
498 # ifdef UINTPTR_MAX
499 # define PRIuPTR @PRIPTR_PREFIX@ "u"
500 # endif
501 #endif
502 #if !defined PRIxPTR
503 # ifdef UINTPTR_MAX
504 # define PRIxPTR @PRIPTR_PREFIX@ "x"
505 # endif
506 #endif
507 #if !defined PRIXPTR
508 # ifdef UINTPTR_MAX
509 # define PRIXPTR @PRIPTR_PREFIX@ "X"
510 # endif
511 #endif
513 #if !defined SCNd8
514 # ifdef INT8_MAX
515 # define SCNd8 "hhd"
516 # endif
517 #endif
518 #if !defined SCNi8
519 # ifdef INT8_MAX
520 # define SCNi8 "hhi"
521 # endif
522 #endif
523 #if !defined SCNo8
524 # ifdef UINT8_MAX
525 # define SCNo8 "hho"
526 # endif
527 #endif
528 #if !defined SCNu8
529 # ifdef UINT8_MAX
530 # define SCNu8 "hhu"
531 # endif
532 #endif
533 #if !defined SCNx8
534 # ifdef UINT8_MAX
535 # define SCNx8 "hhx"
536 # endif
537 #endif
538 #if !defined SCNd16
539 # ifdef INT16_MAX
540 # define SCNd16 "hd"
541 # endif
542 #endif
543 #if !defined SCNi16
544 # ifdef INT16_MAX
545 # define SCNi16 "hi"
546 # endif
547 #endif
548 #if !defined SCNo16
549 # ifdef UINT16_MAX
550 # define SCNo16 "ho"
551 # endif
552 #endif
553 #if !defined SCNu16
554 # ifdef UINT16_MAX
555 # define SCNu16 "hu"
556 # endif
557 #endif
558 #if !defined SCNx16
559 # ifdef UINT16_MAX
560 # define SCNx16 "hx"
561 # endif
562 #endif
563 #if !defined SCNd32
564 # ifdef INT32_MAX
565 # define SCNd32 "d"
566 # endif
567 #endif
568 #if !defined SCNi32
569 # ifdef INT32_MAX
570 # define SCNi32 "i"
571 # endif
572 #endif
573 #if !defined SCNo32
574 # ifdef UINT32_MAX
575 # define SCNo32 "o"
576 # endif
577 #endif
578 #if !defined SCNu32
579 # ifdef UINT32_MAX
580 # define SCNu32 "u"
581 # endif
582 #endif
583 #if !defined SCNx32
584 # ifdef UINT32_MAX
585 # define SCNx32 "x"
586 # endif
587 #endif
588 #ifdef INT64_MAX
589 # if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@)
590 # define _SCN64_PREFIX "l"
591 # elif defined _MSC_VER || defined __MINGW32__
592 # define _SCN64_PREFIX "I64"
593 # elif LONG_MAX >> 30 == 1
594 # define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX
595 # endif
596 # if !defined SCNd64
597 # define SCNd64 _SCN64_PREFIX "d"
598 # endif
599 # if !defined SCNi64
600 # define SCNi64 _SCN64_PREFIX "i"
601 # endif
602 #endif
603 #ifdef UINT64_MAX
604 # if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
605 # define _SCNu64_PREFIX "l"
606 # elif defined _MSC_VER || defined __MINGW32__
607 # define _SCNu64_PREFIX "I64"
608 # elif ULONG_MAX >> 31 == 1
609 # define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX
610 # endif
611 # if !defined SCNo64
612 # define SCNo64 _SCNu64_PREFIX "o"
613 # endif
614 # if !defined SCNu64
615 # define SCNu64 _SCNu64_PREFIX "u"
616 # endif
617 # if !defined SCNx64
618 # define SCNx64 _SCNu64_PREFIX "x"
619 # endif
620 #endif
622 #if !defined SCNdLEAST8
623 # define SCNdLEAST8 "hhd"
624 #endif
625 #if !defined SCNiLEAST8
626 # define SCNiLEAST8 "hhi"
627 #endif
628 #if !defined SCNoLEAST8
629 # define SCNoLEAST8 "hho"
630 #endif
631 #if !defined SCNuLEAST8
632 # define SCNuLEAST8 "hhu"
633 #endif
634 #if !defined SCNxLEAST8
635 # define SCNxLEAST8 "hhx"
636 #endif
637 #if !defined SCNdLEAST16
638 # define SCNdLEAST16 "hd"
639 #endif
640 #if !defined SCNiLEAST16
641 # define SCNiLEAST16 "hi"
642 #endif
643 #if !defined SCNoLEAST16
644 # define SCNoLEAST16 "ho"
645 #endif
646 #if !defined SCNuLEAST16
647 # define SCNuLEAST16 "hu"
648 #endif
649 #if !defined SCNxLEAST16
650 # define SCNxLEAST16 "hx"
651 #endif
652 #if !defined SCNdLEAST32
653 # define SCNdLEAST32 "d"
654 #endif
655 #if !defined SCNiLEAST32
656 # define SCNiLEAST32 "i"
657 #endif
658 #if !defined SCNoLEAST32
659 # define SCNoLEAST32 "o"
660 #endif
661 #if !defined SCNuLEAST32
662 # define SCNuLEAST32 "u"
663 #endif
664 #if !defined SCNxLEAST32
665 # define SCNxLEAST32 "x"
666 #endif
667 #ifdef INT64_MAX
668 # if !defined SCNdLEAST64
669 # define SCNdLEAST64 SCNd64
670 # endif
671 # if !defined SCNiLEAST64
672 # define SCNiLEAST64 SCNi64
673 # endif
674 #endif
675 #ifdef UINT64_MAX
676 # if !defined SCNoLEAST64
677 # define SCNoLEAST64 SCNo64
678 # endif
679 # if !defined SCNuLEAST64
680 # define SCNuLEAST64 SCNu64
681 # endif
682 # if !defined SCNxLEAST64
683 # define SCNxLEAST64 SCNx64
684 # endif
685 #endif
687 #if !defined SCNdFAST8
688 # if INT_FAST8_MAX > INT32_MAX
689 # define SCNdFAST8 SCNd64
690 # elif INT_FAST8_MAX == 0x7fff
691 # define SCNdFAST8 "hd"
692 # elif INT_FAST8_MAX == 0x7f
693 # define SCNdFAST8 "hhd"
694 # else
695 # define SCNdFAST8 "d"
696 # endif
697 #endif
698 #if !defined SCNiFAST8
699 # if INT_FAST8_MAX > INT32_MAX
700 # define SCNiFAST8 SCNi64
701 # elif INT_FAST8_MAX == 0x7fff
702 # define SCNiFAST8 "hi"
703 # elif INT_FAST8_MAX == 0x7f
704 # define SCNiFAST8 "hhi"
705 # else
706 # define SCNiFAST8 "i"
707 # endif
708 #endif
709 #if !defined SCNoFAST8
710 # if UINT_FAST8_MAX > UINT32_MAX
711 # define SCNoFAST8 SCNo64
712 # elif UINT_FAST8_MAX == 0xffff
713 # define SCNoFAST8 "ho"
714 # elif UINT_FAST8_MAX == 0xff
715 # define SCNoFAST8 "hho"
716 # else
717 # define SCNoFAST8 "o"
718 # endif
719 #endif
720 #if !defined SCNuFAST8
721 # if UINT_FAST8_MAX > UINT32_MAX
722 # define SCNuFAST8 SCNu64
723 # elif UINT_FAST8_MAX == 0xffff
724 # define SCNuFAST8 "hu"
725 # elif UINT_FAST8_MAX == 0xff
726 # define SCNuFAST8 "hhu"
727 # else
728 # define SCNuFAST8 "u"
729 # endif
730 #endif
731 #if !defined SCNxFAST8
732 # if UINT_FAST8_MAX > UINT32_MAX
733 # define SCNxFAST8 SCNx64
734 # elif UINT_FAST8_MAX == 0xffff
735 # define SCNxFAST8 "hx"
736 # elif UINT_FAST8_MAX == 0xff
737 # define SCNxFAST8 "hhx"
738 # else
739 # define SCNxFAST8 "x"
740 # endif
741 #endif
742 #if !defined SCNdFAST16
743 # if INT_FAST16_MAX > INT32_MAX
744 # define SCNdFAST16 SCNd64
745 # elif INT_FAST16_MAX == 0x7fff
746 # define SCNdFAST16 "hd"
747 # else
748 # define SCNdFAST16 "d"
749 # endif
750 #endif
751 #if !defined SCNiFAST16
752 # if INT_FAST16_MAX > INT32_MAX
753 # define SCNiFAST16 SCNi64
754 # elif INT_FAST16_MAX == 0x7fff
755 # define SCNiFAST16 "hi"
756 # else
757 # define SCNiFAST16 "i"
758 # endif
759 #endif
760 #if !defined SCNoFAST16
761 # if UINT_FAST16_MAX > UINT32_MAX
762 # define SCNoFAST16 SCNo64
763 # elif UINT_FAST16_MAX == 0xffff
764 # define SCNoFAST16 "ho"
765 # else
766 # define SCNoFAST16 "o"
767 # endif
768 #endif
769 #if !defined SCNuFAST16
770 # if UINT_FAST16_MAX > UINT32_MAX
771 # define SCNuFAST16 SCNu64
772 # elif UINT_FAST16_MAX == 0xffff
773 # define SCNuFAST16 "hu"
774 # else
775 # define SCNuFAST16 "u"
776 # endif
777 #endif
778 #if !defined SCNxFAST16
779 # if UINT_FAST16_MAX > UINT32_MAX
780 # define SCNxFAST16 SCNx64
781 # elif UINT_FAST16_MAX == 0xffff
782 # define SCNxFAST16 "hx"
783 # else
784 # define SCNxFAST16 "x"
785 # endif
786 #endif
787 #if !defined SCNdFAST32
788 # if INT_FAST32_MAX > INT32_MAX
789 # define SCNdFAST32 SCNd64
790 # else
791 # define SCNdFAST32 "d"
792 # endif
793 #endif
794 #if !defined SCNiFAST32
795 # if INT_FAST32_MAX > INT32_MAX
796 # define SCNiFAST32 SCNi64
797 # else
798 # define SCNiFAST32 "i"
799 # endif
800 #endif
801 #if !defined SCNoFAST32
802 # if UINT_FAST32_MAX > UINT32_MAX
803 # define SCNoFAST32 SCNo64
804 # else
805 # define SCNoFAST32 "o"
806 # endif
807 #endif
808 #if !defined SCNuFAST32
809 # if UINT_FAST32_MAX > UINT32_MAX
810 # define SCNuFAST32 SCNu64
811 # else
812 # define SCNuFAST32 "u"
813 # endif
814 #endif
815 #if !defined SCNxFAST32
816 # if UINT_FAST32_MAX > UINT32_MAX
817 # define SCNxFAST32 SCNx64
818 # else
819 # define SCNxFAST32 "x"
820 # endif
821 #endif
822 #ifdef INT64_MAX
823 # if !defined SCNdFAST64
824 # define SCNdFAST64 SCNd64
825 # endif
826 # if !defined SCNiFAST64
827 # define SCNiFAST64 SCNi64
828 # endif
829 #endif
830 #ifdef UINT64_MAX
831 # if !defined SCNoFAST64
832 # define SCNoFAST64 SCNo64
833 # endif
834 # if !defined SCNuFAST64
835 # define SCNuFAST64 SCNu64
836 # endif
837 # if !defined SCNxFAST64
838 # define SCNxFAST64 SCNx64
839 # endif
840 #endif
842 #if !defined SCNdMAX
843 # if @INT32_MAX_LT_INTMAX_MAX@
844 # define SCNdMAX SCNd64
845 # else
846 # define SCNdMAX "ld"
847 # endif
848 #endif
849 #if !defined SCNiMAX
850 # if @INT32_MAX_LT_INTMAX_MAX@
851 # define SCNiMAX SCNi64
852 # else
853 # define SCNiMAX "li"
854 # endif
855 #endif
856 #if !defined SCNoMAX
857 # if @UINT32_MAX_LT_UINTMAX_MAX@
858 # define SCNoMAX SCNo64
859 # else
860 # define SCNoMAX "lo"
861 # endif
862 #endif
863 #if !defined SCNuMAX
864 # if @UINT32_MAX_LT_UINTMAX_MAX@
865 # define SCNuMAX SCNu64
866 # else
867 # define SCNuMAX "lu"
868 # endif
869 #endif
870 #if !defined SCNxMAX
871 # if @UINT32_MAX_LT_UINTMAX_MAX@
872 # define SCNxMAX SCNx64
873 # else
874 # define SCNxMAX "lx"
875 # endif
876 #endif
878 #if !defined SCNdPTR
879 # ifdef INTPTR_MAX
880 # define SCNdPTR @PRIPTR_PREFIX@ "d"
881 # endif
882 #endif
883 #if !defined SCNiPTR
884 # ifdef INTPTR_MAX
885 # define SCNiPTR @PRIPTR_PREFIX@ "i"
886 # endif
887 #endif
888 #if !defined SCNoPTR
889 # ifdef UINTPTR_MAX
890 # define SCNoPTR @PRIPTR_PREFIX@ "o"
891 # endif
892 #endif
893 #if !defined SCNuPTR
894 # ifdef UINTPTR_MAX
895 # define SCNuPTR @PRIPTR_PREFIX@ "u"
896 # endif
897 #endif
898 #if !defined SCNxPTR
899 # ifdef UINTPTR_MAX
900 # define SCNxPTR @PRIPTR_PREFIX@ "x"
901 # endif
902 #endif
904 /* 7.8.2 Functions for greatest-width integer types */
906 #ifdef __cplusplus
907 extern "C" {
908 #endif
910 #if @GNULIB_IMAXABS@
911 # if @REPLACE_IMAXABS@
912 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
913 # undef imaxabs
914 # define imaxabs rpl_imaxabs
915 # endif
916 _GL_FUNCDECL_RPL (imaxabs, intmax_t, (intmax_t x));
917 _GL_CXXALIAS_RPL (imaxabs, intmax_t, (intmax_t x));
918 # else
919 # if !@HAVE_DECL_IMAXABS@
920 _GL_FUNCDECL_SYS (imaxabs, intmax_t, (intmax_t x));
921 # endif
922 _GL_CXXALIAS_SYS (imaxabs, intmax_t, (intmax_t x));
923 # endif
924 # if __GLIBC__ >= 2
925 _GL_CXXALIASWARN (imaxabs);
926 # endif
927 #elif defined GNULIB_POSIXCHECK
928 # undef imaxabs
929 # if HAVE_RAW_DECL_IMAXABS
930 _GL_WARN_ON_USE (imaxabs, "imaxabs is unportable - "
931 "use gnulib module imaxabs for portability");
932 # endif
933 #endif
935 #if @GNULIB_IMAXDIV@
936 # if !@HAVE_IMAXDIV_T@
937 # if !GNULIB_defined_imaxdiv_t
938 typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t;
939 # define GNULIB_defined_imaxdiv_t 1
940 # endif
941 # endif
942 # if @REPLACE_IMAXDIV@
943 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
944 # undef imaxdiv
945 # define imaxdiv rpl_imaxdiv
946 # endif
947 _GL_FUNCDECL_RPL (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom));
948 _GL_CXXALIAS_RPL (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom));
949 # else
950 # if !@HAVE_DECL_IMAXDIV@
951 _GL_FUNCDECL_SYS (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom));
952 # endif
953 _GL_CXXALIAS_SYS (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom));
954 # endif
955 # if __GLIBC__ >= 2
956 _GL_CXXALIASWARN (imaxdiv);
957 # endif
958 #elif defined GNULIB_POSIXCHECK
959 # undef imaxdiv
960 # if HAVE_RAW_DECL_IMAXDIV
961 _GL_WARN_ON_USE (imaxdiv, "imaxdiv is unportable - "
962 "use gnulib module imaxdiv for portability");
963 # endif
964 #endif
966 #if @GNULIB_STRTOIMAX@
967 # if @REPLACE_STRTOIMAX@
968 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
969 # undef strtoimax
970 # define strtoimax rpl_strtoimax
971 # endif
972 _GL_FUNCDECL_RPL (strtoimax, intmax_t,
973 (const char *restrict, char **restrict, int)
974 _GL_ARG_NONNULL ((1)));
975 _GL_CXXALIAS_RPL (strtoimax, intmax_t,
976 (const char *restrict, char **restrict, int));
977 # else
978 # if !@HAVE_DECL_STRTOIMAX@
979 # undef strtoimax
980 _GL_FUNCDECL_SYS (strtoimax, intmax_t,
981 (const char *restrict, char **restrict, int)
982 _GL_ARG_NONNULL ((1)));
983 # endif
984 _GL_CXXALIAS_SYS (strtoimax, intmax_t,
985 (const char *restrict, char **restrict, int));
986 # endif
987 _GL_CXXALIASWARN (strtoimax);
988 #elif defined GNULIB_POSIXCHECK
989 # undef strtoimax
990 # if HAVE_RAW_DECL_STRTOIMAX
991 _GL_WARN_ON_USE (strtoimax, "strtoimax is unportable - "
992 "use gnulib module strtoimax for portability");
993 # endif
994 #endif
996 #if @GNULIB_STRTOUMAX@
997 # if @REPLACE_STRTOUMAX@
998 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
999 # undef strtoumax
1000 # define strtoumax rpl_strtoumax
1001 # endif
1002 _GL_FUNCDECL_RPL (strtoumax, uintmax_t,
1003 (const char *restrict, char **restrict, int)
1004 _GL_ARG_NONNULL ((1)));
1005 _GL_CXXALIAS_RPL (strtoumax, uintmax_t,
1006 (const char *restrict, char **restrict, int));
1007 # else
1008 # if !@HAVE_DECL_STRTOUMAX@
1009 # undef strtoumax
1010 _GL_FUNCDECL_SYS (strtoumax, uintmax_t,
1011 (const char *restrict, char **restrict, int)
1012 _GL_ARG_NONNULL ((1)));
1013 # endif
1014 _GL_CXXALIAS_SYS (strtoumax, uintmax_t,
1015 (const char *restrict, char **restrict, int));
1016 # endif
1017 _GL_CXXALIASWARN (strtoumax);
1018 #elif defined GNULIB_POSIXCHECK
1019 # undef strtoumax
1020 # if HAVE_RAW_DECL_STRTOUMAX
1021 _GL_WARN_ON_USE (strtoumax, "strtoumax is unportable - "
1022 "use gnulib module strtoumax for portability");
1023 # endif
1024 #endif
1026 /* Don't bother defining or declaring wcstoimax and wcstoumax, since
1027 wide-character functions like this are hardly ever useful. */
1029 #ifdef __cplusplus
1031 #endif
1033 #endif /* !defined INTTYPES_H && !defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H */