11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*	$OpenBSD: inttypes.h,v 1.9 2006/01/15 00:47:51 millert Exp $	*/
21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Copyright (c) 1997, 2005 Todd C. Miller <Todd.Miller@courtesan.com>
51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *
61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Permission to use, copy, modify, and distribute this software for any
71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * purpose with or without fee is hereby granted, provided that the above
81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * copyright notice and this permission notice appear in all copies.
91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *
101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef	_INTTYPES_H_
201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	_INTTYPES_H_
211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <stdint.h>
231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/cdefs.h>
241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
25a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#ifdef __LP64__
26a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define __PRI_64_prefix  "l"
27a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define __PRI_PTR_prefix "l"
28a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#else
29a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define __PRI_64_prefix "ll"
30a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define __PRI_PTR_prefix
31a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#endif
32eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define __PRI_FAST_prefix __PRI_PTR_prefix
33a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes
341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 7.8.1 Macros for format specifiers
361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *
371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Each of the following object-like macros expands to a string
381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * literal containing a conversion specifier, possibly modified by
391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * a prefix such as hh, h, l, or ll, suitable for use within the
401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * format argument of a formatted input/output function when
411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * converting the corresponding integer type.  These macro names
421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * have the general form of PRI (character string literals for the
431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * fprintf family) or SCN (character string literals for the fscanf
441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * family), followed by the conversion specifier, followed by a
451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * name corresponding to a similar typedef name.  For example,
461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * PRIdFAST32 can be used in a format string to print the value of
471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * an integer of type int_fast32_t.
481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* fprintf macros for signed integers */
511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRId8			"d"		/* int8_t */
521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRId16			"d"		/* int16_t */
531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRId32			"d"		/* int32_t */
54a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRId64			__PRI_64_prefix"d"		/* int64_t */
551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIdLEAST8		"d"		/* int_least8_t */
571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIdLEAST16		"d"		/* int_least16_t */
581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIdLEAST32		"d"		/* int_least32_t */
59a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIdLEAST64		__PRI_64_prefix"d"		/* int_least64_t */
601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIdFAST8		"d"		/* int_fast8_t */
62eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	PRIdFAST16		__PRI_FAST_prefix"d"	/* int_fast16_t */
63eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	PRIdFAST32		__PRI_FAST_prefix"d"	/* int_fast32_t */
64a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIdFAST64		__PRI_64_prefix"d"		/* int_fast64_t */
651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIdMAX			"jd"		/* intmax_t */
67a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIdPTR			__PRI_PTR_prefix"d"		/* intptr_t */
681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIi8			"i"		/* int8_t */
701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIi16			"i"		/* int16_t */
711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIi32			"i"		/* int32_t */
72a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIi64			__PRI_64_prefix"i"		/* int64_t */
731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIiLEAST8		"i"		/* int_least8_t */
751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIiLEAST16		"i"		/* int_least16_t */
761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIiLEAST32		"i"		/* int_least32_t */
77a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIiLEAST64		__PRI_64_prefix"i"		/* int_least64_t */
781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIiFAST8		"i"		/* int_fast8_t */
80eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	PRIiFAST16		__PRI_FAST_prefix"i"	/* int_fast16_t */
81eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	PRIiFAST32		__PRI_FAST_prefix"i"	/* int_fast32_t */
82a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIiFAST64		__PRI_64_prefix"i"		/* int_fast64_t */
831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIiMAX			"ji"		/* intmax_t */
85a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIiPTR			__PRI_PTR_prefix"i"		/* intptr_t */
861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* fprintf macros for unsigned integers */
881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIo8			"o"		/* int8_t */
891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIo16			"o"		/* int16_t */
901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIo32			"o"		/* int32_t */
91a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIo64			__PRI_64_prefix"o"		/* int64_t */
921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIoLEAST8		"o"		/* int_least8_t */
941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIoLEAST16		"o"		/* int_least16_t */
951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIoLEAST32		"o"		/* int_least32_t */
96a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIoLEAST64		__PRI_64_prefix"o"		/* int_least64_t */
971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIoFAST8		"o"		/* int_fast8_t */
99eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	PRIoFAST16		__PRI_FAST_prefix"o"	/* int_fast16_t */
100eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	PRIoFAST32		__PRI_FAST_prefix"o"	/* int_fast32_t */
101a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIoFAST64		__PRI_64_prefix"o"		/* int_fast64_t */
1021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIoMAX			"jo"		/* intmax_t */
104a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIoPTR			__PRI_PTR_prefix"o"		/* intptr_t */
1051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIu8			"u"		/* uint8_t */
1071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIu16			"u"		/* uint16_t */
1081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIu32			"u"		/* uint32_t */
109a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIu64			__PRI_64_prefix"u"		/* uint64_t */
1101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIuLEAST8		"u"		/* uint_least8_t */
1121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIuLEAST16		"u"		/* uint_least16_t */
1131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIuLEAST32		"u"		/* uint_least32_t */
114a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIuLEAST64		__PRI_64_prefix"u"		/* uint_least64_t */
1151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIuFAST8		"u"		/* uint_fast8_t */
117eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	PRIuFAST16		__PRI_FAST_prefix"u"	/* uint_fast16_t */
118eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	PRIuFAST32		__PRI_FAST_prefix"u"	/* uint_fast32_t */
119a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIuFAST64		__PRI_64_prefix"u"		/* uint_fast64_t */
1201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIuMAX			"ju"		/* uintmax_t */
122a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIuPTR			__PRI_PTR_prefix"u"		/* uintptr_t */
1231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIx8			"x"		/* uint8_t */
1251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIx16			"x"		/* uint16_t */
1261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIx32			"x"		/* uint32_t */
127a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIx64			__PRI_64_prefix"x"		/* uint64_t */
1281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIxLEAST8		"x"		/* uint_least8_t */
1301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIxLEAST16		"x"		/* uint_least16_t */
1311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIxLEAST32		"x"		/* uint_least32_t */
132a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIxLEAST64		__PRI_64_prefix"x"		/* uint_least64_t */
1331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIxFAST8		"x"		/* uint_fast8_t */
135eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	PRIxFAST16		__PRI_FAST_prefix"x"	/* uint_fast16_t */
136eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	PRIxFAST32		__PRI_FAST_prefix"x"	/* uint_fast32_t */
137a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIxFAST64		__PRI_64_prefix"x"		/* uint_fast64_t */
1381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIxMAX			"jx"		/* uintmax_t */
140a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIxPTR			__PRI_PTR_prefix"x"		/* uintptr_t */
1411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIX8			"X"		/* uint8_t */
1431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIX16			"X"		/* uint16_t */
1441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIX32			"X"		/* uint32_t */
145a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIX64			__PRI_64_prefix"X"		/* uint64_t */
1461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIXLEAST8		"X"		/* uint_least8_t */
1481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIXLEAST16		"X"		/* uint_least16_t */
1491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIXLEAST32		"X"		/* uint_least32_t */
150a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIXLEAST64		__PRI_64_prefix"X"		/* uint_least64_t */
1511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIXFAST8		"X"		/* uint_fast8_t */
153eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	PRIXFAST16		__PRI_FAST_prefix"X"	/* uint_fast16_t */
154eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	PRIXFAST32		__PRI_FAST_prefix"X"	/* uint_fast32_t */
155a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIXFAST64		__PRI_64_prefix"X"		/* uint_fast64_t */
1561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	PRIXMAX			"jX"		/* uintmax_t */
158a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	PRIXPTR			__PRI_PTR_prefix"X"		/* uintptr_t */
1591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* fscanf macros for signed integers */
1611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNd8			"hhd"		/* int8_t */
1621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNd16			"hd"		/* int16_t */
1631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNd32			"d"		/* int32_t */
164a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNd64			__PRI_64_prefix"d"		/* int64_t */
1651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNdLEAST8		"hhd"		/* int_least8_t */
1671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNdLEAST16		"hd"		/* int_least16_t */
1681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNdLEAST32		"d"		/* int_least32_t */
169a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNdLEAST64		__PRI_64_prefix"d"		/* int_least64_t */
1701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNdFAST8		"hhd"		/* int_fast8_t */
172eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	SCNdFAST16		__PRI_FAST_prefix"d"	/* int_fast16_t */
173eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	SCNdFAST32		__PRI_FAST_prefix"d"	/* int_fast32_t */
174a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNdFAST64		__PRI_64_prefix"d"		/* int_fast64_t */
1751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNdMAX			"jd"		/* intmax_t */
177a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNdPTR			__PRI_PTR_prefix"d"		/* intptr_t */
1781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNi8			"hhi"		/* int8_t */
1801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNi16			"hi"		/* int16_t */
1811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNi32			"i"		/* int32_t */
182a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNi64			__PRI_64_prefix"i"		/* int64_t */
1831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNiLEAST8		"hhi"		/* int_least8_t */
1851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNiLEAST16		"hi"		/* int_least16_t */
1861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNiLEAST32		"i"		/* int_least32_t */
187a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNiLEAST64		__PRI_64_prefix"i"		/* int_least64_t */
1881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNiFAST8		"hhi"		/* int_fast8_t */
190eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	SCNiFAST16		__PRI_FAST_prefix"i"	/* int_fast16_t */
191eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	SCNiFAST32		__PRI_FAST_prefix"i"	/* int_fast32_t */
192a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNiFAST64		__PRI_64_prefix"i"		/* int_fast64_t */
1931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNiMAX			"ji"		/* intmax_t */
195a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNiPTR			__PRI_PTR_prefix"i"		/* intptr_t */
1961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* fscanf macros for unsigned integers */
1981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNo8			"hho"		/* uint8_t */
1991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNo16			"ho"		/* uint16_t */
2001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNo32			"o"		/* uint32_t */
201a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNo64			__PRI_64_prefix"o"		/* uint64_t */
2021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNoLEAST8		"hho"		/* uint_least8_t */
2041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNoLEAST16		"ho"		/* uint_least16_t */
2051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNoLEAST32		"o"		/* uint_least32_t */
206a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNoLEAST64		__PRI_64_prefix"o"		/* uint_least64_t */
2071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNoFAST8		"hho"		/* uint_fast8_t */
209eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	SCNoFAST16		__PRI_FAST_prefix"o"	/* uint_fast16_t */
210eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	SCNoFAST32		__PRI_FAST_prefix"o"	/* uint_fast32_t */
211a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNoFAST64		__PRI_64_prefix"o"		/* uint_fast64_t */
2121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNoMAX			"jo"		/* uintmax_t */
214a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNoPTR			__PRI_PTR_prefix"o"		/* uintptr_t */
2151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNu8			"hhu"		/* uint8_t */
2171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNu16			"hu"		/* uint16_t */
2181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNu32			"u"		/* uint32_t */
219a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNu64			__PRI_64_prefix"u"		/* uint64_t */
2201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNuLEAST8		"hhu"		/* uint_least8_t */
2221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNuLEAST16		"hu"		/* uint_least16_t */
2231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNuLEAST32		"u"		/* uint_least32_t */
224a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNuLEAST64		__PRI_64_prefix"u"		/* uint_least64_t */
2251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNuFAST8		"hhu"		/* uint_fast8_t */
227eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	SCNuFAST16		__PRI_FAST_prefix"u"	/* uint_fast16_t */
228eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	SCNuFAST32		__PRI_FAST_prefix"u"		/* uint_fast32_t */
229a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNuFAST64		__PRI_64_prefix"u"		/* uint_fast64_t */
2301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNuMAX			"ju"		/* uintmax_t */
232a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNuPTR			__PRI_PTR_prefix"u"		/* uintptr_t */
2331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNx8			"hhx"		/* uint8_t */
2351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNx16			"hx"		/* uint16_t */
2361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNx32			"x"		/* uint32_t */
237a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNx64			__PRI_64_prefix"x"		/* uint64_t */
2381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNxLEAST8		"hhx"		/* uint_least8_t */
2401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNxLEAST16		"hx"		/* uint_least16_t */
2411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNxLEAST32		"x"		/* uint_least32_t */
242a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNxLEAST64		__PRI_64_prefix"x"		/* uint_least64_t */
2431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNxFAST8		"hhx"		/* uint_fast8_t */
245eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	SCNxFAST16		__PRI_FAST_prefix"x"	/* uint_fast16_t */
246eb596533e3fbe6a17b65ea0228946499c8da6b84Xiaolei Yu#define	SCNxFAST32		__PRI_FAST_prefix"x"	/* uint_fast32_t */
247a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNxFAST64		__PRI_64_prefix"x"		/* uint_fast64_t */
2481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	SCNxMAX			"jx"		/* uintmax_t */
250a9a02acc9f5d7b13c742172fe1763840eecd8578Elliott Hughes#define	SCNxPTR			__PRI_PTR_prefix"x"		/* uintptr_t */
2511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct {
2531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project	intmax_t quot;		/* quotient */
2541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project	intmax_t rem;		/* remainder */
2551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} imaxdiv_t;
2561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project__BEGIN_DECLS
25895fa061678400315ee757758bf5f9146176d47a0Elliott Hughesintmax_t imaxabs(intmax_t) __attribute_const__ __INTRODUCED_IN(19);
25995fa061678400315ee757758bf5f9146176d47a0Elliott Hughesimaxdiv_t imaxdiv(intmax_t, intmax_t) __attribute_const__ __INTRODUCED_IN(19);
2601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectintmax_t	strtoimax(const char *, char **, int);
2611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectuintmax_t	strtoumax(const char *, char **, int);
26214adff1cfa06a3d4d3281a9bf7848b556d84c20dJosh Gaointmax_t wcstoimax(const wchar_t* __restrict, wchar_t** __restrict, int) __INTRODUCED_IN(21);
26314adff1cfa06a3d4d3281a9bf7848b556d84c20dJosh Gaouintmax_t wcstoumax(const wchar_t* __restrict, wchar_t** __restrict, int) __INTRODUCED_IN(21);
2641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project__END_DECLS
2651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* _INTTYPES_H_ */
267