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#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS)
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 7.8.1 Macros for format specifiers
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Each of the following object-like macros expands to a string
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * literal containing a conversion specifier, possibly modified by
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * a prefix such as hh, h, l, or ll, suitable for use within the
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * format argument of a formatted input/output function when
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * converting the corresponding integer type.  These macro names
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * have the general form of PRI (character string literals for the
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * fprintf family) or SCN (character string literals for the fscanf
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * family), followed by the conversion specifier, followed by a
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * name corresponding to a similar typedef name.  For example,
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * PRIdFAST32 can be used in a format string to print the value of
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * an integer of type int_fast32_t.
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* fprintf macros for signed integers */
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRId8			"d"		/* int8_t */
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRId16			"d"		/* int16_t */
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRId32			"d"		/* int32_t */
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRId64			"lld"		/* int64_t */
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdLEAST8		"d"		/* int_least8_t */
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdLEAST16		"d"		/* int_least16_t */
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdLEAST32		"d"		/* int_least32_t */
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdLEAST64		"lld"		/* int_least64_t */
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdFAST8		"d"		/* int_fast8_t */
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdFAST16		"d"		/* int_fast16_t */
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdFAST32		"d"		/* int_fast32_t */
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdFAST64		"lld"		/* int_fast64_t */
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdMAX			"jd"		/* intmax_t */
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIdPTR			"d"		/* intptr_t */
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIi8			"i"		/* int8_t */
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIi16			"i"		/* int16_t */
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIi32			"i"		/* int32_t */
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIi64			"lli"		/* int64_t */
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiLEAST8		"i"		/* int_least8_t */
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiLEAST16		"i"		/* int_least16_t */
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiLEAST32		"i"		/* int_least32_t */
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiLEAST64		"lli"		/* int_least64_t */
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiFAST8		"i"		/* int_fast8_t */
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiFAST16		"i"		/* int_fast16_t */
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiFAST32		"i"		/* int_fast32_t */
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiFAST64		"lli"		/* int_fast64_t */
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiMAX			"ji"		/* intmax_t */
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIiPTR			"i"		/* intptr_t */
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* fprintf macros for unsigned integers */
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIo8			"o"		/* int8_t */
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIo16			"o"		/* int16_t */
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIo32			"o"		/* int32_t */
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIo64			"llo"		/* int64_t */
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoLEAST8		"o"		/* int_least8_t */
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoLEAST16		"o"		/* int_least16_t */
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoLEAST32		"o"		/* int_least32_t */
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoLEAST64		"llo"		/* int_least64_t */
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoFAST8		"o"		/* int_fast8_t */
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoFAST16		"o"		/* int_fast16_t */
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoFAST32		"o"		/* int_fast32_t */
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoFAST64		"llo"		/* int_fast64_t */
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoMAX			"jo"		/* intmax_t */
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIoPTR			"o"		/* intptr_t */
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIu8			"u"		/* uint8_t */
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIu16			"u"		/* uint16_t */
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIu32			"u"		/* uint32_t */
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIu64			"llu"		/* uint64_t */
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuLEAST8		"u"		/* uint_least8_t */
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuLEAST16		"u"		/* uint_least16_t */
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuLEAST32		"u"		/* uint_least32_t */
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuLEAST64		"llu"		/* uint_least64_t */
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuFAST8		"u"		/* uint_fast8_t */
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuFAST16		"u"		/* uint_fast16_t */
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuFAST32		"u"		/* uint_fast32_t */
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuFAST64		"llu"		/* uint_fast64_t */
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuMAX			"ju"		/* uintmax_t */
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIuPTR			"u"		/* uintptr_t */
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIx8			"x"		/* uint8_t */
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIx16			"x"		/* uint16_t */
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIx32			"x"		/* uint32_t */
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIx64			"llx"		/* uint64_t */
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxLEAST8		"x"		/* uint_least8_t */
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxLEAST16		"x"		/* uint_least16_t */
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxLEAST32		"x"		/* uint_least32_t */
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxLEAST64		"llx"		/* uint_least64_t */
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxFAST8		"x"		/* uint_fast8_t */
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxFAST16		"x"		/* uint_fast16_t */
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxFAST32		"x"		/* uint_fast32_t */
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxFAST64		"llx"		/* uint_fast64_t */
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxMAX			"jx"		/* uintmax_t */
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIxPTR			"x"		/* uintptr_t */
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIX8			"X"		/* uint8_t */
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIX16			"X"		/* uint16_t */
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIX32			"X"		/* uint32_t */
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIX64			"llX"		/* uint64_t */
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXLEAST8		"X"		/* uint_least8_t */
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXLEAST16		"X"		/* uint_least16_t */
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXLEAST32		"X"		/* uint_least32_t */
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXLEAST64		"llX"		/* uint_least64_t */
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXFAST8		"X"		/* uint_fast8_t */
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXFAST16		"X"		/* uint_fast16_t */
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXFAST32		"X"		/* uint_fast32_t */
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXFAST64		"llX"		/* uint_fast64_t */
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXMAX			"jX"		/* uintmax_t */
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	PRIXPTR			"X"		/* uintptr_t */
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* fscanf macros for signed integers */
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNd8			"hhd"		/* int8_t */
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNd16			"hd"		/* int16_t */
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNd32			"d"		/* int32_t */
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNd64			"lld"		/* int64_t */
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdLEAST8		"hhd"		/* int_least8_t */
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdLEAST16		"hd"		/* int_least16_t */
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdLEAST32		"d"		/* int_least32_t */
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdLEAST64		"lld"		/* int_least64_t */
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdFAST8		"hhd"		/* int_fast8_t */
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdFAST16		"hd"		/* int_fast16_t */
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdFAST32		"d"		/* int_fast32_t */
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdFAST64		"lld"		/* int_fast64_t */
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdMAX			"jd"		/* intmax_t */
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNdPTR			"d"		/* intptr_t */
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNi8			"hhi"		/* int8_t */
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNi16			"hi"		/* int16_t */
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNi32			"i"		/* int32_t */
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNi64			"lli"		/* int64_t */
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiLEAST8		"hhi"		/* int_least8_t */
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiLEAST16		"hi"		/* int_least16_t */
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiLEAST32		"i"		/* int_least32_t */
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiLEAST64		"lli"		/* int_least64_t */
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiFAST8		"hhi"		/* int_fast8_t */
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiFAST16		"hi"		/* int_fast16_t */
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiFAST32		"i"		/* int_fast32_t */
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiFAST64		"lli"		/* int_fast64_t */
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiMAX			"ji"		/* intmax_t */
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNiPTR			"i"		/* intptr_t */
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* fscanf macros for unsigned integers */
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNo8			"hho"		/* uint8_t */
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNo16			"ho"		/* uint16_t */
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNo32			"o"		/* uint32_t */
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNo64			"llo"		/* uint64_t */
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoLEAST8		"hho"		/* uint_least8_t */
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoLEAST16		"ho"		/* uint_least16_t */
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoLEAST32		"o"		/* uint_least32_t */
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoLEAST64		"llo"		/* uint_least64_t */
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoFAST8		"hho"		/* uint_fast8_t */
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoFAST16		"ho"		/* uint_fast16_t */
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoFAST32		"o"		/* uint_fast32_t */
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoFAST64		"llo"		/* uint_fast64_t */
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoMAX			"jo"		/* uintmax_t */
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNoPTR			"o"		/* uintptr_t */
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNu8			"hhu"		/* uint8_t */
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNu16			"hu"		/* uint16_t */
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNu32			"u"		/* uint32_t */
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNu64			"llu"		/* uint64_t */
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuLEAST8		"hhu"		/* uint_least8_t */
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuLEAST16		"hu"		/* uint_least16_t */
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuLEAST32		"u"		/* uint_least32_t */
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuLEAST64		"llu"		/* uint_least64_t */
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuFAST8		"hhu"		/* uint_fast8_t */
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuFAST16		"hu"		/* uint_fast16_t */
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuFAST32		"u"		/* uint_fast32_t */
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuFAST64		"llu"		/* uint_fast64_t */
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuMAX			"ju"		/* uintmax_t */
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNuPTR			"u"		/* uintptr_t */
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNx8			"hhx"		/* uint8_t */
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNx16			"hx"		/* uint16_t */
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNx32			"x"		/* uint32_t */
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNx64			"llx"		/* uint64_t */
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxLEAST8		"hhx"		/* uint_least8_t */
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxLEAST16		"hx"		/* uint_least16_t */
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxLEAST32		"x"		/* uint_least32_t */
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxLEAST64		"llx"		/* uint_least64_t */
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxFAST8		"hhx"		/* uint_fast8_t */
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxFAST16		"hx"		/* uint_fast16_t */
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxFAST32		"x"		/* uint_fast32_t */
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxFAST64		"llx"		/* uint_fast64_t */
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxMAX			"jx"		/* uintmax_t */
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define	SCNxPTR			"x"		/* uintptr_t */
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __cplusplus || __STDC_FORMAT_MACROS */
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct {
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	intmax_t quot;		/* quotient */
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	intmax_t rem;		/* remainder */
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} imaxdiv_t;
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert__BEGIN_DECLS
25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertintmax_t	strtoimax(const char *, char **, int);
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertuintmax_t	strtoumax(const char *, char **, int);
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertintmax_t	strntoimax(const char *nptr, char **endptr, int base, size_t n);
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertuintmax_t	strntoumax(const char *nptr, char **endptr, int base, size_t n);
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert__END_DECLS
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _INTTYPES_H_ */
260