Macros for environment definition os 32bit machines.
[kopensolaris-gnu/glibc.git] / sysdeps / wordsize-32 / inttypes.h
1 /* Copyright (C) 1997 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Library General Public License as
6    published by the Free Software Foundation; either version 2 of the
7    License, or (at your option) any later version.
8
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Library General Public License for more details.
13
14    You should have received a copy of the GNU Library General Public
15    License along with the GNU C Library; see the file COPYING.LIB.  If not,
16    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17    Boston, MA 02111-1307, USA.  */
18
19 /*
20  *      ISO C 9X: 7.4 Integral types    <inttypes.h>
21  */
22
23 #ifndef _INTTYPES_H
24
25 #define _INTTYPES_H     1
26 #include <features.h>
27
28 #define __need_wchar_t
29 #include <stddef.h>
30
31 /* Exact integral types.  */
32
33 /* Signed.  */
34
35 /* There is some amount of overlap with <sys/types.h> as known by inet code */
36 #ifndef __int8_t_defined
37 # define __int8_t_defined
38 typedef signed char    int8_t;
39 typedef short int     int16_t;
40 typedef int           int32_t;
41 typedef long long int int64_t;
42 #endif
43
44 /* Unsigned.  */
45 typedef unsigned char           uint8_t;
46 typedef unsigned short int     uint16_t;
47 typedef unsigned int           uint32_t;
48 typedef unsigned long long int uint64_t;
49
50
51 /* Largest integral types.  */
52 typedef long long int           intmax_t;
53 typedef unsigned long long int uintmax_t;
54
55
56 /* Types for `void *' pointers.  */
57 typedef int           intptr_t;
58 typedef unsigned int uintptr_t;
59
60
61 /* Efficient types.  */
62 typedef int           intfast_t;
63 typedef unsigned int uintfast_t;
64
65
66 /* Small types.  */
67
68 /* Signed.  */
69 typedef signed char    int_least8_t;
70 typedef short int     int_least16_t;
71 typedef int           int_least32_t;
72 typedef long long int int_least64_t;
73
74 /* Unsigned.  */
75 typedef unsigned char           uint_least8_t;
76 typedef unsigned short int     uint_least16_t;
77 typedef unsigned int           uint_least32_t;
78 typedef unsigned long long int uint_least64_t;
79
80
81 /* Fast types.  */
82
83 /* Signed.  */
84 typedef signed char    int_fast8_t;
85 typedef int           int_fast16_t;
86 typedef int           int_fast32_t;
87 typedef long long int int_fast64_t;
88
89 /* Unsigned.  */
90 typedef unsigned char           uint_fast8_t;
91 typedef unsigned int           uint_fast16_t;
92 typedef unsigned int           uint_fast32_t;
93 typedef unsigned long long int uint_fast64_t;
94
95
96 /* Limits of integral types.  */
97
98 /* Minimum of signed integral types.  */
99 #define INT8_MIN                (-128)
100 #define INT16_MIN               (-32767-1)
101 #define INT32_MIN               (-2147483647-1)
102 #define INT64_MIN               (-9223372036854775807LL-1)
103 /* Maximum of signed integral types.  */
104 #define INT8_MAX                (127)
105 #define INT16_MAX               (32767)
106 #define INT32_MAX               (2147483647)
107 #define INT64_MAX               (9223372036854775807LL)
108
109 /* Maximum of unsigned integral types.  */
110 #define UINT8_MAX               (255U)
111 #define UINT16_MAX              (65535U)
112 #define UINT32_MAX              (4294967295U)
113 #define UINT64_MAX              (18446744073709551615uLL)
114
115
116 /* Minimum of signed integral types having a minimum size.  */
117 #define INT_LEAST8_MIN          (-128)
118 #define INT_LEAST16_MIN         (-32767-1)
119 #define INT_LEAST32_MIN         (-2147483647-1)
120 #define INT_LEAST64_MIN         (-9223372036854775807LL-1)
121 /* Maximum of signed integral types having a minimum size.  */
122 #define INT_LEAST8_MAX          (127)
123 #define INT_LEAST16_MAX         (32767)
124 #define INT_LEAST32_MAX         (2147483647)
125 #define INT_LEAST64_MAX         (9223372036854775807LL)
126
127 /* Maximum of unsigned integral types having a minimum size.  */
128 #define UINT_LEAST8_MAX         (255U)
129 #define UINT_LEAST16_MAX        (65535U)
130 #define UINT_LEAST32_MAX        (4294967295U)
131 #define UINT_LEAST64_MAX        (18446744073709551615uLL)
132
133
134 /* Minimum of fast signed integral types having a minimum size.  */
135 #define INT_FAST8_MIN           (-128)
136 #define INT_FAST16_MIN          (-2147483647-1)
137 #define INT_FAST32_MIN          (-2147483647-1)
138 #define INT_FAST64_MIN          (-9223372036854775807LL-1)
139 /* Maximum of fast signed integral types having a minimum size.  */
140 #define INT_FAST8_MAX           (127)
141 #define INT_FAST16_MAX          (2147483647)
142 #define INT_FAST32_MAX          (2147483647)
143 #define INT_FAST64_MAX          (9223372036854775807LL)
144
145 /* Maximum of fast unsigned integral types having a minimum size.  */
146 #define UINT_FAST8_MAX          (255U)
147 #define UINT_FAST16_MAX         (4294967295U)
148 #define UINT_FAST32_MAX         (4294967295U)
149 #define UINT_FAST64_MAX         (18446744073709551615uLL)
150
151
152 /* Minimum for most efficient signed integral types.  */
153 #define INTFAST_MIN             (-2147483647-1)
154 /* Maximum for most efficient signed integral types.  */
155 #define INTFAST_MAX             (2147483647)
156
157 /* Maximum for most efficient unsigned integral types.  */
158 #define UINTFAST_MAX            (4294967295U)
159
160
161 /* Minimum for largest signed integral type.  */
162 #define INTMAX_MIN              (-9223372036854775807LL-1)
163 /* Maximum for largest signed integral type.  */
164 #define INTMAX_MAX              (9223372036854775807LL)
165
166 /* Maximum for largest unsigned integral type.  */
167 #define UINTMAX_MAX             (18446744073709551615uLL)
168
169
170 /* Values to test for integral types holding `void *' pointer.  */
171 #define INTPTR_MAX              (2147483647)
172 #define UINTPTR_MAX             (4294967295U)
173
174
175 /* Signed.  */
176 #define INT8_C(c)       ((int8_t) c)
177 #define INT16_C(c)      ((int16_t) c)
178 #define INT32_C(c)      ((int32_t) c)
179 #define INT64_C(c)      ((int64_t) __CONCAT (c,ll))
180
181 /* Unsigned.  */
182 #define UINT8_C(c)      ((uint8_t) __CONCAT (c,u))
183 #define UINT16_C(c)     ((uint16_t) __CONCAT (c,u))
184 #define UINT32_C(c)     ((uint32_t) __CONCAT (c,u))
185 #define UINT64_C(c)     ((uint64_t) __CONCAT (c,ull))
186
187 /* Maximal type.  */
188 #define INTMAX_C(c)     ((intmax_t) __CONCAT (c,ll))
189 #define UINTMAX_C(c)    ((uintmax_t) __CONCAT (c,ull))
190
191
192 /* Macros for printing format specifiers.  */
193
194 /* Decimal notation.  */
195 #define PRId8           "d"
196 #define PRId16          "d"
197 #define PRId32          "d"
198 #define PRId64          "lld"
199
200 #define PRIdLEAST8      "d"
201 #define PRIdLEAST16     "d"
202 #define PRIdLEAST32     "d"
203 #define PRIdLEAST64     "lld"
204
205 #define PRIdFAST8       "d"
206 #define PRIdFAST16      "d"
207 #define PRIdFAST32      "d"
208 #define PRIdFAST64      "lld"
209
210
211 #define PRIi8           "i"
212 #define PRIi16          "i"
213 #define PRIi32          "i"
214 #define PRIi64          "lli"
215
216 #define PRIiLEAST8      "i"
217 #define PRIiLEAST16     "i"
218 #define PRIiLEAST32     "i"
219 #define PRIiLEAST64     "lli"
220
221 #define PRIiFAST8       "i"
222 #define PRIiFAST16      "i"
223 #define PRIiFAST32      "i"
224 #define PRIiFAST64      "lli"
225
226 /* Octal notation.  */
227 #define PRIo8           "o"
228 #define PRIo16          "o"
229 #define PRIo32          "o"
230 #define PRIo64          "llo"
231
232 #define PRIoLEAST8      "o"
233 #define PRIoLEAST16     "o"
234 #define PRIoLEAST32     "o"
235 #define PRIoLEAST64     "llo"
236
237 #define PRIoFAST8       "o"
238 #define PRIoFAST16      "o"
239 #define PRIoFAST32      "o"
240 #define PRIoFAST64      "llo"
241
242 /* lowercase hexadecimal notation.  */
243 #define PRIx8           "x"
244 #define PRIx16          "x"
245 #define PRIx32          "x"
246 #define PRIx64          "llx"
247
248 #define PRIxLEAST8      "x"
249 #define PRIxLEAST16     "x"
250 #define PRIxLEAST32     "x"
251 #define PRIxLEAST64     "llx"
252
253 #define PRIxFAST8       "x"
254 #define PRIxFAST16      "x"
255 #define PRIxFAST32      "x"
256 #define PRIxFAST64      "llx"
257
258 /* UPPERCASE hexadecimal notation.  */
259 #define PRIX8           "X"
260 #define PRIX16          "X"
261 #define PRIX32          "X"
262 #define PRIX64          "llX"
263
264 #define PRIXLEAST8      "X"
265 #define PRIXLEAST16     "X"
266 #define PRIXLEAST32     "X"
267 #define PRIXLEAST64     "llX"
268
269 #define PRIXFAST8       "X"
270 #define PRIXFAST16      "X"
271 #define PRIXFAST32      "X"
272 #define PRIXFAST64      "llX"
273
274
275 /* Unsigned integers.  */
276 #define PRIu8           "u"
277 #define PRIu16          "u"
278 #define PRIu32          "u"
279 #define PRIu64          "llu"
280
281 #define PRIuLEAST8      "u"
282 #define PRIuLEAST16     "u"
283 #define PRIuLEAST32     "u"
284 #define PRIuLEAST64     "llu"
285
286 #define PRIuFAST8       "u"
287 #define PRIuFAST16      "u"
288 #define PRIuFAST32      "u"
289 #define PRIuFAST64      "llu"
290
291
292 /* Macros for printing `intmax_t' and `uintmax_t'.  */
293 #define PRIdMAX         "lld"
294 #define PRIoMAX         "llo"
295 #define PRIxMAX         "llx"
296 #define PRIuMAX         "llu"
297
298
299 /* Macros for printing `intfast_t' and `uintfast_t'.  */
300 #define PRIdFAST        "d"
301 #define PRIoFAST        "o"
302 #define PRIxFAST        "x"
303 #define PRIuFAST        "u"
304
305
306 /* Macros for printing `intptr_t' and `uintptr_t'.  */
307 #define PRIdPTR         "d"
308 #define PRIoPTR         "o"
309 #define PRIxPTR         "x"
310 #define PRIuPTR         "u"
311
312
313 /* Macros for printing format specifiers.  */
314
315 /* Decimal notation.  */
316 #define SCNd16          "hd"
317 #define SCNd32          "d"
318 #define SCNd64          "lld"
319
320 #define SCNi16          "hi"
321 #define SCNi32          "i"
322 #define SCNi64          "lli"
323
324 /* Octal notation.  */
325 #define SCNo16          "ho"
326 #define SCNo32          "o"
327 #define SCNo64          "llo"
328
329 /* Hexadecimal notation.  */
330 #define SCNx16          "hx"
331 #define SCNx32          "x"
332 #define SCNx64          "llx"
333
334
335 /* Macros for scaning `intfast_t' and `uintfast_t'.  */
336 #define SCNdFAST        "d"
337 #define SCNiFAST        "i"
338 #define SCNoFAST        "o"
339 #define SCNxFAST        "x"
340
341 /* Macros for scaning `intptr_t' and `uintptr_t'.  */
342 #define SCNdPTR         "d"
343 #define SCNiPTR         "i"
344 #define SCNoPTR         "o"
345 #define SCNxPTR         "x"
346
347
348 /* Limits of other integer types.  */
349
350 /* Limits of `ptrdiff_t' type.  */
351 #define PTRDIFF_MIN     (-2147483647-1)
352 #define PTRDIFF_MAX     (2147483647)
353
354 /* Limits of `sig_atomic_t'.  */
355 #define SIG_ATOMIC_MIN  (-2147483647-1)
356 #define SIG_ATOMIC_MAX  (2147483647)
357
358 /* Limit of `size_t' type.  */
359 #define SIZE_MAX        (4294967295U)
360
361 /* Limits of `wchar_t'.  */
362 #ifndef WCHAR_MIN
363 /* These constants might also be defined in <wchar.h>.  */
364 # define WCHAR_MIN      (-2147483647-1)
365 # define WCHAR_MAX      (2147483647)
366 #endif
367
368 /* Limits of `wint_t'.  */
369 #define WINT_MIN        (0)
370 #define WINT_MAX        (4294967295U)
371
372
373 /* Macros for string conversion.  */
374
375 /* Like `strtol' but convert to `intmax_t'.  */
376 #define strtoimax(nptr, endptr, base) \
377     __strtoll_internal (nptr, endptr, base, 0)
378
379 #ifndef __strtoll_internal_defined
380 extern long long int __strtoll_internal __P ((__const char *__restrict __nptr,
381                                               char **__restrict __endptr,
382                                               int __base, int __group));
383 # define __strtoll_internal_defined     1
384 #endif
385
386
387 /* Like `strtoul' but convert to `uintmax_t'.  */
388 #define strtoumax(nptr, endptr, base) \
389     __strtoull_internal (nptr, endptr, base, 0)
390
391 #ifndef __strtoull_internal_defined
392 extern unsigned long long int __strtoull_internal __P ((__const char *
393                                                         __restrict __nptr,
394                                                         char **
395                                                         __restrict __endptr,
396                                                         int __base,
397                                                         int __group));
398 # define __strtoull_internal_defined    1
399 #endif
400
401
402 /* Like `wcstol' but convert to `intmax_t'.  */
403 #define wcstoimax(nptr, endptr, base) \
404     __wcstoll_internal (nptr, endptr, base, 0)
405
406 #ifndef __wcstoll_internal_defined
407 extern long long int __wcstoll_internal __P ((__const wchar_t *
408                                               __restrict __nptr,
409                                               wchar_t **__restrict __endptr,
410                                               int __base, int __group));
411 # define __wcstoll_internal_defined     1
412 #endif
413
414
415 /* Like `wcstoul' but convert to `uintmax_t'.  */
416 #define wcstoumax(nptr, endptr, base) \
417     __wcstoull_internal (nptr, endptr, base, 0)
418
419 #ifndef __wcstoull_internal_defined
420 extern unsigned long long int __wcstoull_internal __P ((__const wchar_t *
421                                                         __restrict __nptr,
422                                                         wchar_t **
423                                                         __restrict __endptr,
424                                                         int __base,
425                                                         int __group));
426 # define __wcstoull_internal_defined    1
427 #endif
428
429 #endif /* inttypes.h */