#ifndef __INTTYPES
#define __INTTYPES

#include <stdint.h>

/* Macros for printing format specifiers. */

/* Decimal notation. */
#define PRId8 "hd"
#define PRId16 "hd"
#define PRId32 "ld"
//#define PRId64 "lld"

#define PRIdLEAST8 "hd"
#define PRIdLEAST16 "hd"
#define PRIdLEAST32 "ld"
//#define PRIdLEAST64 "lld"

#define PRIdFAST8 "hd"
#define PRIdFAST16 "hd"
#define PRIdFAST32 "ld"
//#define PRIdFAST64 "lld"

#define PRIi8 "hi"
#define PRIi16 "hi"
#define PRIi32 "li"
//#define PRIi64 "lli"

#define PRIiLEAST8 "hi"
#define PRIiLEAST16 "hi"
#define PRIiLEAST32 "li"
//#define PRIiLEAST64 "lli"

#define PRIiFAST8 "hi"
#define PRIiFAST16 "hi"
#define PRIiFAST32 "li"
//#define PRIiFAST64 "lli"

/* Unsigned integers. */
#define PRIu8 "hu"
#define PRIu16 "hu"
#define PRIu32 "lu"
//#define PRIu64 "llu"

#define PRIuLEAST8 "hu"
#define PRIuLEAST16 "hu"
#define PRIuLEAST32 "lu"
//#define PRIuLEAST64 "llu"

#define PRIuFAST8 "hu"
#define PRIuFAST16 "hu"
#define PRIuFAST32 "lu"
//#define PRIuFAST64 "llu"

/* lowercase hexadecimal notation. */
#define PRIx8 "hx"
#define PRIx16 "hx"
#define PRIx32 "lx"
//#define PRIx64 "llx"

#define PRIxLEAST8 "hx"
#define PRIxLEAST16 "hx"
#define PRIxLEAST32 "lx"
//#define PRIxLEAST64 "llx"

#define PRIxFAST8 "hx"
#define PRIxFAST16 "hx"
#define PRIxFAST32 "lx"
//#define PRIxFAST64 "llx"

/* UPPERCASE hexadecimal notation. */
#define PRIX8 "hX"
#define PRIX16 "hX"
#define PRIX32 "lX"
//#define PRIX64 "llX"

#define PRIXLEAST8 "hX"
#define PRIXLEAST16 "hX"
#define PRIXLEAST32 "lX"
//#define PRIXLEAST64 "llX"

#define PRIXFAST8 "hX"
#define PRIXFAST16 "hX"
#define PRIXFAST32 "lX"
//#define PRIXFAST64 "llX"


/* Macros for printing `intmax_t' and `uintmax_t'. */
//#define PRIdMAX "lld"
//#define PRIiMAX "lli"
//#define PRIuMAX "llu"
//#define PRIxMAX "llx"
//#define PRIXMAX "llX"


/* Macros for printing `intptr_t' and `uintptr_t'. */
#define PRIdPTR "ld"
#define PRIiPTR "li"
#define PRIuPTR "lu"
#define PRIxPTR "lx"
#define PRIXPTR "lX"


/* Macros for scanning format specifiers. */

/* Signed decimal notation. */
#define SCNd8 "hd"
#define SCNd16 "hd"
#define SCNd32 "ld"
//#define SCNd64 "lld"

#define SCNdLEAST8 "hd"
#define SCNdLEAST16 "hd"
#define SCNdLEAST32 "ld"
//#define SCNdLEAST64 "lld"

#define SCNdFAST8 "hd"
#define SCNdFAST16 "hd"
#define SCNdFAST32 "ld"
//#define SCNdFAST64 "lld"

/* Signed decimal notation. */
#define SCNi8 "hi"
#define SCNi16 "hi"
#define SCNi32 "li"
//#define SCNi64 "lli"

#define SCNiLEAST8 "hi"
#define SCNiLEAST16 "hi"
#define SCNiLEAST32 "li"
//#define SCNiLEAST64 "lli"

#define SCNiFAST8 "hi"
#define SCNiFAST16 "hi"
#define SCNiFAST32 "li"
//#define SCNiFAST64 "lli"

/* Unsigned decimal notation. */
#define SCNu8 "hu"
#define SCNu16 "hu"
#define SCNu32 "lu"
//#define SCNu64 "llu"

#define SCNuLEAST8 "hu"
#define SCNuLEAST16 "hu"
#define SCNuLEAST32 "lu"
//#define SCNuLEAST64 "llu"

#define SCNuFAST8 "hu"
#define SCNuFAST16 "hu"
#define SCNuFAST32 "lu"
//#define SCNuFAST64 "llu"

/* Hexadecimal notation. */
#define SCNx8 "hx"
#define SCNx16 "hx"
#define SCNx32 "lx"
//#define SCNx64 "llx"

#define SCNxLEAST8 "hx"
#define SCNxLEAST16 "hx"
#define SCNxLEAST32 "lx"
//#define SCNxLEAST64 "llx"

#define SCNxFAST8 "hx"
#define SCNxFAST16 "hx"
#define SCNxFAST32 "lx"
//#define SCNxFAST64 "llx"


/* Macros for scanning `intmax_t' and `uintmax_t'. */
//#define SCNdMAX "lld"
//#define SCNiMAX "lli"
//#define SCNuMAX "llu"
//#define SCNxMAX "llx"

/* Macros for scaning `intptr_t' and `uintptr_t'. */
#define SCNdPTR "ld"
#define SCNiPTR "li"
#define SCNuPTR "lu"
#define SCNxPTR "lx"

#endif /* inttypes.h */

