]>
Commit | Line | Data |
---|---|---|
3d9156a7 | 1 | /* |
4c63d215 | 2 | * Copyright (c) 2000-2004, 2013 Apple Inc. All rights reserved. |
3d9156a7 A |
3 | * |
4 | * @APPLE_LICENSE_HEADER_START@ | |
4c63d215 A |
5 | * |
6 | * This file contains Original Code and/or Modifications of Original Code | |
7 | * as defined in and that are subject to the Apple Public Source License | |
8 | * Version 2.0 (the 'License'). You may not use this file except in | |
9 | * compliance with the License. Please obtain a copy of the License at | |
10 | * http://www.opensource.apple.com/apsl/ and read it before using this | |
11 | * file. | |
12 | * | |
13 | * The Original Code and all software distributed under the License are | |
14 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER | |
3d9156a7 A |
15 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, |
16 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | |
4c63d215 A |
17 | * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. |
18 | * Please see the License for the specific language governing rights and | |
19 | * limitations under the License. | |
20 | * | |
3d9156a7 A |
21 | * @APPLE_LICENSE_HEADER_END@ |
22 | */ | |
23 | ||
24 | /* | |
25 | * <inttypes.h> -- Standard C header, defined in ISO/IEC 9899:1999 | |
26 | * (aka "C99"), section 7.8. This defines format string conversion | |
27 | * specifiers suitable for use within arguments to fprintf and fscanf | |
28 | * and their ilk. | |
29 | */ | |
30 | ||
1f2f436a A |
31 | #if !defined(_INTTYPES_H_) |
32 | #define _INTTYPES_H_ | |
3d9156a7 | 33 | |
ad3c9f2a A |
34 | # define __PRI_8_LENGTH_MODIFIER__ "hh" |
35 | # define __PRI_64_LENGTH_MODIFIER__ "ll" | |
36 | # define __SCN_64_LENGTH_MODIFIER__ "ll" | |
3d9156a7 A |
37 | # define __PRI_MAX_LENGTH_MODIFIER__ "j" |
38 | # define __SCN_MAX_LENGTH_MODIFIER__ "j" | |
39 | ||
40 | # define PRId8 __PRI_8_LENGTH_MODIFIER__ "d" | |
41 | # define PRIi8 __PRI_8_LENGTH_MODIFIER__ "i" | |
42 | # define PRIo8 __PRI_8_LENGTH_MODIFIER__ "o" | |
43 | # define PRIu8 __PRI_8_LENGTH_MODIFIER__ "u" | |
44 | # define PRIx8 __PRI_8_LENGTH_MODIFIER__ "x" | |
45 | # define PRIX8 __PRI_8_LENGTH_MODIFIER__ "X" | |
46 | ||
47 | # define PRId16 "hd" | |
48 | # define PRIi16 "hi" | |
49 | # define PRIo16 "ho" | |
50 | # define PRIu16 "hu" | |
51 | # define PRIx16 "hx" | |
52 | # define PRIX16 "hX" | |
53 | ||
54 | # define PRId32 "d" | |
55 | # define PRIi32 "i" | |
56 | # define PRIo32 "o" | |
57 | # define PRIu32 "u" | |
58 | # define PRIx32 "x" | |
59 | # define PRIX32 "X" | |
60 | ||
61 | # define PRId64 __PRI_64_LENGTH_MODIFIER__ "d" | |
62 | # define PRIi64 __PRI_64_LENGTH_MODIFIER__ "i" | |
63 | # define PRIo64 __PRI_64_LENGTH_MODIFIER__ "o" | |
64 | # define PRIu64 __PRI_64_LENGTH_MODIFIER__ "u" | |
65 | # define PRIx64 __PRI_64_LENGTH_MODIFIER__ "x" | |
66 | # define PRIX64 __PRI_64_LENGTH_MODIFIER__ "X" | |
67 | ||
68 | # define PRIdLEAST8 PRId8 | |
69 | # define PRIiLEAST8 PRIi8 | |
70 | # define PRIoLEAST8 PRIo8 | |
71 | # define PRIuLEAST8 PRIu8 | |
72 | # define PRIxLEAST8 PRIx8 | |
73 | # define PRIXLEAST8 PRIX8 | |
74 | ||
75 | # define PRIdLEAST16 PRId16 | |
76 | # define PRIiLEAST16 PRIi16 | |
77 | # define PRIoLEAST16 PRIo16 | |
78 | # define PRIuLEAST16 PRIu16 | |
79 | # define PRIxLEAST16 PRIx16 | |
80 | # define PRIXLEAST16 PRIX16 | |
81 | ||
82 | # define PRIdLEAST32 PRId32 | |
83 | # define PRIiLEAST32 PRIi32 | |
84 | # define PRIoLEAST32 PRIo32 | |
85 | # define PRIuLEAST32 PRIu32 | |
86 | # define PRIxLEAST32 PRIx32 | |
87 | # define PRIXLEAST32 PRIX32 | |
88 | ||
89 | # define PRIdLEAST64 PRId64 | |
90 | # define PRIiLEAST64 PRIi64 | |
91 | # define PRIoLEAST64 PRIo64 | |
92 | # define PRIuLEAST64 PRIu64 | |
93 | # define PRIxLEAST64 PRIx64 | |
94 | # define PRIXLEAST64 PRIX64 | |
95 | ||
96 | # define PRIdFAST8 PRId8 | |
97 | # define PRIiFAST8 PRIi8 | |
98 | # define PRIoFAST8 PRIo8 | |
99 | # define PRIuFAST8 PRIu8 | |
100 | # define PRIxFAST8 PRIx8 | |
101 | # define PRIXFAST8 PRIX8 | |
102 | ||
103 | # define PRIdFAST16 PRId16 | |
104 | # define PRIiFAST16 PRIi16 | |
105 | # define PRIoFAST16 PRIo16 | |
106 | # define PRIuFAST16 PRIu16 | |
107 | # define PRIxFAST16 PRIx16 | |
108 | # define PRIXFAST16 PRIX16 | |
109 | ||
110 | # define PRIdFAST32 PRId32 | |
111 | # define PRIiFAST32 PRIi32 | |
112 | # define PRIoFAST32 PRIo32 | |
113 | # define PRIuFAST32 PRIu32 | |
114 | # define PRIxFAST32 PRIx32 | |
115 | # define PRIXFAST32 PRIX32 | |
116 | ||
117 | # define PRIdFAST64 PRId64 | |
118 | # define PRIiFAST64 PRIi64 | |
119 | # define PRIoFAST64 PRIo64 | |
120 | # define PRIuFAST64 PRIu64 | |
121 | # define PRIxFAST64 PRIx64 | |
122 | # define PRIXFAST64 PRIX64 | |
123 | ||
124 | /* int32_t is 'int', but intptr_t is 'long'. */ | |
125 | # define PRIdPTR "ld" | |
126 | # define PRIiPTR "li" | |
127 | # define PRIoPTR "lo" | |
128 | # define PRIuPTR "lu" | |
129 | # define PRIxPTR "lx" | |
130 | # define PRIXPTR "lX" | |
131 | ||
132 | # define PRIdMAX __PRI_MAX_LENGTH_MODIFIER__ "d" | |
133 | # define PRIiMAX __PRI_MAX_LENGTH_MODIFIER__ "i" | |
134 | # define PRIoMAX __PRI_MAX_LENGTH_MODIFIER__ "o" | |
135 | # define PRIuMAX __PRI_MAX_LENGTH_MODIFIER__ "u" | |
136 | # define PRIxMAX __PRI_MAX_LENGTH_MODIFIER__ "x" | |
137 | # define PRIXMAX __PRI_MAX_LENGTH_MODIFIER__ "X" | |
138 | ||
ad3c9f2a A |
139 | # define SCNd8 __PRI_8_LENGTH_MODIFIER__ "d" |
140 | # define SCNi8 __PRI_8_LENGTH_MODIFIER__ "i" | |
141 | # define SCNo8 __PRI_8_LENGTH_MODIFIER__ "o" | |
142 | # define SCNu8 __PRI_8_LENGTH_MODIFIER__ "u" | |
143 | # define SCNx8 __PRI_8_LENGTH_MODIFIER__ "x" | |
3d9156a7 A |
144 | |
145 | # define SCNd16 "hd" | |
146 | # define SCNi16 "hi" | |
147 | # define SCNo16 "ho" | |
148 | # define SCNu16 "hu" | |
149 | # define SCNx16 "hx" | |
150 | ||
151 | # define SCNd32 "d" | |
152 | # define SCNi32 "i" | |
153 | # define SCNo32 "o" | |
154 | # define SCNu32 "u" | |
155 | # define SCNx32 "x" | |
156 | ||
157 | # define SCNd64 __SCN_64_LENGTH_MODIFIER__ "d" | |
158 | # define SCNi64 __SCN_64_LENGTH_MODIFIER__ "i" | |
159 | # define SCNo64 __SCN_64_LENGTH_MODIFIER__ "o" | |
160 | # define SCNu64 __SCN_64_LENGTH_MODIFIER__ "u" | |
161 | # define SCNx64 __SCN_64_LENGTH_MODIFIER__ "x" | |
162 | ||
163 | # define SCNdLEAST8 SCNd8 | |
164 | # define SCNiLEAST8 SCNi8 | |
165 | # define SCNoLEAST8 SCNo8 | |
166 | # define SCNuLEAST8 SCNu8 | |
167 | # define SCNxLEAST8 SCNx8 | |
168 | ||
169 | # define SCNdLEAST16 SCNd16 | |
170 | # define SCNiLEAST16 SCNi16 | |
171 | # define SCNoLEAST16 SCNo16 | |
172 | # define SCNuLEAST16 SCNu16 | |
173 | # define SCNxLEAST16 SCNx16 | |
174 | ||
175 | # define SCNdLEAST32 SCNd32 | |
176 | # define SCNiLEAST32 SCNi32 | |
177 | # define SCNoLEAST32 SCNo32 | |
178 | # define SCNuLEAST32 SCNu32 | |
179 | # define SCNxLEAST32 SCNx32 | |
180 | ||
181 | # define SCNdLEAST64 SCNd64 | |
182 | # define SCNiLEAST64 SCNi64 | |
183 | # define SCNoLEAST64 SCNo64 | |
184 | # define SCNuLEAST64 SCNu64 | |
185 | # define SCNxLEAST64 SCNx64 | |
186 | ||
187 | # define SCNdFAST8 SCNd8 | |
188 | # define SCNiFAST8 SCNi8 | |
189 | # define SCNoFAST8 SCNo8 | |
190 | # define SCNuFAST8 SCNu8 | |
191 | # define SCNxFAST8 SCNx8 | |
192 | ||
193 | # define SCNdFAST16 SCNd16 | |
194 | # define SCNiFAST16 SCNi16 | |
195 | # define SCNoFAST16 SCNo16 | |
196 | # define SCNuFAST16 SCNu16 | |
197 | # define SCNxFAST16 SCNx16 | |
198 | ||
199 | # define SCNdFAST32 SCNd32 | |
200 | # define SCNiFAST32 SCNi32 | |
201 | # define SCNoFAST32 SCNo32 | |
202 | # define SCNuFAST32 SCNu32 | |
203 | # define SCNxFAST32 SCNx32 | |
204 | ||
205 | # define SCNdFAST64 SCNd64 | |
206 | # define SCNiFAST64 SCNi64 | |
207 | # define SCNoFAST64 SCNo64 | |
208 | # define SCNuFAST64 SCNu64 | |
209 | # define SCNxFAST64 SCNx64 | |
210 | ||
211 | # define SCNdPTR "ld" | |
212 | # define SCNiPTR "li" | |
213 | # define SCNoPTR "lo" | |
214 | # define SCNuPTR "lu" | |
215 | # define SCNxPTR "lx" | |
216 | ||
217 | # define SCNdMAX __SCN_MAX_LENGTH_MODIFIER__ "d" | |
218 | # define SCNiMAX __SCN_MAX_LENGTH_MODIFIER__ "i" | |
219 | # define SCNoMAX __SCN_MAX_LENGTH_MODIFIER__ "o" | |
220 | # define SCNuMAX __SCN_MAX_LENGTH_MODIFIER__ "u" | |
221 | # define SCNxMAX __SCN_MAX_LENGTH_MODIFIER__ "x" | |
222 | ||
4c63d215 A |
223 | #include <sys/cdefs.h> |
224 | #include <Availability.h> | |
3d9156a7 | 225 | |
4c63d215 A |
226 | #include <_types.h> |
227 | #include <sys/_types/_wchar_t.h> | |
3d9156a7 | 228 | |
4c63d215 | 229 | #include <stdint.h> |
3d9156a7 | 230 | |
4c63d215 | 231 | __BEGIN_DECLS |
3d9156a7 | 232 | |
4c63d215 A |
233 | /* 7.8.2.1 */ |
234 | __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) | |
235 | extern intmax_t | |
236 | imaxabs(intmax_t j); | |
237 | ||
238 | /* 7.8.2.2 */ | |
239 | typedef struct { | |
240 | intmax_t quot; | |
241 | intmax_t rem; | |
242 | } imaxdiv_t; | |
243 | ||
244 | __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) | |
245 | extern imaxdiv_t | |
246 | imaxdiv(intmax_t __numer, intmax_t __denom); | |
247 | ||
248 | /* 7.8.2.3 */ | |
249 | __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) | |
250 | extern intmax_t | |
251 | strtoimax(const char * __restrict __nptr, | |
252 | char ** __restrict __endptr, | |
253 | int __base); | |
254 | ||
255 | __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) | |
256 | extern uintmax_t | |
257 | strtoumax(const char * __restrict __nptr, | |
258 | char ** __restrict __endptr, | |
259 | int __base); | |
260 | ||
261 | /* 7.8.2.4 */ | |
262 | __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) | |
263 | extern intmax_t | |
264 | wcstoimax(const wchar_t * __restrict __nptr, | |
265 | wchar_t ** __restrict __endptr, | |
266 | int __base); | |
267 | ||
268 | __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) | |
269 | extern uintmax_t | |
270 | wcstoumax(const wchar_t * __restrict __nptr, | |
271 | wchar_t ** __restrict __endptr, | |
272 | int __base); | |
3d9156a7 | 273 | |
224c7076 A |
274 | /* Poison the following routines if -fshort-wchar is set */ |
275 | #if !defined(__cplusplus) && defined(__WCHAR_MAX__) && __WCHAR_MAX__ <= 0xffffU | |
276 | #pragma GCC poison wcstoimax wcstoumax | |
277 | #endif | |
278 | ||
3d9156a7 A |
279 | __END_DECLS |
280 | ||
281 | #ifdef _USE_EXTENDED_LOCALES_ | |
282 | #include <xlocale/_inttypes.h> | |
283 | #endif /* _USE_EXTENDED_LOCALES_ */ | |
284 | ||
285 | /* | |
286 | No need to #undef the __*_{8,64}_LENGTH_MODIFIER__ macros; | |
287 | in fact, you can't #undef them, because later uses of any of | |
288 | their dependents will *not* then do the intended substitution. | |
289 | Expansion of a #define like this one: | |
290 | ||
291 | #define x IDENT y | |
292 | ||
293 | uses the cpp value of IDENT at the location where x is *expanded*, | |
294 | not where it is #defined. | |
295 | */ | |
296 | ||
3d9156a7 | 297 | #endif /* !_INTTYPES_H_ */ |