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