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