xref: /llvm-project/libcxx/include/cuchar (revision b9a2658a3e8bd13b0f9e7a8a440832a95b377216)
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