Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  *  $Id: _default_types.h,v 1.2 2008/06/11 22:14:54 jjohnstn Exp $
  3.  */
  4.  
  5. #ifndef _MACHINE__DEFAULT_TYPES_H
  6. #define _MACHINE__DEFAULT_TYPES_H
  7.  
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11.  
  12. /*
  13.  * Guess on types by examining *_MIN / *_MAX defines.
  14.  */
  15. #if defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ >= 3 ) \
  16.   && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ > 2 ))
  17. /* GCC >= 3.3.0 has __<val>__ implicitly defined. */
  18. #define __EXP(x) __##x##__
  19. #else
  20. /* Fall back to POSIX versions from <limits.h> */
  21. #define __EXP(x) x
  22. #include <limits.h>
  23. #endif
  24.  
  25. #if __EXP(SCHAR_MAX) == 0x7f
  26. typedef signed char __int8_t ;
  27. typedef unsigned char __uint8_t ;
  28. #define ___int8_t_defined 1
  29. #endif
  30.  
  31. #if __EXP(INT_MAX) == 0x7fff
  32. typedef signed int __int16_t;
  33. typedef unsigned int __uint16_t;
  34. #define ___int16_t_defined 1
  35. #elif __EXP(SHRT_MAX) == 0x7fff
  36. typedef signed short __int16_t;
  37. typedef unsigned short __uint16_t;
  38. #define ___int16_t_defined 1
  39. #elif __EXP(SCHAR_MAX) == 0x7fff
  40. typedef signed char __int16_t;
  41. typedef unsigned char __uint16_t;
  42. #define ___int16_t_defined 1
  43. #endif
  44.  
  45. #if ___int16_t_defined
  46. typedef __int16_t __int_least16_t;
  47. typedef __uint16_t __uint_least16_t;
  48. #define ___int_least16_t_defined 1
  49.  
  50. #if !___int8_t_defined
  51. typedef __int16_t __int_least8_t;
  52. typedef __uint16_t __uint_least8_t;
  53. #define ___int_least8_t_defined 1
  54. #endif
  55. #endif
  56.  
  57. #if __EXP(INT_MAX) == 0x7fffffffL
  58. typedef signed int __int32_t;
  59. typedef unsigned int __uint32_t;
  60. #define ___int32_t_defined 1
  61. #elif __EXP(LONG_MAX) == 0x7fffffffL
  62. typedef signed long __int32_t;
  63. typedef unsigned long __uint32_t;
  64. #define ___int32_t_defined 1
  65. #elif __EXP(SHRT_MAX) == 0x7fffffffL
  66. typedef signed short __int32_t;
  67. typedef unsigned short __uint32_t;
  68. #define ___int32_t_defined 1
  69. #elif __EXP(SCHAR_MAX) == 0x7fffffffL
  70. typedef signed char __int32_t;
  71. typedef unsigned char __uint32_t;
  72. #define ___int32_t_defined 1
  73. #endif
  74.  
  75. #if ___int32_t_defined
  76. typedef __int32_t __int_least32_t;
  77. typedef __uint32_t __uint_least32_t;
  78. #define ___int_least32_t_defined 1
  79.  
  80. #if !___int8_t_defined
  81. typedef __int32_t __int_least8_t;
  82. typedef __uint32_t __uint_least8_t;
  83. #define ___int_least8_t_defined 1
  84. #endif
  85. #if !___int16_t_defined
  86. typedef __int32_t __int_least16_t;
  87. typedef __uint32_t __uint_least16_t;
  88. #define ___int_least16_t_defined 1
  89. #endif
  90. #endif
  91.  
  92. #if __EXP(LONG_MAX) > 0x7fffffff
  93. typedef signed long __int64_t;
  94. typedef unsigned long __uint64_t;
  95. #define ___int64_t_defined 1
  96.  
  97. /* GCC has __LONG_LONG_MAX__ */
  98. #elif  defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff)
  99. typedef signed long long __int64_t;
  100. typedef unsigned long long __uint64_t;
  101. #define ___int64_t_defined 1
  102.  
  103. /* POSIX mandates LLONG_MAX in <limits.h> */
  104. #elif  defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff)
  105. typedef signed long long __int64_t;
  106. typedef unsigned long long __uint64_t;
  107. #define ___int64_t_defined 1
  108.  
  109. #elif  __EXP(INT_MAX) > 0x7fffffff
  110. typedef signed int __int64_t;
  111. typedef unsigned int __uint64_t;
  112. #define ___int64_t_defined 1
  113. #endif
  114.  
  115. #undef __EXP
  116.  
  117. #ifdef __cplusplus
  118. }
  119. #endif
  120.  
  121. #endif /* _MACHINE__DEFAULT_TYPES_H */
  122.