1 /* 2 * $Id$ 3 */ 4 5 #ifndef _MACHINE__DEFAULT_TYPES_H 6 #define _MACHINE__DEFAULT_TYPES_H 7 8 #include <sys/features.h> 9 10 /* 11 * Guess on types by examining *_MIN / *_MAX defines. 12 */ 13 #if __GNUC_PREREQ (3, 3) 14 /* GCC >= 3.3.0 has __<val>__ implicitly defined. */ 15 #define __EXP(x) __##x##__ 16 #else 17 /* Fall back to POSIX versions from <limits.h> */ 18 #define __EXP(x) x 19 #include <limits.h> 20 #endif 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 #ifdef __INT8_TYPE__ 27 typedef __INT8_TYPE__ __int8_t; 28 #ifdef __UINT8_TYPE__ 29 typedef __UINT8_TYPE__ __uint8_t; 30 #else 31 typedef unsigned __INT8_TYPE__ __uint8_t; 32 #endif 33 #define ___int8_t_defined 1 34 #elif __EXP(SCHAR_MAX) == 0x7f 35 typedef signed char __int8_t ; 36 typedef unsigned char __uint8_t ; 37 #define ___int8_t_defined 1 38 #endif 39 40 #ifdef __INT16_TYPE__ 41 typedef __INT16_TYPE__ __int16_t; 42 #ifdef __UINT16_TYPE__ 43 typedef __UINT16_TYPE__ __uint16_t; 44 #else 45 typedef unsigned __INT16_TYPE__ __uint16_t; 46 #endif 47 #define ___int16_t_defined 1 48 #elif __EXP(INT_MAX) == 0x7fff 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 62 #ifdef __INT32_TYPE__ 63 typedef __INT32_TYPE__ __int32_t; 64 #ifdef __UINT32_TYPE__ 65 typedef __UINT32_TYPE__ __uint32_t; 66 #else 67 typedef unsigned __INT32_TYPE__ __uint32_t; 68 #endif 69 #define ___int32_t_defined 1 70 #elif __EXP(INT_MAX) == 0x7fffffffL 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 88 #ifdef __INT64_TYPE__ 89 typedef __INT64_TYPE__ __int64_t; 90 #ifdef __UINT64_TYPE__ 91 typedef __UINT64_TYPE__ __uint64_t; 92 #else 93 typedef unsigned __INT64_TYPE__ __uint64_t; 94 #endif 95 #define ___int64_t_defined 1 96 #elif __EXP(LONG_MAX) > 0x7fffffff 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 <limits.h> */ 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 119 #ifdef __INT_LEAST8_TYPE__ 120 typedef __INT_LEAST8_TYPE__ __int_least8_t; 121 #ifdef __UINT_LEAST8_TYPE__ 122 typedef __UINT_LEAST8_TYPE__ __uint_least8_t; 123 #else 124 typedef unsigned __INT_LEAST8_TYPE__ __uint_least8_t; 125 #endif 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; 147 #ifdef __UINT_LEAST16_TYPE__ 148 typedef __UINT_LEAST16_TYPE__ __uint_least16_t; 149 #else 150 typedef unsigned __INT_LEAST16_TYPE__ __uint_least16_t; 151 #endif 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; 169 #ifdef __UINT_LEAST32_TYPE__ 170 typedef __UINT_LEAST32_TYPE__ __uint_least32_t; 171 #else 172 typedef unsigned __INT_LEAST32_TYPE__ __uint_least32_t; 173 #endif 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; 187 #ifdef __UINT_LEAST64_TYPE__ 188 typedef __UINT_LEAST64_TYPE__ __uint_least64_t; 189 #else 190 typedef unsigned __INT_LEAST64_TYPE__ __uint_least64_t; 191 #endif 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; 201 #ifdef __UINTPTR_TYPE__ 202 typedef __UINTPTR_TYPE__ __uintptr_t; 203 #else 204 typedef unsigned __INTPTR_TYPE__ __uintptr_t; 205 #endif 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 214 #undef __EXP 215 216 #ifdef __cplusplus 217 } 218 #endif 219 220 #endif /* _MACHINE__DEFAULT_TYPES_H */ 221