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