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