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