cwchar revision 249989
10Sduke// -*- C++ -*- 23909Sohair//===--------------------------- cwchar -----------------------------------===// 30Sduke// 40Sduke// The LLVM Compiler Infrastructure 50Sduke// 60Sduke// This file is dual licensed under the MIT and the University of Illinois Open 70Sduke// Source Licenses. See LICENSE.TXT for details. 80Sduke// 90Sduke//===----------------------------------------------------------------------===// 100Sduke 110Sduke#ifndef _LIBCPP_CWCHAR 120Sduke#define _LIBCPP_CWCHAR 130Sduke 140Sduke/* 150Sduke cwchar synopsis 160Sduke 170SdukeMacros: 180Sduke 192362Sohair NULL 202362Sohair WCHAR_MAX 212362Sohair WCHAR_MIN 220Sduke WEOF 230Sduke 240Sdukenamespace std 250Sduke{ 260Sduke 270SdukeTypes: 280Sduke 290Sduke mbstate_t 300Sduke size_t 310Sduke tm 320Sduke wint_t 330Sduke 340Sdukeint fwprintf(FILE* restrict stream, const wchar_t* restrict format, ...); 350Sdukeint fwscanf(FILE* restrict stream, const wchar_t* restrict format, ...); 360Sdukeint swprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, ...); 370Sdukeint swscanf(const wchar_t* restrict s, const wchar_t* restrict format, ...); 380Sdukeint vfwprintf(FILE* restrict stream, const wchar_t* restrict format, va_list arg); 390Sdukeint vfwscanf(FILE* restrict stream, const wchar_t* restrict format, va_list arg); // C99 400Sdukeint vswprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, va_list arg); 410Sdukeint vswscanf(const wchar_t* restrict s, const wchar_t* restrict format, va_list arg); // C99 420Sdukeint vwprintf(const wchar_t* restrict format, va_list arg); 430Sdukeint vwscanf(const wchar_t* restrict format, va_list arg); // C99 440Sdukeint wprintf(const wchar_t* restrict format, ...); 450Sdukeint wscanf(const wchar_t* restrict format, ...); 460Sdukewint_t fgetwc(FILE* stream); 470Sdukewchar_t* fgetws(wchar_t* restrict s, int n, FILE* restrict stream); 480Sdukewint_t fputwc(wchar_t c, FILE* stream); 490Sdukeint fputws(const wchar_t* restrict s, FILE* restrict stream); 500Sdukeint fwide(FILE* stream, int mode); 510Sdukewint_t getwc(FILE* stream); 520Sdukewint_t getwchar(); 530Sdukewint_t putwc(wchar_t c, FILE* stream); 540Sdukewint_t putwchar(wchar_t c); 550Sdukewint_t ungetwc(wint_t c, FILE* stream); 560Sdukedouble wcstod(const wchar_t* restrict nptr, wchar_t** restrict endptr); 570Sdukefloat wcstof(const wchar_t* restrict nptr, wchar_t** restrict endptr); // C99 580Sdukelong double wcstold(const wchar_t* restrict nptr, wchar_t** restrict endptr); // C99 593323Ssmarkslong wcstol(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); 600Sdukelong long wcstoll(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); // C99 610Sdukeunsigned long wcstoul(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); 620Sdukeunsigned long long wcstoull(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); // C99 630Sdukewchar_t* wcscpy(wchar_t* restrict s1, const wchar_t* restrict s2); 640Sdukewchar_t* wcsncpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); 650Sdukewchar_t* wcscat(wchar_t* restrict s1, const wchar_t* restrict s2); 660Sdukewchar_t* wcsncat(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); 670Sdukeint wcscmp(const wchar_t* s1, const wchar_t* s2); 680Sdukeint wcscoll(const wchar_t* s1, const wchar_t* s2); 690Sdukeint wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n); 700Sdukesize_t wcsxfrm(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); 710Sdukeconst wchar_t* wcschr(const wchar_t* s, wchar_t c); 720Sduke wchar_t* wcschr( wchar_t* s, wchar_t c); 730Sdukesize_t wcscspn(const wchar_t* s1, const wchar_t* s2); 740Sdukesize_t wcslen(const wchar_t* s); 750Sdukeconst wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2); 760Sduke wchar_t* wcspbrk( wchar_t* s1, const wchar_t* s2); 770Sdukeconst wchar_t* wcsrchr(const wchar_t* s, wchar_t c); 780Sduke wchar_t* wcsrchr( wchar_t* s, wchar_t c); 79size_t wcsspn(const wchar_t* s1, const wchar_t* s2); 80const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2); 81 wchar_t* wcsstr( wchar_t* s1, const wchar_t* s2); 82wchar_t* wcstok(wchar_t* restrict s1, const wchar_t* restrict s2, wchar_t** restrict ptr); 83const 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); 85int wmemcmp(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); 86wchar_t* wmemcpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); 87wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n); 88wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n); 89size_t wcsftime(wchar_t* restrict s, size_t maxsize, const wchar_t* restrict format, 90 const tm* restrict timeptr); 91wint_t btowc(int c); 92int wctob(wint_t c); 93int mbsinit(const mbstate_t* ps); 94size_t mbrlen(const char* restrict s, size_t n, mbstate_t* restrict ps); 95size_t mbrtowc(wchar_t* restrict pwc, const char* restrict s, size_t n, mbstate_t* restrict ps); 96size_t wcrtomb(char* restrict s, wchar_t wc, mbstate_t* restrict ps); 97size_t mbsrtowcs(wchar_t* restrict dst, const char** restrict src, size_t len, 98 mbstate_t* restrict ps); 99size_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#ifdef _WIN32 110#include <support/win32/support.h> // pull in *swprintf defines 111#endif // _WIN32 112 113#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 114#pragma GCC system_header 115#endif 116 117_LIBCPP_BEGIN_NAMESPACE_STD 118 119using ::mbstate_t; 120using ::size_t; 121using ::tm; 122using ::wint_t; 123using ::FILE; 124using ::fwprintf; 125using ::fwscanf; 126using ::swprintf; 127using ::vfwprintf; 128using ::vswprintf; 129using ::vwprintf; 130#ifndef _MSC_VER 131using ::swscanf; 132using ::vfwscanf; 133using ::vswscanf; 134using ::vwscanf; 135#endif // _MSC_VER 136using ::wprintf; 137using ::wscanf; 138using ::fgetwc; 139using ::fgetws; 140using ::fputwc; 141using ::fputws; 142using ::fwide; 143using ::getwc; 144using ::getwchar; 145using ::putwc; 146using ::putwchar; 147using ::ungetwc; 148using ::wcstod; 149#ifndef _MSC_VER 150using ::wcstof; 151using ::wcstold; 152#endif // _MSC_VER 153using ::wcstol; 154#ifndef _LIBCPP_HAS_NO_LONG_LONG 155using ::wcstoll; 156#endif // _LIBCPP_HAS_NO_LONG_LONG 157using ::wcstoul; 158#ifndef _LIBCPP_HAS_NO_LONG_LONG 159using ::wcstoull; 160#endif // _LIBCPP_HAS_NO_LONG_LONG 161using ::wcscpy; 162using ::wcsncpy; 163using ::wcscat; 164using ::wcsncat; 165using ::wcscmp; 166using ::wcscoll; 167using ::wcsncmp; 168using ::wcsxfrm; 169 170#if defined(_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_) 171 172using ::wcschr; 173using ::wcspbrk; 174using ::wcsrchr; 175using ::wcsstr; 176using ::wmemchr; 177 178#else 179 180inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcschr(const wchar_t* __s, wchar_t __c) {return ::wcschr(__s, __c);} 181inline _LIBCPP_INLINE_VISIBILITY wchar_t* wcschr( wchar_t* __s, wchar_t __c) {return ::wcschr(__s, __c);} 182 183inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {return ::wcspbrk(__s1, __s2);} 184inline _LIBCPP_INLINE_VISIBILITY wchar_t* wcspbrk( wchar_t* __s1, const wchar_t* __s2) {return ::wcspbrk(__s1, __s2);} 185 186inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcsrchr(const wchar_t* __s, wchar_t __c) {return ::wcsrchr(__s, __c);} 187inline _LIBCPP_INLINE_VISIBILITY wchar_t* wcsrchr( wchar_t* __s, wchar_t __c) {return ::wcsrchr(__s, __c);} 188 189inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcsstr(const wchar_t* __s1, const wchar_t* __s2) {return ::wcsstr(__s1, __s2);} 190inline _LIBCPP_INLINE_VISIBILITY wchar_t* wcsstr( wchar_t* __s1, const wchar_t* __s2) {return ::wcsstr(__s1, __s2);} 191 192inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {return ::wmemchr(__s, __c, __n);} 193inline _LIBCPP_INLINE_VISIBILITY wchar_t* wmemchr( wchar_t* __s, wchar_t __c, size_t __n) {return ::wmemchr(__s, __c, __n);} 194 195#endif 196 197using ::wcscspn; 198using ::wcslen; 199using ::wcsspn; 200using ::wcstok; 201using ::wmemcmp; 202using ::wmemcpy; 203using ::wmemmove; 204using ::wmemset; 205using ::wcsftime; 206using ::btowc; 207using ::wctob; 208using ::mbsinit; 209using ::mbrlen; 210using ::mbrtowc; 211using ::wcrtomb; 212using ::mbsrtowcs; 213using ::wcsrtombs; 214 215_LIBCPP_END_NAMESPACE_STD 216 217#endif // _LIBCPP_CWCHAR 218