1311ff391SLouis Dionne// -*- C++ -*- 2311ff391SLouis Dionne//===----------------------------------------------------------------------===// 3311ff391SLouis Dionne// 4311ff391SLouis Dionne// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5311ff391SLouis Dionne// See https://llvm.org/LICENSE.txt for license information. 6311ff391SLouis Dionne// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7311ff391SLouis Dionne// 8311ff391SLouis Dionne//===----------------------------------------------------------------------===// 9311ff391SLouis Dionne 10311ff391SLouis Dionne#ifndef _LIBCPP_CUCHAR 11311ff391SLouis Dionne#define _LIBCPP_CUCHAR 12311ff391SLouis Dionne 13311ff391SLouis Dionne/* 14311ff391SLouis Dionne cuchar synopsis // since C++11 15311ff391SLouis Dionne 16311ff391SLouis DionneMacros: 17311ff391SLouis Dionne 18311ff391SLouis Dionne __STDC_UTF_16__ 19311ff391SLouis Dionne __STDC_UTF_32__ 20311ff391SLouis Dionne 21311ff391SLouis Dionnenamespace std { 22311ff391SLouis Dionne 23311ff391SLouis DionneTypes: 24311ff391SLouis Dionne 25311ff391SLouis Dionne mbstate_t 26311ff391SLouis Dionne size_t 27311ff391SLouis Dionne 287e7013c5STom Honermannsize_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps); // since C++20 297e7013c5STom Honermannsize_t c8rtomb(char* s, char8_t c8, mbstate_t* ps); // since C++20 30311ff391SLouis Dionnesize_t mbrtoc16(char16_t* pc16, const char* s, size_t n, mbstate_t* ps); 31311ff391SLouis Dionnesize_t c16rtomb(char* s, char16_t c16, mbstate_t* ps); 32311ff391SLouis Dionnesize_t mbrtoc32(char32_t* pc32, const char* s, size_t n, mbstate_t* ps); 33311ff391SLouis Dionnesize_t c32rtomb(char* s, char32_t c32, mbstate_t* ps); 34311ff391SLouis Dionne 35311ff391SLouis Dionne} // std 36311ff391SLouis Dionne 37311ff391SLouis Dionne*/ 38311ff391SLouis Dionne 39*b9a2658aSNikolas Klauser#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) 40*b9a2658aSNikolas Klauser# include <__cxx03/cuchar> 41*b9a2658aSNikolas Klauser#else 42311ff391SLouis Dionne# include <__config> 43d6832a61SLouis Dionne# include <__cstddef/size_t.h> 448cedff10SLouis Dionne 45311ff391SLouis Dionne# include <uchar.h> 46311ff391SLouis Dionne 478cedff10SLouis Dionne# ifndef _LIBCPP_UCHAR_H 488cedff10SLouis Dionne# error <cuchar> tried including <uchar.h> but didn't find libc++'s <uchar.h> header. \ 498cedff10SLouis Dionne This usually means that your header search paths are not configured properly. \ 508cedff10SLouis Dionne The header search paths should contain the C++ Standard Library headers before \ 518cedff10SLouis Dionne any C Standard Library, and you are probably using compiler flags that make that \ 528cedff10SLouis Dionne not be the case. 538cedff10SLouis Dionne# endif 548cedff10SLouis Dionne 55311ff391SLouis Dionne# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 56311ff391SLouis Dionne# pragma GCC system_header 57311ff391SLouis Dionne# endif 58311ff391SLouis Dionne 59311ff391SLouis Dionne_LIBCPP_BEGIN_NAMESPACE_STD 60311ff391SLouis Dionne 61311ff391SLouis Dionne# if !defined(_LIBCPP_CXX03_LANG) 62311ff391SLouis Dionne 63311ff391SLouis Dionneusing ::mbstate_t _LIBCPP_USING_IF_EXISTS; 64311ff391SLouis Dionne 65ba87515fSNikolas Klauser# if _LIBCPP_HAS_C8RTOMB_MBRTOC8 667e7013c5STom Honermannusing ::mbrtoc8 _LIBCPP_USING_IF_EXISTS; 677e7013c5STom Honermannusing ::c8rtomb _LIBCPP_USING_IF_EXISTS; 687e7013c5STom Honermann# endif 69311ff391SLouis Dionneusing ::mbrtoc16 _LIBCPP_USING_IF_EXISTS; 70311ff391SLouis Dionneusing ::c16rtomb _LIBCPP_USING_IF_EXISTS; 71311ff391SLouis Dionneusing ::mbrtoc32 _LIBCPP_USING_IF_EXISTS; 72311ff391SLouis Dionneusing ::c32rtomb _LIBCPP_USING_IF_EXISTS; 73311ff391SLouis Dionne 74311ff391SLouis Dionne# endif // _LIBCPP_CXX03_LANG 75311ff391SLouis Dionne 76311ff391SLouis Dionne_LIBCPP_END_NAMESPACE_STD 77311ff391SLouis Dionne 78*b9a2658aSNikolas Klauser#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) 79*b9a2658aSNikolas Klauser 80311ff391SLouis Dionne#endif // _LIBCPP_CUCHAR 81