#ifndef _INTTYPES_H
#define _INTTYPES_H 1

#include <stddef.h>
#include <stdint.h>

// TODO uppercase hex

#define PRIo64      "lo"
#define PRId64      "ld"
#define PRIu64      "lu"
#define PRIx64      "lx"
#define PRIX64      "lx"

#define PRIo32      "o"
#define PRId32      "d"
#define PRIu32      "u"
#define PRIx32      "x"
#define PRIX32      "x"

#define PRIo16      "ho"
#define PRId16      "hd"
#define PRIu16      "hu"
#define PRIx16      "hx"
#define PRIX16      "hx"

#define PRIo8       "hho"
#define PRId8       "hhd"
#define PRIu8       "hhu"
#define PRIx8       "hhx"
#define PRIX8       "hhx"

#define PRIdPTR     "zd"
#define PRIxPTR     "zx"
#define PRIXPTR     "zx"

#define SCNo64      PRIo64
#define SCNd64      PRId64
#define SCNu64      PRIu64
#define SCNx64      PRIx64
#define SCNX64      PRIX64

#define SCNo32      PRIo32
#define SCNd32      PRId32
#define SCNu32      PRIu32
#define SCNx32      PRIx32
#define SCNX32      PRIX32

#define SCNo16      PRIo16
#define SCNd16      PRId16
#define SCNu16      PRIu16
#define SCNx16      PRIx16
#define SCNX16      PRIX16

#define SCNo8       PRIo8
#define SCNd8       PRId8
#define SCNu8       PRIu8
#define SCNx8       PRIx8
#define SCNX8       PRIX8

#endif
