1 // -*- C++ -*- 2 //===----------------------------------------------------------------------===// 3 // 4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5 // See https://llvm.org/LICENSE.txt for license information. 6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef _LIBCPP_WCTYPE_H 11 #define _LIBCPP_WCTYPE_H 12 13 /* 14 wctype.h synopsis 15 16 Macros: 17 18 WEOF 19 20 Types: 21 22 wint_t 23 wctrans_t 24 wctype_t 25 26 int iswalnum(wint_t wc); 27 int iswalpha(wint_t wc); 28 int iswblank(wint_t wc); // C99 29 int iswcntrl(wint_t wc); 30 int iswdigit(wint_t wc); 31 int iswgraph(wint_t wc); 32 int iswlower(wint_t wc); 33 int iswprint(wint_t wc); 34 int iswpunct(wint_t wc); 35 int iswspace(wint_t wc); 36 int iswupper(wint_t wc); 37 int iswxdigit(wint_t wc); 38 int iswctype(wint_t wc, wctype_t desc); 39 wctype_t wctype(const char* property); 40 wint_t towlower(wint_t wc); 41 wint_t towupper(wint_t wc); 42 wint_t towctrans(wint_t wc, wctrans_t desc); 43 wctrans_t wctrans(const char* property); 44 45 */ 46 47 #if defined(__cplusplus) && __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) 48 # include <__cxx03/wctype.h> 49 #else 50 # include <__config> 51 52 # if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 53 # pragma GCC system_header 54 # endif 55 56 // TODO: 57 // In the future, we should unconditionally include_next <wctype.h> here and instead 58 // have a mode under which the library does not need libc++'s <wctype.h> or <cwctype> 59 // at all (i.e. a mode without wchar_t). As it stands, we need to do that to completely 60 // bypass the using declarations in <cwctype> when we did not include <wctype.h>. 61 // Otherwise, a using declaration like `using ::wint_t` in <cwctype> will refer to 62 // nothing (with using_if_exists), and if we include another header that defines one 63 // of these declarations (e.g. <wchar.h>), the second `using ::wint_t` with using_if_exists 64 // will fail because it does not refer to the same declaration. 65 # if __has_include_next(<wctype.h>) 66 # include_next <wctype.h> 67 # define _LIBCPP_INCLUDED_C_LIBRARY_WCTYPE_H 68 # endif 69 70 # ifdef __cplusplus 71 72 # undef iswalnum 73 # undef iswalpha 74 # undef iswblank 75 # undef iswcntrl 76 # undef iswdigit 77 # undef iswgraph 78 # undef iswlower 79 # undef iswprint 80 # undef iswpunct 81 # undef iswspace 82 # undef iswupper 83 # undef iswxdigit 84 # undef iswctype 85 # undef wctype 86 # undef towlower 87 # undef towupper 88 # undef towctrans 89 # undef wctrans 90 91 # endif // __cplusplus 92 #endif // defined(__cplusplus) && __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) 93 94 #endif // _LIBCPP_WCTYPE_H 95