1#ifndef _WCHAR_H 2#define _WCHAR_H 3 4#ifdef __cplusplus 5extern "C" { 6#endif 7 8#include <features.h> 9 10#define __NEED_FILE 11#define __NEED___isoc_va_list 12#define __NEED_size_t 13#define __NEED_wchar_t 14#define __NEED_wint_t 15#define __NEED_mbstate_t 16 17#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 18 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 19#define __NEED_locale_t 20#define __NEED_va_list 21#endif 22 23#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 24#define __NEED_wctype_t 25#endif 26 27#include <bits/alltypes.h> 28 29#if L'\0'-1 > 0 30#define WCHAR_MAX (0xffffffffu+L'\0') 31#define WCHAR_MIN (0+L'\0') 32#else 33#define WCHAR_MAX (0x7fffffff+L'\0') 34#define WCHAR_MIN (-1-0x7fffffff+L'\0') 35#endif 36 37#ifdef __cplusplus 38#define NULL 0L 39#else 40#define NULL ((void*)0) 41#endif 42 43#undef WEOF 44#define WEOF 0xffffffffU 45 46wchar_t *wcscpy (wchar_t *__restrict, const wchar_t *__restrict); 47wchar_t *wcsncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); 48 49wchar_t *wcscat (wchar_t *__restrict, const wchar_t *__restrict); 50wchar_t *wcsncat (wchar_t *__restrict, const wchar_t *__restrict, size_t); 51 52int wcscmp (const wchar_t *, const wchar_t *); 53int wcsncmp (const wchar_t *, const wchar_t *, size_t); 54 55int wcscoll(const wchar_t *, const wchar_t *); 56size_t wcsxfrm (wchar_t *__restrict, const wchar_t *__restrict, size_t); 57 58wchar_t *wcschr (const wchar_t *, wchar_t); 59wchar_t *wcsrchr (const wchar_t *, wchar_t); 60 61size_t wcscspn (const wchar_t *, const wchar_t *); 62size_t wcsspn (const wchar_t *, const wchar_t *); 63wchar_t *wcspbrk (const wchar_t *, const wchar_t *); 64 65wchar_t *wcstok (wchar_t *__restrict, const wchar_t *__restrict, wchar_t **__restrict); 66 67size_t wcslen (const wchar_t *); 68 69wchar_t *wcsstr (const wchar_t *__restrict, const wchar_t *__restrict); 70wchar_t *wcswcs (const wchar_t *, const wchar_t *); 71 72wchar_t *wmemchr (const wchar_t *, wchar_t, size_t); 73int wmemcmp (const wchar_t *, const wchar_t *, size_t); 74wchar_t *wmemcpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); 75wchar_t *wmemmove (wchar_t *, const wchar_t *, size_t); 76wchar_t *wmemset (wchar_t *, wchar_t, size_t); 77 78wint_t btowc (int); 79int wctob (wint_t); 80 81int mbsinit (const mbstate_t *); 82size_t mbrtowc (wchar_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict); 83size_t wcrtomb (char *__restrict, wchar_t, mbstate_t *__restrict); 84 85size_t mbrlen (const char *__restrict, size_t, mbstate_t *__restrict); 86 87size_t mbsrtowcs (wchar_t *__restrict, const char **__restrict, size_t, mbstate_t *__restrict); 88size_t wcsrtombs (char *__restrict, const wchar_t **__restrict, size_t, mbstate_t *__restrict); 89 90float wcstof (const wchar_t *__restrict, wchar_t **__restrict); 91double wcstod (const wchar_t *__restrict, wchar_t **__restrict); 92long double wcstold (const wchar_t *__restrict, wchar_t **__restrict); 93 94long wcstol (const wchar_t *__restrict, wchar_t **__restrict, int); 95unsigned long wcstoul (const wchar_t *__restrict, wchar_t **__restrict, int); 96 97long long wcstoll (const wchar_t *__restrict, wchar_t **__restrict, int); 98unsigned long long wcstoull (const wchar_t *__restrict, wchar_t **__restrict, int); 99 100 101 102int fwide (FILE *, int); 103 104 105int wprintf (const wchar_t *__restrict, ...); 106int fwprintf (FILE *__restrict, const wchar_t *__restrict, ...); 107int swprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, ...); 108 109int vwprintf (const wchar_t *__restrict, __isoc_va_list); 110int vfwprintf (FILE *__restrict, const wchar_t *__restrict, __isoc_va_list); 111int vswprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, __isoc_va_list); 112 113int wscanf (const wchar_t *__restrict, ...); 114int fwscanf (FILE *__restrict, const wchar_t *__restrict, ...); 115int swscanf (const wchar_t *__restrict, const wchar_t *__restrict, ...); 116 117int vwscanf (const wchar_t *__restrict, __isoc_va_list); 118int vfwscanf (FILE *__restrict, const wchar_t *__restrict, __isoc_va_list); 119int vswscanf (const wchar_t *__restrict, const wchar_t *__restrict, __isoc_va_list); 120 121wint_t fgetwc (FILE *); 122wint_t getwc (FILE *); 123wint_t getwchar (void); 124 125wint_t fputwc (wchar_t, FILE *); 126wint_t putwc (wchar_t, FILE *); 127wint_t putwchar (wchar_t); 128 129wchar_t *fgetws (wchar_t *__restrict, int, FILE *__restrict); 130int fputws (const wchar_t *__restrict, FILE *__restrict); 131 132wint_t ungetwc (wint_t, FILE *); 133 134struct tm; 135size_t wcsftime (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict); 136 137#undef iswdigit 138 139#if defined(_GNU_SOURCE) 140wint_t fgetwc_unlocked (FILE *); 141wint_t getwc_unlocked (FILE *); 142wint_t getwchar_unlocked (void); 143wint_t fputwc_unlocked (wchar_t, FILE *); 144wint_t putwc_unlocked (wchar_t, FILE *); 145wint_t putwchar_unlocked (wchar_t); 146wchar_t *fgetws_unlocked (wchar_t *__restrict, int, FILE *__restrict); 147int fputws_unlocked (const wchar_t *__restrict, FILE *__restrict); 148#endif 149 150#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 151size_t wcsftime_l (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict, locale_t); 152#endif 153 154#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 155 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 156FILE *open_wmemstream(wchar_t **, size_t *); 157size_t mbsnrtowcs(wchar_t *__restrict, const char **__restrict, size_t, size_t, mbstate_t *__restrict); 158size_t wcsnrtombs(char *__restrict, const wchar_t **__restrict, size_t, size_t, mbstate_t *__restrict); 159wchar_t *wcsdup(const wchar_t *); 160size_t wcsnlen (const wchar_t *, size_t); 161wchar_t *wcpcpy (wchar_t *__restrict, const wchar_t *__restrict); 162wchar_t *wcpncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); 163int wcscasecmp(const wchar_t *, const wchar_t *); 164int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t); 165int wcsncasecmp(const wchar_t *, const wchar_t *, size_t); 166int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t); 167int wcscoll_l(const wchar_t *, const wchar_t *, locale_t); 168size_t wcsxfrm_l(wchar_t *__restrict, const wchar_t *__restrict, size_t, locale_t); 169#endif 170 171#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 172int wcwidth (wchar_t); 173int wcswidth (const wchar_t *, size_t); 174int iswalnum(wint_t); 175int iswalpha(wint_t); 176int iswblank(wint_t); 177int iswcntrl(wint_t); 178int iswdigit(wint_t); 179int iswgraph(wint_t); 180int iswlower(wint_t); 181int iswprint(wint_t); 182int iswpunct(wint_t); 183int iswspace(wint_t); 184int iswupper(wint_t); 185int iswxdigit(wint_t); 186int iswctype(wint_t, wctype_t); 187wint_t towlower(wint_t); 188wint_t towupper(wint_t); 189wctype_t wctype(const char *); 190 191#ifndef __cplusplus 192#undef iswdigit 193#define iswdigit(a) (0 ? iswdigit(a) : ((unsigned)(a)-'0') < 10) 194#endif 195#endif 196 197#ifdef __cplusplus 198} 199#endif 200 201#endif 202