146035553Spatrick// -*- C++ -*- 2*4bdff4beSrobert//===----------------------------------------------------------------------===// 346035553Spatrick// 446035553Spatrick// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 546035553Spatrick// See https://llvm.org/LICENSE.txt for license information. 646035553Spatrick// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 746035553Spatrick// 846035553Spatrick//===----------------------------------------------------------------------===// 946035553Spatrick 1046035553Spatrick#ifndef _LIBCPP_CODECVT 1146035553Spatrick#define _LIBCPP_CODECVT 1246035553Spatrick 1346035553Spatrick/* 1446035553Spatrick codecvt synopsis 1546035553Spatrick 1646035553Spatricknamespace std 1746035553Spatrick{ 1846035553Spatrick 1946035553Spatrickenum codecvt_mode 2046035553Spatrick{ 2146035553Spatrick consume_header = 4, 2246035553Spatrick generate_header = 2, 2346035553Spatrick little_endian = 1 2446035553Spatrick}; 2546035553Spatrick 2646035553Spatricktemplate <class Elem, unsigned long Maxcode = 0x10ffff, 2746035553Spatrick codecvt_mode Mode = (codecvt_mode)0> 2846035553Spatrickclass codecvt_utf8 2946035553Spatrick : public codecvt<Elem, char, mbstate_t> 3046035553Spatrick{ 3146035553Spatrick explicit codecvt_utf8(size_t refs = 0); 3246035553Spatrick ~codecvt_utf8(); 3346035553Spatrick}; 3446035553Spatrick 3546035553Spatricktemplate <class Elem, unsigned long Maxcode = 0x10ffff, 3646035553Spatrick codecvt_mode Mode = (codecvt_mode)0> 3746035553Spatrickclass codecvt_utf16 3846035553Spatrick : public codecvt<Elem, char, mbstate_t> 3946035553Spatrick{ 4046035553Spatrick explicit codecvt_utf16(size_t refs = 0); 4146035553Spatrick ~codecvt_utf16(); 4246035553Spatrick}; 4346035553Spatrick 4446035553Spatricktemplate <class Elem, unsigned long Maxcode = 0x10ffff, 4546035553Spatrick codecvt_mode Mode = (codecvt_mode)0> 4646035553Spatrickclass codecvt_utf8_utf16 4746035553Spatrick : public codecvt<Elem, char, mbstate_t> 4846035553Spatrick{ 4946035553Spatrick explicit codecvt_utf8_utf16(size_t refs = 0); 5046035553Spatrick ~codecvt_utf8_utf16(); 5146035553Spatrick}; 5246035553Spatrick 5346035553Spatrick} // std 5446035553Spatrick 5546035553Spatrick*/ 5646035553Spatrick 57*4bdff4beSrobert#include <__assert> // all public C++ headers provide the assertion handler 5846035553Spatrick#include <__config> 5946035553Spatrick#include <__locale> 60*4bdff4beSrobert#include <version> 6146035553Spatrick 6246035553Spatrick#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 6346035553Spatrick# pragma GCC system_header 6446035553Spatrick#endif 6546035553Spatrick 6646035553Spatrick_LIBCPP_BEGIN_NAMESPACE_STD 6746035553Spatrick 68*4bdff4beSrobertenum _LIBCPP_DEPRECATED_IN_CXX17 codecvt_mode 6946035553Spatrick{ 7046035553Spatrick consume_header = 4, 7146035553Spatrick generate_header = 2, 7246035553Spatrick little_endian = 1 7346035553Spatrick}; 7446035553Spatrick 7546035553Spatrick// codecvt_utf8 7646035553Spatrick 7746035553Spatricktemplate <class _Elem> class __codecvt_utf8; 7846035553Spatrick 79*4bdff4beSrobert#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS 8046035553Spatricktemplate <> 8146035553Spatrickclass _LIBCPP_TYPE_VIS __codecvt_utf8<wchar_t> 8246035553Spatrick : public codecvt<wchar_t, char, mbstate_t> 8346035553Spatrick{ 84*4bdff4beSrobert unsigned long __maxcode_; 85*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_PUSH 86*4bdff4beSrobert codecvt_mode __mode_; 87*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_POP 8846035553Spatrickpublic: 8946035553Spatrick typedef wchar_t intern_type; 9046035553Spatrick typedef char extern_type; 9146035553Spatrick typedef mbstate_t state_type; 9246035553Spatrick 93*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_PUSH 9446035553Spatrick _LIBCPP_INLINE_VISIBILITY 95*4bdff4beSrobert explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, 96*4bdff4beSrobert codecvt_mode __mode) 97*4bdff4beSrobert : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 98*4bdff4beSrobert __mode_(__mode) {} 99*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_POP 10046035553Spatrickprotected: 101*4bdff4beSrobert result do_out(state_type& __st, 10246035553Spatrick const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 103*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 104*4bdff4beSrobert result do_in(state_type& __st, 10546035553Spatrick const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 106*4bdff4beSrobert intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 107*4bdff4beSrobert result do_unshift(state_type& __st, 108*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 109*4bdff4beSrobert int do_encoding() const _NOEXCEPT override; 110*4bdff4beSrobert bool do_always_noconv() const _NOEXCEPT override; 111*4bdff4beSrobert int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 112*4bdff4beSrobert int do_max_length() const _NOEXCEPT override; 11346035553Spatrick}; 114*4bdff4beSrobert#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS 11546035553Spatrick 11676d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_PUSH 11746035553Spatricktemplate <> 11846035553Spatrickclass _LIBCPP_TYPE_VIS __codecvt_utf8<char16_t> 11946035553Spatrick : public codecvt<char16_t, char, mbstate_t> 12046035553Spatrick{ 121*4bdff4beSrobert unsigned long __maxcode_; 122*4bdff4beSrobert codecvt_mode __mode_; 12346035553Spatrickpublic: 12446035553Spatrick typedef char16_t intern_type; 12546035553Spatrick typedef char extern_type; 12646035553Spatrick typedef mbstate_t state_type; 12746035553Spatrick 12846035553Spatrick _LIBCPP_INLINE_VISIBILITY 129*4bdff4beSrobert explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, 130*4bdff4beSrobert codecvt_mode __mode) 131*4bdff4beSrobert : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 132*4bdff4beSrobert __mode_(__mode) {} 13376d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_POP 13476d0caaeSpatrick 13546035553Spatrickprotected: 136*4bdff4beSrobert result do_out(state_type& __st, 13746035553Spatrick const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 138*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 139*4bdff4beSrobert result do_in(state_type& __st, 14046035553Spatrick const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 141*4bdff4beSrobert intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 142*4bdff4beSrobert result do_unshift(state_type& __st, 143*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 144*4bdff4beSrobert int do_encoding() const _NOEXCEPT override; 145*4bdff4beSrobert bool do_always_noconv() const _NOEXCEPT override; 146*4bdff4beSrobert int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 147*4bdff4beSrobert int do_max_length() const _NOEXCEPT override; 14846035553Spatrick}; 14946035553Spatrick 15076d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_PUSH 15146035553Spatricktemplate <> 15246035553Spatrickclass _LIBCPP_TYPE_VIS __codecvt_utf8<char32_t> 15346035553Spatrick : public codecvt<char32_t, char, mbstate_t> 15446035553Spatrick{ 155*4bdff4beSrobert unsigned long __maxcode_; 156*4bdff4beSrobert codecvt_mode __mode_; 15746035553Spatrickpublic: 15846035553Spatrick typedef char32_t intern_type; 15946035553Spatrick typedef char extern_type; 16046035553Spatrick typedef mbstate_t state_type; 16146035553Spatrick 16246035553Spatrick _LIBCPP_INLINE_VISIBILITY 163*4bdff4beSrobert explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, 164*4bdff4beSrobert codecvt_mode __mode) 165*4bdff4beSrobert : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 166*4bdff4beSrobert __mode_(__mode) {} 16776d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_POP 16876d0caaeSpatrick 16946035553Spatrickprotected: 170*4bdff4beSrobert result do_out(state_type& __st, 17146035553Spatrick const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 172*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 173*4bdff4beSrobert result do_in(state_type& __st, 17446035553Spatrick const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 175*4bdff4beSrobert intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 176*4bdff4beSrobert result do_unshift(state_type& __st, 177*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 178*4bdff4beSrobert int do_encoding() const _NOEXCEPT override; 179*4bdff4beSrobert bool do_always_noconv() const _NOEXCEPT override; 180*4bdff4beSrobert int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 181*4bdff4beSrobert int do_max_length() const _NOEXCEPT override; 18246035553Spatrick}; 18346035553Spatrick 184*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_PUSH 18546035553Spatricktemplate <class _Elem, unsigned long _Maxcode = 0x10ffff, 18646035553Spatrick codecvt_mode _Mode = (codecvt_mode)0> 187*4bdff4beSrobertclass _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf8 18846035553Spatrick : public __codecvt_utf8<_Elem> 18946035553Spatrick{ 19046035553Spatrickpublic: 19146035553Spatrick _LIBCPP_INLINE_VISIBILITY 19246035553Spatrick explicit codecvt_utf8(size_t __refs = 0) 19346035553Spatrick : __codecvt_utf8<_Elem>(__refs, _Maxcode, _Mode) {} 19446035553Spatrick 19546035553Spatrick _LIBCPP_INLINE_VISIBILITY 19646035553Spatrick ~codecvt_utf8() {} 19746035553Spatrick}; 198*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_POP 19946035553Spatrick 20046035553Spatrick// codecvt_utf16 20146035553Spatrick 20246035553Spatricktemplate <class _Elem, bool _LittleEndian> class __codecvt_utf16; 20346035553Spatrick 204*4bdff4beSrobert#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS 20546035553Spatricktemplate <> 20646035553Spatrickclass _LIBCPP_TYPE_VIS __codecvt_utf16<wchar_t, false> 20746035553Spatrick : public codecvt<wchar_t, char, mbstate_t> 20846035553Spatrick{ 209*4bdff4beSrobert unsigned long __maxcode_; 210*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_PUSH 211*4bdff4beSrobert codecvt_mode __mode_; 212*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_POP 21346035553Spatrickpublic: 21446035553Spatrick typedef wchar_t intern_type; 21546035553Spatrick typedef char extern_type; 21646035553Spatrick typedef mbstate_t state_type; 21746035553Spatrick 218*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_PUSH 21946035553Spatrick _LIBCPP_INLINE_VISIBILITY 220*4bdff4beSrobert explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 221*4bdff4beSrobert codecvt_mode __mode) 222*4bdff4beSrobert : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 223*4bdff4beSrobert __mode_(__mode) {} 224*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_POP 22546035553Spatrickprotected: 226*4bdff4beSrobert result do_out(state_type& __st, 22746035553Spatrick const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 228*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 229*4bdff4beSrobert result do_in(state_type& __st, 23046035553Spatrick const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 231*4bdff4beSrobert intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 232*4bdff4beSrobert result do_unshift(state_type& __st, 233*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 234*4bdff4beSrobert int do_encoding() const _NOEXCEPT override; 235*4bdff4beSrobert bool do_always_noconv() const _NOEXCEPT override; 236*4bdff4beSrobert int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 237*4bdff4beSrobert size_t __mx) const override; 238*4bdff4beSrobert int do_max_length() const _NOEXCEPT override; 23946035553Spatrick}; 24046035553Spatrick 24146035553Spatricktemplate <> 24246035553Spatrickclass _LIBCPP_TYPE_VIS __codecvt_utf16<wchar_t, true> 24346035553Spatrick : public codecvt<wchar_t, char, mbstate_t> 24446035553Spatrick{ 245*4bdff4beSrobert unsigned long __maxcode_; 246*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_PUSH 247*4bdff4beSrobert codecvt_mode __mode_; 248*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_POP 24946035553Spatrickpublic: 25046035553Spatrick typedef wchar_t intern_type; 25146035553Spatrick typedef char extern_type; 25246035553Spatrick typedef mbstate_t state_type; 25346035553Spatrick 254*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_PUSH 25546035553Spatrick _LIBCPP_INLINE_VISIBILITY 256*4bdff4beSrobert explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 257*4bdff4beSrobert codecvt_mode __mode) 258*4bdff4beSrobert : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 259*4bdff4beSrobert __mode_(__mode) {} 260*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_POP 26146035553Spatrickprotected: 262*4bdff4beSrobert result do_out(state_type& __st, 26346035553Spatrick const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 264*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 265*4bdff4beSrobert result do_in(state_type& __st, 26646035553Spatrick const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 267*4bdff4beSrobert intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 268*4bdff4beSrobert result do_unshift(state_type& __st, 269*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 270*4bdff4beSrobert int do_encoding() const _NOEXCEPT override; 271*4bdff4beSrobert bool do_always_noconv() const _NOEXCEPT override; 272*4bdff4beSrobert int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 273*4bdff4beSrobert int do_max_length() const _NOEXCEPT override; 27446035553Spatrick}; 275*4bdff4beSrobert#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS 27646035553Spatrick 27776d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_PUSH 27846035553Spatricktemplate <> 27946035553Spatrickclass _LIBCPP_TYPE_VIS __codecvt_utf16<char16_t, false> 28046035553Spatrick : public codecvt<char16_t, char, mbstate_t> 28146035553Spatrick{ 282*4bdff4beSrobert unsigned long __maxcode_; 283*4bdff4beSrobert codecvt_mode __mode_; 28446035553Spatrickpublic: 28546035553Spatrick typedef char16_t intern_type; 28646035553Spatrick typedef char extern_type; 28746035553Spatrick typedef mbstate_t state_type; 28846035553Spatrick 28946035553Spatrick _LIBCPP_INLINE_VISIBILITY 290*4bdff4beSrobert explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 291*4bdff4beSrobert codecvt_mode __mode) 292*4bdff4beSrobert : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 293*4bdff4beSrobert __mode_(__mode) {} 29476d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_POP 29576d0caaeSpatrick 29646035553Spatrickprotected: 297*4bdff4beSrobert result do_out(state_type& __st, 29846035553Spatrick const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 299*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 300*4bdff4beSrobert result do_in(state_type& __st, 30146035553Spatrick const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 302*4bdff4beSrobert intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 303*4bdff4beSrobert result do_unshift(state_type& __st, 304*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 305*4bdff4beSrobert int do_encoding() const _NOEXCEPT override; 306*4bdff4beSrobert bool do_always_noconv() const _NOEXCEPT override; 307*4bdff4beSrobert int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 308*4bdff4beSrobert int do_max_length() const _NOEXCEPT override; 30946035553Spatrick}; 31046035553Spatrick 31176d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_PUSH 31246035553Spatricktemplate <> 31346035553Spatrickclass _LIBCPP_TYPE_VIS __codecvt_utf16<char16_t, true> 31446035553Spatrick : public codecvt<char16_t, char, mbstate_t> 31546035553Spatrick{ 316*4bdff4beSrobert unsigned long __maxcode_; 317*4bdff4beSrobert codecvt_mode __mode_; 31846035553Spatrickpublic: 31946035553Spatrick typedef char16_t intern_type; 32046035553Spatrick typedef char extern_type; 32146035553Spatrick typedef mbstate_t state_type; 32246035553Spatrick 32346035553Spatrick _LIBCPP_INLINE_VISIBILITY 324*4bdff4beSrobert explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 325*4bdff4beSrobert codecvt_mode __mode) 326*4bdff4beSrobert : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 327*4bdff4beSrobert __mode_(__mode) {} 32876d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_POP 32976d0caaeSpatrick 33046035553Spatrickprotected: 331*4bdff4beSrobert result do_out(state_type& __st, 33246035553Spatrick const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 333*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 334*4bdff4beSrobert result do_in(state_type& __st, 33546035553Spatrick const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 336*4bdff4beSrobert intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 337*4bdff4beSrobert result do_unshift(state_type& __st, 338*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 339*4bdff4beSrobert int do_encoding() const _NOEXCEPT override; 340*4bdff4beSrobert bool do_always_noconv() const _NOEXCEPT override; 341*4bdff4beSrobert int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 342*4bdff4beSrobert int do_max_length() const _NOEXCEPT override; 34346035553Spatrick}; 34446035553Spatrick 34576d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_PUSH 34646035553Spatricktemplate <> 34746035553Spatrickclass _LIBCPP_TYPE_VIS __codecvt_utf16<char32_t, false> 34846035553Spatrick : public codecvt<char32_t, char, mbstate_t> 34946035553Spatrick{ 350*4bdff4beSrobert unsigned long __maxcode_; 351*4bdff4beSrobert codecvt_mode __mode_; 35246035553Spatrickpublic: 35346035553Spatrick typedef char32_t intern_type; 35446035553Spatrick typedef char extern_type; 35546035553Spatrick typedef mbstate_t state_type; 35646035553Spatrick 35746035553Spatrick _LIBCPP_INLINE_VISIBILITY 358*4bdff4beSrobert explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 359*4bdff4beSrobert codecvt_mode __mode) 360*4bdff4beSrobert : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 361*4bdff4beSrobert __mode_(__mode) {} 36276d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_POP 36376d0caaeSpatrick 36446035553Spatrickprotected: 365*4bdff4beSrobert result do_out(state_type& __st, 36646035553Spatrick const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 367*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 368*4bdff4beSrobert result do_in(state_type& __st, 36946035553Spatrick const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 370*4bdff4beSrobert intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 371*4bdff4beSrobert result do_unshift(state_type& __st, 372*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 373*4bdff4beSrobert int do_encoding() const _NOEXCEPT override; 374*4bdff4beSrobert bool do_always_noconv() const _NOEXCEPT override; 375*4bdff4beSrobert int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 376*4bdff4beSrobert int do_max_length() const _NOEXCEPT override; 37746035553Spatrick}; 37846035553Spatrick 37976d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_PUSH 38046035553Spatricktemplate <> 38146035553Spatrickclass _LIBCPP_TYPE_VIS __codecvt_utf16<char32_t, true> 38246035553Spatrick : public codecvt<char32_t, char, mbstate_t> 38346035553Spatrick{ 384*4bdff4beSrobert unsigned long __maxcode_; 385*4bdff4beSrobert codecvt_mode __mode_; 38646035553Spatrickpublic: 38746035553Spatrick typedef char32_t intern_type; 38846035553Spatrick typedef char extern_type; 38946035553Spatrick typedef mbstate_t state_type; 39046035553Spatrick 39146035553Spatrick _LIBCPP_INLINE_VISIBILITY 392*4bdff4beSrobert explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 393*4bdff4beSrobert codecvt_mode __mode) 394*4bdff4beSrobert : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 395*4bdff4beSrobert __mode_(__mode) {} 39676d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_POP 39776d0caaeSpatrick 39846035553Spatrickprotected: 399*4bdff4beSrobert result do_out(state_type& __st, 40046035553Spatrick const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 401*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 402*4bdff4beSrobert result do_in(state_type& __st, 40346035553Spatrick const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 404*4bdff4beSrobert intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 405*4bdff4beSrobert result do_unshift(state_type& __st, 406*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 407*4bdff4beSrobert int do_encoding() const _NOEXCEPT override; 408*4bdff4beSrobert bool do_always_noconv() const _NOEXCEPT override; 409*4bdff4beSrobert int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 410*4bdff4beSrobert int do_max_length() const _NOEXCEPT override; 41146035553Spatrick}; 41246035553Spatrick 413*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_PUSH 41446035553Spatricktemplate <class _Elem, unsigned long _Maxcode = 0x10ffff, 41546035553Spatrick codecvt_mode _Mode = (codecvt_mode)0> 416*4bdff4beSrobertclass _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf16 41746035553Spatrick : public __codecvt_utf16<_Elem, _Mode & little_endian> 41846035553Spatrick{ 41946035553Spatrickpublic: 42046035553Spatrick _LIBCPP_INLINE_VISIBILITY 42146035553Spatrick explicit codecvt_utf16(size_t __refs = 0) 42246035553Spatrick : __codecvt_utf16<_Elem, _Mode & little_endian>(__refs, _Maxcode, _Mode) {} 42346035553Spatrick 42446035553Spatrick _LIBCPP_INLINE_VISIBILITY 42546035553Spatrick ~codecvt_utf16() {} 42646035553Spatrick}; 427*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_POP 42846035553Spatrick 42946035553Spatrick// codecvt_utf8_utf16 43046035553Spatrick 43146035553Spatricktemplate <class _Elem> class __codecvt_utf8_utf16; 43246035553Spatrick 433*4bdff4beSrobert#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS 43446035553Spatricktemplate <> 43546035553Spatrickclass _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<wchar_t> 43646035553Spatrick : public codecvt<wchar_t, char, mbstate_t> 43746035553Spatrick{ 438*4bdff4beSrobert unsigned long __maxcode_; 439*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_PUSH 440*4bdff4beSrobert codecvt_mode __mode_; 441*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_POP 44246035553Spatrickpublic: 44346035553Spatrick typedef wchar_t intern_type; 44446035553Spatrick typedef char extern_type; 44546035553Spatrick typedef mbstate_t state_type; 44646035553Spatrick 447*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_PUSH 44846035553Spatrick _LIBCPP_INLINE_VISIBILITY 449*4bdff4beSrobert explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, 450*4bdff4beSrobert codecvt_mode __mode) 451*4bdff4beSrobert : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 452*4bdff4beSrobert __mode_(__mode) {} 453*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_POP 45446035553Spatrickprotected: 455*4bdff4beSrobert result do_out(state_type& __st, 45646035553Spatrick const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 457*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 458*4bdff4beSrobert result do_in(state_type& __st, 45946035553Spatrick const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 460*4bdff4beSrobert intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 461*4bdff4beSrobert result do_unshift(state_type& __st, 462*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 463*4bdff4beSrobert int do_encoding() const _NOEXCEPT override; 464*4bdff4beSrobert bool do_always_noconv() const _NOEXCEPT override; 465*4bdff4beSrobert int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 466*4bdff4beSrobert int do_max_length() const _NOEXCEPT override; 46746035553Spatrick}; 468*4bdff4beSrobert#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS 46946035553Spatrick 47076d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_PUSH 47146035553Spatricktemplate <> 47246035553Spatrickclass _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<char32_t> 47346035553Spatrick : public codecvt<char32_t, char, mbstate_t> 47446035553Spatrick{ 475*4bdff4beSrobert unsigned long __maxcode_; 476*4bdff4beSrobert codecvt_mode __mode_; 47746035553Spatrickpublic: 47846035553Spatrick typedef char32_t intern_type; 47946035553Spatrick typedef char extern_type; 48046035553Spatrick typedef mbstate_t state_type; 48146035553Spatrick 48246035553Spatrick _LIBCPP_INLINE_VISIBILITY 483*4bdff4beSrobert explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, 484*4bdff4beSrobert codecvt_mode __mode) 485*4bdff4beSrobert : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 486*4bdff4beSrobert __mode_(__mode) {} 48776d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_POP 48876d0caaeSpatrick 48946035553Spatrickprotected: 490*4bdff4beSrobert result do_out(state_type& __st, 49146035553Spatrick const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 492*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 493*4bdff4beSrobert result do_in(state_type& __st, 49446035553Spatrick const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 495*4bdff4beSrobert intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 496*4bdff4beSrobert result do_unshift(state_type& __st, 497*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 498*4bdff4beSrobert int do_encoding() const _NOEXCEPT override; 499*4bdff4beSrobert bool do_always_noconv() const _NOEXCEPT override; 500*4bdff4beSrobert int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 501*4bdff4beSrobert int do_max_length() const _NOEXCEPT override; 50246035553Spatrick}; 50346035553Spatrick 50476d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_PUSH 50546035553Spatricktemplate <> 50646035553Spatrickclass _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<char16_t> 50746035553Spatrick : public codecvt<char16_t, char, mbstate_t> 50846035553Spatrick{ 509*4bdff4beSrobert unsigned long __maxcode_; 510*4bdff4beSrobert codecvt_mode __mode_; 51146035553Spatrickpublic: 51246035553Spatrick typedef char16_t intern_type; 51346035553Spatrick typedef char extern_type; 51446035553Spatrick typedef mbstate_t state_type; 51546035553Spatrick 51646035553Spatrick _LIBCPP_INLINE_VISIBILITY 517*4bdff4beSrobert explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, 518*4bdff4beSrobert codecvt_mode __mode) 519*4bdff4beSrobert : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 520*4bdff4beSrobert __mode_(__mode) {} 52176d0caaeSpatrick_LIBCPP_SUPPRESS_DEPRECATED_POP 52276d0caaeSpatrick 52346035553Spatrickprotected: 524*4bdff4beSrobert result do_out(state_type& __st, 52546035553Spatrick const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 526*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 527*4bdff4beSrobert result do_in(state_type& __st, 52846035553Spatrick const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 529*4bdff4beSrobert intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 530*4bdff4beSrobert result do_unshift(state_type& __st, 531*4bdff4beSrobert extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 532*4bdff4beSrobert int do_encoding() const _NOEXCEPT override; 533*4bdff4beSrobert bool do_always_noconv() const _NOEXCEPT override; 534*4bdff4beSrobert int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 535*4bdff4beSrobert int do_max_length() const _NOEXCEPT override; 53646035553Spatrick}; 53746035553Spatrick 538*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_PUSH 53946035553Spatricktemplate <class _Elem, unsigned long _Maxcode = 0x10ffff, 54046035553Spatrick codecvt_mode _Mode = (codecvt_mode)0> 541*4bdff4beSrobertclass _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf8_utf16 54246035553Spatrick : public __codecvt_utf8_utf16<_Elem> 54346035553Spatrick{ 54446035553Spatrickpublic: 54546035553Spatrick _LIBCPP_INLINE_VISIBILITY 54646035553Spatrick explicit codecvt_utf8_utf16(size_t __refs = 0) 54746035553Spatrick : __codecvt_utf8_utf16<_Elem>(__refs, _Maxcode, _Mode) {} 54846035553Spatrick 54946035553Spatrick _LIBCPP_INLINE_VISIBILITY 55046035553Spatrick ~codecvt_utf8_utf16() {} 55146035553Spatrick}; 552*4bdff4beSrobert_LIBCPP_SUPPRESS_DEPRECATED_POP 55346035553Spatrick 55446035553Spatrick_LIBCPP_END_NAMESPACE_STD 55546035553Spatrick 556*4bdff4beSrobert#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 557*4bdff4beSrobert# include <atomic> 558*4bdff4beSrobert# include <concepts> 559*4bdff4beSrobert# include <cstddef> 560*4bdff4beSrobert# include <cstdlib> 561*4bdff4beSrobert# include <cstring> 562*4bdff4beSrobert# include <initializer_list> 563*4bdff4beSrobert# include <iosfwd> 564*4bdff4beSrobert# include <limits> 565*4bdff4beSrobert# include <new> 566*4bdff4beSrobert# include <stdexcept> 567*4bdff4beSrobert# include <type_traits> 568*4bdff4beSrobert# include <typeinfo> 569*4bdff4beSrobert#endif 570*4bdff4beSrobert 57146035553Spatrick#endif // _LIBCPP_CODECVT 572