Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4349 Serge 1
/*
2
 * Copyright (c) 2004, 2005 by
3
 * Ralf Corsepius, Ulm/Germany. All rights reserved.
4
 *
5
 * Permission to use, copy, modify, and distribute this software
6
 * is freely granted, provided that this notice is preserved.
7
 */
8
 
9
/**
10
 *  @file  inttypes.h
11
 */
12
 
13
#ifndef _INTTYPES_H
14
#define _INTTYPES_H
15
 
16
#include 
17
#define __need_wchar_t
18
#include 
19
 
20
#define __STRINGIFY(a) #a
21
 
22
/* 8-bit types */
23
#define __PRI8(x) __STRINGIFY(x)
24
#define __SCN8(x) __STRINGIFY(hh##x)
25
 
26
 
27
#define PRId8		__PRI8(d)
28
#define PRIi8		__PRI8(i)
29
#define PRIo8		__PRI8(o)
30
#define PRIu8		__PRI8(u)
31
#define PRIx8		__PRI8(x)
32
#define PRIX8		__PRI8(X)
33
 
34
#define SCNd8		__SCN8(d)
35
#define SCNi8		__SCN8(i)
36
#define SCNo8		__SCN8(o)
37
#define SCNu8		__SCN8(u)
38
#define SCNx8		__SCN8(x)
39
 
40
 
41
#define PRIdLEAST8	__PRI8(d)
42
#define PRIiLEAST8	__PRI8(i)
43
#define PRIoLEAST8	__PRI8(o)
44
#define PRIuLEAST8	__PRI8(u)
45
#define PRIxLEAST8	__PRI8(x)
46
#define PRIXLEAST8	__PRI8(X)
47
 
48
#define SCNdLEAST8	__SCN8(d)
49
#define SCNiLEAST8	__SCN8(i)
50
#define SCNoLEAST8	__SCN8(o)
51
#define SCNuLEAST8	__SCN8(u)
52
#define SCNxLEAST8	__SCN8(x)
53
 
54
 
55
#define PRIdFAST8	__PRI8(d)
56
#define PRIiFAST8	__PRI8(i)
57
#define PRIoFAST8	__PRI8(o)
58
#define PRIuFAST8	__PRI8(u)
59
#define PRIxFAST8	__PRI8(x)
60
#define PRIXFAST8	__PRI8(X)
61
 
62
#define SCNdFAST8	__SCN8(d)
63
#define SCNiFAST8	__SCN8(i)
64
#define SCNoFAST8	__SCN8(o)
65
#define SCNuFAST8	__SCN8(u)
66
#define SCNxFAST8	__SCN8(x)
67
 
68
/* 16-bit types */
69
#define __PRI16(x) __STRINGIFY(x)
70
#define __SCN16(x) __STRINGIFY(h##x)
71
 
72
 
73
#define PRId16		__PRI16(d)
74
#define PRIi16		__PRI16(i)
75
#define PRIo16		__PRI16(o)
76
#define PRIu16		__PRI16(u)
77
#define PRIx16		__PRI16(x)
78
#define PRIX16		__PRI16(X)
79
 
80
#define SCNd16		__SCN16(d)
81
#define SCNi16		__SCN16(i)
82
#define SCNo16		__SCN16(o)
83
#define SCNu16		__SCN16(u)
84
#define SCNx16		__SCN16(x)
85
 
86
 
87
#define PRIdLEAST16	__PRI16(d)
88
#define PRIiLEAST16	__PRI16(i)
89
#define PRIoLEAST16	__PRI16(o)
90
#define PRIuLEAST16	__PRI16(u)
91
#define PRIxLEAST16	__PRI16(x)
92
#define PRIXLEAST16	__PRI16(X)
93
 
94
#define SCNdLEAST16	__SCN16(d)
95
#define SCNiLEAST16	__SCN16(i)
96
#define SCNoLEAST16	__SCN16(o)
97
#define SCNuLEAST16	__SCN16(u)
98
#define SCNxLEAST16	__SCN16(x)
99
 
100
 
