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