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