/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include __BEGIN_DECLS #define PRId8 "d" #define PRId16 "d" #define PRId32 "d" #define PRId64 "lld" #define PRIi8 "d" #define PRIi16 "d" #define PRIi32 "d" #ifndef __LP64__ # define PRIi64 "lld" #else # define PRIi64 "ld" #endif #define PRIu8 "u" #define PRIo8 "o" #define PRIo16 "o" #define PRIo32 "o" #ifndef __LP64__ # define PRIo64 "llo" #else # define PRIo64 "lo" #endif #define PRIu16 "u" #define PRIu32 "u" #ifndef __LP64__ # define PRIu64 "llu" # define PRIuPTR "x" #else # define PRIu64 "lu" # define PRIuPTR "lx" #endif #define PRIx8 "b" #define PRIX8 "hhX" #define PRIx16 "w" #define PRIX16 "hX" #define PRIx32 "x" #define PRIX32 "X" #ifndef __LP64__ # define PRIx64 "llx" # define PRIX64 "llX" # define PRIxPTR "x" #else # define PRIx64 "lx" # define PRIX64 "lX" # define PRIxPTR "lx" #endif #define __PRI64_PREFIX "ll" #define __PRIPTR_PREFIX #define PRIdPTR __PRIPTR_PREFIX "d" #define PRIiPTR __PRIPTR_PREFIX "i" #define PRIXPTR __PRIPTR_PREFIX "X" #define PRIdMAX __PRI64_PREFIX "d" #define PRIoMAX __PRI64_PREFIX "o" #define PRIuMAX __PRI64_PREFIX "u" #define SCNdMAX __PRI64_PREFIX "d" #define SCNoMAX __PRI64_PREFIX "o" #define SCNuMAX __PRI64_PREFIX "u" #define SCNu64 __PRI64_PREFIX "u" #define SCNd64 __PRI64_PREFIX "d" #define SCNi64 __PRI64_PREFIX "i" #define SCNx64 __PRI64_PREFIX "x" #define SCNd8 "hhd" #define SCNd16 "hd" #define SCNd32 "ld" #define SCNi8 "hhi" #define SCNi16 "hi" #define SCNi32 "li" #define SCNu8 "hhu" #define SCNu16 "hu" #define SCNu32 "lu" #define SCNx8 "hhx" #define SCNx16 "hx" #define SCNx32 "lx" typedef struct imaxdiv_t { intmax_t quot; intmax_t rem; } imaxdiv_t; imaxdiv_t imaxdiv(intmax_t, intmax_t); intmax_t strtoimax(const char*, char** endptr, int base); uintmax_t strtoumax(const char*, char** endptr, int base); __END_DECLS