1 /**
2 * D header file for C99.
3 *
4 * $(C_HEADER_DESCRIPTION pubs.opengroup.org/onlinepubs/009695399/basedefs/_inttypes.h.html, _inttypes.h)
5 *
6 * Copyright: Copyright Sean Kelly 2005 - 2009.
7 * License: Distributed under the
8 * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0).
9 * (See accompanying file LICENSE)
10 * Authors: Sean Kelly
11 * Source: $(DRUNTIMESRC core/stdc/_inttypes.d)
12 * Standards: ISO/IEC 9899:1999 (E)
13 */
14
15 module core.stdc.inttypes;
16
17 public import core.stdc.stddef; // for wchar_t
18 public import core.stdc.stdint; // required by spec
19
20 extern (C):
21 @trusted: // Types and constants only.
22 nothrow:
23 @nogc:
24
25 ///
26 struct imaxdiv_t
27 {
28 intmax_t quot,
29 rem;
30 }
31
32 private alias immutable(char)* _cstr;
33
34 ///
35 enum _cstr PRId8 = "hhd";
36 ///
37 enum _cstr PRId16 = "hd";
38 ///
39 enum _cstr PRId32 = "ld";
40 ///
41 enum _cstr PRId64 = "lld";
42
43 ///
44 enum _cstr PRIdLEAST8 = "hhd";
45 ///
46 enum _cstr PRIdLEAST16 = "hd";
47 ///
48 enum _cstr PRIdLEAST32 = "ld";
49 ///
50 enum _cstr PRIdLEAST64 = "lld";
51
52 ///
53 enum _cstr PRIdFAST8 = "hhd";
54 ///
55 enum _cstr PRIdFAST16 = "d";
56 ///
57 enum _cstr PRIdFAST32 = "ld";
58 ///
59 enum _cstr PRIdFAST64 = "lld";
60
61 ///
62 enum _cstr PRIi8 = "hhi";
63 ///
64 enum _cstr PRIi16 = "hi";
65 ///
66 enum _cstr PRIi32 = "li";
67 ///
68 enum _cstr PRIi64 = "lli";
69
70 ///
71 enum _cstr PRIiLEAST8 = "hhi";
72 ///
73 enum _cstr PRIiLEAST16 = "hi";
74 ///
75 enum _cstr PRIiLEAST32 = "li";
76 ///
77 enum _cstr PRIiLEAST64 = "lli";
78
79 ///
80 enum _cstr PRIiFAST8 = "hhi";
81 ///
82 enum _cstr PRIiFAST16 = "i";
83 ///
84 enum _cstr PRIiFAST32 = "li";
85 ///
86 enum _cstr PRIiFAST64 = "lli";
87
88 ///
89 enum _cstr PRIo8 = "hho";
90 ///
91 enum _cstr PRIo16 = "ho";
92 ///
93 enum _cstr PRIo32 = "lo";
94 ///
95 enum _cstr PRIo64 = "llo";
96
97 ///
98 enum _cstr PRIoLEAST8 = "hho";
99 ///
100 enum _cstr PRIoLEAST16 = "ho";
101 ///
102 enum _cstr PRIoLEAST32 = "lo";
103 ///
104 enum _cstr PRIoLEAST64 = "llo";
105
106 ///
107 enum _cstr PRIoFAST8 = "hho";
108 ///
109 enum _cstr PRIoFAST16 = "o";
110 ///
111 enum _cstr PRIoFAST32 = "lo";
112 ///
113 enum _cstr PRIoFAST64 = "llo";
114
115 ///
116 enum _cstr PRIu8 = "hhu";
117 ///
118 enum _cstr PRIu16 = "hu";
119 ///
120 enum _cstr PRIu32 = "lu";
121 ///
122 enum _cstr PRIu64 = "llu";
123
124 ///
125 enum _cstr PRIuLEAST8 = "hhu";
126 ///
127 enum _cstr PRIuLEAST16 = "hu";
128 ///
129 enum _cstr PRIuLEAST32 = "lu";
130 ///
131 enum _cstr PRIuLEAST64 = "llu";
132
133 ///
134 enum _cstr PRIuFAST8 = "hhu";
135 ///
136 enum _cstr PRIuFAST16 = "u";
137 ///
138 enum _cstr PRIuFAST32 = "lu";
139 ///
140 enum _cstr PRIuFAST64 = "llu";
141
142 ///
143 enum _cstr PRIx8 = "hhx";
144 ///
145 enum _cstr PRIx16 = "hx";
146 ///
147 enum _cstr PRIx32 = "lx";
148 ///
149 enum _cstr PRIx64 = "llx";
150
151 ///
152 enum _cstr PRIxLEAST8 = "hhx";
153 ///
154 enum _cstr PRIxLEAST16 = "hx";
155 ///
156 enum _cstr PRIxLEAST32 = "lx";
157 ///
158 enum _cstr PRIxLEAST64 = "llx";
159
160 ///
161 enum _cstr PRIxFAST8 = "hhx";
162 ///
163 enum _cstr PRIxFAST16 = "x";
164 ///
165 enum _cstr PRIxFAST32 = "lx";
166 ///
167 enum _cstr PRIxFAST64 = "llx";
168
169 ///
170 enum _cstr PRIX8 = "hhX";
171 ///
172 enum _cstr PRIX16 = "hX";
173 ///
174 enum _cstr PRIX32 = "lX";
175 ///
176 enum _cstr PRIX64 = "llX";
177
178 ///
179 enum _cstr PRIXLEAST8 = "hhX";
180 ///
181 enum _cstr PRIXLEAST16 = "hX";
182 ///
183 enum _cstr PRIXLEAST32 = "lX";
184 ///
185 enum _cstr PRIXLEAST64 = "llX";
186
187 ///
188 enum _cstr PRIXFAST8 = "hhX";
189 ///
190 enum _cstr PRIXFAST16 = "X";
191 ///
192 enum _cstr PRIXFAST32 = "lX";
193 ///
194 enum _cstr PRIXFAST64 = "llX";
195
196 ///
197 enum _cstr SCNd8 = "hhd";
198 ///
199 enum _cstr SCNd16 = "hd";
200 ///
201 enum _cstr SCNd32 = "ld";
202 ///
203 enum _cstr SCNd64 = "lld";
204
205 ///
206 enum _cstr SCNdLEAST8 = "hhd";
207 ///
208 enum _cstr SCNdLEAST16 = "hd";
209 ///
210 enum _cstr SCNdLEAST32 = "ld";
211 ///
212 enum _cstr SCNdLEAST64 = "lld";
213
214 ///
215 enum _cstr SCNdFAST8 = "hhd";
216 ///
217 enum _cstr SCNdFAST16 = "d";
218 ///
219 enum _cstr SCNdFAST32 = "ld";
220 ///
221 enum _cstr SCNdFAST64 = "lld";
222
223 ///
224 enum _cstr SCNi8 = "hhd";
225 ///
226 enum _cstr SCNi16 = "hi";
227 ///
228 enum _cstr SCNi32 = "li";
229 ///
230 enum _cstr SCNi64 = "lli";
231
232 ///
233 enum _cstr SCNiLEAST8 = "hhd";
234 ///
235 enum _cstr SCNiLEAST16 = "hi";
236 ///
237 enum _cstr SCNiLEAST32 = "li";
238 ///
239 enum _cstr SCNiLEAST64 = "lli";
240
241 ///
242 enum _cstr SCNiFAST8 = "hhd";
243 ///
244 enum _cstr SCNiFAST16 = "i";
245 ///
246 enum _cstr SCNiFAST32 = "li";
247 ///
248 enum _cstr SCNiFAST64 = "lli";
249
250 ///
251 enum _cstr SCNo8 = "hhd";
252 ///
253 enum _cstr SCNo16 = "ho";
254 ///
255 enum _cstr SCNo32 = "lo";
256 ///
257 enum _cstr SCNo64 = "llo";
258
259 ///
260 enum _cstr SCNoLEAST8 = "hhd";
261 ///
262 enum _cstr SCNoLEAST16 = "ho";
263 ///
264 enum _cstr SCNoLEAST32 = "lo";
265 ///
266 enum _cstr SCNoLEAST64 = "llo";
267
268 ///
269 enum _cstr SCNoFAST8 = "hhd";
270 ///
271 enum _cstr SCNoFAST16 = "o";
272 ///
273 enum _cstr SCNoFAST32 = "lo";
274 ///
275 enum _cstr SCNoFAST64 = "llo";
276
277 ///
278 enum _cstr SCNu8 = "hhd";
279 ///
280 enum _cstr SCNu16 = "hu";
281 ///
282 enum _cstr SCNu32 = "lu";
283 ///
284 enum _cstr SCNu64 = "llu";
285
286 ///
287 enum _cstr SCNuLEAST8 = "hhd";
288 ///
289 enum _cstr SCNuLEAST16 = "hu";
290 ///
291 enum _cstr SCNuLEAST32 = "lu";
292 ///
293 enum _cstr SCNuLEAST64 = "llu";
294
295 ///
296 enum _cstr SCNuFAST8 = "hhd";
297 ///
298 enum _cstr SCNuFAST16 = "u";
299 ///
300 enum _cstr SCNuFAST32 = "lu";
301 ///
302 enum _cstr SCNuFAST64 = "llu";
303
304 ///
305 enum _cstr SCNx8 = "hhd";
306 ///
307 enum _cstr SCNx16 = "hx";
308 ///
309 enum _cstr SCNx32 = "lx";
310 ///
311 enum _cstr SCNx64 = "llx";
312
313 ///
314 enum _cstr SCNxLEAST8 = "hhd";
315 ///
316 enum _cstr SCNxLEAST16 = "hx";
317 ///
318 enum _cstr SCNxLEAST32 = "lx";
319 ///
320 enum _cstr SCNxLEAST64 = "llx";
321
322 ///
323 enum _cstr SCNxFAST8 = "hhd";
324 ///
325 enum _cstr SCNxFAST16 = "x";
326 ///
327 enum _cstr SCNxFAST32 = "lx";
328 ///
329 enum _cstr SCNxFAST64 = "llx";
330
version(D_LP64)331 version (D_LP64)
332 {
333 ///
334 enum _cstr PRIdMAX = PRId64;
335 ///
336 enum _cstr PRIiMAX = PRIi64;
337 ///
338 enum _cstr PRIoMAX = PRIo64;
339 ///
340 enum _cstr PRIuMAX = PRIu64;
341 ///
342 enum _cstr PRIxMAX = PRIx64;
343 ///
344 enum _cstr PRIXMAX = PRIX64;
345
346 ///
347 enum _cstr SCNdMAX = SCNd64;
348 ///
349 enum _cstr SCNiMAX = SCNi64;
350 ///
351 enum _cstr SCNoMAX = SCNo64;
352 ///
353 enum _cstr SCNuMAX = SCNu64;
354 ///
355 enum _cstr SCNxMAX = SCNx64;
356
357 ///
358 enum _cstr PRIdPTR = PRId64;
359 ///
360 enum _cstr PRIiPTR = PRIi64;
361 ///
362 enum _cstr PRIoPTR = PRIo64;
363 ///
364 enum _cstr PRIuPTR = PRIu64;
365 ///
366 enum _cstr PRIxPTR = PRIx64;
367 ///
368 enum _cstr PRIXPTR = PRIX64;
369
370 ///
371 enum _cstr SCNdPTR = SCNd64;
372 ///
373 enum _cstr SCNiPTR = SCNi64;
374 ///
375 enum _cstr SCNoPTR = SCNo64;
376 ///
377 enum _cstr SCNuPTR = SCNu64;
378 ///
379 enum _cstr SCNxPTR = SCNx64;
380 }
381 else
382 {
383 ///
384 enum _cstr PRIdMAX = PRId32;
385 ///
386 enum _cstr PRIiMAX = PRIi32;
387 ///
388 enum _cstr PRIoMAX = PRIo32;
389 ///
390 enum _cstr PRIuMAX = PRIu32;
391 ///
392 enum _cstr PRIxMAX = PRIx32;
393 ///
394 enum _cstr PRIXMAX = PRIX32;
395
396 ///
397 enum _cstr SCNdMAX = SCNd32;
398 ///
399 enum _cstr SCNiMAX = SCNi32;
400 ///
401 enum _cstr SCNoMAX = SCNo32;
402 ///
403 enum _cstr SCNuMAX = SCNu32;
404 ///
405 enum _cstr SCNxMAX = SCNx32;
406
407 ///
408 enum _cstr PRIdPTR = PRId32;
409 ///
410 enum _cstr PRIiPTR = PRIi32;
411 ///
412 enum _cstr PRIoPTR = PRIo32;
413 ///
414 enum _cstr PRIuPTR = PRIu32;
415 ///
416 enum _cstr PRIxPTR = PRIx32;
417 ///
418 enum _cstr PRIXPTR = PRIX32;
419
420 ///
421 enum _cstr SCNdPTR = SCNd32;
422 ///
423 enum _cstr SCNiPTR = SCNi32;
424 ///
425 enum _cstr SCNoPTR = SCNo32;
426 ///
427 enum _cstr SCNuPTR = SCNu32;
428 ///
429 enum _cstr SCNxPTR = SCNx32;
430 }
431
432 ///
433 intmax_t imaxabs(intmax_t j);
434 ///
435 imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom);
436 ///
437 intmax_t strtoimax(const scope char* nptr, char** endptr, int base);
438 ///
439 uintmax_t strtoumax(const scope char* nptr, char** endptr, int base);
440 ///
441 intmax_t wcstoimax(const scope wchar_t* nptr, wchar_t** endptr, int base);
442 ///
443 uintmax_t wcstoumax(const scope wchar_t* nptr, wchar_t** endptr, int base);
444