Dibbler - a portable DHCPv6  1.0.2RC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
nettle-types.h
Go to the documentation of this file.
1 #ifndef __NETTLE_TYPES_H
2 #define __NETTLE_TYPES_H 1
3 #ifndef _GENERATED_STDINT_H
4 #define _GENERATED_STDINT_H " "
5 /* generated using gnu compiler gcc.exe (GCC) 3.2.3 (mingw special 20030504-1) */
6 #define _STDINT_HAVE_STDINT_H 1
7 
8 /* ................... shortcircuit part ........................... */
9 
10 #if defined HAVE_STDINT_H || defined _STDINT_HAVE_STDINT_H
11 #include <stdint.h>
12 #else
13 #include <stddef.h>
14 
15 /* .................... configured part ............................ */
16 
17 /* whether we have a C99 compatible stdint header file */
18 /* #undef _STDINT_HEADER_INTPTR */
19 /* whether we have a C96 compatible inttypes header file */
20 /* #undef _STDINT_HEADER_UINT32 */
21 /* whether we have a BSD compatible inet types header */
22 /* #undef _STDINT_HEADER_U_INT32 */
23 
24 /* which 64bit typedef has been found */
25 /* #undef _STDINT_HAVE_UINT64_T */
26 /* #undef _STDINT_HAVE_U_INT64_T */
27 
28 /* which type model has been detected */
29 /* #undef _STDINT_CHAR_MODEL // skipped */
30 /* #undef _STDINT_LONG_MODEL // skipped */
31 
32 /* whether int_least types were detected */
33 /* #undef _STDINT_HAVE_INT_LEAST32_T */
34 /* whether int_fast types were detected */
35 /* #undef _STDINT_HAVE_INT_FAST32_T */
36 /* whether intmax_t type was detected */
37 /* #undef _STDINT_HAVE_INTMAX_T */
38 
39 /* .................... detections part ............................ */
40 
41 /* whether we need to define bitspecific types from compiler base types */
42 #ifndef _STDINT_HEADER_INTPTR
43 #ifndef _STDINT_HEADER_UINT32
44 #ifndef _STDINT_HEADER_U_INT32
45 #define _STDINT_NEED_INT_MODEL_T
46 #else
47 #define _STDINT_HAVE_U_INT_TYPES
48 #endif
49 #endif
50 #endif
51 
52 #ifdef _STDINT_HAVE_U_INT_TYPES
53 #undef _STDINT_NEED_INT_MODEL_T
54 #endif
55 
56 #ifdef _STDINT_CHAR_MODEL
57 #if _STDINT_CHAR_MODEL+0 == 122 || _STDINT_CHAR_MODEL+0 == 124
58 #ifndef _STDINT_BYTE_MODEL
59 #define _STDINT_BYTE_MODEL 12
60 #endif
61 #endif
62 #endif
63 
64 #ifndef _STDINT_HAVE_INT_LEAST32_T
65 #define _STDINT_NEED_INT_LEAST_T
66 #endif
67 
68 #ifndef _STDINT_HAVE_INT_FAST32_T
69 #define _STDINT_NEED_INT_FAST_T
70 #endif
71 
72 #ifndef _STDINT_HEADER_INTPTR
73 #define _STDINT_NEED_INTPTR_T
74 #ifndef _STDINT_HAVE_INTMAX_T
75 #define _STDINT_NEED_INTMAX_T
76 #endif
77 #endif
78 
79 
80 /* .................... definition part ............................ */
81 
82 /* some system headers have good uint64_t */
83 #ifndef _HAVE_UINT64_T
84 #if defined _STDINT_HAVE_UINT64_T || defined HAVE_UINT64_T
85 #define _HAVE_UINT64_T
86 #elif defined _STDINT_HAVE_U_INT64_T || defined HAVE_U_INT64_T
87 #define _HAVE_UINT64_T
88 typedef u_int64_t uint64_t;
89 #endif
90 #endif
91 
92 #ifndef _HAVE_UINT64_T
93 /* .. here are some common heuristics using compiler runtime specifics */
94 #if defined __STDC_VERSION__ && defined __STDC_VERSION__ >= 199901L
95 #define _HAVE_UINT64_T
96 typedef long long int64_t;
97 typedef unsigned long long uint64_t;
98 
99 #elif !defined __STRICT_ANSI__
100 #if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__
101 #define _HAVE_UINT64_T
102 typedef __int64 int64_t;
103 typedef unsigned __int64 uint64_t;
104 
105 #elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__
106 /* note: all ELF-systems seem to have loff-support which needs 64-bit */
107 #if !defined _NO_LONGLONG
108 #define _HAVE_UINT64_T
109 typedef long long int64_t;
110 typedef unsigned long long uint64_t;
111 #endif
112 
113 #elif defined __alpha || (defined __mips && defined _ABIN32)
114 #if !defined _NO_LONGLONG
115 typedef long int64_t;
116 typedef unsigned long uint64_t;
117 #endif
118  /* compiler/cpu type to define int64_t */
119 #endif
120 #endif
121 #endif
122 
123 #if defined _STDINT_HAVE_U_INT_TYPES
124 /* int8_t int16_t int32_t defined by inet code, redeclare the u_intXX types */
125 typedef u_int8_t uint8_t;
126 typedef u_int16_t uint16_t;
127 typedef u_int32_t uint32_t;
128 
129 /* glibc compatibility */
130 #ifndef __int8_t_defined
131 #define __int8_t_defined
132 #endif
133 #endif
134 
135 #ifdef _STDINT_NEED_INT_MODEL_T
136 /* we must guess all the basic types. Apart from byte-addressable system, */
137 /* there a few 32-bit-only dsp-systems that we guard with BYTE_MODEL 8-} */
138 /* (btw, those nibble-addressable systems are way off, or so we assume) */
139 
140 
141 #if defined _STDINT_BYTE_MODEL
142 #if _STDINT_LONG_MODEL+0 == 242
143 /* 2:4:2 = IP16 = a normal 16-bit system */
144 typedef unsigned char uint8_t;
145 typedef unsigned short uint16_t;
146 typedef unsigned long uint32_t;
147 #ifndef __int8_t_defined
148 #define __int8_t_defined
149 typedef char int8_t;
150 typedef short int16_t;
151 typedef long int32_t;
152 #endif
153 #elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL == 444
154 /* 2:4:4 = LP32 = a 32-bit system derived from a 16-bit */
155 /* 4:4:4 = ILP32 = a normal 32-bit system */
156 typedef unsigned char uint8_t;
157 typedef unsigned short uint16_t;
158 typedef unsigned int uint32_t;
159 #ifndef __int8_t_defined
160 #define __int8_t_defined
161 typedef char int8_t;
162 typedef short int16_t;
163 typedef int int32_t;
164 #endif
165 #elif _STDINT_LONG_MODEL+0 == 484 || _STDINT_LONG_MODEL+0 == 488
166 /* 4:8:4 = IP32 = a 32-bit system prepared for 64-bit */
167 /* 4:8:8 = LP64 = a normal 64-bit system */
168 typedef unsigned char uint8_t;
169 typedef unsigned short uint16_t;
170 typedef unsigned int uint32_t;
171 #ifndef __int8_t_defined
172 #define __int8_t_defined
173 typedef char int8_t;
174 typedef short int16_t;
175 typedef int int32_t;
176 #endif
177 /* this system has a "long" of 64bit */
178 #ifndef _HAVE_UINT64_T
179 #define _HAVE_UINT64_T
180 typedef unsigned long uint64_t;
181 typedef long int64_t;
182 #endif
183 #elif _STDINT_LONG_MODEL+0 == 448
184 /* LLP64 a 64-bit system derived from a 32-bit system */
185 typedef unsigned char uint8_t;
186 typedef unsigned short uint16_t;
187 typedef unsigned int uint32_t;
188 #ifndef __int8_t_defined
189 #define __int8_t_defined
190 typedef char int8_t;
191 typedef short int16_t;
192 typedef int int32_t;
193 #endif
194 /* assuming the system has a "long long" */
195 #ifndef _HAVE_UINT64_T
196 #define _HAVE_UINT64_T
197 typedef unsigned long long uint64_t;
198 typedef long long int64_t;
199 #endif
200 #else
201 #define _STDINT_NO_INT32_T
202 #endif
203 #else
204 #define _STDINT_NO_INT8_T
205 #define _STDINT_NO_INT32_T
206 #endif
207 #endif
208 
209 /*
210  * quote from SunOS-5.8 sys/inttypes.h:
211  * Use at your own risk. As of February 1996, the committee is squarely
212  * behind the fixed sized types; the "least" and "fast" types are still being
213  * discussed. The probability that the "fast" types may be removed before
214  * the standard is finalized is high enough that they are not currently
215  * implemented.
216  */
217 
218 #if defined _STDINT_NEED_INT_LEAST_T
219 typedef int8_t int_least8_t;
220 typedef int16_t int_least16_t;
221 typedef int32_t int_least32_t;
222 #ifdef _HAVE_UINT64_T
223 typedef int64_t int_least64_t;
224 #endif
225 
226 typedef uint8_t uint_least8_t;
227 typedef uint16_t uint_least16_t;
228 typedef uint32_t uint_least32_t;
229 #ifdef _HAVE_UINT64_T
230 typedef uint64_t uint_least64_t;
231 #endif
232  /* least types */
233 #endif
234 
235 #if defined _STDINT_NEED_INT_FAST_T
236 typedef int8_t int_fast8_t;
237 typedef int int_fast16_t;
238 typedef int32_t int_fast32_t;
239 #ifdef _HAVE_UINT64_T
240 typedef int64_t int_fast64_t;
241 #endif
242 
243 typedef uint8_t uint_fast8_t;
244 typedef unsigned uint_fast16_t;
245 typedef uint32_t uint_fast32_t;
246 #ifdef _HAVE_UINT64_T
247 typedef uint64_t uint_fast64_t;
248 #endif
249  /* fast types */
250 #endif
251 
252 #ifdef _STDINT_NEED_INTMAX_T
253 #ifdef _HAVE_UINT64_T
254 typedef int64_t intmax_t;
255 typedef uint64_t uintmax_t;
256 #else
257 typedef long intmax_t;
258 typedef unsigned long uintmax_t;
259 #endif
260 #endif
261 
262 #ifdef _STDINT_NEED_INTPTR_T
263 #ifndef __intptr_t_defined
264 #define __intptr_t_defined
265 /* we encourage using "long" to store pointer values, never use "int" ! */
266 #if _STDINT_LONG_MODEL+0 == 242 || _STDINT_LONG_MODEL+0 == 484
267 typedef unsinged int uintptr_t;
268 typedef int intptr_t;
269 #elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL+0 == 444
270 typedef unsigned long uintptr_t;
271 typedef long intptr_t;
272 #elif _STDINT_LONG_MODEL+0 == 448 && defined _HAVE_UINT64_T
273 typedef uint64_t uintptr_t;
274 typedef int64_t intptr_t;
275 #else /* matches typical system types ILP32 and LP64 - but not IP16 or LLP64 */
276 typedef unsigned long uintptr_t;
277 typedef long intptr_t;
278 #endif
279 #endif
280 #endif
281 
282  /* shortcircuit*/
283 #endif
284  /* once */
285 #endif
286 #endif
287