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