607 lines · plain
1// -*- C++ -*-2//===----------------------------------------------------------------------===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9 10#ifndef _LIBCPP_CODECVT11#define _LIBCPP_CODECVT12 13/*14 codecvt synopsis15 16namespace std17{18 19enum codecvt_mode20{21 consume_header = 4,22 generate_header = 2,23 little_endian = 124};25 26template <class Elem, unsigned long Maxcode = 0x10ffff,27 codecvt_mode Mode = (codecvt_mode)0>28class codecvt_utf829 : public codecvt<Elem, char, mbstate_t>30{31 explicit codecvt_utf8(size_t refs = 0);32 ~codecvt_utf8();33};34 35template <class Elem, unsigned long Maxcode = 0x10ffff,36 codecvt_mode Mode = (codecvt_mode)0>37class codecvt_utf1638 : public codecvt<Elem, char, mbstate_t>39{40 explicit codecvt_utf16(size_t refs = 0);41 ~codecvt_utf16();42};43 44template <class Elem, unsigned long Maxcode = 0x10ffff,45 codecvt_mode Mode = (codecvt_mode)0>46class codecvt_utf8_utf1647 : public codecvt<Elem, char, mbstate_t>48{49 explicit codecvt_utf8_utf16(size_t refs = 0);50 ~codecvt_utf8_utf16();51};52 53} // std54 55*/56 57#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)58# include <__cxx03/codecvt>59#else60# include <__config>61 62# if _LIBCPP_HAS_LOCALIZATION63 64# include <__locale>65# include <version>66 67# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)68# pragma GCC system_header69# endif70 71# if _LIBCPP_STD_VER < 26 || defined(_LIBCPP_BUILDING_LIBRARY) || defined(_LIBCPP_ENABLE_CXX26_REMOVED_CODECVT)72 73_LIBCPP_BEGIN_NAMESPACE_STD74 75enum _LIBCPP_DEPRECATED_IN_CXX17 codecvt_mode { consume_header = 4, generate_header = 2, little_endian = 1 };76 77// codecvt_utf878 79template <class _Elem>80class __codecvt_utf8;81 82# if _LIBCPP_HAS_WIDE_CHARACTERS83template <>84class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8<wchar_t> : public codecvt<wchar_t, char, mbstate_t> {85 unsigned long __maxcode_;86 _LIBCPP_SUPPRESS_DEPRECATED_PUSH87 codecvt_mode __mode_;88 _LIBCPP_SUPPRESS_DEPRECATED_POP89 90public:91 typedef wchar_t intern_type;92 typedef char extern_type;93 typedef mbstate_t state_type;94 95 _LIBCPP_SUPPRESS_DEPRECATED_PUSH96 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)97 : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}98 _LIBCPP_SUPPRESS_DEPRECATED_POP99 100protected:101 result do_out(state_type& __st,102 const intern_type* __frm,103 const intern_type* __frm_end,104 const intern_type*& __frm_nxt,105 extern_type* __to,106 extern_type* __to_end,107 extern_type*& __to_nxt) const override;108 result do_in(state_type& __st,109 const extern_type* __frm,110 const extern_type* __frm_end,111 const extern_type*& __frm_nxt,112 intern_type* __to,113 intern_type* __to_end,114 intern_type*& __to_nxt) const override;115 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;116 int do_encoding() const _NOEXCEPT override;117 bool do_always_noconv() const _NOEXCEPT override;118 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;119 int do_max_length() const _NOEXCEPT override;120};121# endif // _LIBCPP_HAS_WIDE_CHARACTERS122 123_LIBCPP_SUPPRESS_DEPRECATED_PUSH124template <>125class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8<char16_t> : public codecvt<char16_t, char, mbstate_t> {126 unsigned long __maxcode_;127 codecvt_mode __mode_;128 129public:130 typedef char16_t intern_type;131 typedef char extern_type;132 typedef mbstate_t state_type;133 134 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)135 : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}136 _LIBCPP_SUPPRESS_DEPRECATED_POP137 138protected:139 result do_out(state_type& __st,140 const intern_type* __frm,141 const intern_type* __frm_end,142 const intern_type*& __frm_nxt,143 extern_type* __to,144 extern_type* __to_end,145 extern_type*& __to_nxt) const override;146 result do_in(state_type& __st,147 const extern_type* __frm,148 const extern_type* __frm_end,149 const extern_type*& __frm_nxt,150 intern_type* __to,151 intern_type* __to_end,152 intern_type*& __to_nxt) const override;153 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;154 int do_encoding() const _NOEXCEPT override;155 bool do_always_noconv() const _NOEXCEPT override;156 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;157 int do_max_length() const _NOEXCEPT override;158};159 160_LIBCPP_SUPPRESS_DEPRECATED_PUSH161template <>162class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8<char32_t> : public codecvt<char32_t, char, mbstate_t> {163 unsigned long __maxcode_;164 codecvt_mode __mode_;165 166public:167 typedef char32_t intern_type;168 typedef char extern_type;169 typedef mbstate_t state_type;170 171 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)172 : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}173 _LIBCPP_SUPPRESS_DEPRECATED_POP174 175protected:176 result do_out(state_type& __st,177 const intern_type* __frm,178 const intern_type* __frm_end,179 const intern_type*& __frm_nxt,180 extern_type* __to,181 extern_type* __to_end,182 extern_type*& __to_nxt) const override;183 result do_in(state_type& __st,184 const extern_type* __frm,185 const extern_type* __frm_end,186 const extern_type*& __frm_nxt,187 intern_type* __to,188 intern_type* __to_end,189 intern_type*& __to_nxt) const override;190 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;191 int do_encoding() const _NOEXCEPT override;192 bool do_always_noconv() const _NOEXCEPT override;193 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;194 int do_max_length() const _NOEXCEPT override;195};196 197_LIBCPP_SUPPRESS_DEPRECATED_PUSH198template <class _Elem, unsigned long _Maxcode = 0x10ffff, codecvt_mode _Mode = (codecvt_mode)0>199class _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf8 : public __codecvt_utf8<_Elem> {200public:201 _LIBCPP_HIDE_FROM_ABI explicit codecvt_utf8(size_t __refs = 0) : __codecvt_utf8<_Elem>(__refs, _Maxcode, _Mode) {}202 203 _LIBCPP_HIDE_FROM_ABI ~codecvt_utf8() {}204};205_LIBCPP_SUPPRESS_DEPRECATED_POP206 207// codecvt_utf16208 209template <class _Elem, bool _LittleEndian>210class __codecvt_utf16;211 212# if _LIBCPP_HAS_WIDE_CHARACTERS213template <>214class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<wchar_t, false> : public codecvt<wchar_t, char, mbstate_t> {215 unsigned long __maxcode_;216 _LIBCPP_SUPPRESS_DEPRECATED_PUSH217 codecvt_mode __mode_;218 _LIBCPP_SUPPRESS_DEPRECATED_POP219 220public:221 typedef wchar_t intern_type;222 typedef char extern_type;223 typedef mbstate_t state_type;224 225 _LIBCPP_SUPPRESS_DEPRECATED_PUSH226 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)227 : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}228 _LIBCPP_SUPPRESS_DEPRECATED_POP229 230protected:231 result do_out(state_type& __st,232 const intern_type* __frm,233 const intern_type* __frm_end,234 const intern_type*& __frm_nxt,235 extern_type* __to,236 extern_type* __to_end,237 extern_type*& __to_nxt) const override;238 result do_in(state_type& __st,239 const extern_type* __frm,240 const extern_type* __frm_end,241 const extern_type*& __frm_nxt,242 intern_type* __to,243 intern_type* __to_end,244 intern_type*& __to_nxt) const override;245 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;246 int do_encoding() const _NOEXCEPT override;247 bool do_always_noconv() const _NOEXCEPT override;248 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;249 int do_max_length() const _NOEXCEPT override;250};251 252template <>253class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<wchar_t, true> : public codecvt<wchar_t, char, mbstate_t> {254 unsigned long __maxcode_;255 _LIBCPP_SUPPRESS_DEPRECATED_PUSH256 codecvt_mode __mode_;257 _LIBCPP_SUPPRESS_DEPRECATED_POP258 259public:260 typedef wchar_t intern_type;261 typedef char extern_type;262 typedef mbstate_t state_type;263 264 _LIBCPP_SUPPRESS_DEPRECATED_PUSH265 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)266 : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}267 _LIBCPP_SUPPRESS_DEPRECATED_POP268 269protected:270 result do_out(state_type& __st,271 const intern_type* __frm,272 const intern_type* __frm_end,273 const intern_type*& __frm_nxt,274 extern_type* __to,275 extern_type* __to_end,276 extern_type*& __to_nxt) const override;277 result do_in(state_type& __st,278 const extern_type* __frm,279 const extern_type* __frm_end,280 const extern_type*& __frm_nxt,281 intern_type* __to,282 intern_type* __to_end,283 intern_type*& __to_nxt) const override;284 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;285 int do_encoding() const _NOEXCEPT override;286 bool do_always_noconv() const _NOEXCEPT override;287 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;288 int do_max_length() const _NOEXCEPT override;289};290# endif // _LIBCPP_HAS_WIDE_CHARACTERS291 292_LIBCPP_SUPPRESS_DEPRECATED_PUSH293template <>294class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<char16_t, false> : public codecvt<char16_t, char, mbstate_t> {295 unsigned long __maxcode_;296 codecvt_mode __mode_;297 298public:299 typedef char16_t intern_type;300 typedef char extern_type;301 typedef mbstate_t state_type;302 303 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)304 : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}305 _LIBCPP_SUPPRESS_DEPRECATED_POP306 307protected:308 result do_out(state_type& __st,309 const intern_type* __frm,310 const intern_type* __frm_end,311 const intern_type*& __frm_nxt,312 extern_type* __to,313 extern_type* __to_end,314 extern_type*& __to_nxt) const override;315 result do_in(state_type& __st,316 const extern_type* __frm,317 const extern_type* __frm_end,318 const extern_type*& __frm_nxt,319 intern_type* __to,320 intern_type* __to_end,321 intern_type*& __to_nxt) const override;322 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;323 int do_encoding() const _NOEXCEPT override;324 bool do_always_noconv() const _NOEXCEPT override;325 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;326 int do_max_length() const _NOEXCEPT override;327};328 329_LIBCPP_SUPPRESS_DEPRECATED_PUSH330template <>331class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<char16_t, true> : public codecvt<char16_t, char, mbstate_t> {332 unsigned long __maxcode_;333 codecvt_mode __mode_;334 335public:336 typedef char16_t intern_type;337 typedef char extern_type;338 typedef mbstate_t state_type;339 340 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)341 : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}342 _LIBCPP_SUPPRESS_DEPRECATED_POP343 344protected:345 result do_out(state_type& __st,346 const intern_type* __frm,347 const intern_type* __frm_end,348 const intern_type*& __frm_nxt,349 extern_type* __to,350 extern_type* __to_end,351 extern_type*& __to_nxt) const override;352 result do_in(state_type& __st,353 const extern_type* __frm,354 const extern_type* __frm_end,355 const extern_type*& __frm_nxt,356 intern_type* __to,357 intern_type* __to_end,358 intern_type*& __to_nxt) const override;359 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;360 int do_encoding() const _NOEXCEPT override;361 bool do_always_noconv() const _NOEXCEPT override;362 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;363 int do_max_length() const _NOEXCEPT override;364};365 366_LIBCPP_SUPPRESS_DEPRECATED_PUSH367template <>368class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<char32_t, false> : public codecvt<char32_t, char, mbstate_t> {369 unsigned long __maxcode_;370 codecvt_mode __mode_;371 372public:373 typedef char32_t intern_type;374 typedef char extern_type;375 typedef mbstate_t state_type;376 377 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)378 : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}379 _LIBCPP_SUPPRESS_DEPRECATED_POP380 381protected:382 result do_out(state_type& __st,383 const intern_type* __frm,384 const intern_type* __frm_end,385 const intern_type*& __frm_nxt,386 extern_type* __to,387 extern_type* __to_end,388 extern_type*& __to_nxt) const override;389 result do_in(state_type& __st,390 const extern_type* __frm,391 const extern_type* __frm_end,392 const extern_type*& __frm_nxt,393 intern_type* __to,394 intern_type* __to_end,395 intern_type*& __to_nxt) const override;396 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;397 int do_encoding() const _NOEXCEPT override;398 bool do_always_noconv() const _NOEXCEPT override;399 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;400 int do_max_length() const _NOEXCEPT override;401};402 403_LIBCPP_SUPPRESS_DEPRECATED_PUSH404template <>405class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<char32_t, true> : public codecvt<char32_t, char, mbstate_t> {406 unsigned long __maxcode_;407 codecvt_mode __mode_;408 409public:410 typedef char32_t intern_type;411 typedef char extern_type;412 typedef mbstate_t state_type;413 414 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)415 : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}416 _LIBCPP_SUPPRESS_DEPRECATED_POP417 418protected:419 result do_out(state_type& __st,420 const intern_type* __frm,421 const intern_type* __frm_end,422 const intern_type*& __frm_nxt,423 extern_type* __to,424 extern_type* __to_end,425 extern_type*& __to_nxt) const override;426 result do_in(state_type& __st,427 const extern_type* __frm,428 const extern_type* __frm_end,429 const extern_type*& __frm_nxt,430 intern_type* __to,431 intern_type* __to_end,432 intern_type*& __to_nxt) const override;433 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;434 int do_encoding() const _NOEXCEPT override;435 bool do_always_noconv() const _NOEXCEPT override;436 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;437 int do_max_length() const _NOEXCEPT override;438};439 440_LIBCPP_SUPPRESS_DEPRECATED_PUSH441template <class _Elem, unsigned long _Maxcode = 0x10ffff, codecvt_mode _Mode = (codecvt_mode)0>442class _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf16 : public __codecvt_utf16<_Elem, _Mode & little_endian> {443public:444 _LIBCPP_HIDE_FROM_ABI explicit codecvt_utf16(size_t __refs = 0)445 : __codecvt_utf16<_Elem, _Mode & little_endian>(__refs, _Maxcode, _Mode) {}446 447 _LIBCPP_HIDE_FROM_ABI ~codecvt_utf16() {}448};449_LIBCPP_SUPPRESS_DEPRECATED_POP450 451// codecvt_utf8_utf16452 453template <class _Elem>454class __codecvt_utf8_utf16;455 456# if _LIBCPP_HAS_WIDE_CHARACTERS457template <>458class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8_utf16<wchar_t> : public codecvt<wchar_t, char, mbstate_t> {459 unsigned long __maxcode_;460 _LIBCPP_SUPPRESS_DEPRECATED_PUSH461 codecvt_mode __mode_;462 _LIBCPP_SUPPRESS_DEPRECATED_POP463 464public:465 typedef wchar_t intern_type;466 typedef char extern_type;467 typedef mbstate_t state_type;468 469 _LIBCPP_SUPPRESS_DEPRECATED_PUSH470 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)471 : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}472 _LIBCPP_SUPPRESS_DEPRECATED_POP473 474protected:475 result do_out(state_type& __st,476 const intern_type* __frm,477 const intern_type* __frm_end,478 const intern_type*& __frm_nxt,479 extern_type* __to,480 extern_type* __to_end,481 extern_type*& __to_nxt) const override;482 result do_in(state_type& __st,483 const extern_type* __frm,484 const extern_type* __frm_end,485 const extern_type*& __frm_nxt,486 intern_type* __to,487 intern_type* __to_end,488 intern_type*& __to_nxt) const override;489 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;490 int do_encoding() const _NOEXCEPT override;491 bool do_always_noconv() const _NOEXCEPT override;492 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;493 int do_max_length() const _NOEXCEPT override;494};495# endif // _LIBCPP_HAS_WIDE_CHARACTERS496 497_LIBCPP_SUPPRESS_DEPRECATED_PUSH498template <>499class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8_utf16<char32_t> : public codecvt<char32_t, char, mbstate_t> {500 unsigned long __maxcode_;501 codecvt_mode __mode_;502 503public:504 typedef char32_t intern_type;505 typedef char extern_type;506 typedef mbstate_t state_type;507 508 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)509 : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}510 _LIBCPP_SUPPRESS_DEPRECATED_POP511 512protected:513 result do_out(state_type& __st,514 const intern_type* __frm,515 const intern_type* __frm_end,516 const intern_type*& __frm_nxt,517 extern_type* __to,518 extern_type* __to_end,519 extern_type*& __to_nxt) const override;520 result do_in(state_type& __st,521 const extern_type* __frm,522 const extern_type* __frm_end,523 const extern_type*& __frm_nxt,524 intern_type* __to,525 intern_type* __to_end,526 intern_type*& __to_nxt) const override;527 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;528 int do_encoding() const _NOEXCEPT override;529 bool do_always_noconv() const _NOEXCEPT override;530 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;531 int do_max_length() const _NOEXCEPT override;532};533 534_LIBCPP_SUPPRESS_DEPRECATED_PUSH535template <>536class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8_utf16<char16_t> : public codecvt<char16_t, char, mbstate_t> {537 unsigned long __maxcode_;538 codecvt_mode __mode_;539 540public:541 typedef char16_t intern_type;542 typedef char extern_type;543 typedef mbstate_t state_type;544 545 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)546 : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}547 _LIBCPP_SUPPRESS_DEPRECATED_POP548 549protected:550 result do_out(state_type& __st,551 const intern_type* __frm,552 const intern_type* __frm_end,553 const intern_type*& __frm_nxt,554 extern_type* __to,555 extern_type* __to_end,556 extern_type*& __to_nxt) const override;557 result do_in(state_type& __st,558 const extern_type* __frm,559 const extern_type* __frm_end,560 const extern_type*& __frm_nxt,561 intern_type* __to,562 intern_type* __to_end,563 intern_type*& __to_nxt) const override;564 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;565 int do_encoding() const _NOEXCEPT override;566 bool do_always_noconv() const _NOEXCEPT override;567 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;568 int do_max_length() const _NOEXCEPT override;569};570 571_LIBCPP_SUPPRESS_DEPRECATED_PUSH572template <class _Elem, unsigned long _Maxcode = 0x10ffff, codecvt_mode _Mode = (codecvt_mode)0>573class _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf8_utf16 : public __codecvt_utf8_utf16<_Elem> {574public:575 _LIBCPP_HIDE_FROM_ABI explicit codecvt_utf8_utf16(size_t __refs = 0)576 : __codecvt_utf8_utf16<_Elem>(__refs, _Maxcode, _Mode) {}577 578 _LIBCPP_HIDE_FROM_ABI ~codecvt_utf8_utf16() {}579};580_LIBCPP_SUPPRESS_DEPRECATED_POP581 582_LIBCPP_END_NAMESPACE_STD583 584# endif // _LIBCPP_STD_VER < 26 || defined(_LIBCPP_BUILDING_LIBRARY) || defined(_LIBCPP_ENABLE_CXX26_REMOVED_CODECVT)585 586# endif // _LIBCPP_HAS_LOCALIZATION587 588# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20589# include <atomic>590# include <concepts>591# include <cstddef>592# include <cstdlib>593# include <cstring>594# include <initializer_list>595# include <iosfwd>596# include <limits>597# include <mutex>598# include <new>599# include <optional>600# include <stdexcept>601# include <type_traits>602# include <typeinfo>603# endif604#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)605 606#endif // _LIBCPP_CODECVT607