X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=internals%2F_PDCLIB_int.h;h=134123a1862fa650a1bccb0be8bb8186c8f638fd;hb=97f49cfce543ffb1231e9f7aa774796a3e8fb912;hp=52ba8b35f607b82cd5133562abaa042b045dbea9;hpb=fb44227179cd8d0dbaaf694fba2d4861106add75;p=pdclib.old diff --git a/internals/_PDCLIB_int.h b/internals/_PDCLIB_int.h index 52ba8b3..134123a 100644 --- a/internals/_PDCLIB_int.h +++ b/internals/_PDCLIB_int.h @@ -309,29 +309,13 @@ _PDCLIB_uintmax_t _PDCLIB_strtox_main( const char ** p, unsigned int base, _PDCL extern char _PDCLIB_digits[]; extern char _PDCLIB_Xdigits[]; -/* -------------------------------------------------------------------------- */ -/* errno */ -/* -------------------------------------------------------------------------- */ - -/* If PDCLib would call its error number "errno" directly, there would be no way - to catch its value from underlying system calls that also use it (i.e., POSIX - operating systems). That is why we use an internal name, providing a means to - access it through . -*/ -extern int _PDCLIB_errno; - -/* A mechanism for delayed evaluation. (Not sure if this is really necessary, so - no detailed documentation on the "why".) -*/ -int * _PDCLIB_errno_func( void ) _PDCLIB_nothrow; - /* -------------------------------------------------------------------------- */ /* locale / wchar / uchar */ /* -------------------------------------------------------------------------- */ #ifndef __cplusplus -typedef _PDCLIB_int16_t _PDCLIB_char16_t; -typedef _PDCLIB_int32_t _PDCLIB_char32_t; +typedef _PDCLIB_uint16_t _PDCLIB_char16_t; +typedef _PDCLIB_uint32_t _PDCLIB_char32_t; #else typedef char16_t _PDCLIB_char16_t; typedef char32_t _PDCLIB_char32_t; @@ -348,16 +332,23 @@ typedef struct _PDCLIB_mbstate { char _StC [124]; }; - union { - /* c16/related functions: Surrogate storage - * - * If zero, no surrogate pending. If nonzero, surrogate. - */ - _PDCLIB_uint16_t _Surrogate; - - /* Reserved for potential mbtoutf8/etc functions */ - unsigned char _U8[4]; - }; + /* c16/related functions: Surrogate storage + * + * If zero, no surrogate pending. If nonzero, surrogate. + */ + _PDCLIB_uint16_t _Surrogate; + + /* In cases where the underlying codec is capable of regurgitating a + * character without consuming any extra input (e.g. a surrogate pair in a + * UCS-4 to UTF-16 conversion) then these fields are used to track that + * state. In particular, they are used to buffer/fake the input for mbrtowc + * and similar functions. + * + * See _PDCLIB_encoding.h for values of _PendState and the resultant value + * in _PendChar. + */ + unsigned char _PendState; + char _PendChar; } _PDCLIB_mbstate_t; typedef struct _PDCLIB_charcodec *_PDCLIB_charcodec_t;