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