X-Git-Url: https://pd.if.org/git/?p=pdclib;a=blobdiff_plain;f=includes%2Finttypes.h;h=bb52ea9f24c10dc2ca8b596afe4a647311288bdd;hp=620a2f47949062fe20589cc9be8e23e7161dbcca;hb=ac3f809c3c10347c110fac3db93af0954eda98bb;hpb=8b8277d2940a8745f85d86a9af3ad6970b5fa52c diff --git a/includes/inttypes.h b/includes/inttypes.h index 620a2f4..bb52ea9 100644 --- a/includes/inttypes.h +++ b/includes/inttypes.h @@ -4,12 +4,256 @@ // Public Domain C Library - http://pdclib.sourceforge.net // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -// TODO +// Format conversion of integer types // ---------------------------------------------------------------------------- #ifndef __INTTYPES_H #define __INTTYPES_H __INTTYPES_H -// TODO +// ---------------------------------------------------------------------------- +// TYPEDEFS + +typedef struct +{ + intmax_t quotient, + intmax_t remainder; +} +imaxdiv_t; + +// ---------------------------------------------------------------------------- +// FUNCTIONS + +intmax_t imaxabs( intmax_t i ); +intmax_t abs( intmax_t i ); [C++ only] + +imaxdiv_t imaxdiv( intmax_t numer, intmax_t denom ); +imaxdiv_t div( intmax_t numer, intmax_t denom ); [C++ only] + +intmax_t strtoimax( const char * restrict s, char * * restrict endptr, int base ); +uintmax_t strtoumax( const char * restrict s, char * * restrict endptr, int base ); +intmax_t wcstoimax( const wchar_t * restrict s, wchar_t * * restrict endptr, int base ); +uintmax_t wcstoumax( const wchar_t * restrict s, wchar_t * * restrict endptr, int base ); + +// ---------------------------------------------------------------------------- +// MACROS (PRINT) + +#define PRId8 +#define PRId16 +#define PRId32 +#define PRId64 + +#define PRIdFAST8 +#define PRIdFAST16 +#define PRIdFAST32 +#define PRIdFAST64 + +#define PRIdLEAST8 +#define PRIdLEAST16 +#define PRIdLEAST32 +#define PRIdLEAST64 + +#define PRIdMAX +#define PRIdPTR + +#define PRIi8 +#define PRIi16 +#define PRIi32 +#define PRIi64 + +#define PRIiFAST8 +#define PRIiFAST16 +#define PRIiFAST32 +#define PRIiFAST64 + +#define PRIiLEAST8 +#define PRIiLEAST16 +#define PRIiLEAST32 +#define PRIiLEAST64 + +#define PRIiMAX +#define PRIiPTR + +#define PRIo8 +#define PRIo16 +#define PRIo32 +#define PRIo64 + +#define PRIoFAST8 +#define PRIoFAST16 +#define PRIoFAST32 +#define PRIoFAST64 + +#define PRIoLEAST8 +#define PRIoLEAST16 +#define PRIoLEAST32 +#define PRIoLEAST64 + +#define PRIoMAX +#define PRIoPTR + +#define PRIu8 +#define PRIu16 +#define PRIu32 +#define PRIu64 + +#define PRIuFAST8 +#define PRIuFAST16 +#define PRIuFAST32 +#define PRIuFAST64 + +#define PRIuLEAST8 +#define PRIuLEAST16 +#define PRIuLEAST32 +#define PRIuLEAST64 + +#define PRIuMAX +#define PRIuPTR + +#define PRIx8 +#define PRIx16 +#define PRIx32 +#define PRIx64 + +#define PRIxFAST8 +#define PRIxFAST16 +#define PRIxFAST32 +#define PRIxFAST64 + +#define PRIxLEAST8 +#define PRIxLEAST16 +#define PRIxLEAST32 +#define PRIxLEAST64 + +#define PRIxMAX +#define PRIxPTR + +#define PRIX8 +#define PRIX16 +#define PRIX32 +#define PRIX64 + +#define PRIXFAST8 +#define PRIXFAST16 +#define PRIXFAST32 +#define PRIXFAST64 + +#define PRIXLEAST8 +#define PRIXLEAST16 +#define PRIXLEAST32 +#define PRIXLEAST64 + +#define PRIXMAX +#define PRIXPTR + +// ---------------------------------------------------------------------------- +// MACROS (SCAN) + +#define SCNd8 +#define SCNd16 +#define SCNd32 +#define SCNd64 + +#define SCNdFAST8 +#define SCNdFAST16 +#define SCNdFAST32 +#define SCNdFAST64 + +#define SCNdLEAST8 +#define SCNdLEAST16 +#define SCNdLEAST32 +#define SCNdLEAST64 + +#define SCNdMAX +#define SCNdPTR + +#define SCNi8 +#define SCNi16 +#define SCNi32 +#define SCNi64 + +#define SCNiFAST8 +#define SCNiFAST16 +#define SCNiFAST32 +#define SCNiFAST64 + +#define SCNiLEAST8 +#define SCNiLEAST16 +#define SCNiLEAST32 +#define SCNiLEAST64 + +#define SCNiMAX +#define SCNiPTR + +#define SCNo8 +#define SCNo16 +#define SCNo32 +#define SCNo64 + +#define SCNoFAST8 +#define SCNoFAST16 +#define SCNoFAST32 +#define SCNoFAST64 + +#define SCNoLEAST8 +#define SCNoLEAST16 +#define SCNoLEAST32 +#define SCNoLEAST64 + +#define SCNoMAX +#define SCNoPTR + +#define SCNu8 +#define SCNu16 +#define SCNu32 +#define SCNu64 + +#define SCNuFAST8 +#define SCNuFAST16 +#define SCNuFAST32 +#define SCNuFAST64 + +#define SCNuLEAST8 +#define SCNuLEAST16 +#define SCNuLEAST32 +#define SCNuLEAST64 + +#define SCNuMAX +#define SCNuPTR + +#define SCNx8 +#define SCNx16 +#define SCNx32 +#define SCNx64 + +#define SCNxFAST8 +#define SCNxFAST16 +#define SCNxFAST32 +#define SCNxFAST64 + +#define SCNxLEAST8 +#define SCNxLEAST16 +#define SCNxLEAST32 +#define SCNxLEAST64 + +#define SCNxMAX +#define SCNxPTR + +#define SCNX8 +#define SCNX16 +#define SCNX32 +#define SCNX64 + +#define SCNXFAST8 +#define SCNXFAST16 +#define SCNXFAST32 +#define SCNXFAST64 + +#define SCNXLEAST8 +#define SCNXLEAST16 +#define SCNXLEAST32 +#define SCNXLEAST64 + +#define SCNXMAX +#define SCNXPTR #endif // __INTTYPES_H