181ad6265SDimitry Andric// -*- C++ -*- 281ad6265SDimitry Andric//===----------------------------------------------------------------------===// 381ad6265SDimitry Andric// 481ad6265SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 581ad6265SDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 681ad6265SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 781ad6265SDimitry Andric// 881ad6265SDimitry Andric//===----------------------------------------------------------------------===// 981ad6265SDimitry Andric 1081ad6265SDimitry Andric#ifndef _LIBCPP_CUCHAR 1181ad6265SDimitry Andric#define _LIBCPP_CUCHAR 1281ad6265SDimitry Andric 1381ad6265SDimitry Andric/* 1481ad6265SDimitry Andric cuchar synopsis // since C++11 1581ad6265SDimitry Andric 1681ad6265SDimitry AndricMacros: 1781ad6265SDimitry Andric 1881ad6265SDimitry Andric __STDC_UTF_16__ 1981ad6265SDimitry Andric __STDC_UTF_32__ 2081ad6265SDimitry Andric 2181ad6265SDimitry Andricnamespace std { 2281ad6265SDimitry Andric 2381ad6265SDimitry AndricTypes: 2481ad6265SDimitry Andric 2581ad6265SDimitry Andric mbstate_t 2681ad6265SDimitry Andric size_t 2781ad6265SDimitry Andric 28*bdd1243dSDimitry Andricsize_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps); // since C++20 29*bdd1243dSDimitry Andricsize_t c8rtomb(char* s, char8_t c8, mbstate_t* ps); // since C++20 3081ad6265SDimitry Andricsize_t mbrtoc16(char16_t* pc16, const char* s, size_t n, mbstate_t* ps); 3181ad6265SDimitry Andricsize_t c16rtomb(char* s, char16_t c16, mbstate_t* ps); 3281ad6265SDimitry Andricsize_t mbrtoc32(char32_t* pc32, const char* s, size_t n, mbstate_t* ps); 3381ad6265SDimitry Andricsize_t c32rtomb(char* s, char32_t c32, mbstate_t* ps); 3481ad6265SDimitry Andric 3581ad6265SDimitry Andric} // std 3681ad6265SDimitry Andric 3781ad6265SDimitry Andric*/ 3881ad6265SDimitry Andric 3981ad6265SDimitry Andric#include <__config> 40*bdd1243dSDimitry Andric 4181ad6265SDimitry Andric#include <uchar.h> 4281ad6265SDimitry Andric 43*bdd1243dSDimitry Andric#ifndef _LIBCPP_UCHAR_H 44*bdd1243dSDimitry Andric# error <cuchar> tried including <uchar.h> but didn't find libc++'s <uchar.h> header. \ 45*bdd1243dSDimitry Andric This usually means that your header search paths are not configured properly. \ 46*bdd1243dSDimitry Andric The header search paths should contain the C++ Standard Library headers before \ 47*bdd1243dSDimitry Andric any C Standard Library, and you are probably using compiler flags that make that \ 48*bdd1243dSDimitry Andric not be the case. 49*bdd1243dSDimitry Andric#endif 50*bdd1243dSDimitry Andric 5181ad6265SDimitry Andric#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 5281ad6265SDimitry Andric# pragma GCC system_header 5381ad6265SDimitry Andric#endif 5481ad6265SDimitry Andric 5581ad6265SDimitry Andric_LIBCPP_BEGIN_NAMESPACE_STD 5681ad6265SDimitry Andric 5781ad6265SDimitry Andric#if !defined(_LIBCPP_CXX03_LANG) 5881ad6265SDimitry Andric 5981ad6265SDimitry Andricusing ::mbstate_t _LIBCPP_USING_IF_EXISTS; 6081ad6265SDimitry Andricusing ::size_t _LIBCPP_USING_IF_EXISTS; 6181ad6265SDimitry Andric 62*bdd1243dSDimitry Andric# if !defined(_LIBCPP_HAS_NO_C8RTOMB_MBRTOC8) 63*bdd1243dSDimitry Andricusing ::mbrtoc8 _LIBCPP_USING_IF_EXISTS; 64*bdd1243dSDimitry Andricusing ::c8rtomb _LIBCPP_USING_IF_EXISTS; 65*bdd1243dSDimitry Andric# endif 6681ad6265SDimitry Andricusing ::mbrtoc16 _LIBCPP_USING_IF_EXISTS; 6781ad6265SDimitry Andricusing ::c16rtomb _LIBCPP_USING_IF_EXISTS; 6881ad6265SDimitry Andricusing ::mbrtoc32 _LIBCPP_USING_IF_EXISTS; 6981ad6265SDimitry Andricusing ::c32rtomb _LIBCPP_USING_IF_EXISTS; 7081ad6265SDimitry Andric 7181ad6265SDimitry Andric#endif // _LIBCPP_CXX03_LANG 7281ad6265SDimitry Andric 7381ad6265SDimitry Andric_LIBCPP_END_NAMESPACE_STD 7481ad6265SDimitry Andric 7581ad6265SDimitry Andric#endif // _LIBCPP_CUCHAR 76