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