Add inttypes.h format and scan macros.

This commit is contained in:
Jonas 'Sortie' Termansen 2013-03-23 02:44:31 +01:00
parent 3eeec255c0
commit 931c0d1bc5
2 changed files with 438 additions and 4 deletions

View File

@ -83,6 +83,30 @@ typedef long long int __int64_t;
#define __INT32_MAX (2147483647)
#define __INT64_MAX (__INT64_C(9223372036854775807))
#define __PRId8 "d"
#define __PRIi8 "i"
#define __SCNd8 "hhd"
#define __SCNi8 "hhi"
#define __PRId16 "d"
#define __PRIi16 "i"
#define __SCNd16 "hd"
#define __SCNi16 "hi"
#define __PRId32 "d"
#define __PRIi32 "i"
#define __SCNd32 "d"
#define __SCNi32 "i"
#if __WORDSIZE == 64
#define __PRId64 "ld"
#define __PRIi64 "li"
#define __SCNd64 "ld"
#define __SCNi64 "li"
#else
#define __PRId64 "lld"
#define __PRIi64 "lli"
#define __SCNd64 "lld"
#define __SCNi64 "lli"
#endif
/* Define basic unsigned types. */
typedef unsigned char __uint8_t;
typedef unsigned short int __uint16_t;
@ -98,6 +122,45 @@ typedef unsigned long long int __uint64_t;
#define __UINT32_MAX (4294967295U)
#define __UINT64_MAX (__UINT64_C(18446744073709551615))
#define __PRIo8 "o"
#define __PRIu8 "u"
#define __PRIx8 "x"
#define __PRIX8 "X"
#define __SCNo8 "hho"
#define __SCNu8 "hhu"
#define __SCNx8 "hhx"
#define __PRIo16 "o"
#define __PRIu16 "u"
#define __PRIx16 "x"
#define __PRIX16 "X"
#define __SCNo16 "ho"
#define __SCNu16 "hu"
#define __SCNx16 "hx"
#define __PRIo32 "o"
#define __PRIu32 "u"
#define __PRIx32 "x"
#define __PRIX32 "X"
#define __SCNo32 "o"
#define __SCNu32 "u"
#define __SCNx32 "x"
#if __WORDSIZE == 64
#define __PRIo64 "lo"
#define __PRIu64 "lu"
#define __PRIx64 "lx"
#define __PRIX64 "lX"
#define __SCNo64 "lo"
#define __SCNu64 "lu"
#define __SCNx64 "lx"
#else
#define __PRIo64 "llo"
#define __PRIu64 "llu"
#define __PRIx64 "llx"
#define __PRIX64 "llX"
#define __SCNo64 "llo"
#define __SCNu64 "llu"
#define __SCNx64 "llx"
#endif
/* Define small signed types. */
typedef signed char __int_least8_t;
typedef short int __int_least16_t;
@ -118,6 +181,30 @@ typedef long long int __int_least64_t;
#define __INT_LEAST32_MAX (2147483647)
#define __INT_LEAST64_MAX (__INT64_C(9223372036854775807))
#define __PRIdLEAST8 "d"
#define __PRIiLEAST8 "i"
#define __SCNdLEAST8 "hhd"
#define __SCNiLEAST8 "hhi"
#define __PRIdLEAST16 "d"
#define __PRIiLEAST16 "i"
#define __SCNdLEAST16 "hd"
#define __SCNiLEAST16 "hi"
#define __PRIdLEAST32 "d"
#define __PRIiLEAST32 "i"
#define __SCNdLEAST32 "d"
#define __SCNiLEAST32 "i"
#if __WORDSIZE == 64
#define __PRIdLEAST64 "ld"
#define __PRIiLEAST64 "li"
#define __SCNdLEAST64 "ld"
#define __SCNiLEAST64 "li"
#else
#define __PRIdLEAST64 "lld"
#define __PRIiLEAST64 "lli"
#define __SCNdLEAST64 "lld"
#define __SCNiLEAST64 "lli"
#endif
/* Define small unsigned types. */
typedef unsigned char __uint_least8_t;
typedef unsigned short int __uint_least16_t;
@ -133,6 +220,45 @@ typedef unsigned long long int __uint_least64_t;
#define __UINT_LEAST32_MAX (4294967295U)
#define __UINT_LEAST64_MAX (__UINT64_C(18446744073709551615))
#define __PRIoLEAST8 "o"
#define __PRIuLEAST8 "u"
#define __PRIxLEAST8 "x"
#define __PRIXLEAST8 "X"
#define __SCNoLEAST8 "hho"
#define __SCNuLEAST8 "hhu"
#define __SCNxLEAST8 "hhx"
#define __PRIoLEAST16 "o"
#define __PRIuLEAST16 "u"
#define __PRIxLEAST16 "x"
#define __PRIXLEAST16 "X"
#define __SCNoLEAST16 "ho"
#define __SCNuLEAST16 "hu"
#define __SCNxLEAST16 "hx"
#define __PRIoLEAST32 "o"
#define __PRIuLEAST32 "u"
#define __PRIxLEAST32 "x"
#define __PRIXLEAST32 "X"
#define __SCNoLEAST32 "o"
#define __SCNuLEAST32 "u"
#define __SCNxLEAST32 "x"
#if __WORDSIZE == 64
#define __PRIoLEAST64 "lo"
#define __PRIuLEAST64 "lu"
#define __PRIxLEAST64 "lx"
#define __PRIXLEAST64 "lX"
#define __SCNoLEAST64 "lo"
#define __SCNuLEAST64 "lu"
#define __SCNxLEAST64 "lx"
#else
#define __PRIoLEAST64 "llo"
#define __PRIuLEAST64 "llu"
#define __PRIxLEAST64 "llx"
#define __PRIXLEAST64 "llX"
#define __SCNoLEAST64 "llo"
#define __SCNuLEAST64 "llu"
#define __SCNxLEAST64 "llx"
#endif
/* Define fast signed types. */
typedef signed char __int_fast8_t;
#if __WORDSIZE == 64
@ -165,6 +291,38 @@ typedef long long int __int_fast64_t;
#endif
#define __INT_FAST64_MAX (__INT64_C(9223372036854775807))
#define __PRIdFAST8 "d"
#define __PRIiFAST8 "i"
#define __SCNdFAST8 "hhd"
#define __SCNiFAST8 "hhi"
#if __WORDSIZE == 64
#define __PRIdFAST16 "ld"
#define __PRIiFAST16 "li"
#define __SCNdFAST16 "ld"
#define __SCNiFAST16 "li"
#define __PRIdFAST32 "ld"
#define __PRIiFAST32 "li"
#define __SCNdFAST32 "ld"
#define __SCNiFAST32 "li"
#define __PRIdFAST64 "ld"
#define __PRIiFAST64 "li"
#define __SCNdFAST64 "ld"
#define __SCNiFAST64 "li"
#else
#define __PRIdFAST16 "d"
#define __PRIiFAST16 "i"
#define __SCNdFAST16 "d"
#define __SCNiFAST16 "i"
#define __PRIdFAST32 "i"
#define __PRIiFAST32 "d"
#define __SCNdFAST32 "d"
#define __SCNiFAST32 "i"
#define __PRIdFAST64 "lld"
#define __PRIiFAST64 "lli"
#define __SCNdFAST64 "lld"
#define __SCNiFAST64 "lli"
#endif
/* Define fast unsigned types. */
typedef unsigned char __uint_fast8_t;
#if __WORDSIZE == 64
@ -187,6 +345,59 @@ typedef unsigned long long int __uint_fast64_t;
#endif
#define __UINT_FAST64_MAX (__UINT64_C(18446744073709551615))
#define __PRIoFAST8 "o"
#define __PRIuFAST8 "u"
#define __PRIxFAST8 "x"
#define __PRIXFAST8 "X"
#define __SCNoFAST8 "hho"
#define __SCNuFAST8 "hhu"
#define __SCNxFAST8 "hhx"
#if __WORDSIZE == 64
#define __PRIoFAST16 "lo"
#define __PRIuFAST16 "lu"
#define __PRIxFAST16 "lx"
#define __PRIXFAST16 "lX"
#define __SCNoFAST16 "lo"
#define __SCNuFAST16 "lu"
#define __SCNxFAST16 "lx"
#define __PRIoFAST32 "lo"
#define __PRIuFAST32 "lu"
#define __PRIxFAST32 "lx"
#define __PRIXFAST32 "lX"
#define __SCNoFAST32 "lo"
#define __SCNuFAST32 "lu"
#define __SCNxFAST32 "lx"
#define __PRIoFAST64 "lo"
#define __PRIuFAST64 "lu"
#define __PRIxFAST64 "lx"
#define __PRIXFAST64 "lX"
#define __SCNoFAST64 "lo"
#define __SCNuFAST64 "lu"
#define __SCNxFAST64 "lx"
#else
#define __PRIoFAST16 "o"
#define __PRIuFAST16 "u"
#define __PRIxFAST16 "x"
#define __PRIXFAST16 "X"
#define __SCNoFAST16 "o"
#define __SCNuFAST16 "u"
#define __SCNxFAST16 "x"
#define __PRIoFAST32 "o"
#define __PRIuFAST32 "u"
#define __PRIxFAST32 "x"
#define __PRIXFAST32 "X"
#define __SCNoFAST32 "o"
#define __SCNuFAST32 "u"
#define __SCNxFAST32 "x"
#define __PRIoFAST64 "llo"
#define __PRIuFAST64 "llu"
#define __PRIxFAST64 "llx"
#define __PRIXFAST64 "llX"
#define __SCNoFAST64 "llo"
#define __SCNuFAST64 "llu"
#define __SCNxFAST64 "llx"
#endif
/* Define pointer-safe types. */
#if __WORDSIZE == 64
typedef long int __intptr_t;
@ -206,6 +417,32 @@ typedef unsigned int __uintptr_t;
#define __UINTPTR_MAX (4294967295U)
#endif
#if __WORDSIZE == 64
#define __PRIdPTR "ld"
#define __PRIiPTR "li"
#define __PRIoPTR "lo"
#define __PRIuPTR "lu"
#define __PRIxPTR "lx"
#define __PRIXPTR "lX"
#define __SCNdPTR "ld"
#define __SCNiPTR "li"
#define __SCNoPTR "lo"
#define __SCNuPTR "lu"
#define __SCNxPTR "lx"
#else
#define __PRIdPTR "d"
#define __PRIiPTR "i"
#define __PRIoPTR "o"
#define __PRIuPTR "u"
#define __PRIxPTR "x"
#define __PRIXPTR "X"
#define __SCNdPTR "d"
#define __SCNiPTR "i"
#define __SCNoPTR "o"
#define __SCNuPTR "u"
#define __SCNxPTR "x"
#endif
/* Define largest integer types. */
#if __WORDSIZE == 64
typedef long int __intmax_t;
@ -219,6 +456,32 @@ typedef long long unsigned int __uintmax_t;
#define __INTMAX_MAX (__INT64_C(9223372036854775807))
#define __UINTMAX_MAX (__UINT64_C(18446744073709551615))
#if __WORDSIZE == 64
#define __PRIdMAX "ld"
#define __PRIiMAX "li"
#define __PRIoMAX "lo"
#define __PRIuMAX "lu"
#define __PRIxMAX "lx"
#define __PRIXMAX "lX"
#define __SCNdMAX "ld"
#define __SCNiMAX "li"
#define __SCNoMAX "lo"
#define __SCNuMAX "lu"
#define __SCNxMAX "lx"
#else
#define __PRIdMAX "lld"
#define __PRIiMAX "lli"
#define __PRIoMAX "llo"
#define __PRIuMAX "llu"
#define __PRIxMAX "llx"
#define __PRIXMAX "llX"
#define __SCNdMAX "lld"
#define __SCNiMAX "lli"
#define __SCNoMAX "llo"
#define __SCNuMAX "llu"
#define __SCNxMAX "llx"
#endif
/* TODO: Should these come from a <__stddef.h>? */
#if __WORDSIZE == 64
#define __PTRDIFF_MIN (-9223372036854775807L-1)

