xref: /freebsd/contrib/llvm-project/libcxx/include/cuchar (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
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