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