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