Rev 4921 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4349 | Serge | 1 | /* |
6099 | serge | 2 | * $Id$ |
4349 | Serge | 3 | */ |
4 | |||
5 | #ifndef _MACHINE__DEFAULT_TYPES_H |
||
6 | #define _MACHINE__DEFAULT_TYPES_H |
||
7 | |||
4921 | Serge | 8 | #include |
4349 | Serge | 9 | |
10 | /* |
||
11 | * Guess on types by examining *_MIN / *_MAX defines. |
||
12 | */ |
||
4921 | Serge | 13 | #if __GNUC_PREREQ (3, 3) |
4349 | Serge | 14 | /* GCC >= 3.3.0 has __ |
15 | #define __EXP(x) __##x##__ |
||
16 | #else |
||
17 | /* Fall back to POSIX versions from |
||
18 | #define __EXP(x) x |
||
19 | #include |
||
20 | #endif |
||
21 | |||
4921 | Serge | 22 | #ifdef __cplusplus |
23 | extern "C" { |
||
24 | #endif |
||
25 | |||
26 | #ifdef __INT8_TYPE__ |
||
27 | typedef __INT8_TYPE__ __int8_t; |
||
6099 | serge | 28 | #ifdef __UINT8_TYPE__ |
4921 | Serge | 29 | typedef __UINT8_TYPE__ __uint8_t; |
6099 | serge | 30 | #else |
31 | typedef unsigned __INT8_TYPE__ __uint8_t; |
||
32 | #endif |
||
4921 | Serge | 33 | #define ___int8_t_defined 1 |
34 | #elif __EXP(SCHAR_MAX) == 0x7f |
||
4349 | Serge | 35 | typedef signed char __int8_t ; |
36 | typedef unsigned char __uint8_t ; |
||
37 | #define ___int8_t_defined 1 |
||
38 | #endif |
||
39 | |||
4921 | Serge | 40 | #ifdef __INT16_TYPE__ |
41 | typedef __INT16_TYPE__ __int16_t; |
||
6099 | serge | 42 | #ifdef __UINT16_TYPE__ |
4921 | Serge | 43 | typedef __UINT16_TYPE__ __uint16_t; |
6099 | serge | 44 | #else |
45 | typedef unsigned __INT16_TYPE__ __uint16_t; |
||
46 | #endif |
||
4921 | Serge | 47 | #define ___int16_t_defined 1 |
48 | #elif __EXP(INT_MAX) == 0x7fff |
||
4349 | Serge | 49 | typedef signed int __int16_t; |
50 | typedef unsigned int __uint16_t; |
||
51 | #define ___int16_t_defined 1 |
||
52 | #elif __EXP(SHRT_MAX) == 0x7fff |
||
53 | typedef signed short __int16_t; |
||
54 | typedef unsigned short __uint16_t; |
||
55 | #define ___int16_t_defined 1 |
||
56 | #elif __EXP(SCHAR_MAX) == 0x7fff |
||
57 | typedef signed char __int16_t; |
||
58 | typedef unsigned char __uint16_t; |
||
59 | #define ___int16_t_defined 1 |
||
60 | #endif |
||
61 | |||
4921 | Serge | 62 | #ifdef __INT32_TYPE__ |
63 | typedef __INT32_TYPE__ __int32_t; |
||
6099 | serge | 64 | #ifdef __UINT32_TYPE__ |
4921 | Serge | 65 | typedef __UINT32_TYPE__ __uint32_t; |
6099 | serge | 66 | #else |
67 | typedef unsigned __INT32_TYPE__ __uint32_t; |
||
68 | #endif |
||
4921 | Serge | 69 | #define ___int32_t_defined 1 |
70 | #elif __EXP(INT_MAX) == 0x7fffffffL |
||
4349 | Serge | 71 | typedef signed int __int32_t; |
72 | typedef unsigned int __uint32_t; |
||
73 | #define ___int32_t_defined 1 |
||
74 | #elif __EXP(LONG_MAX) == 0x7fffffffL |
||
75 | typedef signed long __int32_t; |
||
76 | typedef unsigned long __uint32_t; |
||
77 | #define ___int32_t_defined 1 |
||
78 | #elif __EXP(SHRT_MAX) == 0x7fffffffL |
||
79 | typedef signed short __int32_t; |
||
80 | typedef unsigned short __uint32_t; |
||
81 | #define ___int32_t_defined 1 |
||
82 | #elif __EXP(SCHAR_MAX) == 0x7fffffffL |
||
83 | typedef signed char __int32_t; |
||
84 | typedef unsigned char __uint32_t; |
||
85 | #define ___int32_t_defined 1 |
||
86 | #endif |
||
87 | |||
4921 | Serge | 88 | #ifdef __INT64_TYPE__ |
89 | typedef __INT64_TYPE__ __int64_t; |
||
6099 | serge | 90 | #ifdef __UINT64_TYPE__ |
4921 | Serge | 91 | typedef __UINT64_TYPE__ __uint64_t; |
6099 | serge | 92 | #else |
93 | typedef unsigned __INT64_TYPE__ __uint64_t; |
||
94 | #endif |
||
4921 | Serge | 95 | #define ___int64_t_defined 1 |
96 | #elif __EXP(LONG_MAX) > 0x7fffffff |
||
4349 | Serge | 97 | typedef signed long __int64_t; |
98 | typedef unsigned long __uint64_t; |
||
99 | #define ___int64_t_defined 1 |
||
100 | |||
101 | /* GCC has __LONG_LONG_MAX__ */ |
||
102 | #elif defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff) |
||
103 | typedef signed long long __int64_t; |
||
104 | typedef unsigned long long __uint64_t; |
||
105 | #define ___int64_t_defined 1 |
||
106 | |||
107 | /* POSIX mandates LLONG_MAX in |
||
108 | #elif defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff) |
||
109 | typedef signed long long __int64_t; |
||
110 | typedef unsigned long long __uint64_t; |
||
111 | #define ___int64_t_defined 1 |
||
112 | |||
113 | #elif __EXP(INT_MAX) > 0x7fffffff |
||
114 | typedef signed int __int64_t; |
||
115 | typedef unsigned int __uint64_t; |
||
116 | #define ___int64_t_defined 1 |
||
117 | #endif |
||
118 | |||
4921 | Serge | 119 | #ifdef __INT_LEAST8_TYPE__ |
120 | typedef __INT_LEAST8_TYPE__ __int_least8_t; |
||
6099 | serge | 121 | #ifdef __UINT_LEAST8_TYPE__ |
4921 | Serge | 122 | typedef __UINT_LEAST8_TYPE__ __uint_least8_t; |
6099 | serge | 123 | #else |
124 | typedef unsigned __INT_LEAST8_TYPE__ __uint_least8_t; |
||
125 | #endif |
||
4921 | Serge | 126 | #define ___int_least8_t_defined 1 |
127 | #elif defined(___int8_t_defined) |
||
128 | typedef __int8_t __int_least8_t; |
||
129 | typedef __uint8_t __uint_least8_t; |
||
130 | #define ___int_least8_t_defined 1 |
||
131 | #elif defined(___int16_t_defined) |
||
132 | typedef __int16_t __int_least8_t; |
||
133 | typedef __uint16_t __uint_least8_t; |
||
134 | #define ___int_least8_t_defined 1 |
||
135 | #elif defined(___int32_t_defined) |
||
136 | typedef __int32_t __int_least8_t; |
||
137 | typedef __uint32_t __uint_least8_t; |
||
138 | #define ___int_least8_t_defined 1 |
||
139 | #elif defined(___int64_t_defined) |
||
140 | typedef __int64_t __int_least8_t; |
||
141 | typedef __uint64_t __uint_least8_t; |
||
142 | #define ___int_least8_t_defined 1 |
||
143 | #endif |
||
144 | |||
145 | #ifdef __INT_LEAST16_TYPE__ |
||
146 | typedef __INT_LEAST16_TYPE__ __int_least16_t; |
||
6099 | serge | 147 | #ifdef __UINT_LEAST16_TYPE__ |
4921 | Serge | 148 | typedef __UINT_LEAST16_TYPE__ __uint_least16_t; |
6099 | serge | 149 | #else |
150 | typedef unsigned __INT_LEAST16_TYPE__ __uint_least16_t; |
||
151 | #endif |
||
4921 | Serge | 152 | #define ___int_least16_t_defined 1 |
153 | #elif defined(___int16_t_defined) |
||
154 | typedef __int16_t __int_least16_t; |
||
155 | typedef __uint16_t __uint_least16_t; |
||
156 | #define ___int_least16_t_defined 1 |
||
157 | #elif defined(___int32_t_defined) |
||
158 | typedef __int32_t __int_least16_t; |
||
159 | typedef __uint32_t __uint_least16_t; |
||
160 | #define ___int_least16_t_defined 1 |
||
161 | #elif defined(___int64_t_defined) |
||
162 | typedef __int64_t __int_least16_t; |
||
163 | typedef __uint64_t __uint_least16_t; |
||
164 | #define ___int_least16_t_defined 1 |
||
165 | #endif |
||
166 | |||
167 | #ifdef __INT_LEAST32_TYPE__ |
||
168 | typedef __INT_LEAST32_TYPE__ __int_least32_t; |
||
6099 | serge | 169 | #ifdef __UINT_LEAST32_TYPE__ |
4921 | Serge | 170 | typedef __UINT_LEAST32_TYPE__ __uint_least32_t; |
6099 | serge | 171 | #else |
172 | typedef unsigned __INT_LEAST32_TYPE__ __uint_least32_t; |
||
173 | #endif |
||
4921 | Serge | 174 | #define ___int_least32_t_defined 1 |
175 | #elif defined(___int32_t_defined) |
||
176 | typedef __int32_t __int_least32_t; |
||
177 | typedef __uint32_t __uint_least32_t; |
||
178 | #define ___int_least32_t_defined 1 |
||
179 | #elif defined(___int64_t_defined) |
||
180 | typedef __int64_t __int_least32_t; |
||
181 | typedef __uint64_t __uint_least32_t; |
||
182 | #define ___int_least32_t_defined 1 |
||
183 | #endif |
||
184 | |||
185 | #ifdef __INT_LEAST64_TYPE__ |
||
186 | typedef __INT_LEAST64_TYPE__ __int_least64_t; |
||
6099 | serge | 187 | #ifdef __UINT_LEAST64_TYPE__ |
4921 | Serge | 188 | typedef __UINT_LEAST64_TYPE__ __uint_least64_t; |
6099 | serge | 189 | #else |
190 | typedef unsigned __INT_LEAST64_TYPE__ __uint_least64_t; |
||
191 | #endif |
||
4921 | Serge | 192 | #define ___int_least64_t_defined 1 |
193 | #elif defined(___int64_t_defined) |
||
194 | typedef __int64_t __int_least64_t; |
||
195 | typedef __uint64_t __uint_least64_t; |
||
196 | #define ___int_least64_t_defined 1 |
||
197 | #endif |
||
198 | |||
199 | #ifdef __INTPTR_TYPE__ |
||
200 | typedef __INTPTR_TYPE__ __intptr_t; |
||
6099 | serge | 201 | #ifdef __UINTPTR_TYPE__ |
4921 | Serge | 202 | typedef __UINTPTR_TYPE__ __uintptr_t; |
6099 | serge | 203 | #else |
204 | typedef unsigned __INTPTR_TYPE__ __uintptr_t; |
||
205 | #endif |
||
4921 | Serge | 206 | #elif defined(__PTRDIFF_TYPE__) |
207 | typedef __PTRDIFF_TYPE__ __intptr_t; |
||
208 | typedef unsigned __PTRDIFF_TYPE__ __uintptr_t; |
||
209 | #else |
||
210 | typedef long __intptr_t; |
||
211 | typedef unsigned long __uintptr_t; |
||
212 | #endif |
||
213 | |||
4349 | Serge | 214 | #undef __EXP |
215 | |||
216 | #ifdef __cplusplus |
||
217 | } |
||
218 | #endif |
||
219 | |||
220 | #endif /* _MACHINE__DEFAULT_TYPES_H */ |