Subversion Repositories Kolibri OS

Rev

Rev 4921 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  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.