2 //===--------------------------- cwchar -----------------------------------===//
4 // The LLVM Compiler Infrastructure
6 // This file is dual licensed under the MIT and the University of Illinois Open
7 // Source Licenses. See LICENSE.TXT for details.
9 //===----------------------------------------------------------------------===//
11 #ifndef _LIBCPP_CWCHAR
12 #define _LIBCPP_CWCHAR
34 int fwprintf(FILE* restrict stream, const wchar_t* restrict format, ...);
35 int fwscanf(FILE* restrict stream, const wchar_t* restrict format, ...);
36 int swprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, ...);
37 int swscanf(const wchar_t* restrict s, const wchar_t* restrict format, ...);
38 int vfwprintf(FILE* restrict stream, const wchar_t* restrict format, va_list arg);
39 int vfwscanf(FILE* restrict stream, const wchar_t* restrict format, va_list arg); // C99
40 int vswprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, va_list arg);
41 int vswscanf(const wchar_t* restrict s, const wchar_t* restrict format, va_list arg); // C99
42 int vwprintf(const wchar_t* restrict format, va_list arg);
43 int vwscanf(const wchar_t* restrict format, va_list arg); // C99
44 int wprintf(const wchar_t* restrict format, ...);
45 int wscanf(const wchar_t* restrict format, ...);
46 wint_t fgetwc(FILE* stream);
47 wchar_t* fgetws(wchar_t* restrict s, int n, FILE* restrict stream);
48 wint_t fputwc(wchar_t c, FILE* stream);
49 int fputws(const wchar_t* restrict s, FILE* restrict stream);
50 int fwide(FILE* stream, int mode);
51 wint_t getwc(FILE* stream);
53 wint_t putwc(wchar_t c, FILE* stream);
54 wint_t putwchar(wchar_t c);
55 wint_t ungetwc(wint_t c, FILE* stream);
56 double wcstod(const wchar_t* restrict nptr, wchar_t** restrict endptr);
57 float wcstof(const wchar_t* restrict nptr, wchar_t** restrict endptr); // C99
58 long double wcstold(const wchar_t* restrict nptr, wchar_t** restrict endptr); // C99
59 long wcstol(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);
60 long long wcstoll(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); // C99
61 unsigned long wcstoul(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);
62 unsigned long long wcstoull(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); // C99
63 wchar_t* wcscpy(wchar_t* restrict s1, const wchar_t* restrict s2);
64 wchar_t* wcsncpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
65 wchar_t* wcscat(wchar_t* restrict s1, const wchar_t* restrict s2);
66 wchar_t* wcsncat(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
67 int wcscmp(const wchar_t* s1, const wchar_t* s2);
68 int wcscoll(const wchar_t* s1, const wchar_t* s2);
69 int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n);
70 size_t wcsxfrm(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
71 const wchar_t* wcschr(const wchar_t* s, wchar_t c);
72 wchar_t* wcschr( wchar_t* s, wchar_t c);
73 size_t wcscspn(const wchar_t* s1, const wchar_t* s2);
74 size_t wcslen(const wchar_t* s);
75 const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2);
76 wchar_t* wcspbrk( wchar_t* s1, const wchar_t* s2);
77 const wchar_t* wcsrchr(const wchar_t* s, wchar_t c);
78 wchar_t* wcsrchr( wchar_t* s, wchar_t c);
79 size_t wcsspn(const wchar_t* s1, const wchar_t* s2);
80 const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2);
81 wchar_t* wcsstr( wchar_t* s1, const wchar_t* s2);
82 wchar_t* wcstok(wchar_t* restrict s1, const wchar_t* restrict s2, wchar_t** restrict ptr);
83 const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);
84 wchar_t* wmemchr( wchar_t* s, wchar_t c, size_t n);
85 int wmemcmp(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
86 wchar_t* wmemcpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
87 wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n);
88 wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n);
89 size_t wcsftime(wchar_t* restrict s, size_t maxsize, const wchar_t* restrict format,
90 const tm* restrict timeptr);
93 int mbsinit(const mbstate_t* ps);
94 size_t mbrlen(const char* restrict s, size_t n, mbstate_t* restrict ps);
95 size_t mbrtowc(wchar_t* restrict pwc, const char* restrict s, size_t n, mbstate_t* restrict ps);
96 size_t wcrtomb(char* restrict s, wchar_t wc, mbstate_t* restrict ps);
97 size_t mbsrtowcs(wchar_t* restrict dst, const char** restrict src, size_t len,
98 mbstate_t* restrict ps);
99 size_t wcsrtombs(char* restrict dst, const wchar_t** restrict src, size_t len,
100 mbstate_t* restrict ps);
109 #if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
110 #include <support/win32/support.h> // pull in *swprintf defines
111 #endif // _LIBCPP_MSVCRT
113 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
114 #pragma GCC system_header
117 _LIBCPP_BEGIN_NAMESPACE_STD
129 #ifndef _LIBCPP_MSVCRT
133 #endif // _LIBCPP_MSVCRT
143 #ifndef _LIBCPP_MSVCRT
146 #endif // _LIBCPP_MSVCRT
148 #ifndef _LIBCPP_HAS_NO_LONG_LONG
150 #endif // _LIBCPP_HAS_NO_LONG_LONG
152 #ifndef _LIBCPP_HAS_NO_LONG_LONG
154 #endif // _LIBCPP_HAS_NO_LONG_LONG
164 #if defined(_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_)
174 inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcschr(const wchar_t* __s, wchar_t __c) {return ::wcschr(__s, __c);}
175 inline _LIBCPP_INLINE_VISIBILITY wchar_t* wcschr( wchar_t* __s, wchar_t __c) {return ::wcschr(__s, __c);}
177 inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {return ::wcspbrk(__s1, __s2);}
178 inline _LIBCPP_INLINE_VISIBILITY wchar_t* wcspbrk( wchar_t* __s1, const wchar_t* __s2) {return ::wcspbrk(__s1, __s2);}
180 inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcsrchr(const wchar_t* __s, wchar_t __c) {return ::wcsrchr(__s, __c);}
181 inline _LIBCPP_INLINE_VISIBILITY wchar_t* wcsrchr( wchar_t* __s, wchar_t __c) {return ::wcsrchr(__s, __c);}
183 inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcsstr(const wchar_t* __s1, const wchar_t* __s2) {return ::wcsstr(__s1, __s2);}
184 inline _LIBCPP_INLINE_VISIBILITY wchar_t* wcsstr( wchar_t* __s1, const wchar_t* __s2) {return ::wcsstr(__s1, __s2);}
186 inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {return ::wmemchr(__s, __c, __n);}
187 inline _LIBCPP_INLINE_VISIBILITY wchar_t* wmemchr( wchar_t* __s, wchar_t __c, size_t __n) {return ::wmemchr(__s, __c, __n);}
209 #ifndef _LIBCPP_HAS_NO_STDIN
211 #ifndef _LIBCPP_MSVCRT
213 #endif // _LIBCPP_MSVCRT
217 #ifndef _LIBCPP_HAS_NO_STDOUT
223 _LIBCPP_END_NAMESPACE_STD
225 #endif // _LIBCPP_CWCHAR