Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * Copyright (c) 2004, 2005 by
  3.  * Ralf Corsepius, Ulm/Germany. All rights reserved.
  4.  *
  5.  * Permission to use, copy, modify, and distribute this software
  6.  * is freely granted, provided that this notice is preserved.
  7.  */
  8.  
  9. /**
  10.  *  @file  inttypes.h
  11.  */
  12.  
  13. #ifndef _INTTYPES_H
  14. #define _INTTYPES_H
  15.  
  16. #include <stdint.h>
  17. #define __need_wchar_t
  18. #include <stddef.h>
  19.  
  20. #define __STRINGIFY(a) #a
  21.  
  22. /* 8-bit types */
  23. #define __PRI8(x) __STRINGIFY(x)
  24. #define __SCN8(x) __STRINGIFY(hh##x)
  25.  
  26.  
  27. #define PRId8           __PRI8(d)
  28. #define PRIi8           __PRI8(i)
  29. #define PRIo8           __PRI8(o)
  30. #define PRIu8           __PRI8(u)
  31. #define PRIx8           __PRI8(x)
  32. #define PRIX8           __PRI8(X)
  33.  
  34. #define SCNd8           __SCN8(d)
  35. #define SCNi8           __SCN8(i)
  36. #define SCNo8           __SCN8(o)
  37. #define SCNu8           __SCN8(u)
  38. #define SCNx8           __SCN8(x)
  39.  
  40.  
  41. #define PRIdLEAST8      __PRI8(d)
  42. #define PRIiLEAST8      __PRI8(i)
  43. #define PRIoLEAST8      __PRI8(o)
  44. #define PRIuLEAST8      __PRI8(u)
  45. #define PRIxLEAST8      __PRI8(x)
  46. #define PRIXLEAST8      __PRI8(X)
  47.  
  48. #define SCNdLEAST8      __SCN8(d)
  49. #define SCNiLEAST8      __SCN8(i)
  50. #define SCNoLEAST8      __SCN8(o)
  51. #define SCNuLEAST8      __SCN8(u)
  52. #define SCNxLEAST8      __SCN8(x)
  53.  
  54.  
  55. #define PRIdFAST8       __PRI8(d)
  56. #define PRIiFAST8       __PRI8(i)
  57. #define PRIoFAST8       __PRI8(o)
  58. #define PRIuFAST8       __PRI8(u)
  59. #define PRIxFAST8       __PRI8(x)
  60. #define PRIXFAST8       __PRI8(X)
  61.  
  62. #define SCNdFAST8       __SCN8(d)
  63. #define SCNiFAST8       __SCN8(i)
  64. #define SCNoFAST8       __SCN8(o)
  65. #define SCNuFAST8       __SCN8(u)
  66. #define SCNxFAST8       __SCN8(x)
  67.  
  68. /* 16-bit types */
  69. #define __PRI16(x) __STRINGIFY(x)
  70. #define __SCN16(x) __STRINGIFY(h##x)
  71.  
  72.  
  73. #define PRId16          __PRI16(d)
  74. #define PRIi16          __PRI16(i)
  75. #define PRIo16          __PRI16(o)
  76. #define PRIu16          __PRI16(u)
  77. #define PRIx16          __PRI16(x)
  78. #define PRIX16          __PRI16(X)
  79.  
  80. #define SCNd16          __SCN16(d)
  81. #define SCNi16          __SCN16(i)
  82. #define SCNo16          __SCN16(o)
  83. #define SCNu16          __SCN16(u)
  84. #define SCNx16          __SCN16(x)
  85.  
  86.  
  87. #define PRIdLEAST16     __PRI16(d)
  88. #define PRIiLEAST16     __PRI16(i)
  89. #define PRIoLEAST16     __PRI16(o)
  90. #define PRIuLEAST16     __PRI16(u)
  91. #define PRIxLEAST16     __PRI16(x)
  92. #define PRIXLEAST16     __PRI16(X)
  93.  
  94. #define SCNdLEAST16     __SCN16(d)
  95. #define SCNiLEAST16     __SCN16(i)
  96. #define SCNoLEAST16     __SCN16(o)
  97. #define SCNuLEAST16     __SCN16(u)
  98. #define SCNxLEAST16     __SCN16(x)
  99.  
  100.  
  101. #define PRIdFAST16      __PRI16(d)
  102. #define PRIiFAST16      __PRI16(i)
  103. #define PRIoFAST16      __PRI16(o)
  104. #define PRIuFAST16      __PRI16(u)
  105. #define PRIxFAST16      __PRI16(x)
  106. #define PRIXFAST16      __PRI16(X)
  107.  
  108. #define SCNdFAST16      __SCN16(d)
  109. #define SCNiFAST16      __SCN16(i)
  110. #define SCNoFAST16      __SCN16(o)
  111. #define SCNuFAST16      __SCN16(u)
  112. #define SCNxFAST16      __SCN16(x)
  113.  
  114. /* 32-bit types */
  115. #if __have_long32
  116. #define __PRI32(x) __STRINGIFY(l##x)
  117. #define __SCN32(x) __STRINGIFY(l##x)
  118. #else
  119. #define __PRI32(x) __STRINGIFY(x)
  120. #define __SCN32(x) __STRINGIFY(x)
  121. #endif
  122.  
  123. #define PRId32          __PRI32(d)
  124. #define PRIi32          __PRI32(i)
  125. #define PRIo32          __PRI32(o)
  126. #define PRIu32          __PRI32(u)
  127. #define PRIx32          __PRI32(x)
  128. #define PRIX32          __PRI32(X)
  129.  
  130. #define SCNd32          __SCN32(d)
  131. #define SCNi32          __SCN32(i)
  132. #define SCNo32          __SCN32(o)
  133. #define SCNu32          __SCN32(u)
  134. #define SCNx32          __SCN32(x)
  135.  
  136.  
  137. #define PRIdLEAST32     __PRI32(d)
  138. #define PRIiLEAST32     __PRI32(i)
  139. #define PRIoLEAST32     __PRI32(o)
  140. #define PRIuLEAST32     __PRI32(u)
  141. #define PRIxLEAST32     __PRI32(x)
  142. #define PRIXLEAST32     __PRI32(X)
  143.  
  144. #define SCNdLEAST32     __SCN32(d)
  145. #define SCNiLEAST32     __SCN32(i)
  146. #define SCNoLEAST32     __SCN32(o)
  147. #define SCNuLEAST32     __SCN32(u)
  148. #define SCNxLEAST32     __SCN32(x)
  149.  
  150.  
  151. #define PRIdFAST32      __PRI32(d)
  152. #define PRIiFAST32      __PRI32(i)
  153. #define PRIoFAST32      __PRI32(o)
  154. #define PRIuFAST32      __PRI32(u)
  155. #define PRIxFAST32      __PRI32(x)
  156. #define PRIXFAST32      __PRI32(X)
  157.  
  158. #define SCNdFAST32      __SCN32(d)
  159. #define SCNiFAST32      __SCN32(i)
  160. #define SCNoFAST32      __SCN32(o)
  161. #define SCNuFAST32      __SCN32(u)
  162. #define SCNxFAST32      __SCN32(x)
  163.  
  164.  
  165. /* 64-bit types */
  166. #if __have_long64
  167. #define __PRI64(x) __STRINGIFY(l##x)
  168. #define __SCN64(x) __STRINGIFY(l##x)
  169. #elif __have_longlong64
  170. #define __PRI64(x) __STRINGIFY(ll##x)
  171. #define __SCN64(x) __STRINGIFY(ll##x)
  172. #else
  173. #define __PRI64(x) __STRINGIFY(x)
  174. #define __SCN64(x) __STRINGIFY(x)
  175. #endif
  176.  
  177. #define PRId64          __PRI64(d)
  178. #define PRIi64          __PRI64(i)
  179. #define PRIo64          __PRI64(o)
  180. #define PRIu64          __PRI64(u)
  181. #define PRIx64          __PRI64(x)
  182. #define PRIX64          __PRI64(X)
  183.  
  184. #define SCNd64          __SCN64(d)
  185. #define SCNi64          __SCN64(i)
  186. #define SCNo64          __SCN64(o)
  187. #define SCNu64          __SCN64(u)
  188. #define SCNx64          __SCN64(x)
  189.  
  190. #if __int64_t_defined
  191. #define PRIdLEAST64     __PRI64(d)
  192. #define PRIiLEAST64     __PRI64(i)
  193. #define PRIoLEAST64     __PRI64(o)
  194. #define PRIuLEAST64     __PRI64(u)
  195. #define PRIxLEAST64     __PRI64(x)
  196. #define PRIXLEAST64     __PRI64(X)
  197.  
  198. #define SCNdLEAST64     __SCN64(d)
  199. #define SCNiLEAST64     __SCN64(i)
  200. #define SCNoLEAST64     __SCN64(o)
  201. #define SCNuLEAST64     __SCN64(u)
  202. #define SCNxLEAST64     __SCN64(x)
  203.  
  204.  
  205. #define PRIdFAST64      __PRI64(d)
  206. #define PRIiFAST64      __PRI64(i)
  207. #define PRIoFAST64      __PRI64(o)
  208. #define PRIuFAST64      __PRI64(u)
  209. #define PRIxFAST64      __PRI64(x)
  210. #define PRIXFAST64      __PRI64(X)
  211.  
  212. #define SCNdFAST64      __SCN64(d)
  213. #define SCNiFAST64      __SCN64(i)
  214. #define SCNoFAST64      __SCN64(o)
  215. #define SCNuFAST64      __SCN64(u)
  216. #define SCNxFAST64      __SCN64(x)
  217. #endif
  218.  
  219. /* max-bit types */
  220. #if __have_long64
  221. #define __PRIMAX(x) __STRINGIFY(l##x)
  222. #define __SCNMAX(x) __STRINGIFY(l##x)
  223. #elif __have_longlong64
  224. #define __PRIMAX(x) __STRINGIFY(ll##x)
  225. #define __SCNMAX(x) __STRINGIFY(ll##x)
  226. #else
  227. #define __PRIMAX(x) __STRINGIFY(x)
  228. #define __SCNMAX(x) __STRINGIFY(x)
  229. #endif
  230.  
  231. #define PRIdMAX         __PRIMAX(d)
  232. #define PRIiMAX         __PRIMAX(i)
  233. #define PRIoMAX         __PRIMAX(o)
  234. #define PRIuMAX         __PRIMAX(u)
  235. #define PRIxMAX         __PRIMAX(x)
  236. #define PRIXMAX         __PRIMAX(X)
  237.  
  238. #define SCNdMAX         __SCNMAX(d)
  239. #define SCNiMAX         __SCNMAX(i)
  240. #define SCNoMAX         __SCNMAX(o)
  241. #define SCNuMAX         __SCNMAX(u)
  242. #define SCNxMAX         __SCNMAX(x)
  243.  
  244. /* ptr types */
  245. #if __have_long64
  246. #define __PRIPTR(x) __STRINGIFY(l##x)
  247. #define __SCNPTR(x) __STRINGIFY(l##x)
  248. #elif __have_longlong64
  249. #define __PRIPTR(x) __STRINGIFY(ll##x)
  250. #define __SCNPTR(x) __STRINGIFY(ll##x)
  251. #else
  252. #define __PRIPTR(x) __STRINGIFY(x)
  253. #define __SCNPTR(x) __STRINGIFY(x)
  254. #endif
  255.  
  256. #define PRIdPTR         __PRIPTR(d)
  257. #define PRIiPTR         __PRIPTR(i)
  258. #define PRIoPTR         __PRIPTR(o)
  259. #define PRIuPTR         __PRIPTR(u)
  260. #define PRIxPTR         __PRIPTR(x)
  261. #define PRIXPTR         __PRIPTR(X)
  262.  
  263. #define SCNdPTR         __SCNPTR(d)
  264. #define SCNiPTR         __SCNPTR(i)
  265. #define SCNoPTR         __SCNPTR(o)
  266. #define SCNuPTR         __SCNPTR(u)
  267. #define SCNxPTR         __SCNPTR(x)
  268.  
  269.  
  270. typedef struct {
  271.   intmax_t      quot;
  272.   intmax_t      rem;
  273. } imaxdiv_t;
  274.  
  275. #ifdef __cplusplus
  276. extern "C" {
  277. #endif
  278.  
  279. extern intmax_t  imaxabs(intmax_t j);
  280. extern imaxdiv_t imaxdiv(intmax_t numer, intmax_t denomer);
  281. extern intmax_t  strtoimax(const char *__restrict, char **__restrict, int);
  282. extern uintmax_t strtoumax(const char *__restrict, char **__restrict, int);
  283. extern intmax_t  wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int);
  284. extern uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int);
  285.  
  286. #ifdef __cplusplus
  287. }
  288. #endif
  289.  
  290. #endif
  291.