Subversion Repositories Kolibri OS

Rev

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