13e519524SHoward Hinnant// -*- C++ -*- 2eb8650a7SLouis Dionne//===----------------------------------------------------------------------===// 33e519524SHoward Hinnant// 457b08b09SChandler Carruth// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 557b08b09SChandler Carruth// See https://llvm.org/LICENSE.txt for license information. 657b08b09SChandler Carruth// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 73e519524SHoward Hinnant// 83e519524SHoward Hinnant//===----------------------------------------------------------------------===// 93e519524SHoward Hinnant 103e519524SHoward Hinnant#ifndef _LIBCPP_CWCHAR 113e519524SHoward Hinnant#define _LIBCPP_CWCHAR 123e519524SHoward Hinnant 133e519524SHoward Hinnant/* 143e519524SHoward Hinnant cwchar synopsis 153e519524SHoward Hinnant 163e519524SHoward HinnantMacros: 173e519524SHoward Hinnant 183e519524SHoward Hinnant NULL 193e519524SHoward Hinnant WCHAR_MAX 203e519524SHoward Hinnant WCHAR_MIN 213e519524SHoward Hinnant WEOF 223e519524SHoward Hinnant 233e519524SHoward Hinnantnamespace std 243e519524SHoward Hinnant{ 253e519524SHoward Hinnant 263e519524SHoward HinnantTypes: 273e519524SHoward Hinnant 283e519524SHoward Hinnant mbstate_t 293e519524SHoward Hinnant size_t 303e519524SHoward Hinnant tm 313e519524SHoward Hinnant wint_t 323e519524SHoward Hinnant 333e519524SHoward Hinnantint fwprintf(FILE* restrict stream, const wchar_t* restrict format, ...); 343e519524SHoward Hinnantint fwscanf(FILE* restrict stream, const wchar_t* restrict format, ...); 353e519524SHoward Hinnantint swprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, ...); 363e519524SHoward Hinnantint swscanf(const wchar_t* restrict s, const wchar_t* restrict format, ...); 373e519524SHoward Hinnantint vfwprintf(FILE* restrict stream, const wchar_t* restrict format, va_list arg); 383e519524SHoward Hinnantint vfwscanf(FILE* restrict stream, const wchar_t* restrict format, va_list arg); // C99 393e519524SHoward Hinnantint vswprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, va_list arg); 403e519524SHoward Hinnantint vswscanf(const wchar_t* restrict s, const wchar_t* restrict format, va_list arg); // C99 413e519524SHoward Hinnantint vwprintf(const wchar_t* restrict format, va_list arg); 423e519524SHoward Hinnantint vwscanf(const wchar_t* restrict format, va_list arg); // C99 433e519524SHoward Hinnantint wprintf(const wchar_t* restrict format, ...); 443e519524SHoward Hinnantint wscanf(const wchar_t* restrict format, ...); 453e519524SHoward Hinnantwint_t fgetwc(FILE* stream); 463e519524SHoward Hinnantwchar_t* fgetws(wchar_t* restrict s, int n, FILE* restrict stream); 473e519524SHoward Hinnantwint_t fputwc(wchar_t c, FILE* stream); 483e519524SHoward Hinnantint fputws(const wchar_t* restrict s, FILE* restrict stream); 493e519524SHoward Hinnantint fwide(FILE* stream, int mode); 503e519524SHoward Hinnantwint_t getwc(FILE* stream); 513e519524SHoward Hinnantwint_t getwchar(); 523e519524SHoward Hinnantwint_t putwc(wchar_t c, FILE* stream); 533e519524SHoward Hinnantwint_t putwchar(wchar_t c); 543e519524SHoward Hinnantwint_t ungetwc(wint_t c, FILE* stream); 553e519524SHoward Hinnantdouble wcstod(const wchar_t* restrict nptr, wchar_t** restrict endptr); 563e519524SHoward Hinnantfloat wcstof(const wchar_t* restrict nptr, wchar_t** restrict endptr); // C99 573e519524SHoward Hinnantlong double wcstold(const wchar_t* restrict nptr, wchar_t** restrict endptr); // C99 583e519524SHoward Hinnantlong wcstol(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); 593e519524SHoward Hinnantlong long wcstoll(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); // C99 603e519524SHoward Hinnantunsigned long wcstoul(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); 613e519524SHoward Hinnantunsigned long long wcstoull(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); // C99 623e519524SHoward Hinnantwchar_t* wcscpy(wchar_t* restrict s1, const wchar_t* restrict s2); 633e519524SHoward Hinnantwchar_t* wcsncpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); 643e519524SHoward Hinnantwchar_t* wcscat(wchar_t* restrict s1, const wchar_t* restrict s2); 653e519524SHoward Hinnantwchar_t* wcsncat(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); 663e519524SHoward Hinnantint wcscmp(const wchar_t* s1, const wchar_t* s2); 673e519524SHoward Hinnantint wcscoll(const wchar_t* s1, const wchar_t* s2); 683e519524SHoward Hinnantint wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n); 693e519524SHoward Hinnantsize_t wcsxfrm(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); 703e519524SHoward Hinnantconst wchar_t* wcschr(const wchar_t* s, wchar_t c); 713e519524SHoward Hinnant wchar_t* wcschr( wchar_t* s, wchar_t c); 723e519524SHoward Hinnantsize_t wcscspn(const wchar_t* s1, const wchar_t* s2); 733e519524SHoward Hinnantsize_t wcslen(const wchar_t* s); 743e519524SHoward Hinnantconst wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2); 753e519524SHoward Hinnant wchar_t* wcspbrk( wchar_t* s1, const wchar_t* s2); 763e519524SHoward Hinnantconst wchar_t* wcsrchr(const wchar_t* s, wchar_t c); 773e519524SHoward Hinnant wchar_t* wcsrchr( wchar_t* s, wchar_t c); 783e519524SHoward Hinnantsize_t wcsspn(const wchar_t* s1, const wchar_t* s2); 793e519524SHoward Hinnantconst wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2); 803e519524SHoward Hinnant wchar_t* wcsstr( wchar_t* s1, const wchar_t* s2); 813e519524SHoward Hinnantwchar_t* wcstok(wchar_t* restrict s1, const wchar_t* restrict s2, wchar_t** restrict ptr); 823e519524SHoward Hinnantconst wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n); 833e519524SHoward Hinnant wchar_t* wmemchr( wchar_t* s, wchar_t c, size_t n); 843e519524SHoward Hinnantint wmemcmp(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); 853e519524SHoward Hinnantwchar_t* wmemcpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); 863e519524SHoward Hinnantwchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n); 873e519524SHoward Hinnantwchar_t* wmemset(wchar_t* s, wchar_t c, size_t n); 883e519524SHoward Hinnantsize_t wcsftime(wchar_t* restrict s, size_t maxsize, const wchar_t* restrict format, 893e519524SHoward Hinnant const tm* restrict timeptr); 903e519524SHoward Hinnantwint_t btowc(int c); 913e519524SHoward Hinnantint wctob(wint_t c); 923e519524SHoward Hinnantint mbsinit(const mbstate_t* ps); 933e519524SHoward Hinnantsize_t mbrlen(const char* restrict s, size_t n, mbstate_t* restrict ps); 943e519524SHoward Hinnantsize_t mbrtowc(wchar_t* restrict pwc, const char* restrict s, size_t n, mbstate_t* restrict ps); 953e519524SHoward Hinnantsize_t wcrtomb(char* restrict s, wchar_t wc, mbstate_t* restrict ps); 963e519524SHoward Hinnantsize_t mbsrtowcs(wchar_t* restrict dst, const char** restrict src, size_t len, 973e519524SHoward Hinnant mbstate_t* restrict ps); 983e519524SHoward Hinnantsize_t wcsrtombs(char* restrict dst, const wchar_t** restrict src, size_t len, 993e519524SHoward Hinnant mbstate_t* restrict ps); 1003e519524SHoward Hinnant 1013e519524SHoward Hinnant} // std 1023e519524SHoward Hinnant 1033e519524SHoward Hinnant*/ 1043e519524SHoward Hinnant 105*385cc25aSLouis Dionne#include <__assert> // all public C++ headers provide the assertion handler 1063e519524SHoward Hinnant#include <__config> 1073e519524SHoward Hinnant#include <cwctype> 1083e519524SHoward Hinnant#include <wchar.h> 1093e519524SHoward Hinnant 110073458b1SHoward Hinnant#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 1113e519524SHoward Hinnant# pragma GCC system_header 112073458b1SHoward Hinnant#endif 1133e519524SHoward Hinnant 1143e519524SHoward Hinnant_LIBCPP_BEGIN_NAMESPACE_STD 1153e519524SHoward Hinnant 116a9c9183cSLouis Dionneusing ::mbstate_t _LIBCPP_USING_IF_EXISTS; 117a9c9183cSLouis Dionneusing ::size_t _LIBCPP_USING_IF_EXISTS; 118a9c9183cSLouis Dionneusing ::tm _LIBCPP_USING_IF_EXISTS; 119a9c9183cSLouis Dionneusing ::wint_t _LIBCPP_USING_IF_EXISTS; 120a9c9183cSLouis Dionneusing ::FILE _LIBCPP_USING_IF_EXISTS; 121a9c9183cSLouis Dionneusing ::fwprintf _LIBCPP_USING_IF_EXISTS; 122a9c9183cSLouis Dionneusing ::fwscanf _LIBCPP_USING_IF_EXISTS; 123a9c9183cSLouis Dionneusing ::swprintf _LIBCPP_USING_IF_EXISTS; 124a9c9183cSLouis Dionneusing ::vfwprintf _LIBCPP_USING_IF_EXISTS; 125a9c9183cSLouis Dionneusing ::vswprintf _LIBCPP_USING_IF_EXISTS; 126a9c9183cSLouis Dionneusing ::swscanf _LIBCPP_USING_IF_EXISTS; 127a9c9183cSLouis Dionneusing ::vfwscanf _LIBCPP_USING_IF_EXISTS; 128a9c9183cSLouis Dionneusing ::vswscanf _LIBCPP_USING_IF_EXISTS; 129a9c9183cSLouis Dionneusing ::fgetwc _LIBCPP_USING_IF_EXISTS; 130a9c9183cSLouis Dionneusing ::fgetws _LIBCPP_USING_IF_EXISTS; 131a9c9183cSLouis Dionneusing ::fputwc _LIBCPP_USING_IF_EXISTS; 132a9c9183cSLouis Dionneusing ::fputws _LIBCPP_USING_IF_EXISTS; 133a9c9183cSLouis Dionneusing ::fwide _LIBCPP_USING_IF_EXISTS; 134a9c9183cSLouis Dionneusing ::getwc _LIBCPP_USING_IF_EXISTS; 135a9c9183cSLouis Dionneusing ::putwc _LIBCPP_USING_IF_EXISTS; 136a9c9183cSLouis Dionneusing ::ungetwc _LIBCPP_USING_IF_EXISTS; 137a9c9183cSLouis Dionneusing ::wcstod _LIBCPP_USING_IF_EXISTS; 138a9c9183cSLouis Dionneusing ::wcstof _LIBCPP_USING_IF_EXISTS; 139a9c9183cSLouis Dionneusing ::wcstold _LIBCPP_USING_IF_EXISTS; 140a9c9183cSLouis Dionneusing ::wcstol _LIBCPP_USING_IF_EXISTS; 141a9c9183cSLouis Dionneusing ::wcstoll _LIBCPP_USING_IF_EXISTS; 142a9c9183cSLouis Dionneusing ::wcstoul _LIBCPP_USING_IF_EXISTS; 143a9c9183cSLouis Dionneusing ::wcstoull _LIBCPP_USING_IF_EXISTS; 144a9c9183cSLouis Dionneusing ::wcscpy _LIBCPP_USING_IF_EXISTS; 145a9c9183cSLouis Dionneusing ::wcsncpy _LIBCPP_USING_IF_EXISTS; 146a9c9183cSLouis Dionneusing ::wcscat _LIBCPP_USING_IF_EXISTS; 147a9c9183cSLouis Dionneusing ::wcsncat _LIBCPP_USING_IF_EXISTS; 148a9c9183cSLouis Dionneusing ::wcscmp _LIBCPP_USING_IF_EXISTS; 149a9c9183cSLouis Dionneusing ::wcscoll _LIBCPP_USING_IF_EXISTS; 150a9c9183cSLouis Dionneusing ::wcsncmp _LIBCPP_USING_IF_EXISTS; 151a9c9183cSLouis Dionneusing ::wcsxfrm _LIBCPP_USING_IF_EXISTS; 152a9c9183cSLouis Dionneusing ::wcschr _LIBCPP_USING_IF_EXISTS; 153a9c9183cSLouis Dionneusing ::wcspbrk _LIBCPP_USING_IF_EXISTS; 154a9c9183cSLouis Dionneusing ::wcsrchr _LIBCPP_USING_IF_EXISTS; 155a9c9183cSLouis Dionneusing ::wcsstr _LIBCPP_USING_IF_EXISTS; 156a9c9183cSLouis Dionneusing ::wmemchr _LIBCPP_USING_IF_EXISTS; 157a9c9183cSLouis Dionneusing ::wcscspn _LIBCPP_USING_IF_EXISTS; 158a9c9183cSLouis Dionneusing ::wcslen _LIBCPP_USING_IF_EXISTS; 159a9c9183cSLouis Dionneusing ::wcsspn _LIBCPP_USING_IF_EXISTS; 160a9c9183cSLouis Dionneusing ::wcstok _LIBCPP_USING_IF_EXISTS; 161a9c9183cSLouis Dionneusing ::wmemcmp _LIBCPP_USING_IF_EXISTS; 162a9c9183cSLouis Dionneusing ::wmemcpy _LIBCPP_USING_IF_EXISTS; 163a9c9183cSLouis Dionneusing ::wmemmove _LIBCPP_USING_IF_EXISTS; 164a9c9183cSLouis Dionneusing ::wmemset _LIBCPP_USING_IF_EXISTS; 165a9c9183cSLouis Dionneusing ::wcsftime _LIBCPP_USING_IF_EXISTS; 166a9c9183cSLouis Dionneusing ::btowc _LIBCPP_USING_IF_EXISTS; 167a9c9183cSLouis Dionneusing ::wctob _LIBCPP_USING_IF_EXISTS; 168a9c9183cSLouis Dionneusing ::mbsinit _LIBCPP_USING_IF_EXISTS; 169a9c9183cSLouis Dionneusing ::mbrlen _LIBCPP_USING_IF_EXISTS; 170a9c9183cSLouis Dionneusing ::mbrtowc _LIBCPP_USING_IF_EXISTS; 171a9c9183cSLouis Dionneusing ::wcrtomb _LIBCPP_USING_IF_EXISTS; 172a9c9183cSLouis Dionneusing ::mbsrtowcs _LIBCPP_USING_IF_EXISTS; 173a9c9183cSLouis Dionneusing ::wcsrtombs _LIBCPP_USING_IF_EXISTS; 1743e519524SHoward Hinnant 175a9c9183cSLouis Dionneusing ::getwchar _LIBCPP_USING_IF_EXISTS; 176a9c9183cSLouis Dionneusing ::vwscanf _LIBCPP_USING_IF_EXISTS; 177a9c9183cSLouis Dionneusing ::wscanf _LIBCPP_USING_IF_EXISTS; 178f4ac884fSEd Schouten 179a9c9183cSLouis Dionneusing ::putwchar _LIBCPP_USING_IF_EXISTS; 180a9c9183cSLouis Dionneusing ::vwprintf _LIBCPP_USING_IF_EXISTS; 181a9c9183cSLouis Dionneusing ::wprintf _LIBCPP_USING_IF_EXISTS; 182f4ac884fSEd Schouten 1833e519524SHoward Hinnant_LIBCPP_END_NAMESPACE_STD 1843e519524SHoward Hinnant 1853e519524SHoward Hinnant#endif // _LIBCPP_CWCHAR 186