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#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) 58# include <__cxx03/codecvt> 59#else 60# include <__config> 61 62# if _LIBCPP_HAS_LOCALIZATION 63 64# include <__locale> 65# include <version> 66 67# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 68# pragma GCC system_header 69# endif 70 71# if _LIBCPP_STD_VER < 26 || defined(_LIBCPP_BUILDING_LIBRARY) || defined(_LIBCPP_ENABLE_CXX26_REMOVED_CODECVT) 72 73_LIBCPP_BEGIN_NAMESPACE_STD 74 75enum _LIBCPP_DEPRECATED_IN_CXX17 codecvt_mode { consume_header = 4, generate_header = 2, little_endian = 1 }; 76 77// codecvt_utf8 78 79template <class _Elem> 80class __codecvt_utf8; 81 82# if _LIBCPP_HAS_WIDE_CHARACTERS 83template <> 84class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8<wchar_t> : public codecvt<wchar_t, char, mbstate_t> { 85 unsigned long __maxcode_; 86 _LIBCPP_SUPPRESS_DEPRECATED_PUSH 87 codecvt_mode __mode_; 88 _LIBCPP_SUPPRESS_DEPRECATED_POP 89 90public: 91 typedef wchar_t intern_type; 92 typedef char extern_type; 93 typedef mbstate_t state_type; 94 95 _LIBCPP_SUPPRESS_DEPRECATED_PUSH 96 _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_POP 99 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_CHARACTERS 122 123_LIBCPP_SUPPRESS_DEPRECATED_PUSH 124template <> 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_POP 137 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_PUSH 161template <> 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_POP 174 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_PUSH 198template <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_POP 206 207// codecvt_utf16 208 209template <class _Elem, bool _LittleEndian> 210class __codecvt_utf16; 211 212# if _LIBCPP_HAS_WIDE_CHARACTERS 213template <> 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_PUSH 217 codecvt_mode __mode_; 218 _LIBCPP_SUPPRESS_DEPRECATED_POP 219 220public: 221 typedef wchar_t intern_type; 222 typedef char extern_type; 223 typedef mbstate_t state_type; 224 225 _LIBCPP_SUPPRESS_DEPRECATED_PUSH 226 _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_POP 229 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_PUSH 256 codecvt_mode __mode_; 257 _LIBCPP_SUPPRESS_DEPRECATED_POP 258 259public: 260 typedef wchar_t intern_type; 261 typedef char extern_type; 262 typedef mbstate_t state_type; 263 264 _LIBCPP_SUPPRESS_DEPRECATED_PUSH 265 _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_POP 268 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_CHARACTERS 291 292_LIBCPP_SUPPRESS_DEPRECATED_PUSH 293template <> 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_POP 306 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_PUSH 330template <> 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_POP 343 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_PUSH 367template <> 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_POP 380 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_PUSH 404template <> 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_POP 417 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_PUSH 441template <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_POP 450 451// codecvt_utf8_utf16 452 453template <class _Elem> 454class __codecvt_utf8_utf16; 455 456# if _LIBCPP_HAS_WIDE_CHARACTERS 457template <> 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_PUSH 461 codecvt_mode __mode_; 462 _LIBCPP_SUPPRESS_DEPRECATED_POP 463 464public: 465 typedef wchar_t intern_type; 466 typedef char extern_type; 467 typedef mbstate_t state_type; 468 469 _LIBCPP_SUPPRESS_DEPRECATED_PUSH 470 _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_POP 473 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_CHARACTERS 496 497_LIBCPP_SUPPRESS_DEPRECATED_PUSH 498template <> 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_POP 511 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_PUSH 535template <> 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_POP 548 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_PUSH 572template <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_POP 581 582_LIBCPP_END_NAMESPACE_STD 583 584# endif // _LIBCPP_STD_VER < 26 || defined(_LIBCPP_BUILDING_LIBRARY) || defined(_LIBCPP_ENABLE_CXX26_REMOVED_CODECVT) 585 586# endif // _LIBCPP_HAS_LOCALIZATION 587 588# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 589# 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# endif 604#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) 605 606#endif // _LIBCPP_CODECVT 607