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-exception 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef _LIBCPP_CODECVT 11#define _LIBCPP_CODECVT 12 13/* 14 codecvt synopsis 15 16namespace std 17{ 18 19enum codecvt_mode 20{ 21 consume_header = 4, 22 generate_header = 2, 23 little_endian = 1 24}; 25 26template <class Elem, unsigned long Maxcode = 0x10ffff, 27 codecvt_mode Mode = (codecvt_mode)0> 28class codecvt_utf8 29 : 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_utf16 38 : 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_utf16 47 : public codecvt<Elem, char, mbstate_t> 48{ 49 explicit codecvt_utf8_utf16(size_t refs = 0); 50 ~codecvt_utf8_utf16(); 51}; 52 53} // std 54 55*/ 56 57#include <__assert> // all public C++ headers provide the assertion handler 58#include <__config> 59#include <__locale> 60#include <version> 61 62#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 63# pragma GCC system_header 64#endif 65 66_LIBCPP_BEGIN_NAMESPACE_STD 67 68enum _LIBCPP_DEPRECATED_IN_CXX17 codecvt_mode 69{ 70 consume_header = 4, 71 generate_header = 2, 72 little_endian = 1 73}; 74 75// codecvt_utf8 76 77template <class _Elem> class __codecvt_utf8; 78 79#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS 80template <> 81class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8<wchar_t> 82 : public codecvt<wchar_t, char, mbstate_t> 83{ 84 unsigned long __maxcode_; 85_LIBCPP_SUPPRESS_DEPRECATED_PUSH 86 codecvt_mode __mode_; 87_LIBCPP_SUPPRESS_DEPRECATED_POP 88public: 89 typedef wchar_t intern_type; 90 typedef char extern_type; 91 typedef mbstate_t state_type; 92 93_LIBCPP_SUPPRESS_DEPRECATED_PUSH 94 _LIBCPP_INLINE_VISIBILITY 95 explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, 96 codecvt_mode __mode) 97 : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 98 __mode_(__mode) {} 99_LIBCPP_SUPPRESS_DEPRECATED_POP 100protected: 101 result do_out(state_type& __st, 102 const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 103 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 104 result do_in(state_type& __st, 105 const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 106 intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 107 result do_unshift(state_type& __st, 108 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 109 int do_encoding() const _NOEXCEPT override; 110 bool do_always_noconv() const _NOEXCEPT override; 111 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 112 int do_max_length() const _NOEXCEPT override; 113}; 114#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS 115 116_LIBCPP_SUPPRESS_DEPRECATED_PUSH 117template <> 118class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8<char16_t> 119 : public codecvt<char16_t, char, mbstate_t> 120{ 121 unsigned long __maxcode_; 122 codecvt_mode __mode_; 123public: 124 typedef char16_t intern_type; 125 typedef char extern_type; 126 typedef mbstate_t state_type; 127 128 _LIBCPP_INLINE_VISIBILITY 129 explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, 130 codecvt_mode __mode) 131 : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 132 __mode_(__mode) {} 133_LIBCPP_SUPPRESS_DEPRECATED_POP 134 135protected: 136 result do_out(state_type& __st, 137 const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 138 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 139 result do_in(state_type& __st, 140 const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 141 intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 142 result do_unshift(state_type& __st, 143 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 144 int do_encoding() const _NOEXCEPT override; 145 bool do_always_noconv() const _NOEXCEPT override; 146 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 147 int do_max_length() const _NOEXCEPT override; 148}; 149 150_LIBCPP_SUPPRESS_DEPRECATED_PUSH 151template <> 152class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8<char32_t> 153 : public codecvt<char32_t, char, mbstate_t> 154{ 155 unsigned long __maxcode_; 156 codecvt_mode __mode_; 157public: 158 typedef char32_t intern_type; 159 typedef char extern_type; 160 typedef mbstate_t state_type; 161 162 _LIBCPP_INLINE_VISIBILITY 163 explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, 164 codecvt_mode __mode) 165 : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 166 __mode_(__mode) {} 167_LIBCPP_SUPPRESS_DEPRECATED_POP 168 169protected: 170 result do_out(state_type& __st, 171 const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 172 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 173 result do_in(state_type& __st, 174 const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 175 intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 176 result do_unshift(state_type& __st, 177 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 178 int do_encoding() const _NOEXCEPT override; 179 bool do_always_noconv() const _NOEXCEPT override; 180 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 181 int do_max_length() const _NOEXCEPT override; 182}; 183 184_LIBCPP_SUPPRESS_DEPRECATED_PUSH 185template <class _Elem, unsigned long _Maxcode = 0x10ffff, 186 codecvt_mode _Mode = (codecvt_mode)0> 187class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf8 188 : public __codecvt_utf8<_Elem> 189{ 190public: 191 _LIBCPP_INLINE_VISIBILITY 192 explicit codecvt_utf8(size_t __refs = 0) 193 : __codecvt_utf8<_Elem>(__refs, _Maxcode, _Mode) {} 194 195 _LIBCPP_INLINE_VISIBILITY 196 ~codecvt_utf8() {} 197}; 198_LIBCPP_SUPPRESS_DEPRECATED_POP 199 200// codecvt_utf16 201 202template <class _Elem, bool _LittleEndian> class __codecvt_utf16; 203 204#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS 205template <> 206class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<wchar_t, false> 207 : public codecvt<wchar_t, char, mbstate_t> 208{ 209 unsigned long __maxcode_; 210_LIBCPP_SUPPRESS_DEPRECATED_PUSH 211 codecvt_mode __mode_; 212_LIBCPP_SUPPRESS_DEPRECATED_POP 213public: 214 typedef wchar_t intern_type; 215 typedef char extern_type; 216 typedef mbstate_t state_type; 217 218_LIBCPP_SUPPRESS_DEPRECATED_PUSH 219 _LIBCPP_INLINE_VISIBILITY 220 explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 221 codecvt_mode __mode) 222 : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 223 __mode_(__mode) {} 224_LIBCPP_SUPPRESS_DEPRECATED_POP 225protected: 226 result do_out(state_type& __st, 227 const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 228 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 229 result do_in(state_type& __st, 230 const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 231 intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 232 result do_unshift(state_type& __st, 233 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 234 int do_encoding() const _NOEXCEPT override; 235 bool do_always_noconv() const _NOEXCEPT override; 236 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 237 size_t __mx) const override; 238 int do_max_length() const _NOEXCEPT override; 239}; 240 241template <> 242class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<wchar_t, true> 243 : public codecvt<wchar_t, char, mbstate_t> 244{ 245 unsigned long __maxcode_; 246_LIBCPP_SUPPRESS_DEPRECATED_PUSH 247 codecvt_mode __mode_; 248_LIBCPP_SUPPRESS_DEPRECATED_POP 249public: 250 typedef wchar_t intern_type; 251 typedef char extern_type; 252 typedef mbstate_t state_type; 253 254_LIBCPP_SUPPRESS_DEPRECATED_PUSH 255 _LIBCPP_INLINE_VISIBILITY 256 explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 257 codecvt_mode __mode) 258 : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 259 __mode_(__mode) {} 260_LIBCPP_SUPPRESS_DEPRECATED_POP 261protected: 262 result do_out(state_type& __st, 263 const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 264 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 265 result do_in(state_type& __st, 266 const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 267 intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 268 result do_unshift(state_type& __st, 269 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 270 int do_encoding() const _NOEXCEPT override; 271 bool do_always_noconv() const _NOEXCEPT override; 272 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 273 int do_max_length() const _NOEXCEPT override; 274}; 275#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS 276 277_LIBCPP_SUPPRESS_DEPRECATED_PUSH 278template <> 279class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<char16_t, false> 280 : public codecvt<char16_t, char, mbstate_t> 281{ 282 unsigned long __maxcode_; 283 codecvt_mode __mode_; 284public: 285 typedef char16_t intern_type; 286 typedef char extern_type; 287 typedef mbstate_t state_type; 288 289 _LIBCPP_INLINE_VISIBILITY 290 explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 291 codecvt_mode __mode) 292 : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 293 __mode_(__mode) {} 294_LIBCPP_SUPPRESS_DEPRECATED_POP 295 296protected: 297 result do_out(state_type& __st, 298 const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 299 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 300 result do_in(state_type& __st, 301 const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 302 intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 303 result do_unshift(state_type& __st, 304 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 305 int do_encoding() const _NOEXCEPT override; 306 bool do_always_noconv() const _NOEXCEPT override; 307 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 308 int do_max_length() const _NOEXCEPT override; 309}; 310 311_LIBCPP_SUPPRESS_DEPRECATED_PUSH 312template <> 313class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<char16_t, true> 314 : public codecvt<char16_t, char, mbstate_t> 315{ 316 unsigned long __maxcode_; 317 codecvt_mode __mode_; 318public: 319 typedef char16_t intern_type; 320 typedef char extern_type; 321 typedef mbstate_t state_type; 322 323 _LIBCPP_INLINE_VISIBILITY 324 explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 325 codecvt_mode __mode) 326 : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 327 __mode_(__mode) {} 328_LIBCPP_SUPPRESS_DEPRECATED_POP 329 330protected: 331 result do_out(state_type& __st, 332 const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 333 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 334 result do_in(state_type& __st, 335 const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 336 intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 337 result do_unshift(state_type& __st, 338 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 339 int do_encoding() const _NOEXCEPT override; 340 bool do_always_noconv() const _NOEXCEPT override; 341 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 342 int do_max_length() const _NOEXCEPT override; 343}; 344 345_LIBCPP_SUPPRESS_DEPRECATED_PUSH 346template <> 347class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<char32_t, false> 348 : public codecvt<char32_t, char, mbstate_t> 349{ 350 unsigned long __maxcode_; 351 codecvt_mode __mode_; 352public: 353 typedef char32_t intern_type; 354 typedef char extern_type; 355 typedef mbstate_t state_type; 356 357 _LIBCPP_INLINE_VISIBILITY 358 explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 359 codecvt_mode __mode) 360 : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 361 __mode_(__mode) {} 362_LIBCPP_SUPPRESS_DEPRECATED_POP 363 364protected: 365 result do_out(state_type& __st, 366 const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 367 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 368 result do_in(state_type& __st, 369 const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 370 intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 371 result do_unshift(state_type& __st, 372 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 373 int do_encoding() const _NOEXCEPT override; 374 bool do_always_noconv() const _NOEXCEPT override; 375 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 376 int do_max_length() const _NOEXCEPT override; 377}; 378 379_LIBCPP_SUPPRESS_DEPRECATED_PUSH 380template <> 381class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<char32_t, true> 382 : public codecvt<char32_t, char, mbstate_t> 383{ 384 unsigned long __maxcode_; 385 codecvt_mode __mode_; 386public: 387 typedef char32_t intern_type; 388 typedef char extern_type; 389 typedef mbstate_t state_type; 390 391 _LIBCPP_INLINE_VISIBILITY 392 explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 393 codecvt_mode __mode) 394 : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 395 __mode_(__mode) {} 396_LIBCPP_SUPPRESS_DEPRECATED_POP 397 398protected: 399 result do_out(state_type& __st, 400 const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 401 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 402 result do_in(state_type& __st, 403 const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 404 intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 405 result do_unshift(state_type& __st, 406 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 407 int do_encoding() const _NOEXCEPT override; 408 bool do_always_noconv() const _NOEXCEPT override; 409 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 410 int do_max_length() const _NOEXCEPT override; 411}; 412 413_LIBCPP_SUPPRESS_DEPRECATED_PUSH 414template <class _Elem, unsigned long _Maxcode = 0x10ffff, 415 codecvt_mode _Mode = (codecvt_mode)0> 416class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf16 417 : public __codecvt_utf16<_Elem, _Mode & little_endian> 418{ 419public: 420 _LIBCPP_INLINE_VISIBILITY 421 explicit codecvt_utf16(size_t __refs = 0) 422 : __codecvt_utf16<_Elem, _Mode & little_endian>(__refs, _Maxcode, _Mode) {} 423 424 _LIBCPP_INLINE_VISIBILITY 425 ~codecvt_utf16() {} 426}; 427_LIBCPP_SUPPRESS_DEPRECATED_POP 428 429// codecvt_utf8_utf16 430 431template <class _Elem> class __codecvt_utf8_utf16; 432 433#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS 434template <> 435class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8_utf16<wchar_t> 436 : public codecvt<wchar_t, char, mbstate_t> 437{ 438 unsigned long __maxcode_; 439_LIBCPP_SUPPRESS_DEPRECATED_PUSH 440 codecvt_mode __mode_; 441_LIBCPP_SUPPRESS_DEPRECATED_POP 442public: 443 typedef wchar_t intern_type; 444 typedef char extern_type; 445 typedef mbstate_t state_type; 446 447_LIBCPP_SUPPRESS_DEPRECATED_PUSH 448 _LIBCPP_INLINE_VISIBILITY 449 explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, 450 codecvt_mode __mode) 451 : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 452 __mode_(__mode) {} 453_LIBCPP_SUPPRESS_DEPRECATED_POP 454protected: 455 result do_out(state_type& __st, 456 const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 457 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 458 result do_in(state_type& __st, 459 const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 460 intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 461 result do_unshift(state_type& __st, 462 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 463 int do_encoding() const _NOEXCEPT override; 464 bool do_always_noconv() const _NOEXCEPT override; 465 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 466 int do_max_length() const _NOEXCEPT override; 467}; 468#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS 469 470_LIBCPP_SUPPRESS_DEPRECATED_PUSH 471template <> 472class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8_utf16<char32_t> 473 : public codecvt<char32_t, char, mbstate_t> 474{ 475 unsigned long __maxcode_; 476 codecvt_mode __mode_; 477public: 478 typedef char32_t intern_type; 479 typedef char extern_type; 480 typedef mbstate_t state_type; 481 482 _LIBCPP_INLINE_VISIBILITY 483 explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, 484 codecvt_mode __mode) 485 : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 486 __mode_(__mode) {} 487_LIBCPP_SUPPRESS_DEPRECATED_POP 488 489protected: 490 result do_out(state_type& __st, 491 const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 492 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 493 result do_in(state_type& __st, 494 const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 495 intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 496 result do_unshift(state_type& __st, 497 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 498 int do_encoding() const _NOEXCEPT override; 499 bool do_always_noconv() const _NOEXCEPT override; 500 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 501 int do_max_length() const _NOEXCEPT override; 502}; 503 504_LIBCPP_SUPPRESS_DEPRECATED_PUSH 505template <> 506class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8_utf16<char16_t> 507 : public codecvt<char16_t, char, mbstate_t> 508{ 509 unsigned long __maxcode_; 510 codecvt_mode __mode_; 511public: 512 typedef char16_t intern_type; 513 typedef char extern_type; 514 typedef mbstate_t state_type; 515 516 _LIBCPP_INLINE_VISIBILITY 517 explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, 518 codecvt_mode __mode) 519 : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), 520 __mode_(__mode) {} 521_LIBCPP_SUPPRESS_DEPRECATED_POP 522 523protected: 524 result do_out(state_type& __st, 525 const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 526 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 527 result do_in(state_type& __st, 528 const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 529 intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; 530 result do_unshift(state_type& __st, 531 extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; 532 int do_encoding() const _NOEXCEPT override; 533 bool do_always_noconv() const _NOEXCEPT override; 534 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; 535 int do_max_length() const _NOEXCEPT override; 536}; 537 538_LIBCPP_SUPPRESS_DEPRECATED_PUSH 539template <class _Elem, unsigned long _Maxcode = 0x10ffff, 540 codecvt_mode _Mode = (codecvt_mode)0> 541class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf8_utf16 542 : public __codecvt_utf8_utf16<_Elem> 543{ 544public: 545 _LIBCPP_INLINE_VISIBILITY 546 explicit codecvt_utf8_utf16(size_t __refs = 0) 547 : __codecvt_utf8_utf16<_Elem>(__refs, _Maxcode, _Mode) {} 548 549 _LIBCPP_INLINE_VISIBILITY 550 ~codecvt_utf8_utf16() {} 551}; 552_LIBCPP_SUPPRESS_DEPRECATED_POP 553 554_LIBCPP_END_NAMESPACE_STD 555 556#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 557# include <atomic> 558# include <concepts> 559# include <cstddef> 560# include <cstdlib> 561# include <cstring> 562# include <initializer_list> 563# include <iosfwd> 564# include <limits> 565# include <new> 566# include <stdexcept> 567# include <type_traits> 568# include <typeinfo> 569#endif 570 571#endif // _LIBCPP_CODECVT 572