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
15module core.stdc.inttypes;
16
17public import core.stdc.stddef; // for wchar_t
18public import core.stdc.stdint; // required by spec
19
20extern (C):
21@trusted: // Types and constants only.
22nothrow:
23@nogc:
24
25///
26struct imaxdiv_t
27{
28    intmax_t    quot,
29                rem;
30}
31
32private alias immutable(char)* _cstr;
33
34///
35enum _cstr PRId8            = "hhd";
36///
37enum _cstr PRId16           = "hd";
38///
39enum _cstr PRId32           = "ld";
40///
41enum _cstr PRId64           = "lld";
42
43///
44enum _cstr PRIdLEAST8       = "hhd";
45///
46enum _cstr PRIdLEAST16      = "hd";
47///
48enum _cstr PRIdLEAST32      = "ld";
49///
50enum _cstr PRIdLEAST64      = "lld";
51
52///
53enum _cstr PRIdFAST8        = "hhd";
54///
55enum _cstr PRIdFAST16       = "d";
56///
57enum _cstr PRIdFAST32       = "ld";
58///
59enum _cstr PRIdFAST64       = "lld";
60
61///
62enum _cstr PRIi8            = "hhi";
63///
64enum _cstr PRIi16           = "hi";
65///
66enum _cstr PRIi32           = "li";
67///
68enum _cstr PRIi64           = "lli";
69
70///
71enum _cstr PRIiLEAST8       = "hhi";
72///
73enum _cstr PRIiLEAST16      = "hi";
74///
75enum _cstr PRIiLEAST32      = "li";
76///
77enum _cstr PRIiLEAST64      = "lli";
78
79///
80enum _cstr PRIiFAST8        = "hhi";
81///
82enum _cstr PRIiFAST16       = "i";
83///
84enum _cstr PRIiFAST32       = "li";
85///
86enum _cstr PRIiFAST64       = "lli";
87
88///
89enum _cstr PRIo8            = "hho";
90///
91enum _cstr PRIo16           = "ho";
92///
93enum _cstr PRIo32           = "lo";
94///
95enum _cstr PRIo64           = "llo";
96
97///
98enum _cstr PRIoLEAST8       = "hho";
99///
100enum _cstr PRIoLEAST16      = "ho";
101///
102enum _cstr PRIoLEAST32      = "lo";
103///
104enum _cstr PRIoLEAST64      = "llo";
105
106///
107enum _cstr PRIoFAST8        = "hho";
108///
109enum _cstr PRIoFAST16       = "o";
110///
111enum _cstr PRIoFAST32       = "lo";
112///
113enum _cstr PRIoFAST64       = "llo";
114
115///
116enum _cstr PRIu8            = "hhu";
117///
118enum _cstr PRIu16           = "hu";
119///
120enum _cstr PRIu32           = "lu";
121///
122enum _cstr PRIu64           = "llu";
123
124///
125enum _cstr PRIuLEAST8       = "hhu";
126///
127enum _cstr PRIuLEAST16      = "hu";
128///
129enum _cstr PRIuLEAST32      = "lu";
130///
131enum _cstr PRIuLEAST64      = "llu";
132
133///
134enum _cstr PRIuFAST8        = "hhu";
135///
136enum _cstr PRIuFAST16       = "u";
137///
138enum _cstr PRIuFAST32       = "lu";
139///
140enum _cstr PRIuFAST64       = "llu";
141
142///
143enum _cstr PRIx8            = "hhx";
144///
145enum _cstr PRIx16           = "hx";
146///
147enum _cstr PRIx32           = "lx";
148///
149enum _cstr PRIx64           = "llx";
150
151///
152enum _cstr PRIxLEAST8       = "hhx";
153///
154enum _cstr PRIxLEAST16      = "hx";
155///
156enum _cstr PRIxLEAST32      = "lx";
157///
158enum _cstr PRIxLEAST64      = "llx";
159
160///
161enum _cstr PRIxFAST8        = "hhx";
162///
163enum _cstr PRIxFAST16       = "x";
164///
165enum _cstr PRIxFAST32       = "lx";
166///
167enum _cstr PRIxFAST64       = "llx";
168
169///
170enum _cstr PRIX8            = "hhX";
171///
172enum _cstr PRIX16           = "hX";
173///
174enum _cstr PRIX32           = "lX";
175///
176enum _cstr PRIX64           = "llX";
177
178///
179enum _cstr PRIXLEAST8       = "hhX";
180///
181enum _cstr PRIXLEAST16      = "hX";
182///
183enum _cstr PRIXLEAST32      = "lX";
184///
185enum _cstr PRIXLEAST64      = "llX";
186
187///
188enum _cstr PRIXFAST8        = "hhX";
189///
190enum _cstr PRIXFAST16       = "X";
191///
192enum _cstr PRIXFAST32       = "lX";
193///
194enum _cstr PRIXFAST64       = "llX";
195
196///
197enum _cstr SCNd8            = "hhd";
198///
199enum _cstr SCNd16           = "hd";
200///
201enum _cstr SCNd32           = "ld";
202///
203enum _cstr SCNd64           = "lld";
204
205///
206enum _cstr SCNdLEAST8       = "hhd";
207///
208enum _cstr SCNdLEAST16      = "hd";
209///
210enum _cstr SCNdLEAST32      = "ld";
211///
212enum _cstr SCNdLEAST64      = "lld";
213
214///
215enum _cstr SCNdFAST8        = "hhd";
216///
217enum _cstr SCNdFAST16       = "d";
218///
219enum _cstr SCNdFAST32       = "ld";
220///
221enum _cstr SCNdFAST64       = "lld";
222
223///
224enum _cstr SCNi8            = "hhd";
225///
226enum _cstr SCNi16           = "hi";
227///
228enum _cstr SCNi32           = "li";
229///
230enum _cstr SCNi64           = "lli";
231
232///
233enum _cstr SCNiLEAST8       = "hhd";
234///
235enum _cstr SCNiLEAST16      = "hi";
236///
237enum _cstr SCNiLEAST32      = "li";
238///
239enum _cstr SCNiLEAST64      = "lli";
240
241///
242enum _cstr SCNiFAST8        = "hhd";
243///
244enum _cstr SCNiFAST16       = "i";
245///
246enum _cstr SCNiFAST32       = "li";
247///
248enum _cstr SCNiFAST64       = "lli";
249
250///
251enum _cstr SCNo8            = "hhd";
252///
253enum _cstr SCNo16           = "ho";
254///
255enum _cstr SCNo32           = "lo";
256///
257enum _cstr SCNo64           = "llo";
258
259///
260enum _cstr SCNoLEAST8       = "hhd";
261///
262enum _cstr SCNoLEAST16      = "ho";
263///
264enum _cstr SCNoLEAST32      = "lo";
265///
266enum _cstr SCNoLEAST64      = "llo";
267
268///
269enum _cstr SCNoFAST8        = "hhd";
270///
271enum _cstr SCNoFAST16       = "o";
272///
273enum _cstr SCNoFAST32       = "lo";
274///
275enum _cstr SCNoFAST64       = "llo";
276
277///
278enum _cstr SCNu8            = "hhd";
279///
280enum _cstr SCNu16           = "hu";
281///
282enum _cstr SCNu32           = "lu";
283///
284enum _cstr SCNu64           = "llu";
285
286///
287enum _cstr SCNuLEAST8       = "hhd";
288///
289enum _cstr SCNuLEAST16      = "hu";
290///
291enum _cstr SCNuLEAST32      = "lu";
292///
293enum _cstr SCNuLEAST64      = "llu";
294
295///
296enum _cstr SCNuFAST8        = "hhd";
297///
298enum _cstr SCNuFAST16       = "u";
299///
300enum _cstr SCNuFAST32       = "lu";
301///
302enum _cstr SCNuFAST64       = "llu";
303
304///
305enum _cstr SCNx8            = "hhd";
306///
307enum _cstr SCNx16           = "hx";
308///
309enum _cstr SCNx32           = "lx";
310///
311enum _cstr SCNx64           = "llx";
312
313///
314enum _cstr SCNxLEAST8       = "hhd";
315///
316enum _cstr SCNxLEAST16      = "hx";
317///
318enum _cstr SCNxLEAST32      = "lx";
319///
320enum _cstr SCNxLEAST64      = "llx";
321
322///
323enum _cstr SCNxFAST8        = "hhd";
324///
325enum _cstr SCNxFAST16       = "x";
326///
327enum _cstr SCNxFAST32       = "lx";
328///
329enum _cstr SCNxFAST64       = "llx";
330
331version (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}
381else
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///
433intmax_t  imaxabs(intmax_t j);
434///
435imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom);
436///
437intmax_t  strtoimax(const scope char* nptr, char** endptr, int base);
438///
439uintmax_t strtoumax(const scope char* nptr, char** endptr, int base);
440///
441intmax_t  wcstoimax(const scope wchar_t* nptr, wchar_t** endptr, int base);
442///
443uintmax_t wcstoumax(const scope wchar_t* nptr, wchar_t** endptr, int base);
444