|
|
1.1 root 1: /* Copyright (C) 1997, 1998, 1999, 2000, 2001 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 Lesser General Public
6: License as published by the Free Software Foundation; either
7: version 2.1 of the 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: Lesser General Public License for more details.
13:
14: You should have received a copy of the GNU Lesser General Public
15: License along with the GNU C Library; if not, write to the Free
16: Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17: 02111-1307 USA. */
18:
19: /*
20: * ISO C99: 7.18 Integer types <stdint.h>
21: */
22:
23: #ifndef _STDINT_H
24: #define _STDINT_H 1
25:
26: //#include <features.h>
27: #include <bits/wchar.h>
28: #include <bits/wordsize.h>
29:
30: /* Exact integral types. */
31:
32: /* Signed. */
33:
34: /* There is some amount of overlap with <sys/types.h> as known by inet code */
35: #ifndef __int8_t_defined
36: # define __int8_t_defined
37: typedef signed char int8_t;
38: typedef short int int16_t;
39: typedef int int32_t;
40: # if __WORDSIZE == 64
41: typedef long int int64_t;
42: # else
43: __extension__
44: typedef long long int int64_t;
45: # endif
46: #endif
47:
48: /* Unsigned. */
49: typedef unsigned char uint8_t;
50: typedef unsigned short int uint16_t;
51: #ifndef __uint32_t_defined
52: typedef unsigned int uint32_t;
53: # define __uint32_t_defined
54: #endif
55: #if __WORDSIZE == 64
56: typedef unsigned long int uint64_t;
57: #else
58: __extension__
59: typedef unsigned long long int uint64_t;
60: #endif
61:
62:
63: /* Small types. */
64:
65: /* Signed. */
66: typedef signed char int_least8_t;
67: typedef short int int_least16_t;
68: typedef int int_least32_t;
69: #if __WORDSIZE == 64
70: typedef long int int_least64_t;
71: #else
72: __extension__
73: typedef long long int int_least64_t;
74: #endif
75:
76: /* Unsigned. */
77: typedef unsigned char uint_least8_t;
78: typedef unsigned short int uint_least16_t;
79: typedef unsigned int uint_least32_t;
80: #if __WORDSIZE == 64
81: typedef unsigned long int uint_least64_t;
82: #else
83: __extension__
84: typedef unsigned long long int uint_least64_t;
85: #endif
86:
87:
88: /* Fast types. */
89:
90: /* Signed. */
91: typedef signed char int_fast8_t;
92: #if __WORDSIZE == 64
93: typedef long int int_fast16_t;
94: typedef long int int_fast32_t;
95: typedef long int int_fast64_t;
96: #else
97: typedef int int_fast16_t;
98: typedef int int_fast32_t;
99: __extension__
100: typedef long long int int_fast64_t;
101: #endif
102:
103: /* Unsigned. */
104: typedef unsigned char uint_fast8_t;
105: #if __WORDSIZE == 64
106: typedef unsigned long int uint_fast16_t;
107: typedef unsigned long int uint_fast32_t;
108: typedef unsigned long int uint_fast64_t;
109: #else
110: typedef unsigned int uint_fast16_t;
111: typedef unsigned int uint_fast32_t;
112: __extension__
113: typedef unsigned long long int uint_fast64_t;
114: #endif
115:
116:
117: /* Types for `void *' pointers. */
118: #if __WORDSIZE == 64
119: # ifndef __intptr_t_defined
120: typedef long int intptr_t;
121: # define __intptr_t_defined
122: # endif
123: typedef unsigned long int uintptr_t;
124: #else
125: # ifndef __intptr_t_defined
126: typedef int intptr_t;
127: # define __intptr_t_defined
128: # endif
129: typedef unsigned int uintptr_t;
130: #endif
131:
132:
133: /* Largest integral types. */
134: #if __WORDSIZE == 64
135: typedef long int intmax_t;
136: typedef unsigned long int uintmax_t;
137: #else
138: __extension__
139: typedef long long int intmax_t;
140: __extension__
141: typedef unsigned long long int uintmax_t;
142: #endif
143:
144:
145: /* The ISO C99 standard specifies that in C++ implementations these
146: macros should only be defined if explicitly requested. */
147: #if !defined __cplusplus || defined __STDC_LIMIT_MACROS
148:
149: # if __WORDSIZE == 64
150: # define __INT64_C(c) c ## L
151: # define __UINT64_C(c) c ## UL
152: # else
153: # define __INT64_C(c) c ## LL
154: # define __UINT64_C(c) c ## ULL
155: # endif
156:
157: /* Limits of integral types. */
158:
159: /* Minimum of signed integral types. */
160: # define INT8_MIN (-128)
161: # define INT16_MIN (-32767-1)
162: # define INT32_MIN (-2147483647-1)
163: # define INT64_MIN (-__INT64_C(9223372036854775807)-1)
164: /* Maximum of signed integral types. */
165: # define INT8_MAX (127)
166: # define INT16_MAX (32767)
167: # define INT32_MAX (2147483647)
168: # define INT64_MAX (__INT64_C(9223372036854775807))
169:
170: /* Maximum of unsigned integral types. */
171: # define UINT8_MAX (255)
172: # define UINT16_MAX (65535)
173: # define UINT32_MAX (4294967295U)
174: # define UINT64_MAX (__UINT64_C(18446744073709551615))
175:
176:
177: /* Minimum of signed integral types having a minimum size. */
178: # define INT_LEAST8_MIN (-128)
179: # define INT_LEAST16_MIN (-32767-1)
180: # define INT_LEAST32_MIN (-2147483647-1)
181: # define INT_LEAST64_MIN (-__INT64_C(9223372036854775807)-1)
182: /* Maximum of signed integral types having a minimum size. */
183: # define INT_LEAST8_MAX (127)
184: # define INT_LEAST16_MAX (32767)
185: # define INT_LEAST32_MAX (2147483647)
186: # define INT_LEAST64_MAX (__INT64_C(9223372036854775807))
187:
188: /* Maximum of unsigned integral types having a minimum size. */
189: # define UINT_LEAST8_MAX (255)
190: # define UINT_LEAST16_MAX (65535)
191: # define UINT_LEAST32_MAX (4294967295U)
192: # define UINT_LEAST64_MAX (__UINT64_C(18446744073709551615))
193:
194:
195: /* Minimum of fast signed integral types having a minimum size. */
196: # define INT_FAST8_MIN (-128)
197: # if __WORDSIZE == 64
198: # define INT_FAST16_MIN (-9223372036854775807L-1)
199: # define INT_FAST32_MIN (-9223372036854775807L-1)
200: # else
201: # define INT_FAST16_MIN (-2147483647-1)
202: # define INT_FAST32_MIN (-2147483647-1)
203: # endif
204: # define INT_FAST64_MIN (-__INT64_C(9223372036854775807)-1)
205: /* Maximum of fast signed integral types having a minimum size. */
206: # define INT_FAST8_MAX (127)
207: # if __WORDSIZE == 64
208: # define INT_FAST16_MAX (9223372036854775807L)
209: # define INT_FAST32_MAX (9223372036854775807L)
210: # else
211: # define INT_FAST16_MAX (2147483647)
212: # define INT_FAST32_MAX (2147483647)
213: # endif
214: # define INT_FAST64_MAX (__INT64_C(9223372036854775807))
215:
216: /* Maximum of fast unsigned integral types having a minimum size. */
217: # define UINT_FAST8_MAX (255)
218: # if __WORDSIZE == 64
219: # define UINT_FAST16_MAX (18446744073709551615UL)
220: # define UINT_FAST32_MAX (18446744073709551615UL)
221: # else
222: # define UINT_FAST16_MAX (4294967295U)
223: # define UINT_FAST32_MAX (4294967295U)
224: # endif
225: # define UINT_FAST64_MAX (__UINT64_C(18446744073709551615))
226:
227:
228: /* Values to test for integral types holding `void *' pointer. */
229: # if __WORDSIZE == 64
230: # define INTPTR_MIN (-9223372036854775807L-1)
231: # define INTPTR_MAX (9223372036854775807L)
232: # define UINTPTR_MAX (18446744073709551615UL)
233: # else
234: # define INTPTR_MIN (-2147483647-1)
235: # define INTPTR_MAX (2147483647)
236: # define UINTPTR_MAX (4294967295U)
237: # endif
238:
239:
240: /* Minimum for largest signed integral type. */
241: # define INTMAX_MIN (-__INT64_C(9223372036854775807)-1)
242: /* Maximum for largest signed integral type. */
243: # define INTMAX_MAX (__INT64_C(9223372036854775807))
244:
245: /* Maximum for largest unsigned integral type. */
246: # define UINTMAX_MAX (__UINT64_C(18446744073709551615))
247:
248:
249: /* Limits of other integer types. */
250:
251: /* Limits of `ptrdiff_t' type. */
252: # if __WORDSIZE == 64
253: # define PTRDIFF_MIN (-9223372036854775807L-1)
254: # define PTRDIFF_MAX (9223372036854775807L)
255: # else
256: # define PTRDIFF_MIN (-2147483647-1)
257: # define PTRDIFF_MAX (2147483647)
258: # endif
259:
260: /* Limits of `sig_atomic_t'. */
261: # define SIG_ATOMIC_MIN (-2147483647-1)
262: # define SIG_ATOMIC_MAX (2147483647)
263:
264: /* Limit of `size_t' type. */
265: # if __WORDSIZE == 64
266: # define SIZE_MAX (18446744073709551615UL)
267: # else
268: # define SIZE_MAX (4294967295U)
269: # endif
270:
271: /* Limits of `wchar_t'. */
272: # ifndef WCHAR_MIN
273: /* These constants might also be defined in <wchar.h>. */
274: # define WCHAR_MIN __WCHAR_MIN
275: # define WCHAR_MAX __WCHAR_MAX
276: # endif
277:
278: /* Limits of `wint_t'. */
279: # define WINT_MIN (0u)
280: # define WINT_MAX (4294967295u)
281:
282: #endif /* C++ && limit macros */
283:
284:
285: /* The ISO C99 standard specifies that in C++ implementations these
286: should only be defined if explicitly requested. */
287: #if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
288:
289: /* Signed. */
290: # define INT8_C(c) c
291: # define INT16_C(c) c
292: # define INT32_C(c) c
293: # if __WORDSIZE == 64
294: # define INT64_C(c) c ## L
295: # else
296: # define INT64_C(c) c ## LL
297: # endif
298:
299: /* Unsigned. */
300: # define UINT8_C(c) c ## U
301: # define UINT16_C(c) c ## U
302: # define UINT32_C(c) c ## U
303: # if __WORDSIZE == 64
304: # define UINT64_C(c) c ## UL
305: # else
306: # define UINT64_C(c) c ## ULL
307: # endif
308:
309: /* Maximal type. */
310: # if __WORDSIZE == 64
311: # define INTMAX_C(c) c ## L
312: # define UINTMAX_C(c) c ## UL
313: # else
314: # define INTMAX_C(c) c ## LL
315: # define UINTMAX_C(c) c ## ULL
316: # endif
317:
318: #endif /* C++ && constant macros */
319:
320: #endif /* stdint.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.