Subversion Repositories Kolibri OS

Rev

Rev 4874 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /*
  2.  *  $Id: _default_types.h,v 1.6 2013/12/03 16:04:41 corinna Exp $
  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. typedef __UINT8_TYPE__ __uint8_t;
  29. #define ___int8_t_defined 1
  30. #elif __EXP(SCHAR_MAX) == 0x7f
  31. typedef signed char __int8_t ;
  32. typedef unsigned char __uint8_t ;
  33. #define ___int8_t_defined 1
  34. #endif
  35.  
  36. #ifdef __INT16_TYPE__
  37. typedef __INT16_TYPE__ __int16_t;
  38. typedef __UINT16_TYPE__ __uint16_t;
  39. #define ___int16_t_defined 1
  40. #elif __EXP(INT_MAX) == 0x7fff
  41. typedef signed int __int16_t;
  42. typedef unsigned int __uint16_t;
  43. #define ___int16_t_defined 1
  44. #elif __EXP(SHRT_MAX) == 0x7fff
  45. typedef signed short __int16_t;
  46. typedef unsigned short __uint16_t;
  47. #define ___int16_t_defined 1
  48. #elif __EXP(SCHAR_MAX) == 0x7fff
  49. typedef signed char __int16_t;
  50. typedef unsigned char __uint16_t;
  51. #define ___int16_t_defined 1
  52. #endif
  53.  
  54. #ifdef __INT32_TYPE__
  55. typedef __INT32_TYPE__ __int32_t;
  56. typedef __UINT32_TYPE__ __uint32_t;
  57. #define ___int32_t_defined 1
  58. #elif __EXP(INT_MAX) == 0x7fffffffL
  59. typedef signed int __int32_t;
  60. typedef unsigned int __uint32_t;
  61. #define ___int32_t_defined 1
  62. #elif __EXP(LONG_MAX) == 0x7fffffffL
  63. typedef signed long __int32_t;
  64. typedef unsigned long __uint32_t;
  65. #define ___int32_t_defined 1
  66. #elif __EXP(SHRT_MAX) == 0x7fffffffL
  67. typedef signed short __int32_t;
  68. typedef unsigned short __uint32_t;
  69. #define ___int32_t_defined 1
  70. #elif __EXP(SCHAR_MAX) == 0x7fffffffL
  71. typedef signed char __int32_t;
  72. typedef unsigned char __uint32_t;
  73. #define ___int32_t_defined 1
  74. #endif
  75.  
  76. #ifdef __INT64_TYPE__
  77. typedef __INT64_TYPE__ __int64_t;
  78. typedef __UINT64_TYPE__ __uint64_t;
  79. #define ___int64_t_defined 1
  80. #elif __EXP(LONG_MAX) > 0x7fffffff
  81. typedef signed long __int64_t;
  82. typedef unsigned long __uint64_t;
  83. #define ___int64_t_defined 1
  84.  
  85. /* GCC has __LONG_LONG_MAX__ */
  86. #elif  defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff)
  87. typedef signed long long __int64_t;
  88. typedef unsigned long long __uint64_t;
  89. #define ___int64_t_defined 1
  90.  
  91. /* POSIX mandates LLONG_MAX in <limits.h> */
  92. #elif  defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff)
  93. typedef signed long long __int64_t;
  94. typedef unsigned long long __uint64_t;
  95. #define ___int64_t_defined 1
  96.  
  97. #elif  __EXP(INT_MAX) > 0x7fffffff
  98. typedef signed int __int64_t;
  99. typedef unsigned int __uint64_t;
  100. #define ___int64_t_defined 1
  101. #endif
  102.  
  103. #ifdef __INT_LEAST8_TYPE__
  104. typedef __INT_LEAST8_TYPE__ __int_least8_t;
  105. typedef __UINT_LEAST8_TYPE__ __uint_least8_t;
  106. #define ___int_least8_t_defined 1
  107. #elif defined(___int8_t_defined)
  108. typedef __int8_t __int_least8_t;
  109. typedef __uint8_t __uint_least8_t;
  110. #define ___int_least8_t_defined 1
  111. #elif defined(___int16_t_defined)
  112. typedef __int16_t __int_least8_t;
  113. typedef __uint16_t __uint_least8_t;
  114. #define ___int_least8_t_defined 1
  115. #elif defined(___int32_t_defined)
  116. typedef __int32_t __int_least8_t;
  117. typedef __uint32_t __uint_least8_t;
  118. #define ___int_least8_t_defined 1
  119. #elif defined(___int64_t_defined)
  120. typedef __int64_t __int_least8_t;
  121. typedef __uint64_t __uint_least8_t;
  122. #define ___int_least8_t_defined 1
  123. #endif
  124.  
  125. #ifdef __INT_LEAST16_TYPE__
  126. typedef __INT_LEAST16_TYPE__ __int_least16_t;
  127. typedef __UINT_LEAST16_TYPE__ __uint_least16_t;
  128. #define ___int_least16_t_defined 1
  129. #elif defined(___int16_t_defined)
  130. typedef __int16_t __int_least16_t;
  131. typedef __uint16_t __uint_least16_t;
  132. #define ___int_least16_t_defined 1
  133. #elif defined(___int32_t_defined)
  134. typedef __int32_t __int_least16_t;
  135. typedef __uint32_t __uint_least16_t;
  136. #define ___int_least16_t_defined 1
  137. #elif defined(___int64_t_defined)
  138. typedef __int64_t __int_least16_t;
  139. typedef __uint64_t __uint_least16_t;
  140. #define ___int_least16_t_defined 1
  141. #endif
  142.  
  143. #ifdef __INT_LEAST32_TYPE__
  144. typedef __INT_LEAST32_TYPE__ __int_least32_t;
  145. typedef __UINT_LEAST32_TYPE__ __uint_least32_t;
  146. #define ___int_least32_t_defined 1
  147. #elif defined(___int32_t_defined)
  148. typedef __int32_t __int_least32_t;
  149. typedef __uint32_t __uint_least32_t;
  150. #define ___int_least32_t_defined 1
  151. #elif defined(___int64_t_defined)
  152. typedef __int64_t __int_least32_t;
  153. typedef __uint64_t __uint_least32_t;
  154. #define ___int_least32_t_defined 1
  155. #endif
  156.  
  157. #ifdef __INT_LEAST64_TYPE__
  158. typedef __INT_LEAST64_TYPE__ __int_least64_t;
  159. typedef __UINT_LEAST64_TYPE__ __uint_least64_t;
  160. #define ___int_least64_t_defined 1
  161. #elif defined(___int64_t_defined)
  162. typedef __int64_t __int_least64_t;
  163. typedef __uint64_t __uint_least64_t;
  164. #define ___int_least64_t_defined 1
  165. #endif
  166.  
  167. #ifdef __INTPTR_TYPE__
  168. typedef __INTPTR_TYPE__ __intptr_t;
  169. typedef __UINTPTR_TYPE__ __uintptr_t;
  170. #elif defined(__PTRDIFF_TYPE__)
  171. typedef __PTRDIFF_TYPE__ __intptr_t;
  172. typedef unsigned __PTRDIFF_TYPE__ __uintptr_t;
  173. #else
  174. typedef long __intptr_t;
  175. typedef unsigned long __uintptr_t;
  176. #endif
  177.  
  178. #undef __EXP
  179.  
  180. #ifdef __cplusplus
  181. }
  182. #endif
  183.  
  184. #endif /* _MACHINE__DEFAULT_TYPES_H */
  185.