Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

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