101
#define PRIdFAST16	__PRI16(d)
102
#define PRIiFAST16	__PRI16(i)
103
#define PRIoFAST16	__PRI16(o)
104
#define PRIuFAST16	__PRI16(u)
105
#define PRIxFAST16	__PRI16(x)
106
#define PRIXFAST16	__PRI16(X)
107
 
108
#define SCNdFAST16	__SCN16(d)
109
#define SCNiFAST16	__SCN16(i)
110
#define SCNoFAST16	__SCN16(o)
111
#define SCNuFAST16	__SCN16(u)
112
#define SCNxFAST16	__SCN16(x)
113
 
114
/* 32-bit types */
115
#if __have_long32
116
#define __PRI32(x) __STRINGIFY(l##x)
117
#define __SCN32(x) __STRINGIFY(l##x)
118
#else
119
#define __PRI32(x) __STRINGIFY(x)
120
#define __SCN32(x) __STRINGIFY(x)
121
#endif
122
 
123
#define PRId32		__PRI32(d)
124
#define PRIi32		__PRI32(i)
125
#define PRIo32		__PRI32(o)
126
#define PRIu32		__PRI32(u)
127
#define PRIx32		__PRI32(x)
128
#define PRIX32		__PRI32(X)
129
 
130
#define SCNd32		__SCN32(d)
131
#define SCNi32		__SCN32(i)
132
#define SCNo32		__SCN32(o)
133
#define SCNu32		__SCN32(u)
134
#define SCNx32		__SCN32(x)
135
 
136
 
137
#define PRIdLEAST32	__PRI32(d)
138
#define PRIiLEAST32	__PRI32(i)
139
#define PRIoLEAST32	__PRI32(o)
140
#define PRIuLEAST32	__PRI32(u)
141
#define PRIxLEAST32	__PRI32(x)
142
#define PRIXLEAST32	__PRI32(X)
143
 
144
#define SCNdLEAST32	__SCN32(d)
145
#define SCNiLEAST32	__SCN32(i)
146
#define SCNoLEAST32	__SCN32(o)
147
#define SCNuLEAST32	__SCN32(u)
148
#define SCNxLEAST32	__SCN32(x)
149
 
150
 
151
#define PRIdFAST32	__PRI32(d)
152
#define PRIiFAST32	__PRI32(i)
153
#define PRIoFAST32	__PRI32(o)
154
#define PRIuFAST32	__PRI32(u)
155
#define PRIxFAST32	__PRI32(x)
156
#define PRIXFAST32	__PRI32(X)
157
 
158
#define SCNdFAST32	__SCN32(d)
159
#define SCNiFAST32	__SCN32(i)
160
#define SCNoFAST32	__SCN32(o)
161
#define SCNuFAST32	__SCN32(u)
162
#define SCNxFAST32	__SCN32(x)
163
 
164
 
165
/* 64-bit types */
166
#if __have_long64
167
#define __PRI64(x) __STRINGIFY(l##x)
168
#define __SCN64(x) __STRINGIFY(l##x)
169
#elif __have_longlong64
170
#define __PRI64(x) __STRINGIFY(ll##x)
171
#define __SCN64(x) __STRINGIFY(ll##x)
172
#else
173
#define __PRI64(x) __STRINGIFY(x)
174
#define __SCN64(x) __STRINGIFY(x)
175
#endif
176
 
177
#define PRId64		__PRI64(d)
178
#define PRIi64		__PRI64(i)
179
#define PRIo64		__PRI64(o)
180
#define PRIu64		__PRI64(u)
181
#define PRIx64		__PRI64(x)
182
#define PRIX64		__PRI64(X)
183
 
184
#define SCNd64		__SCN64(d)
185
#define SCNi64		__SCN64(i)
186
#define SCNo64		__SCN64(o)
187
#define SCNu64		__SCN64(u)
188
#define SCNx64		__SCN64(x)
189
 
190
#if __int64_t_defined
191
#define PRIdLEAST64	__PRI64(d)
192
#define PRIiLEAST64	__PRI64(i)
193
#define PRIoLEAST64	__PRI64(o)
194
#define PRIuLEAST64	__PRI64(u)
195
#define PRIxLEAST64	__PRI64(x)
196
#define PRIXLEAST64	__PRI64(X)
197
 
