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