[rtsan] Remove mkfifoat interceptor (#116997)
[llvm-project.git] / libcxx / include / __cxx03 / wctype.h
blobdef009c58f0153263b21578a5b2d565e8900abb0
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 //===----------------------------------------------------------------------===//
10 #ifndef _LIBCPP_WCTYPE_H
11 #define _LIBCPP_WCTYPE_H
14 wctype.h synopsis
16 Macros:
18 WEOF
20 Types:
22 wint_t
23 wctrans_t
24 wctype_t
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);
47 #include <__cxx03/__config>
49 #if defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS)
50 # error \
51 "The <wctype.h> header is not supported since libc++ has been configured with LIBCXX_ENABLE_WIDE_CHARACTERS disabled"
52 #endif
54 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
55 # pragma GCC system_header
56 #endif
58 // TODO:
59 // In the future, we should unconditionally include_next <wctype.h> here and instead
60 // have a mode under which the library does not need libc++'s <wctype.h> or <cwctype>
61 // at all (i.e. a mode without wchar_t). As it stands, we need to do that to completely
62 // bypass the using declarations in <cwctype> when we did not include <__cxx03/wctype.h>.
63 // Otherwise, a using declaration like `using ::wint_t` in <cwctype> will refer to
64 // nothing (with using_if_exists), and if we include another header that defines one
65 // of these declarations (e.g. <wchar.h>), the second `using ::wint_t` with using_if_exists
66 // will fail because it does not refer to the same declaration.
67 #if __has_include_next(<wctype.h>)
68 # include_next <wctype.h>
69 # define _LIBCPP_INCLUDED_C_LIBRARY_WCTYPE_H
70 #endif
72 #ifdef __cplusplus
74 # undef iswalnum
75 # undef iswalpha
76 # undef iswblank
77 # undef iswcntrl
78 # undef iswdigit
79 # undef iswgraph
80 # undef iswlower
81 # undef iswprint
82 # undef iswpunct
83 # undef iswspace
84 # undef iswupper
85 # undef iswxdigit
86 # undef iswctype
87 # undef wctype
88 # undef towlower
89 # undef towupper
90 # undef towctrans
91 # undef wctrans
93 #endif // __cplusplus
95 #endif // _LIBCPP_WCTYPE_H