X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=internals%2F_PDCLIB_int.h;h=5e7d84035e8b0a8ca84d542b21ad485879fc3ffb;hb=ee68216262558493cc862deb575fb0b97ed49429;hp=8f2cf74ffb467618bd5ac588d52e14f2b34ea46c;hpb=0292f971663afe513ec4e8881aa2ec9d57b8f152;p=pdclib diff --git a/internals/_PDCLIB_int.h b/internals/_PDCLIB_int.h index 8f2cf74..5e7d840 100644 --- a/internals/_PDCLIB_int.h +++ b/internals/_PDCLIB_int.h @@ -1,7 +1,5 @@ /* $Id$ */ -/* Release $Name$ */ - /* PDCLib internal integer logic <_PDCLIB_int.h> This file is part of the Public Domain C Library (PDCLib). @@ -252,6 +250,28 @@ typedef unsigned _PDCLIB_intmax _PDCLIB_uintmax_t; #define _PDCLIB_INTMAX_C( value ) concat( value, _PDCLIB_INTMAX_LITERAL ) #define _PDCLIB_UINTMAX_C( value ) concat( value, concat( u, _PDCLIB_INTMAX_LITERAL ) ) +/* -------------------------------------------------------------------------- */ +/* Various internals */ +/* -------------------------------------------------------------------------- */ + +/* Flags for representing mode (see fopen()). */ +#define _PDCLIB_FREAD 1 +#define _PDCLIB_FWRITE 2 +#define _PDCLIB_FAPPEND 4 +#define _PDCLIB_FRW 8 +#define _PDCLIB_FBIN 16 + +struct +{ + _PDCLIB_fd_t handle; /* OS-specific file descriptor */ + _PDCLIB_fpos_t position; /* file position indicator */ + void * buffer; /* file buffer */ + _PDCLIB_size_t bufsize; /* size of buffer */ + int status; /* misc. status bits */ + /*mbstate_t mbstate; multibyte parse state - TODO: Unmask. */ + struct _PDCLIB_file_t * next; /* provisions for linked list handling */ +} _PDCLIB_file_t; + /* -------------------------------------------------------------------------- */ /* Declaration of helper functions (implemented in functions/_PDCLIB). */ /* -------------------------------------------------------------------------- */ @@ -261,7 +281,43 @@ _PDCLIB_intmax_t _PDCLIB_atomax( const char * s ); /* Two helper functions used by strtol(), strtoul() and long long variants. */ const char * _PDCLIB_strtox_prelim( const char * p, char * sign, int * base ); -_PDCLIB_uintmax_t _PDCLIB_strtox_main( const char ** p, int base, _PDCLIB_uintmax_t error, _PDCLIB_uintmax_t limval, _PDCLIB_uintmax_t limdigit, char * sign ); +_PDCLIB_uintmax_t _PDCLIB_strtox_main( const char ** p, unsigned int base, _PDCLIB_uintmax_t error, _PDCLIB_uintmax_t limval, _PDCLIB_uintmax_t limdigit, char * sign ); /* Digits array used by various integer conversion functions in */ extern char _PDCLIB_digits[]; + +/* -------------------------------------------------------------------------- */ +/* Internal data types */ +/* -------------------------------------------------------------------------- */ + +/* Structure required by both atexit() and exit() for handling atexit functions */ +struct _PDCLIB_exitfunc_t +{ + struct _PDCLIB_exitfunc_t * next; + void (*func)( void ); +}; + +/* Structures required by malloc(), realloc(), and free(). */ +struct _PDCLIB_headnode_t +{ + struct _PDCLIB_memnode_t * first; + struct _PDCLIB_memnode_t * last; +}; + +struct _PDCLIB_memnode_t +{ + _PDCLIB_size_t size; + struct _PDCLIB_memnode_t * next; +}; + +#if 0 + +/* fpos_t, an object type (not an array!) capable of storing any position + information of a file. +*/ +typedef unsigned long long int _PDCLIB_fpos_t; + +/* file descriptor - a type used by the OS to identify a stream */ +typedef int _PDCLIB_fd_t; + +#endif