1/* 2 * Copyright 2002-2017 Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _INTTYPES_H_ 6#define _INTTYPES_H_ 7 8 9#include <stdint.h> 10 11 12typedef struct { 13 intmax_t quot; /* quotient */ 14 intmax_t rem; /* remainder */ 15} imaxdiv_t; 16 17/* fprintf() macros for signed integers */ 18# define PRId8 "d" 19# define PRIdLEAST8 "d" 20# define PRIdFAST8 "d" 21# define PRIi8 "i" 22# define PRIiLEAST8 "i" 23# define PRIiFAST8 "i" 24 25# define PRId16 "d" 26# define PRIdLEAST16 "d" 27# define PRIdFAST16 "d" 28# define PRIi16 "i" 29# define PRIiLEAST16 "i" 30# define PRIiFAST16 "i" 31 32# define PRId32 __HAIKU_STD_PRI_PREFIX_32 "d" 33# define PRIdLEAST32 PRId32 34# define PRIdFAST32 PRId32 35# define PRIi32 __HAIKU_STD_PRI_PREFIX_32 "i" 36# define PRIiLEAST32 PRIi32 37# define PRIiFAST32 PRIi32 38 39# define PRId64 __HAIKU_STD_PRI_PREFIX_64 "d" 40# define PRIdLEAST64 PRId64 41# define PRIdFAST64 PRId64 42# define PRIi64 __HAIKU_STD_PRI_PREFIX_64 "i" 43# define PRIiLEAST64 PRIi64 44# define PRIiFAST64 PRIi64 45 46# define PRIdMAX PRId64 47# define PRIdPTR __HAIKU_PRI_PREFIX_ADDR "d" 48# define PRIiMAX PRIi64 49# define PRIiPTR __HAIKU_PRI_PREFIX_ADDR "i" 50 51/* fprintf() macros for unsigned integers */ 52# define PRIu8 "u" 53# define PRIuLEAST8 "u" 54# define PRIuFAST8 "u" 55# define PRIo8 "o" 56# define PRIoLEAST8 "o" 57# define PRIoFAST8 "o" 58# define PRIx8 "x" 59# define PRIxLEAST8 "x" 60# define PRIxFAST8 "x" 61# define PRIX8 "X" 62# define PRIXLEAST8 "X" 63# define PRIXFAST8 "X" 64 65# define PRIu16 "u" 66# define PRIuLEAST16 "u" 67# define PRIuFAST16 "u" 68# define PRIo16 "o" 69# define PRIoLEAST16 "o" 70# define PRIoFAST16 "o" 71# define PRIx16 "x" 72# define PRIxLEAST16 "x" 73# define PRIxFAST16 "x" 74# define PRIX16 "X" 75# define PRIXLEAST16 "X" 76# define PRIXFAST16 "X" 77 78# define PRIu32 __HAIKU_STD_PRI_PREFIX_32 "u" 79# define PRIuLEAST32 PRIu32 80# define PRIuFAST32 PRIu32 81# define PRIo32 __HAIKU_STD_PRI_PREFIX_32 "o" 82# define PRIoLEAST32 PRIo32 83# define PRIoFAST32 PRIo32 84# define PRIx32 __HAIKU_STD_PRI_PREFIX_32 "x" 85# define PRIxLEAST32 PRIx32 86# define PRIxFAST32 PRIx32 87# define PRIX32 __HAIKU_STD_PRI_PREFIX_32 "X" 88# define PRIXLEAST32 PRIX32 89# define PRIXFAST32 PRIX32 90 91# define PRIu64 __HAIKU_STD_PRI_PREFIX_64 "u" 92# define PRIuLEAST64 PRIu64 93# define PRIuFAST64 PRIu64 94# define PRIo64 __HAIKU_STD_PRI_PREFIX_64 "o" 95# define PRIoLEAST64 PRIo64 96# define PRIoFAST64 PRIo64 97# define PRIx64 __HAIKU_STD_PRI_PREFIX_64 "x" 98# define PRIxLEAST64 PRIx64 99# define PRIxFAST64 PRIx64 100# define PRIX64 __HAIKU_STD_PRI_PREFIX_64 "X" 101# define PRIXLEAST64 PRIX64 102# define PRIXFAST64 PRIX64 103 104# define PRIuMAX PRIu64 105# define PRIuPTR __HAIKU_PRI_PREFIX_ADDR "u" 106# define PRIoMAX PRIo64 107# define PRIoPTR __HAIKU_PRI_PREFIX_ADDR "o" 108# define PRIxMAX PRIx64 109# define PRIxPTR __HAIKU_PRI_PREFIX_ADDR "x" 110# define PRIXMAX PRIX64 111# define PRIXPTR __HAIKU_PRI_PREFIX_ADDR "X" 112 113/* fscanf() macros for signed integers */ 114# define SCNd8 "hhd" 115# define SCNdLEAST8 "hhd" 116# define SCNdFAST8 "d" 117# define SCNi8 "hhi" 118# define SCNiLEAST8 "hhi" 119# define SCNiFAST8 "i" 120 121# define SCNd16 "hd" 122# define SCNdLEAST16 "hd" 123# define SCNdFAST16 "d" 124# define SCNi16 "hi" 125# define SCNiLEAST16 "hi" 126# define SCNiFAST16 "i" 127 128# define SCNd32 __HAIKU_STD_PRI_PREFIX_32 "d" 129# define SCNdLEAST32 SCNd32 130# define SCNdFAST32 SCNd32 131# define SCNi32 __HAIKU_STD_PRI_PREFIX_32 "i" 132# define SCNiLEAST32 SCNi32 133# define SCNiFAST32 SCNi32 134 135# define SCNd64 __HAIKU_STD_PRI_PREFIX_64 "d" 136# define SCNdLEAST64 SCNd64 137# define SCNdFAST64 SCNd64 138# define SCNi64 __HAIKU_STD_PRI_PREFIX_64 "i" 139# define SCNiLEAST64 SCNi64 140# define SCNiFAST64 SCNi64 141 142# define SCNdMAX SCNd64 143# define SCNdPTR __HAIKU_PRI_PREFIX_ADDR "d" 144# define SCNiMAX SCNi64 145# define SCNiPTR __HAIKU_PRI_PREFIX_ADDR "i" 146 147/* fscanf() macros for unsigned integers */ 148# define SCNu8 "hhu" 149# define SCNuLEAST8 "hhu" 150# define SCNuFAST8 "u" 151# define SCNo8 "hho" 152# define SCNoLEAST8 "hho" 153# define SCNoFAST8 "o" 154# define SCNx8 "hhx" 155# define SCNxLEAST8 "hhx" 156# define SCNxFAST8 "x" 157 158# define SCNu16 "hu" 159# define SCNuLEAST16 "hu" 160# define SCNuFAST16 "u" 161# define SCNo16 "ho" 162# define SCNoLEAST16 "ho" 163# define SCNoFAST16 "o" 164# define SCNx16 "hx" 165# define SCNxLEAST16 "hx" 166# define SCNxFAST16 "x" 167 168# define SCNu32 __HAIKU_STD_PRI_PREFIX_32 "u" 169# define SCNuLEAST32 SCNu32 170# define SCNuFAST32 SCNu32 171# define SCNo32 __HAIKU_STD_PRI_PREFIX_32 "o" 172# define SCNoLEAST32 SCNo32 173# define SCNoFAST32 SCNo32 174# define SCNx32 __HAIKU_STD_PRI_PREFIX_32 "x" 175# define SCNxLEAST32 SCNx32 176# define SCNxFAST32 SCNx32 177 178# define SCNu64 __HAIKU_STD_PRI_PREFIX_64 "u" 179# define SCNuLEAST64 SCNu64 180# define SCNuFAST64 SCNu64 181# define SCNo64 __HAIKU_STD_PRI_PREFIX_64 "o" 182# define SCNoLEAST64 SCNo64 183# define SCNoFAST64 SCNo64 184# define SCNx64 __HAIKU_STD_PRI_PREFIX_64 "x" 185# define SCNxLEAST64 SCNx64 186# define SCNxFAST64 SCNx64 187 188# define SCNuMAX SCNu64 189# define SCNuPTR __HAIKU_PRI_PREFIX_ADDR "u" 190# define SCNoMAX SCNo64 191# define SCNoPTR __HAIKU_PRI_PREFIX_ADDR "o" 192# define SCNxMAX SCNx64 193# define SCNxPTR __HAIKU_PRI_PREFIX_ADDR "x" 194 195 196#ifdef __cplusplus 197extern "C" { 198#endif 199 200extern intmax_t imaxabs(intmax_t num); 201extern imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom); 202 203extern intmax_t strtoimax(const char *string, char **_end, int base); 204extern uintmax_t strtoumax(const char *string, char **_end, int base); 205/* extern intmax_t wcstoimax(const __wchar_t *, __wchar_t **, int); */ 206/* extern uintmax_t wcstoumax(const __wchar_t *, __wchar_t **, int); */ 207 208#ifdef __cplusplus 209} 210#endif 211 212 213#endif /* _INTTYPES_H_ */ 214