1 // -*- C++ -*- 2 //===--------------------------- cwchar -----------------------------------===// 3 // 4 // The LLVM Compiler Infrastructure 5 // 6 // This file is dual licensed under the MIT and the University of Illinois Open 7 // Source Licenses. See LICENSE.TXT for details. 8 // 9 //===----------------------------------------------------------------------===// 10 11 #ifndef _LIBCPP_CWCHAR 12 #define _LIBCPP_CWCHAR 13 14 /* 15 cwchar synopsis 16 17 Macros: 18 19 NULL 20 WCHAR_MAX 21 WCHAR_MIN 22 WEOF 23 24 namespace std 25 { 26 27 Types: 28 29 mbstate_t 30 size_t 31 tm 32 wint_t 33 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); 52 wint_t getwchar(); 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); 91 wint_t btowc(int c); 92 int wctob(wint_t c); 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); 101 102 } // std 103 104 */ 105 106 #include <__config> 107 #include <cwctype> 108 #include <wchar.h> 109 #if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__) 110 #include <support/win32/support.h> // pull in *swprintf defines 111 #endif // _LIBCPP_MSVCRT 112 113 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 114 #pragma GCC system_header 115 #endif 116 117 _LIBCPP_BEGIN_NAMESPACE_STD 118 119 using ::mbstate_t; 120 using ::size_t; 121 using ::tm; 122 using ::wint_t; 123 using ::FILE; 124 using ::fwprintf; 125 using ::fwscanf; 126 using ::swprintf; 127 using ::vfwprintf; 128 using ::vswprintf; 129 #ifndef _LIBCPP_MSVCRT 130 using ::swscanf; 131 using ::vfwscanf; 132 using ::vswscanf; 133 #endif // _LIBCPP_MSVCRT 134 using ::fgetwc; 135 using ::fgetws; 136 using ::fputwc; 137 using ::fputws; 138 using ::fwide; 139 using ::getwc; 140 using ::putwc; 141 using ::ungetwc; 142 using ::wcstod; 143 #ifndef _LIBCPP_MSVCRT 144 using ::wcstof; 145 using ::wcstold; 146 #endif // _LIBCPP_MSVCRT 147 using ::wcstol; 148 #ifndef _LIBCPP_HAS_NO_LONG_LONG 149 using ::wcstoll; 150 #endif // _LIBCPP_HAS_NO_LONG_LONG 151 using ::wcstoul; 152 #ifndef _LIBCPP_HAS_NO_LONG_LONG 153 using ::wcstoull; 154 #endif // _LIBCPP_HAS_NO_LONG_LONG 155 using ::wcscpy; 156 using ::wcsncpy; 157 using ::wcscat; 158 using ::wcsncat; 159 using ::wcscmp; 160 using ::wcscoll; 161 using ::wcsncmp; 162 using ::wcsxfrm; 163 164 #if defined(_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_) 165 166 using ::wcschr; 167 using ::wcspbrk; 168 using ::wcsrchr; 169 using ::wcsstr; 170 using ::wmemchr; 171 172 #else 173 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);} 176 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);} 179 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);} 182 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);} 185 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);} 188 189 #endif 190 191 using ::wcscspn; 192 using ::wcslen; 193 using ::wcsspn; 194 using ::wcstok; 195 using ::wmemcmp; 196 using ::wmemcpy; 197 using ::wmemmove; 198 using ::wmemset; 199 using ::wcsftime; 200 using ::btowc; 201 using ::wctob; 202 using ::mbsinit; 203 using ::mbrlen; 204 using ::mbrtowc; 205 using ::wcrtomb; 206 using ::mbsrtowcs; 207 using ::wcsrtombs; 208 209 #ifndef _LIBCPP_HAS_NO_STDIN 210 using ::getwchar; 211 #ifndef _LIBCPP_MSVCRT 212 using ::vwscanf; 213 #endif // _LIBCPP_MSVCRT 214 using ::wscanf; 215 #endif 216 217 #ifndef _LIBCPP_HAS_NO_STDOUT 218 using ::putwchar; 219 using ::vwprintf; 220 using ::wprintf; 221 #endif 222 223 _LIBCPP_END_NAMESPACE_STD 224 225 #endif // _LIBCPP_CWCHAR 226