View File

@ -1,6 +1,6 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2012.
Copyright(C) Jonas 'Sortie' Termansen 2012, 2013.
This file is part of the Sortix C Library.
@ -22,17 +22,188 @@
*******************************************************************************/
#ifndef _INTTYPES_H
#define _INTTYPES_H 1
#ifndef INCLUDE_INTTYPES_H
#define INCLUDE_INTTYPES_H
#include <features.h>
#include <stdint.h>
/* TODO: This header does not fully comply with POSIX and the ISO C Standard. */
#define PRId8 __PRId8
#define PRIi8 __PRIi8
#define PRIo8 __PRIo8
#define PRIu8 __PRIu8
#define PRIx8 __PRIx8
#define PRIX8 __PRIX8
#define SCNd8 __SCNd8
#define SCNi8 __SCNi8
#define SCNo8 __SCNo8
#define SCNu8 __SCNu8
#define SCNx8 __SCNx8
#define PRId16 __PRId16
#define PRIi16 __PRIi16
#define PRIo16 __PRIo16
#define PRIu16 __PRIu16
#define PRIx16 __PRIx16
#define PRIX16 __PRIX16
#define SCNd16 __SCNd16
#define SCNi16 __SCNi16
#define SCNo16 __SCNo16
#define SCNu16 __SCNu16
#define SCNx16 __SCNx16
#define PRId32 __PRId32
#define PRIi32 __PRIi32
#define PRIo32 __PRIo32
#define PRIu32 __PRIu32
#define PRIx32 __PRIx32
#define PRIX32 __PRIX32
#define SCNd32 __SCNd32
#define SCNi32 __SCNi32
#define SCNo32 __SCNo32
#define SCNu32 __SCNu32
#define SCNx32 __SCNx32
#define PRId64 __PRId64
#define PRIi64 __PRIi64
#define PRIo64 __PRIo64
#define PRIu64 __PRIu64
#define PRIx64 __PRIx64
#define PRIX64 __PRIX64
#define SCNd64 __SCNd64
#define SCNi64 __SCNi64
#define SCNo64 __SCNo64
#define SCNu64 __SCNu64
#define SCNx64 __SCNx64
#define PRIdFAST8 __PRIdFAST8
#define PRIiFAST8 __PRIiFAST8
#define PRIoFAST8 __PRIoFAST8
#define PRIuFAST8 __PRIuFAST8
#define PRIxFAST8 __PRIxFAST8
#define PRIXFAST8 __PRIXFAST8
#define SCNdFAST8 __SCNdFAST8
#define SCNiFAST8 __SCNiFAST8
#define SCNoFAST8 __SCNoFAST8
#define SCNuFAST8 __SCNuFAST8
#define SCNxFAST8 __SCNxFAST8
#define PRIdFAST16 __PRIdFAST16
#define PRIiFAST16 __PRIiFAST16
#define PRIoFAST16 __PRIoFAST16
#define PRIuFAST16 __PRIuFAST16
#define PRIxFAST16 __PRIxFAST16
#define PRIXFAST16 __PRIXFAST16
#define SCNdFAST16 __SCNdFAST16
#define SCNiFAST16 __SCNiFAST16
#define SCNoFAST16 __SCNoFAST16
#define SCNuFAST16 __SCNuFAST16
#define SCNxFAST16 __SCNxFAST16
#define PRIdFAST32 __PRIdFAST32
#define PRIiFAST32 __PRIiFAST32
#define PRIoFAST32 __PRIoFAST32
#define PRIuFAST32 __PRIuFAST32
#define PRIxFAST32 __PRIxFAST32
#define PRIXFAST32 __PRIXFAST32
#define SCNdFAST32 __SCNdFAST32
#define SCNiFAST32 __SCNiFAST32
#define SCNoFAST32 __SCNoFAST32
#define SCNuFAST32 __SCNuFAST32
#define SCNxFAST32 __SCNxFAST32
#define PRIdFAST64 __PRIdFAST64
#define PRIiFAST64 __PRIiFAST64
#define PRIoFAST64 __PRIoFAST64
#define PRIuFAST64 __PRIuFAST64
#define PRIxFAST64 __PRIxFAST64
#define PRIXFAST64 __PRIXFAST64
#define SCNdFAST64 __SCNdFAST64
#define SCNiFAST64 __SCNiFAST64
#define SCNoFAST64 __SCNoFAST64
#define SCNuFAST64 __SCNuFAST64
#define SCNxFAST64 __SCNxFAST64
#define PRIdLEAST8 __PRIdLEAST8
#define PRIiLEAST8 __PRIiLEAST8
#define PRIoLEAST8 __PRIoLEAST8
#define PRIuLEAST8 __PRIuLEAST8
#define PRIxLEAST8 __PRIxLEAST8
#define PRIXLEAST8 __PRIXLEAST8
#define SCNdLEAST8 __SCNdLEAST8
#define SCNiLEAST8 __SCNiLEAST8
#define SCNoLEAST8 __SCNoLEAST8
#define SCNuLEAST8 __SCNuLEAST8
#define SCNxLEAST8 __SCNxLEAST8
#define PRIdLEAST16 __PRIdLEAST16
#define PRIiLEAST16 __PRIiLEAST16
#define PRIoLEAST16 __PRIoLEAST16
#define PRIuLEAST16 __PRIuLEAST16
#define PRIxLEAST16 __PRIxLEAST16
#define PRIXLEAST16 __PRIXLEAST16
#define SCNdLEAST16 __SCNdLEAST16
#define SCNiLEAST16 __SCNiLEAST16
#define SCNoLEAST16 __SCNoLEAST16
#define SCNuLEAST16 __SCNuLEAST16
#define SCNxLEAST16 __SCNxLEAST16
#define PRIdLEAST32 __PRIdLEAST32
#define PRIiLEAST32 __PRIiLEAST32
#define PRIoLEAST32 __PRIoLEAST32
#define PRIuLEAST32 __PRIuLEAST32
#define PRIxLEAST32 __PRIxLEAST32
#define PRIXLEAST32 __PRIXLEAST32
#define SCNdLEAST32 __SCNdLEAST32
#define SCNiLEAST32 __SCNiLEAST32
#define SCNoLEAST32 __SCNoLEAST32
#define SCNuLEAST32 __SCNuLEAST32
#define SCNxLEAST32 __SCNxLEAST32
#define PRIdLEAST64 __PRIdLEAST64
#define PRIiLEAST64 __PRIiLEAST64
#define PRIoLEAST64 __PRIoLEAST64
#define PRIuLEAST64 __PRIuLEAST64
#define PRIxLEAST64 __PRIxLEAST64
#define PRIXLEAST64 __PRIXLEAST64
#define SCNdLEAST64 __SCNdLEAST64
#define SCNiLEAST64 __SCNiLEAST64
#define SCNoLEAST64 __SCNoLEAST64
#define SCNuLEAST64 __SCNuLEAST64
#define SCNxLEAST64 __SCNxLEAST64
#define PRIdPTR __PRIdPTR
#define PRIiPTR __PRIiPTR
#define PRIoPTR __PRIoPTR
#define PRIuPTR __PRIuPTR
#define PRIxPTR __PRIxPTR
#define PRIXPTR __PRIXPTR
#define SCNdPTR __SCNdPTR
#define SCNiPTR __SCNiPTR
#define SCNoPTR __SCNoPTR
#define SCNuPTR __SCNuPTR
#define SCNxPTR __SCNxPTR
#define PRIdMAX __PRIdMAX
#define PRIiMAX __PRIiMAX
#define PRIoMAX __PRIoMAX
#define PRIuMAX __PRIuMAX
#define PRIxMAX __PRIxMAX
#define PRIXMAX __PRIXMAX
#define SCNdMAX __SCNdMAX
#define SCNiMAX __SCNiMAX
#define SCNoMAX __SCNoMAX
#define SCNuMAX __SCNuMAX
#define SCNxMAX __SCNxMAX
__BEGIN_DECLS
intmax_t imaxabs(intmax_t);
/* TODO: imaxdiv */
/* TODO: strtoimax */
/* TODO: strtoumax */
/* TODO: wcstoimax */
/* TODO: wcstoumax */
__END_DECLS