X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=includes%2Fwchar.h;h=bac7f40e40524f8cf0f1c65229c651897c9d22c2;hb=41777e3d5dc655f59a8c3bcd071639e6878e853a;hp=4ac64c5e269c30716caa1360ac803d6c36132fd5;hpb=ac3f809c3c10347c110fac3db93af0954eda98bb;p=pdclib diff --git a/includes/wchar.h b/includes/wchar.h index 4ac64c5..bac7f40 100644 --- a/includes/wchar.h +++ b/includes/wchar.h @@ -1,119 +1,126 @@ -// ---------------------------------------------------------------------------- -// $Id$ -// ---------------------------------------------------------------------------- -// Public Domain C Library - http://pdclib.sourceforge.net -// This code is Public Domain. Use, modify, and redistribute at will. -// ---------------------------------------------------------------------------- -// Extended multibyte and wide character utilities -// ---------------------------------------------------------------------------- - -#ifndef __WCHAR_H -#define __WCHAR_H __WCHAR_H - -// ---------------------------------------------------------------------------- -// MACROS - -#define NULL 0 -#define WCHAR_MAX // TODO -#define WCHAR_MIN // TODO -#define WEOF // TODO - -// ---------------------------------------------------------------------------- -// TYPEDEFS - -typedef mbstate_t; -typedef size_t; -typedef wint_t; -struct tm; - -#ifndef __cplusplus -typedef wchar_t; -#endif // __cplusplus - -// ---------------------------------------------------------------------------- -// FUNCTIONS - -wint_t fgetwc( FILE * stream ); -wchar_t * fgetws( wchar_t * restrict s, int n, FILE * restrict stream ); -wint_t fputwc( wchar_t c, FILE * stream ); -int fputws( const wchar_t * restrict s, FILE * restrict stream ); -int fwide( FILE * stream, int mode ); -wint_t getwc( FILE * stream ); -wint_t getwchar( void ); -wint_t putwc( wchar_t c, FILE * stream ); -wint_t putwchar( wchar_t c ); -wint_t ungetwc( wint_t c, FILE * stream ); - -int fwscanf( FILE * restrict stream, const wchar_t * restrict format, ... ); -int swscanf( const wchar_t * restrict s, const wchar_t * restrict format, ... ); -int wscanf( const wchar_t * restrict format, ... ); -int fwprintf( FILE * restrict stream, const wchar_t * restrict format, ... ); -int swprintf( wchar_t * restrict s, size_t n, const wchar_t * restrict format, ... ); -int wprintf( const wchar_t * restrict format, ... ); -int vfwscanf( FILE * restrict stream, const wchar_t * restrict format, va_list arg ); -int vswscanf( const wchar_t * restrict s, size_t n, const wchar_t * restrict format, va_list arg ); -int vwscanf( const wchar_t * restrict format, va_list arg ); -int vfwprintf( FILE * restrict stream, const wchar_t * restrict format, va_list arg ); -int vswprintf( wchar_t * restrict s, size_t n, const wchar_t * restrict format, va_list arg ); -int vwprintf( const wchar_t * restrict format, va_list arg ); - -size_t wcsftime( wchar_t * restrict s, size_t maxsize, const wchar_t * restrict format, const struct tm * restrict timeptr ); - -wint_t btowc( int c ); -size_t mbrlen( const char * restrict s, size_t n, mbstate_t * restrict ps ); -size_t mbrtowc( wchar_t * restrict pwc, const char * restrict s, size_t n, mbstate_t * restrict ps ); -int mbsinit( const mbstate_t * ps ); -size_t mbsrtowcs( wchar_t * restrict dst, const char * * restrict src, size_t len, mbstate_t * restrict ps ); -size_t wcrtomb( char * restrict s, wchar_t wc, mbstate_t * restrict ps ); -size_t wcsrtombs(char * restrict dst, const wchar_t * * restrict src, size_t len, mbstate_t * restrict ps ); -double wcstod( const wchar_t * restrict nptr, wchar_t * * restrict endptr ); -float wcstof( const wchar_t * restrict nptr, wchar_t * * restrict endptr); -long double wcstold( const wchar_t * restrict nptr, wchar_t * * restrict endptr); -long long wcstoll( const wchar_t * restrict nptr, wchar_t * * restrict endptr, int base ); -unsigned long long wcstoull( const wchar_t * restrict nptr, wchar_t * * restrict endptr, int base ); -long wcstol( const wchar_t * restrict nptr, wchar_t * * restrict endptr, int base ); -unsigned long wcstoul( const wchar_t * restrict nptr, wchar_t * * restrict endptr, int base ); -int wctob( wint_t c ); - -wchar_t * wcscat( wchar_t * restrict s1, const wchar_t * restrict s2); -int wcscmp( const wchar_t * s1, const wchar_t * s2 ); -int wcscoll( const wchar_t * s1, const wchar_t * s2 ); -wchar_t * wcscpy( wchar_t * restrict s1, const wchar_t * restrict s2 ); -size_t wcscspn( const wchar_t * s1, const wchar_t * s2 ); -size_t wcslen( const wchar_t * s ); -wchar_t * wcsncat( wchar_t * restrict s1, const wchar_t * restrict s2, size_t n ); -int wcsncmp( const wchar_t * s1, const wchar_t * s2, size_t n ); -wchar_t * wcsncpy( wchar_t * restrict s1, const wchar_t * restrict s2, size_t n ); -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 * restrict s1, const wchar_t * restrict s2, wchar_t * * restrict ptr ); -size_t wcsxfrm( wchar_t * restrict s1, const wchar_t * restrict s2, size_t n ); -int wmemcmp( const wchar_t * s1, const wchar_t * s2, size_t n ); -wchar_t * wmemcpy( wchar_t * restrict s1, const wchar_t * restrict s2, size_t n ); -wchar_t * wmemmove( wchar_t * s1, const wchar_t * s2, size_t n ); -wchar_t * wmemset( wchar_t * s, wchar_t c, size_t n ); - -#ifdef __cplusplus - -const wchar_t * wcschr( const wchar_t * s, wchar_t c ); -wchar_t * wcschr( wchar_t * s, wchar_t c ); -const wchar_t * wcspbrk( const wchar_t * s1, const wchar_t * s2 ); -wchar_t * wcspbrk( wchar_t * s1, const wchar_t * s2 ); -const wchar_t * wcsrchr( const wchar_t * s, wchar_t c ); -wchar_t * wcsrchr( wchar_t * s, wchar_t c ); -const wchar_t * wcsstr( const wchar_t * s1, const wchar_t * s2 ); -wchar_t * wcsstr( wchar_t * s1, const wchar_t * s2 ); -const wchar_t * wmemchr( const wchar_t * s, wchar_t c, size_t n ); -wchar_t * wmemchr( wchar_t * s, wchar_t c, size_t n ); - -#else - -wchar_t * wcschr( const wchar_t * s, wchar_t c ); -wchar_t * wcspbrk( const wchar_t * s1, const wchar_t * s2 ); -wchar_t * wcsrchr( const wchar_t * s, wchar_t c ); -wchar_t * wcsstr( const wchar_t * s1, const wchar_t * s2 ); -wchar_t * wmemchr( const wchar_t * s, wchar_t c, size_t n); - -#endif // __cplusplus - -#endif // __WCHAR_H +/* 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 +/* This is VASTLY incomplete. Functions being implemented as required by other + portions of the library + */ + +#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 struct _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 + +#define WEOF ((wint_t) -1) + +/* 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(struct _PDCLIB_file_t *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, ...); +int fwscanf(struct _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(struct _PDCLIB_file_t *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg); +int vfwscanf(struct _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(struct _PDCLIB_file_t *stream); +wchar_t *fgetws(wchar_t *_PDCLIB_restrict s, int n, struct _PDCLIB_file_t *_PDCLIB_restrict stream); +wint_t fputwc(wchar_t c, struct _PDCLIB_file_t *stream); +int fputws(const wchar_t *_PDCLIB_restrict s, struct _PDCLIB_file_t *_PDCLIB_restrict stream); +int fwide(struct _PDCLIB_file_t *stream, int mode); +wint_t getwc(struct _PDCLIB_file_t *stream); +wint_t getwchar(void); +wint_t putwc(wchar_t c, struct _PDCLIB_file_t *stream); +wint_t putwchar(wchar_t c); +wint_t ungetwc(wint_t c, struct _PDCLIB_file_t *stream); + +/* 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