Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. #ifndef _INTTYPES_H
  2. #define _INTTYPES_H
  3. #endif
  4.  
  5. #ifndef _INTTYPES_H
  6. #define _INTTYPES_H
  7.  
  8. #include <sys/cdefs.h>
  9. #include <endian.h>
  10.  
  11. __BEGIN_DECLS
  12.  
  13. # if __WORDSIZE == 64
  14. #  define __PRI64_PREFIX        "l"
  15. #  define __PRIPTR_PREFIX       "l"
  16. # else
  17. #  define __PRI64_PREFIX        "ll"
  18. #  define __PRIPTR_PREFIX
  19. # endif
  20.  
  21. /* Macros for printing format specifiers.  */
  22.  
  23. /* Decimal notation.  */
  24. # define PRId8          "d"
  25. # define PRId16         "d"
  26. # define PRId32         "d"
  27. # define PRId64         __PRI64_PREFIX "d"
  28.  
  29. # define PRIdLEAST8     "d"
  30. # define PRIdLEAST16    "d"
  31. # define PRIdLEAST32    "d"
  32. # define PRIdLEAST64    __PRI64_PREFIX "d"
  33.  
  34. # define PRIdFAST8      "d"
  35. # define PRIdFAST16     "d"
  36. # define PRIdFAST32     "d"
  37. # define PRIdFAST64     __PRI64_PREFIX "d"
  38.  
  39.  
  40. # define PRIi8          "i"
  41. # define PRIi16         "i"
  42. # define PRIi32         "i"
  43. # define PRIi64         __PRI64_PREFIX "i"
  44.  
  45. # define PRIiLEAST8     "i"
  46. # define PRIiLEAST16    "i"
  47. # define PRIiLEAST32    "i"
  48. # define PRIiLEAST64    __PRI64_PREFIX "i"
  49.  
  50. # define PRIiFAST8      "i"
  51. # define PRIiFAST16     "i"
  52. # define PRIiFAST32     "i"
  53. # define PRIiFAST64     __PRI64_PREFIX "i"
  54.  
  55. /* Octal notation.  */
  56. # define PRIo8          "o"
  57. # define PRIo16         "o"
  58. # define PRIo32         "o"
  59. # define PRIo64         __PRI64_PREFIX "o"
  60.  
  61. # define PRIoLEAST8     "o"
  62. # define PRIoLEAST16    "o"
  63. # define PRIoLEAST32    "o"
  64. # define PRIoLEAST64    __PRI64_PREFIX "o"
  65.  
  66. # define PRIoFAST8      "o"
  67. # define PRIoFAST16     "o"
  68. # define PRIoFAST32     "o"
  69. # define PRIoFAST64     __PRI64_PREFIX "o"
  70.  
  71. /* Unsigned integers.  */
  72. # define PRIu8          "u"
  73. # define PRIu16         "u"
  74. # define PRIu32         "u"
  75. # define PRIu64         __PRI64_PREFIX "u"
  76.  
  77. # define PRIuLEAST8     "u"
  78. # define PRIuLEAST16    "u"
  79. # define PRIuLEAST32    "u"
  80. # define PRIuLEAST64    __PRI64_PREFIX "u"
  81.  
  82. # define PRIuFAST8      "u"
  83. # define PRIuFAST16     "u"
  84. # define PRIuFAST32     "u"
  85. # define PRIuFAST64     __PRI64_PREFIX "u"
  86.  
  87. /* lowercase hexadecimal notation.  */
  88. # define PRIx8          "x"
  89. # define PRIx16         "x"
  90. # define PRIx32         "x"
  91. # define PRIx64         __PRI64_PREFIX "x"
  92.  
  93. # define PRIxLEAST8     "x"
  94. # define PRIxLEAST16    "x"
  95. # define PRIxLEAST32    "x"
  96. # define PRIxLEAST64    __PRI64_PREFIX "x"
  97.  
  98. # define PRIxFAST8      "x"
  99. # define PRIxFAST16     "x"
  100. # define PRIxFAST32     "x"
  101. # define PRIxFAST64     __PRI64_PREFIX "x"
  102.  
  103. /* UPPERCASE hexadecimal notation.  */
  104. # define PRIX8          "X"
  105. # define PRIX16         "X"
  106. # define PRIX32         "X"
  107. # define PRIX64         __PRI64_PREFIX "X"
  108.  
  109. # define PRIXLEAST8     "X"
  110. # define PRIXLEAST16    "X"
  111. # define PRIXLEAST32    "X"
  112. # define PRIXLEAST64    __PRI64_PREFIX "X"
  113.  
  114. # define PRIXFAST8      "X"
  115. # define PRIXFAST16     "X"
  116. # define PRIXFAST32     "X"
  117. # define PRIXFAST64     __PRI64_PREFIX "X"
  118.  
  119.  
  120. /* Macros for printing `intmax_t' and `uintmax_t'.  */
  121. # define PRIdMAX        __PRI64_PREFIX "d"
  122. # define PRIiMAX        __PRI64_PREFIX "i"
  123. # define PRIoMAX        __PRI64_PREFIX "o"
  124. # define PRIuMAX        __PRI64_PREFIX "u"
  125. # define PRIxMAX        __PRI64_PREFIX "x"
  126. # define PRIXMAX        __PRI64_PREFIX "X"
  127.  
  128.  
  129. /* Macros for printing `intptr_t' and `uintptr_t'.  */
  130. # define PRIdPTR        __PRIPTR_PREFIX "d"
  131. # define PRIiPTR        __PRIPTR_PREFIX "i"
  132. # define PRIoPTR        __PRIPTR_PREFIX "o"
  133. # define PRIuPTR        __PRIPTR_PREFIX "u"
  134. # define PRIxPTR        __PRIPTR_PREFIX "x"
  135. # define PRIXPTR        __PRIPTR_PREFIX "X"
  136.  
  137.  
  138. /* Macros for scanning format specifiers.  */
  139.  
  140. /* Signed decimal notation.  */
  141. # define SCNd8          "hhd"
  142. # define SCNd16         "hd"
  143. # define SCNd32         "d"
  144. # define SCNd64         __PRI64_PREFIX "d"
  145.  
  146. # define SCNdLEAST8     "hhd"
  147. # define SCNdLEAST16    "hd"
  148. # define SCNdLEAST32    "d"
  149. # define SCNdLEAST64    __PRI64_PREFIX "d"
  150.  
  151. # define SCNdFAST8      "hhd"
  152. # define SCNdFAST16     __PRIPTR_PREFIX "d"
  153. # define SCNdFAST32     __PRIPTR_PREFIX "d"
  154. # define SCNdFAST64     __PRI64_PREFIX "d"
  155.  
  156. /* Signed decimal notation.  */
  157. # define SCNi8          "hhi"
  158. # define SCNi16         "hi"
  159. # define SCNi32         "i"
  160. # define SCNi64         __PRI64_PREFIX "i"
  161.  
  162. # define SCNiLEAST8     "hhi"
  163. # define SCNiLEAST16    "hi"
  164. # define SCNiLEAST32    "i"
  165. # define SCNiLEAST64    __PRI64_PREFIX "i"
  166.  
  167. # define SCNiFAST8      "hhi"
  168. # define SCNiFAST16     __PRIPTR_PREFIX "i"
  169. # define SCNiFAST32     __PRIPTR_PREFIX "i"
  170. # define SCNiFAST64     __PRI64_PREFIX "i"
  171.  
  172. /* Unsigned decimal notation.  */
  173. # define SCNu8          "hhu"
  174. # define SCNu16         "hu"
  175. # define SCNu32         "u"
  176. # define SCNu64         __PRI64_PREFIX "u"
  177.  
  178. # define SCNuLEAST8     "hhu"
  179. # define SCNuLEAST16    "hu"
  180. # define SCNuLEAST32    "u"
  181. # define SCNuLEAST64    __PRI64_PREFIX "u"
  182.  
  183. # define SCNuFAST8      "hhu"
  184. # define SCNuFAST16     __PRIPTR_PREFIX "u"
  185. # define SCNuFAST32     __PRIPTR_PREFIX "u"
  186. # define SCNuFAST64     __PRI64_PREFIX "u"
  187.  
  188. /* Octal notation.  */
  189. # define SCNo8          "hho"
  190. # define SCNo16         "ho"
  191. # define SCNo32         "o"
  192. # define SCNo64         __PRI64_PREFIX "o"
  193.  
  194. # define SCNoLEAST8     "hho"
  195. # define SCNoLEAST16    "ho"
  196. # define SCNoLEAST32    "o"
  197. # define SCNoLEAST64    __PRI64_PREFIX "o"
  198.  
  199. # define SCNoFAST8      "hho"
  200. # define SCNoFAST16     __PRIPTR_PREFIX "o"
  201. # define SCNoFAST32     __PRIPTR_PREFIX "o"
  202. # define SCNoFAST64     __PRI64_PREFIX "o"
  203.  
  204. /* Hexadecimal notation.  */
  205. # define SCNx8          "hhx"
  206. # define SCNx16         "hx"
  207. # define SCNx32         "x"
  208. # define SCNx64         __PRI64_PREFIX "x"
  209.  
  210. # define SCNxLEAST8     "hhx"
  211. # define SCNxLEAST16    "hx"
  212. # define SCNxLEAST32    "x"
  213. # define SCNxLEAST64    __PRI64_PREFIX "x"
  214.  
  215. # define SCNxFAST8      "hhx"
  216. # define SCNxFAST16     __PRIPTR_PREFIX "x"
  217. # define SCNxFAST32     __PRIPTR_PREFIX "x"
  218. # define SCNxFAST64     __PRI64_PREFIX "x"
  219.  
  220.  
  221. /* Macros for scanning `intmax_t' and `uintmax_t'.  */
  222. # define SCNdMAX        __PRI64_PREFIX "d"
  223. # define SCNiMAX        __PRI64_PREFIX "i"
  224. # define SCNoMAX        __PRI64_PREFIX "o"
  225. # define SCNuMAX        __PRI64_PREFIX "u"
  226. # define SCNxMAX        __PRI64_PREFIX "x"
  227.  
  228. /* Macros for scanning `intptr_t' and `uintptr_t'.  */
  229. # define SCNdPTR        __PRIPTR_PREFIX "d"
  230. # define SCNiPTR        __PRIPTR_PREFIX "i"
  231. # define SCNoPTR        __PRIPTR_PREFIX "o"
  232. # define SCNuPTR        __PRIPTR_PREFIX "u"
  233. # define SCNxPTR        __PRIPTR_PREFIX "x"
  234.  
  235. typedef signed char int8_t;
  236. typedef signed short int16_t;
  237. typedef signed int int32_t;
  238.  
  239. typedef unsigned char uint8_t;
  240. typedef unsigned short uint16_t;
  241. typedef unsigned int uint32_t;
  242.  
  243. typedef signed long int intptr_t;
  244. typedef unsigned long int uintptr_t;
  245.  
  246. #ifndef __STRICT_ANSI__
  247. __extension__ typedef signed long long int64_t;
  248. __extension__ typedef unsigned long long uint64_t;
  249. __extension__ typedef signed long long int intmax_t;
  250. __extension__ typedef unsigned long long int uintmax_t;
  251. #endif
  252.  
  253. __END_DECLS
  254.  
  255. #endif
  256.