198
#define SCNdLEAST64	__SCN64(d)
199
#define SCNiLEAST64	__SCN64(i)
200
#define SCNoLEAST64	__SCN64(o)
201
#define SCNuLEAST64	__SCN64(u)
202
#define SCNxLEAST64	__SCN64(x)
203
 
204
 
205
#define PRIdFAST64	__PRI64(d)
206
#define PRIiFAST64	__PRI64(i)
207
#define PRIoFAST64	__PRI64(o)
208
#define PRIuFAST64	__PRI64(u)
209
#define PRIxFAST64	__PRI64(x)
210
#define PRIXFAST64	__PRI64(X)
211
 
212
#define SCNdFAST64	__SCN64(d)
213
#define SCNiFAST64	__SCN64(i)
214
#define SCNoFAST64	__SCN64(o)
215
#define SCNuFAST64	__SCN64(u)
216
#define SCNxFAST64	__SCN64(x)
217
#endif
218
 
219
/* max-bit types */
220
#if __have_long64
221
#define __PRIMAX(x) __STRINGIFY(l##x)
222
#define __SCNMAX(x) __STRINGIFY(l##x)
223
#elif __have_longlong64
224
#define __PRIMAX(x) __STRINGIFY(ll##x)
225
#define __SCNMAX(x) __STRINGIFY(ll##x)
226
#else
227
#define __PRIMAX(x) __STRINGIFY(x)
228
#define __SCNMAX(x) __STRINGIFY(x)
229
#endif
230
 
231
#define PRIdMAX		__PRIMAX(d)
232
#define PRIiMAX		__PRIMAX(i)
233
#define PRIoMAX		__PRIMAX(o)
234
#define PRIuMAX		__PRIMAX(u)
235
#define PRIxMAX		__PRIMAX(x)
236
#define PRIXMAX		__PRIMAX(X)
237
 
238
#define SCNdMAX		__SCNMAX(d)
239
#define SCNiMAX		__SCNMAX(i)
240
#define SCNoMAX		__SCNMAX(o)
241
#define SCNuMAX		__SCNMAX(u)
242
#define SCNxMAX		__SCNMAX(x)
243
 
244
/* ptr types */
245
#if __have_long64
246
#define __PRIPTR(x) __STRINGIFY(l##x)
247
#define __SCNPTR(x) __STRINGIFY(l##x)
248
#elif __have_longlong64
249
#define __PRIPTR(x) __STRINGIFY(ll##x)
250
#define __SCNPTR(x) __STRINGIFY(ll##x)
251
#else
252
#define __PRIPTR(x) __STRINGIFY(x)
253
#define __SCNPTR(x) __STRINGIFY(x)
254
#endif
255
 
256
#define PRIdPTR		__PRIPTR(d)
257
#define PRIiPTR		__PRIPTR(i)
258
#define PRIoPTR		__PRIPTR(o)
259
#define PRIuPTR		__PRIPTR(u)
260
#define PRIxPTR		__PRIPTR(x)
261
#define PRIXPTR		__PRIPTR(X)
262
 
263
#define SCNdPTR		__SCNPTR(d)
264
#define SCNiPTR		__SCNPTR(i)
265
#define SCNoPTR		__SCNPTR(o)
266
#define SCNuPTR		__SCNPTR(u)
267
#define SCNxPTR		__SCNPTR(x)
268
 
269
 
270
typedef struct {
271
  intmax_t	quot;
272
  intmax_t	rem;
273
} imaxdiv_t;
274
 
275
#ifdef __cplusplus
276
extern "C" {
277
#endif
278
 
279
extern intmax_t  imaxabs(intmax_t j);
280
extern imaxdiv_t imaxdiv(intmax_t numer, intmax_t denomer);
281
extern intmax_t  strtoimax(const char *__restrict, char **__restrict, int);
282
extern uintmax_t strtoumax(const char *__restrict, char **__restrict, int);
283
extern intmax_t  wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int);
284
extern uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int);
285
 
286
#ifdef __cplusplus
287
}
288
#endif
289
 
290
#endif