111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*	$OpenBSD: inttypes.h,v 1.9 2006/01/15 00:47:51 millert Exp $	*/
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1997, 2005 Todd C. Miller <Todd.Miller@courtesan.com>
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission to use, copy, modify, and distribute this software for any
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * purpose with or without fee is hereby granted, provided that the above
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * copyright notice and this permission notice appear in all copies.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef	_INTTYPES_H_
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	_INTTYPES_H_
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <stdint.h>
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <sys/cdefs.h>
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __LP64__
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __PRI_64_prefix  "l"
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __PRI_PTR_prefix "l"
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __PRI_64_prefix "ll"
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __PRI_PTR_prefix
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 7.8.1 Macros for format specifiers
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Each of the following object-like macros expands to a string
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * literal containing a conversion specifier, possibly modified by
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * a prefix such as hh, h, l, or ll, suitable for use within the
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * format argument of a formatted input/output function when
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * converting the corresponding integer type.  These macro names
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * have the general form of PRI (character string literals for the
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * fprintf family) or SCN (character string literals for the fscanf
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * family), followed by the conversion specifier, followed by a
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * name corresponding to a similar typedef name.  For example,
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * PRIdFAST32 can be used in a format string to print the value of
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * an integer of type int_fast32_t.
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* fprintf macros for signed integers */
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRId8			"d"		/* int8_t */
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRId16			"d"		/* int16_t */
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRId32			"d"		/* int32_t */
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRId64			__PRI_64_prefix"d"		/* int64_t */
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdLEAST8		"d"		/* int_least8_t */
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdLEAST16		"d"		/* int_least16_t */
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdLEAST32		"d"		/* int_least32_t */
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdLEAST64		__PRI_64_prefix"d"		/* int_least64_t */
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdFAST8		"d"		/* int_fast8_t */
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdFAST16		"d"		/* int_fast16_t */
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdFAST32		"d"		/* int_fast32_t */
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdFAST64		__PRI_64_prefix"d"		/* int_fast64_t */
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdMAX			"jd"		/* intmax_t */
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdPTR			__PRI_PTR_prefix"d"		/* intptr_t */
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIi8			"i"		/* int8_t */
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIi16			"i"		/* int16_t */
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIi32			"i"		/* int32_t */
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIi64			__PRI_64_prefix"i"		/* int64_t */
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiLEAST8		"i"		/* int_least8_t */
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiLEAST16		"i"		/* int_least16_t */
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiLEAST32		"i"		/* int_least32_t */
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiLEAST64		__PRI_64_prefix"i"		/* int_least64_t */
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiFAST8		"i"		/* int_fast8_t */
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiFAST16		"i"		/* int_fast16_t */
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiFAST32		"i"		/* int_fast32_t */
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiFAST64		__PRI_64_prefix"i"		/* int_fast64_t */
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiMAX			"ji"		/* intmax_t */
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiPTR			__PRI_PTR_prefix"i"		/* intptr_t */
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* fprintf macros for unsigned integers */
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIo8			"o"		/* int8_t */
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIo16			"o"		/* int16_t */
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIo32			"o"		/* int32_t */
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIo64			__PRI_64_prefix"o"		/* int64_t */
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoLEAST8		"o"		/* int_least8_t */
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoLEAST16		"o"		/* int_least16_t */
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoLEAST32		"o"		/* int_least32_t */
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoLEAST64		__PRI_64_prefix"o"		/* int_least64_t */
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoFAST8		"o"		/* int_fast8_t */
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoFAST16		"o"		/* int_fast16_t */
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoFAST32		"o"		/* int_fast32_t */
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoFAST64		__PRI_64_prefix"o"		/* int_fast64_t */
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoMAX			"jo"		/* intmax_t */
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoPTR			__PRI_PTR_prefix"o"		/* intptr_t */
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIu8			"u"		/* uint8_t */
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIu16			"u"		/* uint16_t */
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIu32			"u"		/* uint32_t */
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIu64			__PRI_64_prefix"u"		/* uint64_t */
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuLEAST8		"u"		/* uint_least8_t */
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuLEAST16		"u"		/* uint_least16_t */
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuLEAST32		"u"		/* uint_least32_t */
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuLEAST64		__PRI_64_prefix"u"		/* uint_least64_t */
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuFAST8		"u"		/* uint_fast8_t */
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuFAST16		"u"		/* uint_fast16_t */
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuFAST32		"u"		/* uint_fast32_t */
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuFAST64		__PRI_64_prefix"u"		/* uint_fast64_t */
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuMAX			"ju"		/* uintmax_t */
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuPTR			__PRI_PTR_prefix"u"		/* uintptr_t */
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIx8			"x"		/* uint8_t */
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIx16			"x"		/* uint16_t */
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIx32			"x"		/* uint32_t */
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIx64			__PRI_64_prefix"x"		/* uint64_t */
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxLEAST8		"x"		/* uint_least8_t */
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxLEAST16		"x"		/* uint_least16_t */
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxLEAST32		"x"		/* uint_least32_t */
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxLEAST64		__PRI_64_prefix"x"		/* uint_least64_t */
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxFAST8		"x"		/* uint_fast8_t */
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxFAST16		"x"		/* uint_fast16_t */
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxFAST32		"x"		/* uint_fast32_t */
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxFAST64		__PRI_64_prefix"x"		/* uint_fast64_t */
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxMAX			"jx"		/* uintmax_t */
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxPTR			__PRI_PTR_prefix"x"		/* uintptr_t */
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIX8			"X"		/* uint8_t */
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIX16			"X"		/* uint16_t */
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIX32			"X"		/* uint32_t */
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIX64			__PRI_64_prefix"X"		/* uint64_t */
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXLEAST8		"X"		/* uint_least8_t */
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXLEAST16		"X"		/* uint_least16_t */
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXLEAST32		"X"		/* uint_least32_t */
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXLEAST64		__PRI_64_prefix"X"		/* uint_least64_t */
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXFAST8		"X"		/* uint_fast8_t */
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXFAST16		"X"		/* uint_fast16_t */
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXFAST32		"X"		/* uint_fast32_t */
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXFAST64		__PRI_64_prefix"X"		/* uint_fast64_t */
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXMAX			"jX"		/* uintmax_t */
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXPTR			__PRI_PTR_prefix"X"		/* uintptr_t */
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* fscanf macros for signed integers */
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNd8			"hhd"		/* int8_t */
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNd16			"hd"		/* int16_t */
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNd32			"d"		/* int32_t */
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNd64			__PRI_64_prefix"d"		/* int64_t */
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdLEAST8		"hhd"		/* int_least8_t */
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdLEAST16		"hd"		/* int_least16_t */
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdLEAST32		"d"		/* int_least32_t */
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdLEAST64		__PRI_64_prefix"d"		/* int_least64_t */
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdFAST8		"hhd"		/* int_fast8_t */
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdFAST16		"hd"		/* int_fast16_t */
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdFAST32		"d"		/* int_fast32_t */
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdFAST64		__PRI_64_prefix"d"		/* int_fast64_t */
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdMAX			"jd"		/* intmax_t */
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdPTR			__PRI_PTR_prefix"d"		/* intptr_t */
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNi8			"hhi"		/* int8_t */
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNi16			"hi"		/* int16_t */
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNi32			"i"		/* int32_t */
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNi64			__PRI_64_prefix"i"		/* int64_t */
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiLEAST8		"hhi"		/* int_least8_t */
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiLEAST16		"hi"		/* int_least16_t */
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiLEAST32		"i"		/* int_least32_t */
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiLEAST64		__PRI_64_prefix"i"		/* int_least64_t */
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiFAST8		"hhi"		/* int_fast8_t */
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiFAST16		"hi"		/* int_fast16_t */
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiFAST32		"i"		/* int_fast32_t */
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiFAST64		__PRI_64_prefix"i"		/* int_fast64_t */
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiMAX			"ji"		/* intmax_t */
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiPTR			__PRI_PTR_prefix"i"		/* intptr_t */
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* fscanf macros for unsigned integers */
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNo8			"hho"		/* uint8_t */
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNo16			"ho"		/* uint16_t */
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNo32			"o"		/* uint32_t */
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNo64			__PRI_64_prefix"o"		/* uint64_t */
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoLEAST8		"hho"		/* uint_least8_t */
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoLEAST16		"ho"		/* uint_least16_t */
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoLEAST32		"o"		/* uint_least32_t */
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoLEAST64		__PRI_64_prefix"o"		/* uint_least64_t */
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoFAST8		"hho"		/* uint_fast8_t */
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoFAST16		"ho"		/* uint_fast16_t */
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoFAST32		"o"		/* uint_fast32_t */
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoFAST64		__PRI_64_prefix"o"		/* uint_fast64_t */
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoMAX			"jo"		/* uintmax_t */
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoPTR			__PRI_PTR_prefix"o"		/* uintptr_t */
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNu8			"hhu"		/* uint8_t */
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNu16			"hu"		/* uint16_t */
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNu32			"u"		/* uint32_t */
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNu64			__PRI_64_prefix"u"		/* uint64_t */
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuLEAST8		"hhu"		/* uint_least8_t */
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuLEAST16		"hu"		/* uint_least16_t */
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuLEAST32		"u"		/* uint_least32_t */
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuLEAST64		__PRI_64_prefix"u"		/* uint_least64_t */
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuFAST8		"hhu"		/* uint_fast8_t */
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuFAST16		"hu"		/* uint_fast16_t */
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuFAST32		"u"		/* uint_fast32_t */
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuFAST64		__PRI_64_prefix"u"		/* uint_fast64_t */
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuMAX			"ju"		/* uintmax_t */
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuPTR			__PRI_PTR_prefix"u"		/* uintptr_t */
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNx8			"hhx"		/* uint8_t */
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNx16			"hx"		/* uint16_t */
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNx32			"x"		/* uint32_t */
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNx64			__PRI_64_prefix"x"		/* uint64_t */
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxLEAST8		"hhx"		/* uint_least8_t */
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxLEAST16		"hx"		/* uint_least16_t */
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxLEAST32		"x"		/* uint_least32_t */
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxLEAST64		__PRI_64_prefix"x"		/* uint_least64_t */
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxFAST8		"hhx"		/* uint_fast8_t */
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxFAST16		"hx"		/* uint_fast16_t */
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxFAST32		"x"		/* uint_fast32_t */
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxFAST64		__PRI_64_prefix"x"		/* uint_fast64_t */
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxMAX			"jx"		/* uintmax_t */
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxPTR			__PRI_PTR_prefix"x"		/* uintptr_t */
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct {
25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	intmax_t quot;		/* quotient */
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	intmax_t rem;		/* remainder */
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} imaxdiv_t;
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert__BEGIN_DECLS
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertintmax_t	imaxabs(intmax_t) __pure2;
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertimaxdiv_t	imaxdiv(intmax_t, intmax_t) __pure2;
25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertintmax_t	strtoimax(const char *, char **, int);
26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertuintmax_t	strtoumax(const char *, char **, int);
26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertintmax_t	wcstoimax(const wchar_t * __restrict,
26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		    wchar_t ** __restrict, int);
26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertuintmax_t	wcstoumax(const wchar_t * __restrict,
26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert		    wchar_t ** __restrict, int);
26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert__END_DECLS
26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _INTTYPES_H_ */
268