1951a39d68df598db08dfced8b4707755864a0492Ying Wang/* $OpenBSD: inttypes.h,v 1.9 2006/01/15 00:47:51 millert Exp $ */ 2951a39d68df598db08dfced8b4707755864a0492Ying Wang 3951a39d68df598db08dfced8b4707755864a0492Ying Wang/* 4951a39d68df598db08dfced8b4707755864a0492Ying Wang * Copyright (c) 1997, 2005 Todd C. Miller <Todd.Miller@courtesan.com> 5951a39d68df598db08dfced8b4707755864a0492Ying Wang * 6951a39d68df598db08dfced8b4707755864a0492Ying Wang * Permission to use, copy, modify, and distribute this software for any 7951a39d68df598db08dfced8b4707755864a0492Ying Wang * purpose with or without fee is hereby granted, provided that the above 8951a39d68df598db08dfced8b4707755864a0492Ying Wang * copyright notice and this permission notice appear in all copies. 9951a39d68df598db08dfced8b4707755864a0492Ying Wang * 10951a39d68df598db08dfced8b4707755864a0492Ying Wang * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11951a39d68df598db08dfced8b4707755864a0492Ying Wang * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12951a39d68df598db08dfced8b4707755864a0492Ying Wang * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13951a39d68df598db08dfced8b4707755864a0492Ying Wang * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14951a39d68df598db08dfced8b4707755864a0492Ying Wang * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15951a39d68df598db08dfced8b4707755864a0492Ying Wang * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16951a39d68df598db08dfced8b4707755864a0492Ying Wang * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 18951a39d68df598db08dfced8b4707755864a0492Ying Wang 19951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _INTTYPES_H_ 20951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _INTTYPES_H_ 21951a39d68df598db08dfced8b4707755864a0492Ying Wang 22951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <stdint.h> 23951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <sys/cdefs.h> 24951a39d68df598db08dfced8b4707755864a0492Ying Wang 25951a39d68df598db08dfced8b4707755864a0492Ying Wang#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) 26951a39d68df598db08dfced8b4707755864a0492Ying Wang/* 27951a39d68df598db08dfced8b4707755864a0492Ying Wang * 7.8.1 Macros for format specifiers 28951a39d68df598db08dfced8b4707755864a0492Ying Wang * 29951a39d68df598db08dfced8b4707755864a0492Ying Wang * Each of the following object-like macros expands to a string 30951a39d68df598db08dfced8b4707755864a0492Ying Wang * literal containing a conversion specifier, possibly modified by 31951a39d68df598db08dfced8b4707755864a0492Ying Wang * a prefix such as hh, h, l, or ll, suitable for use within the 32951a39d68df598db08dfced8b4707755864a0492Ying Wang * format argument of a formatted input/output function when 33951a39d68df598db08dfced8b4707755864a0492Ying Wang * converting the corresponding integer type. These macro names 34951a39d68df598db08dfced8b4707755864a0492Ying Wang * have the general form of PRI (character string literals for the 35951a39d68df598db08dfced8b4707755864a0492Ying Wang * fprintf family) or SCN (character string literals for the fscanf 36951a39d68df598db08dfced8b4707755864a0492Ying Wang * family), followed by the conversion specifier, followed by a 37951a39d68df598db08dfced8b4707755864a0492Ying Wang * name corresponding to a similar typedef name. For example, 38951a39d68df598db08dfced8b4707755864a0492Ying Wang * PRIdFAST32 can be used in a format string to print the value of 39951a39d68df598db08dfced8b4707755864a0492Ying Wang * an integer of type int_fast32_t. 40951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 41951a39d68df598db08dfced8b4707755864a0492Ying Wang 42951a39d68df598db08dfced8b4707755864a0492Ying Wang/* fprintf macros for signed integers */ 43951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRId8 "d" /* int8_t */ 44951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRId16 "d" /* int16_t */ 45951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRId32 "d" /* int32_t */ 46951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRId64 "lld" /* int64_t */ 47951a39d68df598db08dfced8b4707755864a0492Ying Wang 48951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIdLEAST8 "d" /* int_least8_t */ 49951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIdLEAST16 "d" /* int_least16_t */ 50951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIdLEAST32 "d" /* int_least32_t */ 51951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIdLEAST64 "lld" /* int_least64_t */ 52951a39d68df598db08dfced8b4707755864a0492Ying Wang 53951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIdFAST8 "d" /* int_fast8_t */ 54951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIdFAST16 "d" /* int_fast16_t */ 55951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIdFAST32 "d" /* int_fast32_t */ 56951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIdFAST64 "lld" /* int_fast64_t */ 57951a39d68df598db08dfced8b4707755864a0492Ying Wang 58951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIdMAX "jd" /* intmax_t */ 59951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIdPTR "ld" /* intptr_t */ 60951a39d68df598db08dfced8b4707755864a0492Ying Wang 61951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIi8 "i" /* int8_t */ 62951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIi16 "i" /* int16_t */ 63951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIi32 "i" /* int32_t */ 64951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIi64 "lli" /* int64_t */ 65951a39d68df598db08dfced8b4707755864a0492Ying Wang 66951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIiLEAST8 "i" /* int_least8_t */ 67951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIiLEAST16 "i" /* int_least16_t */ 68951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIiLEAST32 "i" /* int_least32_t */ 69951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIiLEAST64 "lli" /* int_least64_t */ 70951a39d68df598db08dfced8b4707755864a0492Ying Wang 71951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIiFAST8 "i" /* int_fast8_t */ 72951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIiFAST16 "i" /* int_fast16_t */ 73951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIiFAST32 "i" /* int_fast32_t */ 74951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIiFAST64 "lli" /* int_fast64_t */ 75951a39d68df598db08dfced8b4707755864a0492Ying Wang 76951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIiMAX "ji" /* intmax_t */ 77951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIiPTR "li" /* intptr_t */ 78951a39d68df598db08dfced8b4707755864a0492Ying Wang 79951a39d68df598db08dfced8b4707755864a0492Ying Wang/* fprintf macros for unsigned integers */ 80951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIo8 "o" /* int8_t */ 81951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIo16 "o" /* int16_t */ 82951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIo32 "o" /* int32_t */ 83951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIo64 "llo" /* int64_t */ 84951a39d68df598db08dfced8b4707755864a0492Ying Wang 85951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIoLEAST8 "o" /* int_least8_t */ 86951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIoLEAST16 "o" /* int_least16_t */ 87951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIoLEAST32 "o" /* int_least32_t */ 88951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIoLEAST64 "llo" /* int_least64_t */ 89951a39d68df598db08dfced8b4707755864a0492Ying Wang 90951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIoFAST8 "o" /* int_fast8_t */ 91951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIoFAST16 "o" /* int_fast16_t */ 92951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIoFAST32 "o" /* int_fast32_t */ 93951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIoFAST64 "llo" /* int_fast64_t */ 94951a39d68df598db08dfced8b4707755864a0492Ying Wang 95951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIoMAX "jo" /* intmax_t */ 96951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIoPTR "lo" /* intptr_t */ 97951a39d68df598db08dfced8b4707755864a0492Ying Wang 98951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIu8 "u" /* uint8_t */ 99951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIu16 "u" /* uint16_t */ 100951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIu32 "u" /* uint32_t */ 101951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIu64 "llu" /* uint64_t */ 102951a39d68df598db08dfced8b4707755864a0492Ying Wang 103951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIuLEAST8 "u" /* uint_least8_t */ 104951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIuLEAST16 "u" /* uint_least16_t */ 105951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIuLEAST32 "u" /* uint_least32_t */ 106951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIuLEAST64 "llu" /* uint_least64_t */ 107951a39d68df598db08dfced8b4707755864a0492Ying Wang 108951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIuFAST8 "u" /* uint_fast8_t */ 109951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIuFAST16 "u" /* uint_fast16_t */ 110951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIuFAST32 "u" /* uint_fast32_t */ 111951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIuFAST64 "llu" /* uint_fast64_t */ 112951a39d68df598db08dfced8b4707755864a0492Ying Wang 113951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIuMAX "ju" /* uintmax_t */ 114951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIuPTR "lu" /* uintptr_t */ 115951a39d68df598db08dfced8b4707755864a0492Ying Wang 116951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIx8 "x" /* uint8_t */ 117951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIx16 "x" /* uint16_t */ 118951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIx32 "x" /* uint32_t */ 119951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIx64 "llx" /* uint64_t */ 120951a39d68df598db08dfced8b4707755864a0492Ying Wang 121951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIxLEAST8 "x" /* uint_least8_t */ 122951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIxLEAST16 "x" /* uint_least16_t */ 123951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIxLEAST32 "x" /* uint_least32_t */ 124951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIxLEAST64 "llx" /* uint_least64_t */ 125951a39d68df598db08dfced8b4707755864a0492Ying Wang 126951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIxFAST8 "x" /* uint_fast8_t */ 127951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIxFAST16 "x" /* uint_fast16_t */ 128951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIxFAST32 "x" /* uint_fast32_t */ 129951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIxFAST64 "llx" /* uint_fast64_t */ 130951a39d68df598db08dfced8b4707755864a0492Ying Wang 131951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIxMAX "jx" /* uintmax_t */ 132951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIxPTR "lx" /* uintptr_t */ 133951a39d68df598db08dfced8b4707755864a0492Ying Wang 134951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIX8 "X" /* uint8_t */ 135951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIX16 "X" /* uint16_t */ 136951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIX32 "X" /* uint32_t */ 137951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIX64 "llX" /* uint64_t */ 138951a39d68df598db08dfced8b4707755864a0492Ying Wang 139951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIXLEAST8 "X" /* uint_least8_t */ 140951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIXLEAST16 "X" /* uint_least16_t */ 141951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIXLEAST32 "X" /* uint_least32_t */ 142951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIXLEAST64 "llX" /* uint_least64_t */ 143951a39d68df598db08dfced8b4707755864a0492Ying Wang 144951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIXFAST8 "X" /* uint_fast8_t */ 145951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIXFAST16 "X" /* uint_fast16_t */ 146951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIXFAST32 "X" /* uint_fast32_t */ 147951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIXFAST64 "llX" /* uint_fast64_t */ 148951a39d68df598db08dfced8b4707755864a0492Ying Wang 149951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIXMAX "jX" /* uintmax_t */ 150951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PRIXPTR "lX" /* uintptr_t */ 151951a39d68df598db08dfced8b4707755864a0492Ying Wang 152951a39d68df598db08dfced8b4707755864a0492Ying Wang/* fscanf macros for signed integers */ 153951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNd8 "hhd" /* int8_t */ 154951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNd16 "hd" /* int16_t */ 155951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNd32 "d" /* int32_t */ 156951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNd64 "lld" /* int64_t */ 157951a39d68df598db08dfced8b4707755864a0492Ying Wang 158951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNdLEAST8 "hhd" /* int_least8_t */ 159951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNdLEAST16 "hd" /* int_least16_t */ 160951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNdLEAST32 "d" /* int_least32_t */ 161951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNdLEAST64 "lld" /* int_least64_t */ 162951a39d68df598db08dfced8b4707755864a0492Ying Wang 163951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNdFAST8 "hhd" /* int_fast8_t */ 164951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNdFAST16 "hd" /* int_fast16_t */ 165951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNdFAST32 "d" /* int_fast32_t */ 166951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNdFAST64 "lld" /* int_fast64_t */ 167951a39d68df598db08dfced8b4707755864a0492Ying Wang 168951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNdMAX "jd" /* intmax_t */ 169951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNdPTR "ld" /* intptr_t */ 170951a39d68df598db08dfced8b4707755864a0492Ying Wang 171951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNi8 "hhi" /* int8_t */ 172951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNi16 "hi" /* int16_t */ 173951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNi32 "i" /* int32_t */ 174951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNi64 "lli" /* int64_t */ 175951a39d68df598db08dfced8b4707755864a0492Ying Wang 176951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNiLEAST8 "hhi" /* int_least8_t */ 177951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNiLEAST16 "hi" /* int_least16_t */ 178951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNiLEAST32 "i" /* int_least32_t */ 179951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNiLEAST64 "lli" /* int_least64_t */ 180951a39d68df598db08dfced8b4707755864a0492Ying Wang 181951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNiFAST8 "hhi" /* int_fast8_t */ 182951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNiFAST16 "hi" /* int_fast16_t */ 183951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNiFAST32 "i" /* int_fast32_t */ 184951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNiFAST64 "lli" /* int_fast64_t */ 185951a39d68df598db08dfced8b4707755864a0492Ying Wang 186951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNiMAX "ji" /* intmax_t */ 187951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNiPTR "li" /* intptr_t */ 188951a39d68df598db08dfced8b4707755864a0492Ying Wang 189951a39d68df598db08dfced8b4707755864a0492Ying Wang/* fscanf macros for unsigned integers */ 190951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNo8 "hho" /* uint8_t */ 191951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNo16 "ho" /* uint16_t */ 192951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNo32 "o" /* uint32_t */ 193951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNo64 "llo" /* uint64_t */ 194951a39d68df598db08dfced8b4707755864a0492Ying Wang 195951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNoLEAST8 "hho" /* uint_least8_t */ 196951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNoLEAST16 "ho" /* uint_least16_t */ 197951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNoLEAST32 "o" /* uint_least32_t */ 198951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNoLEAST64 "llo" /* uint_least64_t */ 199951a39d68df598db08dfced8b4707755864a0492Ying Wang 200951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNoFAST8 "hho" /* uint_fast8_t */ 201951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNoFAST16 "ho" /* uint_fast16_t */ 202951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNoFAST32 "o" /* uint_fast32_t */ 203951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNoFAST64 "llo" /* uint_fast64_t */ 204951a39d68df598db08dfced8b4707755864a0492Ying Wang 205951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNoMAX "jo" /* uintmax_t */ 206951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNoPTR "lo" /* uintptr_t */ 207951a39d68df598db08dfced8b4707755864a0492Ying Wang 208951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNu8 "hhu" /* uint8_t */ 209951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNu16 "hu" /* uint16_t */ 210951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNu32 "u" /* uint32_t */ 211951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNu64 "llu" /* uint64_t */ 212951a39d68df598db08dfced8b4707755864a0492Ying Wang 213951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNuLEAST8 "hhu" /* uint_least8_t */ 214951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNuLEAST16 "hu" /* uint_least16_t */ 215951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNuLEAST32 "u" /* uint_least32_t */ 216951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNuLEAST64 "llu" /* uint_least64_t */ 217951a39d68df598db08dfced8b4707755864a0492Ying Wang 218951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNuFAST8 "hhu" /* uint_fast8_t */ 219951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNuFAST16 "hu" /* uint_fast16_t */ 220951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNuFAST32 "u" /* uint_fast32_t */ 221951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNuFAST64 "llu" /* uint_fast64_t */ 222951a39d68df598db08dfced8b4707755864a0492Ying Wang 223951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNuMAX "ju" /* uintmax_t */ 224951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNuPTR "lu" /* uintptr_t */ 225951a39d68df598db08dfced8b4707755864a0492Ying Wang 226951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNx8 "hhx" /* uint8_t */ 227951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNx16 "hx" /* uint16_t */ 228951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNx32 "x" /* uint32_t */ 229951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNx64 "llx" /* uint64_t */ 230951a39d68df598db08dfced8b4707755864a0492Ying Wang 231951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNxLEAST8 "hhx" /* uint_least8_t */ 232951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNxLEAST16 "hx" /* uint_least16_t */ 233951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNxLEAST32 "x" /* uint_least32_t */ 234951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNxLEAST64 "llx" /* uint_least64_t */ 235951a39d68df598db08dfced8b4707755864a0492Ying Wang 236951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNxFAST8 "hhx" /* uint_fast8_t */ 237951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNxFAST16 "hx" /* uint_fast16_t */ 238951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNxFAST32 "x" /* uint_fast32_t */ 239951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNxFAST64 "llx" /* uint_fast64_t */ 240951a39d68df598db08dfced8b4707755864a0492Ying Wang 241951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNxMAX "jx" /* uintmax_t */ 242951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SCNxPTR "lx" /* uintptr_t */ 243951a39d68df598db08dfced8b4707755864a0492Ying Wang 244951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif /* __cplusplus || __STDC_FORMAT_MACROS */ 245951a39d68df598db08dfced8b4707755864a0492Ying Wang 246951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct { 247951a39d68df598db08dfced8b4707755864a0492Ying Wang intmax_t quot; /* quotient */ 248951a39d68df598db08dfced8b4707755864a0492Ying Wang intmax_t rem; /* remainder */ 249951a39d68df598db08dfced8b4707755864a0492Ying Wang} imaxdiv_t; 250951a39d68df598db08dfced8b4707755864a0492Ying Wang 251951a39d68df598db08dfced8b4707755864a0492Ying Wang__BEGIN_DECLS 252951a39d68df598db08dfced8b4707755864a0492Ying Wangintmax_t imaxabs(intmax_t); 253951a39d68df598db08dfced8b4707755864a0492Ying Wangimaxdiv_t imaxdiv(intmax_t, intmax_t); 254951a39d68df598db08dfced8b4707755864a0492Ying Wangintmax_t strtoimax(const char *, char **, int); 255951a39d68df598db08dfced8b4707755864a0492Ying Wanguintmax_t strtoumax(const char *, char **, int); 256951a39d68df598db08dfced8b4707755864a0492Ying Wang 257951a39d68df598db08dfced8b4707755864a0492Ying Wangintmax_t strntoimax(const char *nptr, char **endptr, int base, size_t n); 258951a39d68df598db08dfced8b4707755864a0492Ying Wanguintmax_t strntoumax(const char *nptr, char **endptr, int base, size_t n); 259951a39d68df598db08dfced8b4707755864a0492Ying Wang__END_DECLS 260951a39d68df598db08dfced8b4707755864a0492Ying Wang 261951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif /* _INTTYPES_H_ */ 262