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