| /* |
| * $Id: _default_types.h,v 1.2 2008/06/11 22:14:54 jjohnstn Exp $ |
| */ |
| |
| #ifndef _MACHINE__DEFAULT_TYPES_H |
| #define _MACHINE__DEFAULT_TYPES_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* |
| * Guess on types by examining *_MIN / *_MAX defines. |
| */ |
| #if defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ >= 3 ) \ |
| && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ > 2 )) |
| /* GCC >= 3.3.0 has __<val>__ implicitly defined. */ |
| #define __EXP(x) __##x##__ |
| #else |
| /* Fall back to POSIX versions from <limits.h> */ |
| #define __EXP(x) x |
| #include <limits.h> |
| #endif |
| |
| #if __EXP(SCHAR_MAX) == 0x7f |
| typedef signed char __int8_t ; |
| typedef unsigned char __uint8_t ; |
| #define ___int8_t_defined 1 |
| #endif |
| |
| #if __EXP(INT_MAX) == 0x7fff |
| typedef signed int __int16_t; |
| typedef unsigned int __uint16_t; |
| #define ___int16_t_defined 1 |
| #elif __EXP(SHRT_MAX) == 0x7fff |
| typedef signed short __int16_t; |
| typedef unsigned short __uint16_t; |
| #define ___int16_t_defined 1 |
| #elif __EXP(SCHAR_MAX) == 0x7fff |
| typedef signed char __int16_t; |
| typedef unsigned char __uint16_t; |
| #define ___int16_t_defined 1 |
| #endif |
| |
| #if ___int16_t_defined |
| typedef __int16_t __int_least16_t; |
| typedef __uint16_t __uint_least16_t; |
| #define ___int_least16_t_defined 1 |
| |
| #if !___int8_t_defined |
| typedef __int16_t __int_least8_t; |
| typedef __uint16_t __uint_least8_t; |
| #define ___int_least8_t_defined 1 |
| #endif |
| #endif |
| |
| #if __EXP(INT_MAX) == 0x7fffffffL |
| typedef signed int __int32_t; |
| typedef unsigned int __uint32_t; |
| #define ___int32_t_defined 1 |
| #elif __EXP(LONG_MAX) == 0x7fffffffL |
| typedef signed long __int32_t; |
| typedef unsigned long __uint32_t; |
| #define ___int32_t_defined 1 |
| #elif __EXP(SHRT_MAX) == 0x7fffffffL |
| typedef signed short __int32_t; |
| typedef unsigned short __uint32_t; |
| #define ___int32_t_defined 1 |
| #elif __EXP(SCHAR_MAX) == 0x7fffffffL |
| typedef signed char __int32_t; |
| typedef unsigned char __uint32_t; |
| #define ___int32_t_defined 1 |
| #endif |
| |
| #if ___int32_t_defined |
| typedef __int32_t __int_least32_t; |
| typedef __uint32_t __uint_least32_t; |
| #define ___int_least32_t_defined 1 |
| |
| #if !___int8_t_defined |
| typedef __int32_t __int_least8_t; |
| typedef __uint32_t __uint_least8_t; |
| #define ___int_least8_t_defined 1 |
| #endif |
| #if !___int16_t_defined |
| typedef __int32_t __int_least16_t; |
| typedef __uint32_t __uint_least16_t; |
| #define ___int_least16_t_defined 1 |
| #endif |
| #endif |
| |
| #if __EXP(LONG_MAX) > 0x7fffffff |
| typedef signed long __int64_t; |
| typedef unsigned long __uint64_t; |
| #define ___int64_t_defined 1 |
| |
| /* GCC has __LONG_LONG_MAX__ */ |
| #elif defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff) |
| typedef signed long long __int64_t; |
| typedef unsigned long long __uint64_t; |
| #define ___int64_t_defined 1 |
| |
| /* POSIX mandates LLONG_MAX in <limits.h> */ |
| #elif defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff) |
| typedef signed long long __int64_t; |
| typedef unsigned long long __uint64_t; |
| #define ___int64_t_defined 1 |
| |
| #elif __EXP(INT_MAX) > 0x7fffffff |
| typedef signed int __int64_t; |
| typedef unsigned int __uint64_t; |
| #define ___int64_t_defined 1 |
| #endif |
| |
| #undef __EXP |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* _MACHINE__DEFAULT_TYPES_H */ |