Switch wchar from glibc to our own implementations.

This commit is contained in:
Oliver Tappe
2012-01-07 22:02:48 +01:00
parent 7efc2e3a0e
commit b7417fbec1
5 changed files with 189 additions and 445 deletions
+90 -63
View File
@@ -51,76 +51,103 @@ extern "C" {
extern wint_t btowc(int); extern wint_t btowc(int);
extern wint_t fgetwc(FILE *); extern wint_t fgetwc(FILE *stream);
extern wchar_t *fgetws(wchar_t *, int, FILE *); extern wchar_t *fgetws(wchar_t *dest, int destLength, FILE *stream);
extern wint_t fputwc(wchar_t, FILE *); extern wint_t fputwc(wchar_t wc, FILE *stream);
extern int fputws(const wchar_t *, FILE *); extern int fputws(const wchar_t *wcs, FILE *stream);
extern int fwide(FILE *, int); extern int fwide(FILE *stream, int mode);
extern int fwprintf(FILE *, const wchar_t *, ...); extern int fwprintf(FILE *stream, const wchar_t *format, ...);
extern int fwscanf(FILE *, const wchar_t *, ...); extern int fwscanf(FILE *stream, const wchar_t *format, ...);
extern wint_t getwc(FILE *); extern wint_t getwc(FILE *stream);
extern wint_t getwchar(void); extern wint_t getwchar(void);
extern size_t mbrlen(const char *s, size_t n, mbstate_t *ps); extern size_t mbrlen(const char *s, size_t n, mbstate_t *mbState);
extern size_t mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps); extern size_t mbrtowc(wchar_t *dest, const char *src, size_t destLength,
extern int mbsinit(const mbstate_t *); mbstate_t *mbState);
extern size_t mbsrtowcs(wchar_t *dst, const char **src, size_t len, extern int mbsinit(const mbstate_t *mbState);
mbstate_t *ps); extern size_t mbsnrtowcs(wchar_t *dest, const char **src, size_t srcLength,
size_t destLength, mbstate_t *mbState);
extern size_t mbsrtowcs(wchar_t *dest, const char **src, size_t destLength,
mbstate_t *mbState);
extern wint_t putwc(wchar_t, FILE *); extern wint_t putwc(wchar_t wc, FILE *stream);
extern wint_t putwchar(wchar_t); extern wint_t putwchar(wchar_t wc);
extern int swprintf(wchar_t *, size_t, const wchar_t *, ...); extern int swprintf(wchar_t *dest, size_t destLength,
extern int swscanf(const wchar_t *, const wchar_t *, ...); const wchar_t *format, ...);
extern int swscanf(const wchar_t *wcs, const wchar_t *format, ...);
extern wint_t ungetwc(wint_t, FILE *); extern wint_t ungetwc(wint_t wc, FILE *stream);
extern int vfwprintf(FILE *, const wchar_t *, va_list); extern int vfwprintf(FILE *stream, const wchar_t *format, va_list arg);
extern int vfwscanf(FILE *, const wchar_t *, va_list); extern int vfwscanf(FILE *stream, const wchar_t *format, va_list arg);
extern int vswprintf(wchar_t *, size_t, const wchar_t *, va_list); extern int vswprintf(wchar_t *dest, size_t destLength,
extern int vswscanf(const wchar_t *, const wchar_t *, va_list); const wchar_t *format, va_list arg);
extern int vwprintf(const wchar_t *, va_list); extern int vswscanf(const wchar_t *wcs, const wchar_t *format,
extern int vwscanf(const wchar_t *, va_list); va_list arg);
extern int vwprintf(const wchar_t *format, va_list arg);
extern int vwscanf(const wchar_t *format, va_list arg);
extern size_t wcrtomb(char *, wchar_t, mbstate_t *); extern wchar_t *wcpcpy(wchar_t *dest, const wchar_t *src);
extern wchar_t *wcscat(wchar_t *, const wchar_t *); extern wchar_t *wcpncpy(wchar_t *dest, const wchar_t *src, size_t srcLength);
extern wchar_t *wcschr(const wchar_t *, wchar_t); extern size_t wcrtomb(char *dest, wchar_t wc, mbstate_t *mbState);
extern int wcscmp(const wchar_t *ws1, const wchar_t *ws2); extern int wcscasecmp(const wchar_t *wcs1, const wchar_t *wcs2);
extern int wcscoll(const wchar_t *ws1, const wchar_t *ws2); extern wchar_t *wcscat(wchar_t *dest, const wchar_t *src);
extern wchar_t *wcscpy(wchar_t *, const wchar_t *); extern wchar_t *wcschr(const wchar_t *wcs, wchar_t wc);
extern size_t wcscspn(const wchar_t *, const wchar_t *); #ifdef __USE_GNU
extern wchar_t *wcsdup(const wchar_t *); extern wchar_t *wcschrnul(const wchar_t *wcs, wchar_t wc);
extern size_t wcsftime(wchar_t *, size_t, const wchar_t *, const struct tm *); #endif
extern size_t wcslen(const wchar_t *); extern int wcscmp(const wchar_t *wcs1, const wchar_t *wcs2);
extern wchar_t *wcsncat(wchar_t *, const wchar_t *, size_t); extern int wcscoll(const wchar_t *wcs1, const wchar_t *wcs2);
extern int wcsncmp(const wchar_t *, const wchar_t *, size_t); extern wchar_t *wcscpy(wchar_t *dest, const wchar_t *src);
extern wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t); extern size_t wcscspn(const wchar_t *wcs, const wchar_t *reject);
extern wchar_t *wcspbrk(const wchar_t *, const wchar_t *); extern wchar_t *wcsdup(const wchar_t *wcs);
extern wchar_t *wcsrchr(const wchar_t *, wchar_t); extern size_t wcsftime(wchar_t *dest, size_t destLength,
extern size_t wcsrtombs(char *dst, const wchar_t **src, size_t len, const wchar_t *format, const struct tm *time);
mbstate_t *ps); extern size_t wcslcat(wchar_t *dest, const wchar_t *src, size_t maxLength);
extern size_t wcsspn(const wchar_t *, const wchar_t *); extern size_t wcslcpy(wchar_t *dest, const wchar_t *src, size_t maxLength);
extern wchar_t *wcsstr(const wchar_t *, const wchar_t *); extern size_t wcslen(const wchar_t *wcs);
extern double wcstod(const wchar_t *, wchar_t **); extern int wcsncasecmp(const wchar_t *wcs1, const wchar_t *wcs2,
extern float wcstof(const wchar_t *, wchar_t **); size_t maxLength);
extern wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **); extern wchar_t *wcsncat(wchar_t *dest, const wchar_t *src, size_t srcLength);
extern long wcstol(const wchar_t *, wchar_t **, int); extern int wcsncmp(const wchar_t *wcs1, const wchar_t *wcs2,
extern long double wcstold(const wchar_t *, wchar_t **); size_t length);
extern long long wcstoll(const wchar_t *, wchar_t **, int); extern wchar_t *wcsncpy(wchar_t *dest, const wchar_t *src, size_t srcLength);
extern unsigned long wcstoul(const wchar_t *, wchar_t **, int); extern size_t wcsnlen(const wchar_t *wcs, size_t maxLength);
extern unsigned long long wcstoull(const wchar_t *, wchar_t **, int); extern size_t wcsnrtombs(char *dest, const wchar_t **src, size_t srcLength,
extern wchar_t *wcswcs(const wchar_t *, const wchar_t *); size_t destLength, mbstate_t *mbState);
extern int wcswidth(const wchar_t *, size_t); extern wchar_t *wcspbrk(const wchar_t *wcs, const wchar_t *accept);
extern size_t wcsxfrm(wchar_t *, const wchar_t *, size_t); extern wchar_t *wcsrchr(const wchar_t *wcs, wchar_t wc);
extern int wctob(wint_t); extern size_t wcsrtombs(char *dest, const wchar_t **src, size_t destLength,
extern int wcwidth(wchar_t); mbstate_t *mbState);
extern wchar_t *wmemchr(const wchar_t *, wchar_t, size_t); extern size_t wcsspn(const wchar_t *wcs, const wchar_t *accept);
extern int wmemcmp(const wchar_t *, const wchar_t *, size_t); extern wchar_t *wcsstr(const wchar_t *haystack, const wchar_t *needle);
extern wchar_t *wmemcpy(wchar_t *, const wchar_t *, size_t); extern double wcstod(const wchar_t *wcs, wchar_t **endPtr);
extern wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t); extern float wcstof(const wchar_t *wcs, wchar_t **endPtr);
extern wchar_t *wmemset(wchar_t *, wchar_t, size_t); extern wchar_t *wcstok(wchar_t *wcs1, const wchar_t *wcs2, wchar_t **ptr);
extern int wprintf(const wchar_t *, ...); extern long wcstol(const wchar_t *wcs, wchar_t **endPtr, int base);
extern int wscanf(const wchar_t *, ...); extern long double wcstold(const wchar_t *wcs, wchar_t **endPtr);
extern long long wcstoll(const wchar_t *wcs, wchar_t **endPtr, int base);
extern unsigned long wcstoul(const wchar_t *wcs, wchar_t **endPtr,
int base);
extern unsigned long long wcstoull(const wchar_t *wcs, wchar_t **endPtr,
int base);
extern wchar_t *wcswcs(const wchar_t *haystack, const wchar_t *needle);
extern int wcswidth(const wchar_t *wcs, size_t length);
extern size_t wcsxfrm(wchar_t *dest, const wchar_t *src, size_t destLength);
extern int wctob(wint_t wc);
extern int wcwidth(wchar_t wc);
extern wchar_t *wmemchr(const wchar_t *wcs, wchar_t wc, size_t n);
extern int wmemcmp(const wchar_t *wcs1, const wchar_t *wcs2, size_t n);
extern wchar_t *wmemcpy(wchar_t *dest, const wchar_t *src, size_t n);
extern wchar_t *wmemmove(wchar_t *dest, const wchar_t *src, size_t n);
#ifdef __USE_GNU
extern wchar_t *wmempcpy(wchar_t *dest, const wchar_t *src, size_t n);
#endif
extern wchar_t *wmemset(wchar_t *dest, wchar_t wc, size_t n);
extern int wprintf(const wchar_t *format, ...);
extern int wscanf(const wchar_t *format, ...);
#ifdef __cplusplus #ifdef __cplusplus
} }
+67 -49
View File
@@ -15,57 +15,75 @@
__BEGIN_DECLS __BEGIN_DECLS
extern wint_t __btowc(int); extern wint_t __btowc(int c);
extern int __mblen(const char *string, size_t maxSize); extern int __mblen(const char *string, size_t length);
extern size_t __mbrlen(const char *s, size_t n, mbstate_t *ps); extern size_t __mbrlen(const char *s, size_t n, mbstate_t *mbState);
extern size_t __mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps); extern size_t __mbrtowc(wchar_t *dest, const char *src, size_t destLength,
extern int __mbsinit(const mbstate_t *); mbstate_t *mbState);
extern size_t __mbsrtowcs(wchar_t *dst, const char **src, size_t len, extern int __mbsinit(const mbstate_t *mbState);
mbstate_t *ps); extern size_t __mbsnrtowcs(wchar_t *dest, const char **src, size_t srcLength,
extern size_t __mbstowcs(wchar_t *pwcs, const char *string, size_t maxSize); size_t destLength, mbstate_t *mbState);
extern int __mbtowc(wchar_t *pwc, const char *string, size_t maxSize); extern size_t __mbsrtowcs(wchar_t *dest, const char **src, size_t destLength,
mbstate_t *mbState);
extern size_t __mbstowcs(wchar_t *dest, const char *src, size_t destLength);
extern int __mbtowc(wchar_t *dest, const char *src, size_t destLength);
extern size_t __wcrtomb(char *, wchar_t, mbstate_t *); extern wchar_t *__wcpcpy(wchar_t *dest, const wchar_t *src);
extern wchar_t *__wcscat(wchar_t *, const wchar_t *); extern wchar_t *__wcpncpy(wchar_t *dest, const wchar_t *src, size_t srcLength);
extern wchar_t *__wcschr(const wchar_t *, wchar_t); extern size_t __wcrtomb(char *dest, wchar_t wc, mbstate_t *mbState);
extern int __wcscmp(const wchar_t *ws1, const wchar_t *ws2); extern int __wcscasecmp(const wchar_t *wcs1, const wchar_t *wcs2);
extern int __wcscoll(const wchar_t *ws1, const wchar_t *ws2); extern wchar_t *__wcscat(wchar_t *dest, const wchar_t *src);
extern wchar_t *__wcscpy(wchar_t *, const wchar_t *); extern wchar_t *__wcschr(const wchar_t *wcs, wchar_t wc);
extern size_t __wcscspn(const wchar_t *, const wchar_t *); extern wchar_t *__wcschrnul(const wchar_t *wcs, wchar_t wc);
extern wchar_t *__wcsdup(const wchar_t *); extern int __wcscmp(const wchar_t *wcs1, const wchar_t *wcs2);
extern size_t __wcsftime(wchar_t *, size_t, const wchar_t *, extern int __wcscoll(const wchar_t *wcs1, const wchar_t *wcs2);
const struct tm *); extern wchar_t *__wcscpy(wchar_t *dest, const wchar_t *src);
extern size_t __wcslen(const wchar_t *); extern size_t __wcscspn(const wchar_t *wcs, const wchar_t *reject);
extern wchar_t *__wcsncat(wchar_t *, const wchar_t *, size_t); extern wchar_t *__wcsdup(const wchar_t *wcs);
extern int __wcsncmp(const wchar_t *, const wchar_t *, size_t); extern size_t __wcsftime(wchar_t *dest, size_t destLength,
extern wchar_t *__wcsncpy(wchar_t *, const wchar_t *, size_t); const wchar_t *format, const struct tm *time);
extern wchar_t *__wcspbrk(const wchar_t *, const wchar_t *); extern size_t __wcslcat(wchar_t *dest, const wchar_t *src, size_t maxLength);
extern wchar_t *__wcsrchr(const wchar_t *, wchar_t); extern size_t __wcslcpy(wchar_t *dest, const wchar_t *src, size_t maxLength);
extern size_t __wcsrtombs(char *dst, const wchar_t **src, size_t len, extern size_t __wcslen(const wchar_t *wcs);
mbstate_t *ps); extern int __wcsncasecmp(const wchar_t *wcs1, const wchar_t *wcs2,
extern size_t __wcsspn(const wchar_t *, const wchar_t *); size_t maxLength);
extern wchar_t *__wcsstr(const wchar_t *, const wchar_t *); extern wchar_t *__wcsncat(wchar_t *dest, const wchar_t *src, size_t srcLength);
extern double __wcstod(const wchar_t *, wchar_t **); extern int __wcsncmp(const wchar_t *wcs1, const wchar_t *wcs2,
extern float __wcstof(const wchar_t *, wchar_t **); size_t length);
extern wchar_t *__wcstok(wchar_t *, const wchar_t *, wchar_t **); extern wchar_t *__wcsncpy(wchar_t *dest, const wchar_t *src, size_t srcLength);
extern long __wcstol(const wchar_t *, wchar_t **, int); extern size_t __wcsnlen(const wchar_t *wcs, size_t maxLength);
extern long double __wcstold(const wchar_t *, wchar_t **); extern size_t __wcsnrtombs(char *dest, const wchar_t **src, size_t srcLength,
extern long long __wcstoll(const wchar_t *, wchar_t **, int); size_t destLength, mbstate_t *mbState);
extern unsigned long __wcstoul(const wchar_t *, wchar_t **, int); extern wchar_t *__wcspbrk(const wchar_t *wcs, const wchar_t *accept);
extern unsigned long long __wcstoull(const wchar_t *, wchar_t **, int); extern wchar_t *__wcsrchr(const wchar_t *wcs, wchar_t wc);
extern size_t __wcstombs(char *string, const wchar_t *pwcs, size_t maxSize); extern size_t __wcsrtombs(char *dest, const wchar_t **src, size_t destLength,
extern int __wctomb(char *string, wchar_t wchar); mbstate_t *mbState);
extern wchar_t *__wcswcs(const wchar_t *, const wchar_t *); extern size_t __wcsspn(const wchar_t *wcs, const wchar_t *accept);
extern int __wcswidth(const wchar_t *, size_t); extern wchar_t *__wcsstr(const wchar_t *haystack, const wchar_t *needle);
extern size_t __wcsxfrm(wchar_t *, const wchar_t *, size_t); extern double __wcstod(const wchar_t *wcs, wchar_t **endPtr);
extern int __wctob(wint_t); extern float __wcstof(const wchar_t *wcs, wchar_t **endPtr);
extern int __wcwidth(wchar_t); extern wchar_t *__wcstok(wchar_t *wcs1, const wchar_t *wcs2, wchar_t **ptr);
extern wchar_t *__wmemchr(const wchar_t *, wchar_t, size_t); extern long __wcstol(const wchar_t *wcs, wchar_t **endPtr, int base);
extern int __wmemcmp(const wchar_t *, const wchar_t *, size_t); extern long double __wcstold(const wchar_t *wcs, wchar_t **endPtr);
extern wchar_t *__wmemcpy(wchar_t *, const wchar_t *, size_t); extern long long __wcstoll(const wchar_t *wcs, wchar_t **endPtr, int base);
extern wchar_t *__wmemmove(wchar_t *, const wchar_t *, size_t); extern unsigned long __wcstoul(const wchar_t *wcs, wchar_t **endPtr,
extern wchar_t *__wmemset(wchar_t *, wchar_t, size_t); int base);
extern unsigned long long __wcstoull(const wchar_t *wcs, wchar_t **endPtr,
int base);
extern size_t __wcstombs(char *string, const wchar_t *wcs, size_t maxSize);
extern int __wctomb(char *string, wchar_t wc);
extern wchar_t *__wcswcs(const wchar_t *haystack, const wchar_t *needle);
extern int __wcswidth(const wchar_t *wcs, size_t length);
extern size_t __wcsxfrm(wchar_t *dest, const wchar_t *src, size_t destLength);
extern int __wctob(wint_t wc);
extern int __wcwidth(wchar_t wc);
extern wchar_t *__wmemchr(const wchar_t *wcs, wchar_t wc, size_t n);
extern int __wmemcmp(const wchar_t *wcs1, const wchar_t *wcs2, size_t n);
extern wchar_t *__wmemcpy(wchar_t *dest, const wchar_t *src, size_t n);
extern wchar_t *__wmempcpy(wchar_t *dest, const wchar_t *src, size_t n);
extern wchar_t *__wmemmove(wchar_t *dest, const wchar_t *src, size_t n);
extern wchar_t *__wmemset(wchar_t *dest, wchar_t wc, size_t n);
__END_DECLS __END_DECLS
@@ -18,42 +18,12 @@ UsePrivateHeaders libroot ;
SubDirCcFlags -D_GNU_SOURCE -DUSE_IN_LIBIO ; SubDirCcFlags -D_GNU_SOURCE -DUSE_IN_LIBIO ;
MergeObject posix_gnu_wcsmbs.o : MergeObject posix_gnu_wcsmbs.o :
wcpcpy.c
wcpncpy.c
wcscasecmp.c
# wcscasecmp_l.c
wcscat.c
wcschr.c
wcschrnul.c
wcscmp.c
wcscoll.c
wcscpy.c
wcscspn.c
wcsdup.c
wcslen.c
wcsmbsload.c wcsmbsload.c
wcsncase.c
wcsncat.c
wcsncmp.c
wcsncpy.c
wcsnlen.c
wcspbrk.c
wcsrchr.c
wcsspn.c
wcsstr.c
wcstod.c wcstod.c
wcstof.c wcstof.c
wcstok.c
wcstol.c wcstol.c
wcstoll.c wcstoll.c
wcstold.c wcstold.c
wcstoul.c wcstoul.c
wcstoull.c wcstoull.c
wcsxfrm.c
wmemchr.c
wmemcmp.c
wmemcpy.c
wmemmove.c
wmempcpy.c
wmemset.c
; ;
@@ -118,229 +118,6 @@ struct tm;
__BEGIN_DECLS __BEGIN_DECLS
/* Copy SRC to DEST. */
extern wchar_t *wcscpy (wchar_t *__restrict __dest,
__const wchar_t *__restrict __src) __THROW;
/* Copy no more than N wide-characters of SRC to DEST. */
extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
__const wchar_t *__restrict __src, size_t __n)
__THROW;
/* Append SRC onto DEST. */
extern wchar_t *wcscat (wchar_t *__restrict __dest,
__const wchar_t *__restrict __src) __THROW;
/* Append no more than N wide-characters of SRC onto DEST. */
extern wchar_t *wcsncat (wchar_t *__restrict __dest,
__const wchar_t *__restrict __src, size_t __n)
__THROW;
/* Compare S1 and S2. */
extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
__THROW __attribute_pure__;
/* Compare N wide-characters of S1 and S2. */
extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
__THROW __attribute_pure__;
#ifdef __USE_GNU
/* Compare S1 and S2, ignoring case. */
extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) __THROW;
/* Compare no more than N chars of S1 and S2, ignoring case. */
extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
size_t __n) __THROW;
/* Similar to the two functions above but take the information from
the provided locale and not the global locale. */
# include <xlocale.h>
extern int __wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
__locale_t __loc) __THROW;
extern int __wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
size_t __n, __locale_t __loc) __THROW;
#endif
/* Compare S1 and S2, both interpreted as appropriate to the
LC_COLLATE category of the current locale. */
extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __THROW;
/* Transform S2 into array pointed to by S1 such that if wcscmp is
applied to two transformed strings the result is the as applying
`wcscoll' to the original strings. */
extern size_t wcsxfrm (wchar_t *__restrict __s1,
__const wchar_t *__restrict __s2, size_t __n) __THROW;
#ifdef __USE_GNU
/* Similar to the two functions above but take the information from
the provided locale and not the global locale. */
/* Compare S1 and S2, both interpreted as appropriate to the
LC_COLLATE category of the given locale. */
extern int __wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2,
__locale_t __loc) __THROW;
/* Transform S2 into array pointed to by S1 such that if wcscmp is
applied to two transformed strings the result is the as applying
`wcscoll' to the original strings. */
extern size_t __wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,
size_t __n, __locale_t __loc) __THROW;
/* Duplicate S, returning an identical malloc'd string. */
extern wchar_t *wcsdup (__const wchar_t *__s) __THROW __attribute_malloc__;
#endif
/* Find the first occurrence of WC in WCS. */
extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
__THROW __attribute_pure__;
/* Find the last occurrence of WC in WCS. */
extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
__THROW __attribute_pure__;
#ifdef __USE_GNU
/* This function is similar to `wcschr'. But it returns a pointer to
the closing NUL wide character in case C is not found in S. */
extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
__THROW __attribute_pure__;
#endif
/* Return the length of the initial segmet of WCS which
consists entirely of wide characters not in REJECT. */
extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
__THROW __attribute_pure__;
/* Return the length of the initial segmet of WCS which
consists entirely of wide characters in ACCEPT. */
extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)
__THROW __attribute_pure__;
/* Find the first occurrence in WCS of any character in ACCEPT. */
extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)
__THROW __attribute_pure__;
/* Find the first occurrence of NEEDLE in HAYSTACK. */
extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)
__THROW __attribute_pure__;
#ifdef __USE_XOPEN
/* Another name for `wcsstr' from XPG4. */
extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
__THROW __attribute_pure__;
#endif
/* Divide WCS into tokens separated by characters in DELIM. */
extern wchar_t *wcstok (wchar_t *__restrict __s,
__const wchar_t *__restrict __delim,
wchar_t **__restrict __ptr) __THROW;
/* Return the number of wide characters in S. */
extern size_t wcslen (__const wchar_t *__s) __THROW __attribute_pure__;
#ifdef __USE_GNU
/* Return the number of wide characters in S, but at most MAXLEN. */
extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
__THROW __attribute_pure__;
#endif
/* Search N wide characters of S for C. */
extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)
__THROW __attribute_pure__;
/* Compare N wide characters of S1 and S2. */
extern int wmemcmp (__const wchar_t *__restrict __s1,
__const wchar_t *__restrict __s2, size_t __n)
__THROW __attribute_pure__;
/* Copy N wide characters of SRC to DEST. */
extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
__const wchar_t *__restrict __s2, size_t __n) __THROW;
/* Copy N wide characters of SRC to DEST, guaranteeing
correct behavior for overlapping strings. */
extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)
__THROW;
/* Set N wide characters of S to C. */
extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __THROW;
#ifdef __USE_GNU
/* Copy N wide characters of SRC to DEST and return pointer to following
wide character. */
extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
__const wchar_t *__restrict __s2, size_t __n)
__THROW;
#endif
/* Determine whether C constitutes a valid (one-byte) multibyte
character. */
extern wint_t btowc (int __c) __THROW;
/* Determine whether C corresponds to a member of the extended
character set whose multibyte representation is a single byte. */
extern int wctob (wint_t __c) __THROW;
/* Determine whether PS points to an object representing the initial
state. */
extern int mbsinit (__const mbstate_t *__ps) __THROW __attribute_pure__;
/* Write wide character representation of multibyte character pointed
to by S to PWC. */
extern size_t mbrtowc (wchar_t *__restrict __pwc,
__const char *__restrict __s, size_t __n,
mbstate_t *__p) __THROW;
/* Write multibyte representation of wide character WC to S. */
extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
mbstate_t *__restrict __ps) __THROW;
/* Return number of bytes in multibyte character pointed to by S. */
extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
mbstate_t *__restrict __ps) __THROW;
extern size_t mbrlen (__const char *__restrict __s, size_t __n,
mbstate_t *__restrict __ps) __THROW;
#ifdef __USE_EXTERN_INLINES
/* Define inline function as optimization. */
extern __inline size_t mbrlen (__const char *__restrict __s, size_t __n,
mbstate_t *__restrict __ps) __THROW
{ return (__ps != NULL
? mbrtowc (NULL, __s, __n, __ps) : __mbrlen (__s, __n, NULL)); }
#endif
/* Write wide character representation of multibyte character string
SRC to DST. */
extern size_t mbsrtowcs (wchar_t *__restrict __dst,
__const char **__restrict __src, size_t __len,
mbstate_t *__restrict __ps) __THROW;
/* Write multibyte character representation of wide character string
SRC to DST. */
extern size_t wcsrtombs (char *__restrict __dst,
__const wchar_t **__restrict __src, size_t __len,
mbstate_t *__restrict __ps) __THROW;
#ifdef __USE_GNU
/* Write wide character representation of at most NMC bytes of the
multibyte character string SRC to DST. */
extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
__const char **__restrict __src, size_t __nmc,
size_t __len, mbstate_t *__restrict __ps) __THROW;
/* Write multibyte character representation of at most NWC characters
from the wide character string SRC to DST. */
extern size_t wcsnrtombs (char *__restrict __dst,
__const wchar_t **__restrict __src,
size_t __nwc, size_t __len,
mbstate_t *__restrict __ps) __THROW;
#endif /* use GNU */
/* The following functions are extensions found in X/Open CAE. */
#ifdef __USE_XOPEN
/* Determine number of column positions required for C. */
extern int wcwidth (wchar_t __c) __THROW;
/* Determine number of column positions required for first N wide
characters (or fewer if S ends before this) in S. */
extern int wcswidth (__const wchar_t *__s, size_t __n) __THROW;
#endif /* Use X/Open. */
/* Convert initial portion of the wide string NPTR to `double' /* Convert initial portion of the wide string NPTR to `double'
@@ -400,56 +177,6 @@ extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr,
int __base) __THROW; int __base) __THROW;
#endif /* ISO C99 or GCC and GNU. */ #endif /* ISO C99 or GCC and GNU. */
#ifdef __USE_GNU
/* The concept of one static locale per category is not very well
thought out. Many applications will need to process its data using
information from several different locales. Another application is
the implementation of the internationalization handling in the
upcoming ISO C++ standard library. To support this another set of
the functions using locale data exist which have an additional
argument.
Attention: all these functions are *not* standardized in any form.
This is a proof-of-concept implementation. */
/* Structure for reentrant locale using functions. This is an
(almost) opaque type for the user level programs. */
# include <xlocale.h>
/* Special versions of the functions above which take the locale to
use as an additional parameter. */
extern long int __wcstol_l (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr, int __base,
__locale_t __loc) __THROW;
extern unsigned long int __wcstoul_l (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr,
int __base, __locale_t __loc) __THROW;
__extension__
extern long long int __wcstoll_l (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr,
int __base, __locale_t __loc) __THROW;
__extension__
extern unsigned long long int __wcstoull_l (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr,
int __base, __locale_t __loc)
__THROW;
extern double __wcstod_l (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr, __locale_t __loc)
__THROW;
extern float __wcstof_l (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr, __locale_t __loc)
__THROW;
extern long double __wcstold_l (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr,
__locale_t __loc) __THROW;
#endif /* GNU */
/* The internal entry points for `wcstoX' take an extra flag argument /* The internal entry points for `wcstoX' take an extra flag argument
saying whether or not to parse locale-dependent number grouping. */ saying whether or not to parse locale-dependent number grouping. */
@@ -533,18 +260,6 @@ extern __inline unsigned long long int wcstouq (__const wchar_t *
#endif /* Optimizing GCC >=2. */ #endif /* Optimizing GCC >=2. */
#ifdef __USE_GNU
/* Copy SRC to DEST, returning the address of the terminating L'\0' in
DEST. */
extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __THROW;
/* Copy no more than N characters of SRC to DEST, returning the address of
the last character written into DEST. */
extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)
__THROW;
#endif /* use GNU */
/* Wide character I/O functions. */ /* Wide character I/O functions. */
#if defined __USE_ISOC99 || defined __USE_UNIX98 #if defined __USE_ISOC99 || defined __USE_UNIX98
@@ -670,24 +385,6 @@ extern int fputws_unlocked (__const wchar_t *__restrict __ws,
#endif #endif
/* Format TP into S according to FORMAT.
Write no more than MAXSIZE wide characters and return the number
of wide characters written, or 0 if it would exceed MAXSIZE. */
extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
__const wchar_t *__restrict __format,
__const struct tm *__restrict __tp) __THROW;
/* The X/Open standard demands that most of the functions defined in
the <wctype.h> header must also appear here. This is probably
because some X/Open members wrote their implementation before the
ISO C standard was published and introduced the better solution.
We have to provide these definitions for compliance reasons but we
do this nonsense only if really necessary. */
#if defined __USE_UNIX98 && !defined __USE_GNU
# define __need_iswxxx
# include <wctype.h>
#endif
__END_DECLS __END_DECLS
#endif /* _WCHAR_H defined */ #endif /* _WCHAR_H defined */
+32
View File
@@ -14,11 +14,43 @@ MergeObject posix_wchar.o :
mbsrtowcs.cpp mbsrtowcs.cpp
mbstowcs.c mbstowcs.c
mbtowc.c mbtowc.c
wcpcpy.c
wcpncpy.c
wcrtomb.cpp wcrtomb.cpp
wcscasecmp.c
wcscat.c
wcschr.c
wcschrnul.c
wcscmp.c
wcscoll.cpp
wcscpy.c
wcscspn.c
wcsdup.c
# wcsftime.cpp
wcslcat.c
wcslcpy.c
wcslen.c
wcsncasecmp.c
wcsncat.c
wcsncmp.c
wcsncpy.c
wcsnlen.c
wcspbrk.c
wcsrchr.c
wcsrtombs.cpp wcsrtombs.cpp
wcsspn.c
wcsstr.c
wcstok.c
wcstombs.c wcstombs.c
wcswidth.c wcswidth.c
wcsxfrm.cpp
wctob.c wctob.c
wctomb.c wctomb.c
wcwidth.c wcwidth.c
wmemchr.c
wmemcmp.c
wmemcpy.c
wmemmove.c
wmempcpy.c
wmemset.c
; ;