95 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
| // -*- C++ -*-
 | |
| //===----------------------------------------------------------------------===//
 | |
| //
 | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 | |
| // See https://llvm.org/LICENSE.txt for license information.
 | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| #ifndef _LIBCPP_WCTYPE_H
 | |
| #define _LIBCPP_WCTYPE_H
 | |
| 
 | |
| /*
 | |
|     wctype.h synopsis
 | |
| 
 | |
| Macros:
 | |
| 
 | |
|     WEOF
 | |
| 
 | |
| Types:
 | |
| 
 | |
|     wint_t
 | |
|     wctrans_t
 | |
|     wctype_t
 | |
| 
 | |
| int iswalnum(wint_t wc);
 | |
| int iswalpha(wint_t wc);
 | |
| int iswblank(wint_t wc);  // C99
 | |
| int iswcntrl(wint_t wc);
 | |
| int iswdigit(wint_t wc);
 | |
| int iswgraph(wint_t wc);
 | |
| int iswlower(wint_t wc);
 | |
| int iswprint(wint_t wc);
 | |
| int iswpunct(wint_t wc);
 | |
| int iswspace(wint_t wc);
 | |
| int iswupper(wint_t wc);
 | |
| int iswxdigit(wint_t wc);
 | |
| int iswctype(wint_t wc, wctype_t desc);
 | |
| wctype_t wctype(const char* property);
 | |
| wint_t towlower(wint_t wc);
 | |
| wint_t towupper(wint_t wc);
 | |
| wint_t towctrans(wint_t wc, wctrans_t desc);
 | |
| wctrans_t wctrans(const char* property);
 | |
| 
 | |
| */
 | |
| 
 | |
| #include <__config>
 | |
| 
 | |
| #if defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS)
 | |
| #   error "The <wctype.h> header is not supported since libc++ has been configured with LIBCXX_ENABLE_WIDE_CHARACTERS disabled"
 | |
| #endif
 | |
| 
 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 | |
| #  pragma GCC system_header
 | |
| #endif
 | |
| 
 | |
| // TODO:
 | |
| // In the future, we should unconditionally include_next <wctype.h> here and instead
 | |
| // have a mode under which the library does not need libc++'s <wctype.h> or <cwctype>
 | |
| // at all (i.e. a mode without wchar_t). As it stands, we need to do that to completely
 | |
| // bypass the using declarations in <cwctype> when we did not include <wctype.h>.
 | |
| // Otherwise, a using declaration like `using ::wint_t` in <cwctype> will refer to
 | |
| // nothing (with using_if_exists), and if we include another header that defines one
 | |
| // of these declarations (e.g. <wchar.h>), the second `using ::wint_t` with using_if_exists
 | |
| // will fail because it does not refer to the same declaration.
 | |
| #if __has_include_next(<wctype.h>)
 | |
| #   include_next <wctype.h>
 | |
| #   define _LIBCPP_INCLUDED_C_LIBRARY_WCTYPE_H
 | |
| #endif
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| 
 | |
| #undef iswalnum
 | |
| #undef iswalpha
 | |
| #undef iswblank
 | |
| #undef iswcntrl
 | |
| #undef iswdigit
 | |
| #undef iswgraph
 | |
| #undef iswlower
 | |
| #undef iswprint
 | |
| #undef iswpunct
 | |
| #undef iswspace
 | |
| #undef iswupper
 | |
| #undef iswxdigit
 | |
| #undef iswctype
 | |
| #undef wctype
 | |
| #undef towlower
 | |
| #undef towupper
 | |
| #undef towctrans
 | |
| #undef wctrans
 | |
| 
 | |
| #endif // __cplusplus
 | |
| 
 | |
| #endif // _LIBCPP_WCTYPE_H
 |