Home | History | Annotate | Download | only in include
      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 using ::vwprintf;
    130 #ifndef _LIBCPP_MSVCRT
    131 using ::swscanf;
    132 using ::vfwscanf;
    133 using ::vswscanf;
    134 using ::vwscanf;
    135 #endif // _LIBCPP_MSVCRT
    136 using ::wprintf;
    137 using ::wscanf;
    138 using ::fgetwc;
    139 using ::fgetws;
    140 using ::fputwc;
    141 using ::fputws;
    142 using ::fwide;
    143 using ::getwc;
    144 using ::getwchar;
    145 using ::putwc;
    146 using ::putwchar;
    147 using ::ungetwc;
    148 using ::wcstod;
    149 #ifndef _LIBCPP_MSVCRT
    150 using ::wcstof;
    151 using ::wcstold;
    152 #endif // _LIBCPP_MSVCRT
    153 using ::wcstol;
    154 #ifndef _LIBCPP_HAS_NO_LONG_LONG
    155 using ::wcstoll;
    156 #endif // _LIBCPP_HAS_NO_LONG_LONG
    157 using ::wcstoul;
    158 #ifndef _LIBCPP_HAS_NO_LONG_LONG
    159 using ::wcstoull;
    160 #endif // _LIBCPP_HAS_NO_LONG_LONG
    161 using ::wcscpy;
    162 using ::wcsncpy;
    163 using ::wcscat;
    164 using ::wcsncat;
    165 using ::wcscmp;
    166 using ::wcscoll;
    167 using ::wcsncmp;
    168 using ::wcsxfrm;
    169 
    170 #if defined(_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_)
    171 
    172 using ::wcschr;
    173 using ::wcspbrk;
    174 using ::wcsrchr;
    175 using ::wcsstr;
    176 using ::wmemchr;
    177 
    178 #else
    179 
    180 inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcschr(const wchar_t* __s, wchar_t __c) {return ::wcschr(__s, __c);}
    181 inline _LIBCPP_INLINE_VISIBILITY       wchar_t* wcschr(      wchar_t* __s, wchar_t __c) {return ::wcschr(__s, __c);}
    182 
    183 inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {return ::wcspbrk(__s1, __s2);}
    184 inline _LIBCPP_INLINE_VISIBILITY       wchar_t* wcspbrk(      wchar_t* __s1, const wchar_t* __s2) {return ::wcspbrk(__s1, __s2);}
    185 
    186 inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcsrchr(const wchar_t* __s, wchar_t __c) {return ::wcsrchr(__s, __c);}
    187 inline _LIBCPP_INLINE_VISIBILITY       wchar_t* wcsrchr(      wchar_t* __s, wchar_t __c) {return ::wcsrchr(__s, __c);}
    188 
    189 inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcsstr(const wchar_t* __s1, const wchar_t* __s2) {return ::wcsstr(__s1, __s2);}
    190 inline _LIBCPP_INLINE_VISIBILITY       wchar_t* wcsstr(      wchar_t* __s1, const wchar_t* __s2) {return ::wcsstr(__s1, __s2);}
    191 
    192 inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {return ::wmemchr(__s, __c, __n);}
    193 inline _LIBCPP_INLINE_VISIBILITY       wchar_t* wmemchr(      wchar_t* __s, wchar_t __c, size_t __n) {return ::wmemchr(__s, __c, __n);}
    194 
    195 #endif
    196 
    197 using ::wcscspn;
    198 using ::wcslen;
    199 using ::wcsspn;
    200 using ::wcstok;
    201 using ::wmemcmp;
    202 using ::wmemcpy;
    203 using ::wmemmove;
    204 using ::wmemset;
    205 using ::wcsftime;
    206 using ::btowc;
    207 using ::wctob;
    208 using ::mbsinit;
    209 using ::mbrlen;
    210 using ::mbrtowc;
    211 using ::wcrtomb;
    212 using ::mbsrtowcs;
    213 using ::wcsrtombs;
    214 
    215 _LIBCPP_END_NAMESPACE_STD
    216 
    217 #endif  // _LIBCPP_CWCHAR
    218