X-Git-Url: https://pd.if.org/git/?p=pdclib;a=blobdiff_plain;f=includes%2Fwchar.h;h=ceaf2660c7b54ed252731147a78280785103dd45;hp=83d880b16a9c1091b5dc1c06e3bd127357365eff;hb=d7f375a09a9912bb18ad42f1442fbf64311bfed6;hpb=0bfd3aa28ccec8c35481fe04d1dc82a0f1f522e6 diff --git a/includes/wchar.h b/includes/wchar.h index 83d880b..ceaf266 100644 --- a/includes/wchar.h +++ b/includes/wchar.h @@ -1,136 +1,146 @@ -/* 7. - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - - -#ifndef _PDCLIB_WCHAR_H -#define _PDCLIB_WCHAR_H -#include <_PDCLIB_int.h> -_PDCLIB_BEGIN_EXTERN_C - -#ifndef _PDCLIB_SIZE_T_DEFINED -#define _PDCLIB_SIZE_T_DEFINED _PDCLIB_SIZE_T_DEFINED -typedef _PDCLIB_size_t size_t; -#endif - -#ifndef __cplusplus -#ifndef _PDCLIB_WCHAR_T_DEFINED -#define _PDCLIB_WCHAR_T_DEFINED _PDCLIB_WCHAR_T_DEFINED -typedef _PDCLIB_wchar_t wchar_t; -#endif -#endif - -#ifndef _PDCLIB_WINT_T_DEFINED -#define _PDCLIB_WINT_T_DEFINED _PDCLIB_WINT_T_DEFINED -typedef _PDCLIB_wint_t wint_t; -#endif - -#ifndef _PDCLIB_MBSTATE_T_DEFINED -#define _PDCLIB_MBSTATE_T_DEFINED _PDCLIB_MBSTATE_T_DEFINED -typedef _PDCLIB_mbstate_t mbstate_t; -#endif - -struct tm; - -#ifndef _PDCLIB_NULL_DEFINED -#define _PDCLIB_NULL_DEFINED _PDCLIB_NULL_DEFINED -#define NULL _PDCLIB_NULL -#endif - -#ifndef _PDCLIB_WCHAR_MIN_MAX_DEFINED -#define _PDCLIB_WCHAR_MIN_MAX_DEFINED -#define WCHAR_MIN _PDCLIB_WCHAR_MIN -#define WCHAR_MAX _PDCLIB_WCHAR_MAX -#endif - -#ifndef _WEOF -#define WEOF ((wint_t) -1) -#endif - -/* Wide character string handling */ -wchar_t *wcscpy(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2); -wchar_t *wcsncpy(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, size_t n); -wchar_t *wmemcpy(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, size_t n); -wchar_t *wmemmove(wchar_t *s1, const wchar_t *s2, size_t n); -wchar_t *wcscat(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2); -wchar_t *wcsncat(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, size_t n); -int wcscmp(const wchar_t *s1, const wchar_t *s2); -int wcscoll(const wchar_t *s1, const wchar_t *s2); -int wcsncmp(const wchar_t *s1, const wchar_t *s2, size_t n); -size_t wcsxfrm(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, size_t n); -int wmemcmp(const wchar_t *s1, const wchar_t *s2, size_t n); -wchar_t *wcschr(const wchar_t *s, wchar_t c); -size_t wcscspn(const wchar_t *s1, const wchar_t *s2); -wchar_t *wcspbrk(const wchar_t *s1, const wchar_t *s2); -wchar_t *wcsrchr(const wchar_t *s, wchar_t c); -size_t wcsspn(const wchar_t *s1, const wchar_t *s2); -wchar_t *wcsstr(const wchar_t *s1, const wchar_t *s2); -wchar_t *wcstok(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, wchar_t **_PDCLIB_restrict ptr); -wchar_t *wmemchr(const wchar_t *s, wchar_t c, size_t n); -size_t wcslen(const wchar_t *s); -wchar_t *wmemset(wchar_t *s, wchar_t c, size_t n); - -#if 0 -size_t wcsftime(wchar_t *_PDCLIB_restrict s, size_t maxsize, const wchar_t *_PDCLIB_restrict format, const struct tm *_PDCLIB_restrict timeptr); -#endif - -/* Wide character I/O */ -int fwprintf(_PDCLIB_file_t *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, ...); -int fwscanf(_PDCLIB_file_t *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, ...); -int swprintf(wchar_t *_PDCLIB_restrict s, size_t n, const wchar_t *_PDCLIB_restrict format, ...); -int swscanf(const wchar_t *_PDCLIB_restrict s, const wchar_t *_PDCLIB_restrict format, ...); -int vfwprintf(_PDCLIB_file_t *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg); -int vfwscanf(_PDCLIB_file_t *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg); -int vswprintf(wchar_t *_PDCLIB_restrict s, size_t n, const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg); -int vswscanf(const wchar_t *_PDCLIB_restrict s, const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg); -int vwprintf(const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg); -int vwscanf(const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg); -int wprintf(const wchar_t *_PDCLIB_restrict format, ...); -int wscanf(const wchar_t *_PDCLIB_restrict format, ...); -wint_t fgetwc(_PDCLIB_file_t *stream); -wchar_t *fgetws(wchar_t *_PDCLIB_restrict s, int n, _PDCLIB_file_t *_PDCLIB_restrict stream); -wint_t fputwc(wchar_t c, _PDCLIB_file_t *stream); -int fputws(const wchar_t *_PDCLIB_restrict s, _PDCLIB_file_t *_PDCLIB_restrict stream); -int fwide(_PDCLIB_file_t *stream, int mode); -wint_t getwc(_PDCLIB_file_t *stream); -wint_t getwchar(void); -wint_t putwc(wchar_t c, _PDCLIB_file_t *stream); -wint_t putwchar(wchar_t c); -wint_t ungetwc(wint_t c, _PDCLIB_file_t *stream); - -#if _PDCLIB_GNU_SOURCE -wint_t getwc_unlocked(_PDCLIB_file_t *stream); -wint_t getwchar_unlocked(void); -wint_t fgetwc_unlocked(_PDCLIB_file_t *stream); -wint_t fputwc_unlocked(wchar_t wc, _PDCLIB_file_t *stream); -wint_t putwc_unlocked(wchar_t wc, _PDCLIB_file_t *stream); -wint_t putwchar_unlocked(wchar_t wc); -wchar_t *fgetws_unlocked(wchar_t *ws, int n, _PDCLIB_file_t *stream); -int fputws_unlocked(const wchar_t *ws, _PDCLIB_file_t *stream); -#endif - -/* Wide character <-> Numeric conversions */ -#if 0 -double wcstod(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr); -float wcstof(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr); -long double wcstold(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr); -#endif -long int wcstol(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr, int base); -long long int wcstoll(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr, int base); -unsigned long int wcstoul(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr, int base); -unsigned long long int wcstoull(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr, int base); - -/* Character set conversion */ -wint_t btowc(int c); -int wctob(wint_t c); -int mbsinit(const mbstate_t *ps); -size_t mbrlen(const char *_PDCLIB_restrict s, size_t n, mbstate_t *_PDCLIB_restrict ps); -size_t mbrtowc(wchar_t *_PDCLIB_restrict pwc, const char *_PDCLIB_restrict s, size_t n, mbstate_t *_PDCLIB_restrict ps); -size_t wcrtomb(char *_PDCLIB_restrict s, wchar_t wc, mbstate_t *_PDCLIB_restrict ps); -size_t mbsrtowcs(wchar_t *_PDCLIB_restrict dst, const char **_PDCLIB_restrict src, size_t len, mbstate_t *_PDCLIB_restrict ps); -size_t wcsrtombs(char *_PDCLIB_restrict dst, const wchar_t **_PDCLIB_restrict src, size_t len, mbstate_t *_PDCLIB_restrict ps); - -_PDCLIB_END_EXTERN_C -#endif +/* Extended multibyte and wide character utilities + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +#ifndef _PDCLIB_WCHAR_H +#define _PDCLIB_WCHAR_H _PDCLIB_WCHAR_H +#include <_PDCLIB_int.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _PDCLIB_SIZE_T_DEFINED +#define _PDCLIB_SIZE_T_DEFINED _PDCLIB_SIZE_T_DEFINED +typedef _PDCLIB_size_t size_t; +#endif + +#ifndef __cplusplus + +#ifndef _PDCLIB_WCHAR_T_DEFINED +#define _PDCLIB_WCHAR_T_DEFINED _PDCLIB_WCHAR_T_DEFINED +typedef _PDCLIB_wchar_t wchar_t; +#endif + +#endif + +#ifndef _PDCLIB_WINT_T_DEFINED +#define _PDCLIB_WINT_T_DEFINED _PDCLIB_WINT_T_DEFINED +typedef _PDCLIB_wint_t wint_t; +#endif + +#ifndef _PDCLIB_MBSTATE_T_DEFINED +#define _PDCLIB_MBSTATE_T_DEFINED _PDCLIB_MBSTATE_T_DEFINED +typedef _PDCLIB_mbstate_t mbstate_t; +#endif + +struct tm; + +#ifndef _PDCLIB_NULL_DEFINED +#define _PDCLIB_NULL_DEFINED _PDCLIB_NULL_DEFINED +#define NULL _PDCLIB_NULL +#endif + +#ifndef _PDCLIB_WCHAR_MIN_MAX_DEFINED +#define _PDCLIB_WCHAR_MIN_MAX_DEFINED _PDCLIB_WCHAR_MIN_MAX_DEFINED +#define WCHAR_MIN _PDCLIB_WCHAR_MIN +#define WCHAR_MAX _PDCLIB_WCHAR_MAX +#endif + +#ifndef _PDCLIB_WEOF_DEFINED +#define _PDCLIB_WEOF_DEFINED _PDCLIB_WEOF_DEFINED +#define WEOF _PDCLIB_WEOF +#endif + +/* Wide character string handling */ +wchar_t * wcscpy( wchar_t * _PDCLIB_restrict s1, const wchar_t * _PDCLIB_restrict s2 ); +wchar_t * wcsncpy( wchar_t * _PDCLIB_restrict s1, const wchar_t * _PDCLIB_restrict s2, size_t n ); +wchar_t * wmemcpy( wchar_t * _PDCLIB_restrict s1, const wchar_t * _PDCLIB_restrict s2, size_t n ); +wchar_t * wmemmove( wchar_t * s1, const wchar_t * s2, size_t n ); +wchar_t * wcscat( wchar_t * _PDCLIB_restrict s1, const wchar_t * _PDCLIB_restrict s2 ); +wchar_t * wcsncat( wchar_t * _PDCLIB_restrict s1, const wchar_t * _PDCLIB_restrict s2, size_t n ); +int wcscmp( const wchar_t * s1, const wchar_t * s2 ); +int wcscoll( const wchar_t * s1, const wchar_t * s2 ); +int wcsncmp( const wchar_t * s1, const wchar_t * s2, size_t n ); +size_t wcsxfrm( wchar_t * _PDCLIB_restrict s1, const wchar_t * _PDCLIB_restrict s2, size_t n ); +int wmemcmp( const wchar_t * s1, const wchar_t * s2, size_t n ); +wchar_t * wcschr( const wchar_t * s, wchar_t c ); +size_t wcscspn( const wchar_t * s1, const wchar_t * s2 ); +wchar_t * wcspbrk( const wchar_t * s1, const wchar_t * s2 ); +wchar_t * wcsrchr( const wchar_t * s, wchar_t c ); +size_t wcsspn( const wchar_t * s1, const wchar_t * s2 ); +wchar_t * wcsstr( const wchar_t * s1, const wchar_t * s2 ); +wchar_t * wcstok( wchar_t * _PDCLIB_restrict s1, const wchar_t * _PDCLIB_restrict s2, wchar_t * * _PDCLIB_restrict ptr ); +wchar_t * wmemchr( const wchar_t * s, wchar_t c, size_t n ); +size_t wcslen( const wchar_t * s ); +wchar_t * wmemset( wchar_t * s, wchar_t c, size_t n ); + +#if 0 +size_t wcsftime( wchar_t * _PDCLIB_restrict s, size_t maxsize, const wchar_t * _PDCLIB_restrict format, const struct tm * _PDCLIB_restrict timeptr ); +#endif + +/* Wide character I/O */ +int fwprintf( _PDCLIB_file_t * _PDCLIB_restrict stream, const wchar_t * _PDCLIB_restrict format, ... ); +int fwscanf( _PDCLIB_file_t * _PDCLIB_restrict stream, const wchar_t * _PDCLIB_restrict format, ... ); +int swprintf( wchar_t * _PDCLIB_restrict s, size_t n, const wchar_t * _PDCLIB_restrict format, ... ); +int swscanf( const wchar_t * _PDCLIB_restrict s, const wchar_t * _PDCLIB_restrict format, ... ); +int vfwprintf( _PDCLIB_file_t * _PDCLIB_restrict stream, const wchar_t * _PDCLIB_restrict format, _PDCLIB_va_list arg ); +int vfwscanf( _PDCLIB_file_t * _PDCLIB_restrict stream, const wchar_t * _PDCLIB_restrict format, _PDCLIB_va_list arg ); +int vswprintf( wchar_t * _PDCLIB_restrict s, size_t n, const wchar_t * _PDCLIB_restrict format, _PDCLIB_va_list arg ); +int vswscanf( const wchar_t * _PDCLIB_restrict s, const wchar_t * _PDCLIB_restrict format, _PDCLIB_va_list arg ); +int vwprintf( const wchar_t * _PDCLIB_restrict format, _PDCLIB_va_list arg ); +int vwscanf( const wchar_t * _PDCLIB_restrict format, _PDCLIB_va_list arg ); +int wprintf( const wchar_t * _PDCLIB_restrict format, ... ); +int wscanf( const wchar_t * _PDCLIB_restrict format, ... ); +wint_t fgetwc( _PDCLIB_file_t * stream ); +wchar_t * fgetws( wchar_t * _PDCLIB_restrict s, int n, _PDCLIB_file_t * _PDCLIB_restrict stream ); +wint_t fputwc( wchar_t c, _PDCLIB_file_t * stream ); +int fputws( const wchar_t * _PDCLIB_restrict s, _PDCLIB_file_t * _PDCLIB_restrict stream ); +int fwide( _PDCLIB_file_t * stream, int mode ); +wint_t getwc( _PDCLIB_file_t * stream ); +wint_t getwchar( void ); +wint_t putwc( wchar_t c, _PDCLIB_file_t * stream ); +wint_t putwchar( wchar_t c ); +wint_t ungetwc( wint_t c, _PDCLIB_file_t * stream ); + +#if _PDCLIB_GNU_SOURCE +wint_t getwc_unlocked( _PDCLIB_file_t * stream ); +wint_t getwchar_unlocked( void ); +wint_t fgetwc_unlocked( _PDCLIB_file_t * stream ); +wint_t fputwc_unlocked( wchar_t wc, _PDCLIB_file_t * stream ); +wint_t putwc_unlocked( wchar_t wc, _PDCLIB_file_t * stream ); +wint_t putwchar_unlocked( wchar_t wc ); +wchar_t * fgetws_unlocked( wchar_t * ws, int n, _PDCLIB_file_t * stream ); +int fputws_unlocked( const wchar_t * ws, _PDCLIB_file_t * stream ); +#endif + +/* Wide character <-> Numeric conversions */ + +/* +double wcstod( const wchar_t * _PDCLIB_restrict nptr, wchar_t * * _PDCLIB_restrict endptr ); +float wcstof( const wchar_t * _PDCLIB_restrict nptr, wchar_t * * _PDCLIB_restrict endptr ); +long double wcstold( const wchar_t * _PDCLIB_restrict nptr, wchar_t * * _PDCLIB_restrict endptr ); +*/ + +long int wcstol( const wchar_t * _PDCLIB_restrict nptr, wchar_t * * _PDCLIB_restrict endptr, int base ); +long long int wcstoll( const wchar_t * _PDCLIB_restrict nptr, wchar_t * * _PDCLIB_restrict endptr, int base ); +unsigned long int wcstoul( const wchar_t * _PDCLIB_restrict nptr, wchar_t * * _PDCLIB_restrict endptr, int base ); +unsigned long long int wcstoull( const wchar_t * _PDCLIB_restrict nptr, wchar_t * * _PDCLIB_restrict endptr, int base ); + +/* Character set conversion */ +wint_t btowc( int c ); +int wctob( wint_t c ); +int mbsinit( const mbstate_t * ps ); +size_t mbrlen( const char * _PDCLIB_restrict s, size_t n, mbstate_t * _PDCLIB_restrict ps ); +size_t mbrtowc( wchar_t * _PDCLIB_restrict pwc, const char * _PDCLIB_restrict s, size_t n, mbstate_t * _PDCLIB_restrict ps ); +size_t wcrtomb( char * _PDCLIB_restrict s, wchar_t wc, mbstate_t * _PDCLIB_restrict ps ); +size_t mbsrtowcs( wchar_t * _PDCLIB_restrict dst, const char * * _PDCLIB_restrict src, size_t len, mbstate_t * _PDCLIB_restrict ps ); +size_t wcsrtombs( char * _PDCLIB_restrict dst, const wchar_t * * _PDCLIB_restrict src, size_t len, mbstate_t * _PDCLIB_restrict ps ); + +#ifdef __cplusplus +} +#endif + +#endif