X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=includes%2Finttypes.h;fp=includes%2Finttypes.h;h=5b868071144317bf646463ad90d31eeb314fb2ec;hb=fde75f89eae541144585db53ce3f7c29d069b4d2;hp=0000000000000000000000000000000000000000;hpb=268c42b566c2be8deaf4c9c8571d3d2e23bae92d;p=pdclib diff --git a/includes/inttypes.h b/includes/inttypes.h new file mode 100755 index 0000000..5b86807 --- /dev/null +++ b/includes/inttypes.h @@ -0,0 +1,117 @@ +/* $Id$ */ + +/* 7.8 Format conversion of integer types + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +#ifndef _PDCLIB_INTTYPES_H +#define _PDCLIB_INTTYPES_H _PDCLIB_INTTYPES_H + +#include + +typedef struct _PDCLIB_imaxdiv_t imaxdiv_t; + +/* TODO: Print / Scan Macros */ +/* +PRId8 PRIdLEAST8 PRIdFAST8 PRIdMAX +PRId16 PRIdLEAST16 PRIdFAST16 PRIdPTR +PRId32 PRIdLEAST32 PRIdFAST32 +PRId64 PRIdLEAST64 PRIdFAST64 + +PRIi8 PRIiLEAST8 PRIiFAST8 PRIiMAX +PRIi16 PRIiLEAST16 PRIiFAST16 PRIdPTR +PRIi32 PRIiLEAST32 PRIiFAST32 +PRIi64 PRIiLEAST64 PRIiFAST64 + +PRIo8 PRIoLEAST8 PRIoFAST8 PRIoMAX +PRIo16 PRIoLEAST16 PRIoFAST16 PRIoPTR +PRIo32 PRIoLEAST32 PRIoFAST32 +PRIo64 PRIoLEAST64 PRIoFAST64 + +PRIu8 PRIuLEAST8 PRIuFAST8 PRIuMAX +PRIu16 PRIuLEAST16 PRIuFAST16 PRIuPTR +PRIu32 PRIuLEAST32 PRIuFAST32 +PRIu64 PRIuLEAST64 PRIuFAST64 + +PRIx8 PRIxLEAST8 PRIxFAST8 PRIxMAX +PRIx16 PRIxLEAST16 PRIxFAST16 PRIxPTR +PRIx32 PRIxLEAST32 PRIxFAST32 +PRIx64 PRIxLEAST64 PRIxFAST64 + +PRIX8 PRIXLEAST8 PRIXFAST8 PRIXMAX +PRIX16 PRIXLEAST16 PRIXFAST16 PRIXPTR +PRIX32 PRIXLEAST32 PRIXFAST32 +PRIX64 PRIXLEAST64 PRIXFAST64 + +SCNd8 SCNdLEAST8 SCNdFAST8 SCNdMAX +SCNd16 SCNdLEAST16 SCNdFAST16 SCNdPTR +SCNd32 SCNdLEAST32 SCNdFAST32 +SCNd64 SCNdLEAST64 SCNdFAST64 + +SCNi8 SCNiLEAST8 SCNiFAST8 SCNiMAX +SCNi16 SCNiLEAST16 SCNiFAST16 SCNdPTR +SCNi32 SCNiLEAST32 SCNiFAST32 +SCNi64 SCNiLEAST64 SCNiFAST64 + +SCNo8 SCNoLEAST8 SCNoFAST8 SCNoMAX +SCNo16 SCNoLEAST16 SCNoFAST16 SCNoPTR +SCNo32 SCNoLEAST32 SCNoFAST32 +SCNo64 SCNoLEAST64 SCNoFAST64 + +SCNu8 SCNuLEAST8 SCNuFAST8 SCNuMAX +SCNu16 SCNuLEAST16 SCNuFAST16 SCNuPTR +SCNu32 SCNuLEAST32 SCNuFAST32 +SCNu64 SCNuLEAST64 SCNuFAST64 + +SCNx8 SCNxLEAST8 SCNxFAST8 SCNxMAX +SCNx16 SCNxLEAST16 SCNxFAST16 SCNxPTR +SCNx32 SCNxLEAST32 SCNxFAST32 +SCNx64 SCNxLEAST64 SCNxFAST64 + +SCNX8 SCNXLEAST8 SCNXFAST8 SCNXMAX +SCNX16 SCNXLEAST16 SCNXFAST16 SCNXPTR +SCNX32 SCNXLEAST32 SCNXFAST32 +SCNX64 SCNXLEAST64 SCNXFAST64 +*/ + +/* 7.8.2 Functions for greatest-width integer types */ + +/* Calculate the absolute value of j */ +intmax_t imaxabs( intmax_t j ); + +/* Return quotient (quot) and remainder (rem) of an integer division in the + imaxdiv_t struct. +*/ +imaxdiv_t imaxdiv( intmax_t numer, intmax_t denom ); + +/* Seperate the character array nptr into three parts: A (possibly empty) + sequence of whitespace characters, a character representation of an integer + to the given base, and trailing invalid characters (including the terminating + null character). If base is 0, assume it to be 10, unless the integer + representation starts with 0x / 0X (setting base to 16) or 0 (setting base to + 8). If given, base can be anything from 0 to 36, using the 26 letters of the + base alphabet (both lowercase and uppercase) as digits 10 through 35. + The integer representation is then converted into the return type of the + function. It can start with a '+' or '-' sign. If the sign is '-', the result + of the conversion is negated. + If the conversion is successful, the converted value is returned. If endptr + is not a NULL pointer, a pointer to the first trailing invalid character is + returned in *endptr. + If no conversion could be performed, zero is returned (and nptr in *endptr, + if endptr is not a NULL pointer). If the converted value does not fit into + the return type, the functions return INTMAX_MIN, INTMAX_MAX, or UINTMAX_MAX, + respectively, depending on the sign of the integer representation and the + return type, and errno is set to ERANGE. +*/ +/* This function is equivalent to strtol() / strtoul() in , but on + the potentially larger type. +*/ +intmax_t strtoimax( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr, int base ); +uintmax_t strtoumax( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr, int base ); + +/* TODO: wcstoimax(), wcstoumax() */ + +#endif +