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