10c17e32eSHoward Hinnant// -*- C++ -*- 2eb8650a7SLouis Dionne//===----------------------------------------------------------------------===// 30c17e32eSHoward Hinnant// 457b08b09SChandler Carruth// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 557b08b09SChandler Carruth// See https://llvm.org/LICENSE.txt for license information. 657b08b09SChandler Carruth// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 70c17e32eSHoward Hinnant// 80c17e32eSHoward Hinnant//===----------------------------------------------------------------------===// 90c17e32eSHoward Hinnant 100c17e32eSHoward Hinnant#ifndef _LIBCPP_CODECVT 110c17e32eSHoward Hinnant#define _LIBCPP_CODECVT 120c17e32eSHoward Hinnant 130c17e32eSHoward Hinnant/* 140c17e32eSHoward Hinnant codecvt synopsis 150c17e32eSHoward Hinnant 160c17e32eSHoward Hinnantnamespace std 170c17e32eSHoward Hinnant{ 180c17e32eSHoward Hinnant 190c17e32eSHoward Hinnantenum codecvt_mode 200c17e32eSHoward Hinnant{ 210c17e32eSHoward Hinnant consume_header = 4, 220c17e32eSHoward Hinnant generate_header = 2, 230c17e32eSHoward Hinnant little_endian = 1 240c17e32eSHoward Hinnant}; 250c17e32eSHoward Hinnant 260c17e32eSHoward Hinnanttemplate <class Elem, unsigned long Maxcode = 0x10ffff, 270c17e32eSHoward Hinnant codecvt_mode Mode = (codecvt_mode)0> 280c17e32eSHoward Hinnantclass codecvt_utf8 290c17e32eSHoward Hinnant : public codecvt<Elem, char, mbstate_t> 300c17e32eSHoward Hinnant{ 315320c2b5SMarshall Clow explicit codecvt_utf8(size_t refs = 0); 325320c2b5SMarshall Clow ~codecvt_utf8(); 330c17e32eSHoward Hinnant}; 340c17e32eSHoward Hinnant 350c17e32eSHoward Hinnanttemplate <class Elem, unsigned long Maxcode = 0x10ffff, 360c17e32eSHoward Hinnant codecvt_mode Mode = (codecvt_mode)0> 370c17e32eSHoward Hinnantclass codecvt_utf16 380c17e32eSHoward Hinnant : public codecvt<Elem, char, mbstate_t> 390c17e32eSHoward Hinnant{ 405320c2b5SMarshall Clow explicit codecvt_utf16(size_t refs = 0); 415320c2b5SMarshall Clow ~codecvt_utf16(); 420c17e32eSHoward Hinnant}; 430c17e32eSHoward Hinnant 440c17e32eSHoward Hinnanttemplate <class Elem, unsigned long Maxcode = 0x10ffff, 450c17e32eSHoward Hinnant codecvt_mode Mode = (codecvt_mode)0> 460c17e32eSHoward Hinnantclass codecvt_utf8_utf16 470c17e32eSHoward Hinnant : public codecvt<Elem, char, mbstate_t> 480c17e32eSHoward Hinnant{ 495320c2b5SMarshall Clow explicit codecvt_utf8_utf16(size_t refs = 0); 505320c2b5SMarshall Clow ~codecvt_utf8_utf16(); 510c17e32eSHoward Hinnant}; 520c17e32eSHoward Hinnant 530c17e32eSHoward Hinnant} // std 540c17e32eSHoward Hinnant 550c17e32eSHoward Hinnant*/ 560c17e32eSHoward Hinnant 57385cc25aSLouis Dionne#include <__assert> // all public C++ headers provide the assertion handler 580c17e32eSHoward Hinnant#include <__config> 590c17e32eSHoward Hinnant#include <__locale> 60bd6e6846SMark de Wever#include <version> 610c17e32eSHoward Hinnant 62073458b1SHoward Hinnant#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 630c17e32eSHoward Hinnant# pragma GCC system_header 64073458b1SHoward Hinnant#endif 650c17e32eSHoward Hinnant 660c17e32eSHoward Hinnant_LIBCPP_BEGIN_NAMESPACE_STD 670c17e32eSHoward Hinnant 683ee9a50aSNikolas Klauserenum _LIBCPP_DEPRECATED_IN_CXX17 codecvt_mode 690c17e32eSHoward Hinnant{ 700c17e32eSHoward Hinnant consume_header = 4, 710c17e32eSHoward Hinnant generate_header = 2, 720c17e32eSHoward Hinnant little_endian = 1 730c17e32eSHoward Hinnant}; 740c17e32eSHoward Hinnant 750c17e32eSHoward Hinnant// codecvt_utf8 760c17e32eSHoward Hinnant 770c17e32eSHoward Hinnanttemplate <class _Elem> class __codecvt_utf8; 780c17e32eSHoward Hinnant 79f4c1258dSLouis Dionne#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS 800c17e32eSHoward Hinnanttemplate <> 81f0544c20SHoward Hinnantclass _LIBCPP_TYPE_VIS __codecvt_utf8<wchar_t> 820c17e32eSHoward Hinnant : public codecvt<wchar_t, char, mbstate_t> 830c17e32eSHoward Hinnant{ 840c17e32eSHoward Hinnant unsigned long _Maxcode_; 853ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_PUSH 860c17e32eSHoward Hinnant codecvt_mode _Mode_; 873ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_POP 880c17e32eSHoward Hinnantpublic: 890c17e32eSHoward Hinnant typedef wchar_t intern_type; 900c17e32eSHoward Hinnant typedef char extern_type; 910c17e32eSHoward Hinnant typedef mbstate_t state_type; 920c17e32eSHoward Hinnant 933ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_PUSH 94dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 95*b48c5010SNikolas Klauser explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, 96*b48c5010SNikolas Klauser codecvt_mode __mode) 97*b48c5010SNikolas Klauser : codecvt<wchar_t, char, mbstate_t>(__refs), _Maxcode_(__maxcode), 98*b48c5010SNikolas Klauser _Mode_(__mode) {} 993ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_POP 1000c17e32eSHoward Hinnantprotected: 1010c17e32eSHoward Hinnant virtual result 1020c17e32eSHoward Hinnant do_out(state_type& __st, 1030c17e32eSHoward Hinnant const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 1040c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 1050c17e32eSHoward Hinnant virtual result 1060c17e32eSHoward Hinnant do_in(state_type& __st, 1070c17e32eSHoward Hinnant const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 1080c17e32eSHoward Hinnant intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 1090c17e32eSHoward Hinnant virtual result 1100c17e32eSHoward Hinnant do_unshift(state_type& __st, 1110c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 112585a3cc3SDimitry Andric virtual int do_encoding() const _NOEXCEPT; 113585a3cc3SDimitry Andric virtual bool do_always_noconv() const _NOEXCEPT; 1140c17e32eSHoward Hinnant virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 1150c17e32eSHoward Hinnant size_t __mx) const; 116585a3cc3SDimitry Andric virtual int do_max_length() const _NOEXCEPT; 1170c17e32eSHoward Hinnant}; 118f4c1258dSLouis Dionne#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS 1190c17e32eSHoward Hinnant 120a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_PUSH 1210c17e32eSHoward Hinnanttemplate <> 122f0544c20SHoward Hinnantclass _LIBCPP_TYPE_VIS __codecvt_utf8<char16_t> 1230c17e32eSHoward Hinnant : public codecvt<char16_t, char, mbstate_t> 1240c17e32eSHoward Hinnant{ 1250c17e32eSHoward Hinnant unsigned long _Maxcode_; 1260c17e32eSHoward Hinnant codecvt_mode _Mode_; 1270c17e32eSHoward Hinnantpublic: 1280c17e32eSHoward Hinnant typedef char16_t intern_type; 1290c17e32eSHoward Hinnant typedef char extern_type; 1300c17e32eSHoward Hinnant typedef mbstate_t state_type; 1310c17e32eSHoward Hinnant 132dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 133*b48c5010SNikolas Klauser explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, 134*b48c5010SNikolas Klauser codecvt_mode __mode) 135*b48c5010SNikolas Klauser : codecvt<char16_t, char, mbstate_t>(__refs), _Maxcode_(__maxcode), 136*b48c5010SNikolas Klauser _Mode_(__mode) {} 137a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_POP 138a984dcafSMarek Kurdej 1390c17e32eSHoward Hinnantprotected: 1400c17e32eSHoward Hinnant virtual result 1410c17e32eSHoward Hinnant do_out(state_type& __st, 1420c17e32eSHoward Hinnant const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 1430c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 1440c17e32eSHoward Hinnant virtual result 1450c17e32eSHoward Hinnant do_in(state_type& __st, 1460c17e32eSHoward Hinnant const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 1470c17e32eSHoward Hinnant intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 1480c17e32eSHoward Hinnant virtual result 1490c17e32eSHoward Hinnant do_unshift(state_type& __st, 1500c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 151585a3cc3SDimitry Andric virtual int do_encoding() const _NOEXCEPT; 152585a3cc3SDimitry Andric virtual bool do_always_noconv() const _NOEXCEPT; 1530c17e32eSHoward Hinnant virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 1540c17e32eSHoward Hinnant size_t __mx) const; 155585a3cc3SDimitry Andric virtual int do_max_length() const _NOEXCEPT; 1560c17e32eSHoward Hinnant}; 1570c17e32eSHoward Hinnant 158a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_PUSH 1590c17e32eSHoward Hinnanttemplate <> 160f0544c20SHoward Hinnantclass _LIBCPP_TYPE_VIS __codecvt_utf8<char32_t> 1610c17e32eSHoward Hinnant : public codecvt<char32_t, char, mbstate_t> 1620c17e32eSHoward Hinnant{ 1630c17e32eSHoward Hinnant unsigned long _Maxcode_; 1640c17e32eSHoward Hinnant codecvt_mode _Mode_; 1650c17e32eSHoward Hinnantpublic: 1660c17e32eSHoward Hinnant typedef char32_t intern_type; 1670c17e32eSHoward Hinnant typedef char extern_type; 1680c17e32eSHoward Hinnant typedef mbstate_t state_type; 1690c17e32eSHoward Hinnant 170dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 171*b48c5010SNikolas Klauser explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, 172*b48c5010SNikolas Klauser codecvt_mode __mode) 173*b48c5010SNikolas Klauser : codecvt<char32_t, char, mbstate_t>(__refs), _Maxcode_(__maxcode), 174*b48c5010SNikolas Klauser _Mode_(__mode) {} 175a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_POP 176a984dcafSMarek Kurdej 1770c17e32eSHoward Hinnantprotected: 1780c17e32eSHoward Hinnant virtual result 1790c17e32eSHoward Hinnant do_out(state_type& __st, 1800c17e32eSHoward Hinnant const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 1810c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 1820c17e32eSHoward Hinnant virtual result 1830c17e32eSHoward Hinnant do_in(state_type& __st, 1840c17e32eSHoward Hinnant const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 1850c17e32eSHoward Hinnant intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 1860c17e32eSHoward Hinnant virtual result 1870c17e32eSHoward Hinnant do_unshift(state_type& __st, 1880c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 189585a3cc3SDimitry Andric virtual int do_encoding() const _NOEXCEPT; 190585a3cc3SDimitry Andric virtual bool do_always_noconv() const _NOEXCEPT; 1910c17e32eSHoward Hinnant virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 1920c17e32eSHoward Hinnant size_t __mx) const; 193585a3cc3SDimitry Andric virtual int do_max_length() const _NOEXCEPT; 1940c17e32eSHoward Hinnant}; 1950c17e32eSHoward Hinnant 1963ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_PUSH 1970c17e32eSHoward Hinnanttemplate <class _Elem, unsigned long _Maxcode = 0x10ffff, 1980c17e32eSHoward Hinnant codecvt_mode _Mode = (codecvt_mode)0> 1993ee9a50aSNikolas Klauserclass _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf8 2000c17e32eSHoward Hinnant : public __codecvt_utf8<_Elem> 2010c17e32eSHoward Hinnant{ 2020c17e32eSHoward Hinnantpublic: 203dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 2040c17e32eSHoward Hinnant explicit codecvt_utf8(size_t __refs = 0) 2050c17e32eSHoward Hinnant : __codecvt_utf8<_Elem>(__refs, _Maxcode, _Mode) {} 2060c17e32eSHoward Hinnant 207dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 2080c17e32eSHoward Hinnant ~codecvt_utf8() {} 2090c17e32eSHoward Hinnant}; 2103ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_POP 2110c17e32eSHoward Hinnant 2120c17e32eSHoward Hinnant// codecvt_utf16 2130c17e32eSHoward Hinnant 2140c17e32eSHoward Hinnanttemplate <class _Elem, bool _LittleEndian> class __codecvt_utf16; 2150c17e32eSHoward Hinnant 216f4c1258dSLouis Dionne#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS 2170c17e32eSHoward Hinnanttemplate <> 218f0544c20SHoward Hinnantclass _LIBCPP_TYPE_VIS __codecvt_utf16<wchar_t, false> 2190c17e32eSHoward Hinnant : public codecvt<wchar_t, char, mbstate_t> 2200c17e32eSHoward Hinnant{ 2210c17e32eSHoward Hinnant unsigned long _Maxcode_; 2223ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_PUSH 2230c17e32eSHoward Hinnant codecvt_mode _Mode_; 2243ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_POP 2250c17e32eSHoward Hinnantpublic: 2260c17e32eSHoward Hinnant typedef wchar_t intern_type; 2270c17e32eSHoward Hinnant typedef char extern_type; 2280c17e32eSHoward Hinnant typedef mbstate_t state_type; 2290c17e32eSHoward Hinnant 2303ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_PUSH 231dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 232*b48c5010SNikolas Klauser explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 233*b48c5010SNikolas Klauser codecvt_mode __mode) 234*b48c5010SNikolas Klauser : codecvt<wchar_t, char, mbstate_t>(__refs), _Maxcode_(__maxcode), 235*b48c5010SNikolas Klauser _Mode_(__mode) {} 2363ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_POP 2370c17e32eSHoward Hinnantprotected: 2380c17e32eSHoward Hinnant virtual result 2390c17e32eSHoward Hinnant do_out(state_type& __st, 2400c17e32eSHoward Hinnant const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 2410c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 2420c17e32eSHoward Hinnant virtual result 2430c17e32eSHoward Hinnant do_in(state_type& __st, 2440c17e32eSHoward Hinnant const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 2450c17e32eSHoward Hinnant intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 2460c17e32eSHoward Hinnant virtual result 2470c17e32eSHoward Hinnant do_unshift(state_type& __st, 2480c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 249585a3cc3SDimitry Andric virtual int do_encoding() const _NOEXCEPT; 250585a3cc3SDimitry Andric virtual bool do_always_noconv() const _NOEXCEPT; 2510c17e32eSHoward Hinnant virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 2520c17e32eSHoward Hinnant size_t __mx) const; 253585a3cc3SDimitry Andric virtual int do_max_length() const _NOEXCEPT; 2540c17e32eSHoward Hinnant}; 2550c17e32eSHoward Hinnant 2560c17e32eSHoward Hinnanttemplate <> 257f0544c20SHoward Hinnantclass _LIBCPP_TYPE_VIS __codecvt_utf16<wchar_t, true> 2580c17e32eSHoward Hinnant : public codecvt<wchar_t, char, mbstate_t> 2590c17e32eSHoward Hinnant{ 2600c17e32eSHoward Hinnant unsigned long _Maxcode_; 2613ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_PUSH 2620c17e32eSHoward Hinnant codecvt_mode _Mode_; 2633ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_POP 2640c17e32eSHoward Hinnantpublic: 2650c17e32eSHoward Hinnant typedef wchar_t intern_type; 2660c17e32eSHoward Hinnant typedef char extern_type; 2670c17e32eSHoward Hinnant typedef mbstate_t state_type; 2680c17e32eSHoward Hinnant 2693ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_PUSH 270dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 271*b48c5010SNikolas Klauser explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 272*b48c5010SNikolas Klauser codecvt_mode __mode) 273*b48c5010SNikolas Klauser : codecvt<wchar_t, char, mbstate_t>(__refs), _Maxcode_(__maxcode), 274*b48c5010SNikolas Klauser _Mode_(__mode) {} 2753ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_POP 2760c17e32eSHoward Hinnantprotected: 2770c17e32eSHoward Hinnant virtual result 2780c17e32eSHoward Hinnant do_out(state_type& __st, 2790c17e32eSHoward Hinnant const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 2800c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 2810c17e32eSHoward Hinnant virtual result 2820c17e32eSHoward Hinnant do_in(state_type& __st, 2830c17e32eSHoward Hinnant const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 2840c17e32eSHoward Hinnant intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 2850c17e32eSHoward Hinnant virtual result 2860c17e32eSHoward Hinnant do_unshift(state_type& __st, 2870c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 288585a3cc3SDimitry Andric virtual int do_encoding() const _NOEXCEPT; 289585a3cc3SDimitry Andric virtual bool do_always_noconv() const _NOEXCEPT; 2900c17e32eSHoward Hinnant virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 2910c17e32eSHoward Hinnant size_t __mx) const; 292585a3cc3SDimitry Andric virtual int do_max_length() const _NOEXCEPT; 2930c17e32eSHoward Hinnant}; 294f4c1258dSLouis Dionne#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS 2950c17e32eSHoward Hinnant 296a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_PUSH 2970c17e32eSHoward Hinnanttemplate <> 298f0544c20SHoward Hinnantclass _LIBCPP_TYPE_VIS __codecvt_utf16<char16_t, false> 2990c17e32eSHoward Hinnant : public codecvt<char16_t, char, mbstate_t> 3000c17e32eSHoward Hinnant{ 3010c17e32eSHoward Hinnant unsigned long _Maxcode_; 3020c17e32eSHoward Hinnant codecvt_mode _Mode_; 3030c17e32eSHoward Hinnantpublic: 3040c17e32eSHoward Hinnant typedef char16_t intern_type; 3050c17e32eSHoward Hinnant typedef char extern_type; 3060c17e32eSHoward Hinnant typedef mbstate_t state_type; 3070c17e32eSHoward Hinnant 308dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 309*b48c5010SNikolas Klauser explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 310*b48c5010SNikolas Klauser codecvt_mode __mode) 311*b48c5010SNikolas Klauser : codecvt<char16_t, char, mbstate_t>(__refs), _Maxcode_(__maxcode), 312*b48c5010SNikolas Klauser _Mode_(__mode) {} 313a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_POP 314a984dcafSMarek Kurdej 3150c17e32eSHoward Hinnantprotected: 3160c17e32eSHoward Hinnant virtual result 3170c17e32eSHoward Hinnant do_out(state_type& __st, 3180c17e32eSHoward Hinnant const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 3190c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 3200c17e32eSHoward Hinnant virtual result 3210c17e32eSHoward Hinnant do_in(state_type& __st, 3220c17e32eSHoward Hinnant const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 3230c17e32eSHoward Hinnant intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 3240c17e32eSHoward Hinnant virtual result 3250c17e32eSHoward Hinnant do_unshift(state_type& __st, 3260c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 327585a3cc3SDimitry Andric virtual int do_encoding() const _NOEXCEPT; 328585a3cc3SDimitry Andric virtual bool do_always_noconv() const _NOEXCEPT; 3290c17e32eSHoward Hinnant virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 3300c17e32eSHoward Hinnant size_t __mx) const; 331585a3cc3SDimitry Andric virtual int do_max_length() const _NOEXCEPT; 3320c17e32eSHoward Hinnant}; 3330c17e32eSHoward Hinnant 334a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_PUSH 3350c17e32eSHoward Hinnanttemplate <> 336f0544c20SHoward Hinnantclass _LIBCPP_TYPE_VIS __codecvt_utf16<char16_t, true> 3370c17e32eSHoward Hinnant : public codecvt<char16_t, char, mbstate_t> 3380c17e32eSHoward Hinnant{ 3390c17e32eSHoward Hinnant unsigned long _Maxcode_; 3400c17e32eSHoward Hinnant codecvt_mode _Mode_; 3410c17e32eSHoward Hinnantpublic: 3420c17e32eSHoward Hinnant typedef char16_t intern_type; 3430c17e32eSHoward Hinnant typedef char extern_type; 3440c17e32eSHoward Hinnant typedef mbstate_t state_type; 3450c17e32eSHoward Hinnant 346dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 347*b48c5010SNikolas Klauser explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 348*b48c5010SNikolas Klauser codecvt_mode __mode) 349*b48c5010SNikolas Klauser : codecvt<char16_t, char, mbstate_t>(__refs), _Maxcode_(__maxcode), 350*b48c5010SNikolas Klauser _Mode_(__mode) {} 351a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_POP 352a984dcafSMarek Kurdej 3530c17e32eSHoward Hinnantprotected: 3540c17e32eSHoward Hinnant virtual result 3550c17e32eSHoward Hinnant do_out(state_type& __st, 3560c17e32eSHoward Hinnant const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 3570c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 3580c17e32eSHoward Hinnant virtual result 3590c17e32eSHoward Hinnant do_in(state_type& __st, 3600c17e32eSHoward Hinnant const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 3610c17e32eSHoward Hinnant intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 3620c17e32eSHoward Hinnant virtual result 3630c17e32eSHoward Hinnant do_unshift(state_type& __st, 3640c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 365585a3cc3SDimitry Andric virtual int do_encoding() const _NOEXCEPT; 366585a3cc3SDimitry Andric virtual bool do_always_noconv() const _NOEXCEPT; 3670c17e32eSHoward Hinnant virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 3680c17e32eSHoward Hinnant size_t __mx) const; 369585a3cc3SDimitry Andric virtual int do_max_length() const _NOEXCEPT; 3700c17e32eSHoward Hinnant}; 3710c17e32eSHoward Hinnant 372a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_PUSH 3730c17e32eSHoward Hinnanttemplate <> 374f0544c20SHoward Hinnantclass _LIBCPP_TYPE_VIS __codecvt_utf16<char32_t, false> 3750c17e32eSHoward Hinnant : public codecvt<char32_t, char, mbstate_t> 3760c17e32eSHoward Hinnant{ 3770c17e32eSHoward Hinnant unsigned long _Maxcode_; 3780c17e32eSHoward Hinnant codecvt_mode _Mode_; 3790c17e32eSHoward Hinnantpublic: 3800c17e32eSHoward Hinnant typedef char32_t intern_type; 3810c17e32eSHoward Hinnant typedef char extern_type; 3820c17e32eSHoward Hinnant typedef mbstate_t state_type; 3830c17e32eSHoward Hinnant 384dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 385*b48c5010SNikolas Klauser explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 386*b48c5010SNikolas Klauser codecvt_mode __mode) 387*b48c5010SNikolas Klauser : codecvt<char32_t, char, mbstate_t>(__refs), _Maxcode_(__maxcode), 388*b48c5010SNikolas Klauser _Mode_(__mode) {} 389a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_POP 390a984dcafSMarek Kurdej 3910c17e32eSHoward Hinnantprotected: 3920c17e32eSHoward Hinnant virtual result 3930c17e32eSHoward Hinnant do_out(state_type& __st, 3940c17e32eSHoward Hinnant const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 3950c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 3960c17e32eSHoward Hinnant virtual result 3970c17e32eSHoward Hinnant do_in(state_type& __st, 3980c17e32eSHoward Hinnant const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 3990c17e32eSHoward Hinnant intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 4000c17e32eSHoward Hinnant virtual result 4010c17e32eSHoward Hinnant do_unshift(state_type& __st, 4020c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 403585a3cc3SDimitry Andric virtual int do_encoding() const _NOEXCEPT; 404585a3cc3SDimitry Andric virtual bool do_always_noconv() const _NOEXCEPT; 4050c17e32eSHoward Hinnant virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 4060c17e32eSHoward Hinnant size_t __mx) const; 407585a3cc3SDimitry Andric virtual int do_max_length() const _NOEXCEPT; 4080c17e32eSHoward Hinnant}; 4090c17e32eSHoward Hinnant 410a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_PUSH 4110c17e32eSHoward Hinnanttemplate <> 412f0544c20SHoward Hinnantclass _LIBCPP_TYPE_VIS __codecvt_utf16<char32_t, true> 4130c17e32eSHoward Hinnant : public codecvt<char32_t, char, mbstate_t> 4140c17e32eSHoward Hinnant{ 4150c17e32eSHoward Hinnant unsigned long _Maxcode_; 4160c17e32eSHoward Hinnant codecvt_mode _Mode_; 4170c17e32eSHoward Hinnantpublic: 4180c17e32eSHoward Hinnant typedef char32_t intern_type; 4190c17e32eSHoward Hinnant typedef char extern_type; 4200c17e32eSHoward Hinnant typedef mbstate_t state_type; 4210c17e32eSHoward Hinnant 422dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 423*b48c5010SNikolas Klauser explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, 424*b48c5010SNikolas Klauser codecvt_mode __mode) 425*b48c5010SNikolas Klauser : codecvt<char32_t, char, mbstate_t>(__refs), _Maxcode_(__maxcode), 426*b48c5010SNikolas Klauser _Mode_(__mode) {} 427a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_POP 428a984dcafSMarek Kurdej 4290c17e32eSHoward Hinnantprotected: 4300c17e32eSHoward Hinnant virtual result 4310c17e32eSHoward Hinnant do_out(state_type& __st, 4320c17e32eSHoward Hinnant const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 4330c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 4340c17e32eSHoward Hinnant virtual result 4350c17e32eSHoward Hinnant do_in(state_type& __st, 4360c17e32eSHoward Hinnant const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 4370c17e32eSHoward Hinnant intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 4380c17e32eSHoward Hinnant virtual result 4390c17e32eSHoward Hinnant do_unshift(state_type& __st, 4400c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 441585a3cc3SDimitry Andric virtual int do_encoding() const _NOEXCEPT; 442585a3cc3SDimitry Andric virtual bool do_always_noconv() const _NOEXCEPT; 4430c17e32eSHoward Hinnant virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 4440c17e32eSHoward Hinnant size_t __mx) const; 445585a3cc3SDimitry Andric virtual int do_max_length() const _NOEXCEPT; 4460c17e32eSHoward Hinnant}; 4470c17e32eSHoward Hinnant 4483ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_PUSH 4490c17e32eSHoward Hinnanttemplate <class _Elem, unsigned long _Maxcode = 0x10ffff, 4500c17e32eSHoward Hinnant codecvt_mode _Mode = (codecvt_mode)0> 4513ee9a50aSNikolas Klauserclass _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf16 4520c17e32eSHoward Hinnant : public __codecvt_utf16<_Elem, _Mode & little_endian> 4530c17e32eSHoward Hinnant{ 4540c17e32eSHoward Hinnantpublic: 455dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 4560c17e32eSHoward Hinnant explicit codecvt_utf16(size_t __refs = 0) 4570c17e32eSHoward Hinnant : __codecvt_utf16<_Elem, _Mode & little_endian>(__refs, _Maxcode, _Mode) {} 4580c17e32eSHoward Hinnant 459dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 4600c17e32eSHoward Hinnant ~codecvt_utf16() {} 4610c17e32eSHoward Hinnant}; 4623ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_POP 4630c17e32eSHoward Hinnant 4640c17e32eSHoward Hinnant// codecvt_utf8_utf16 4650c17e32eSHoward Hinnant 4660c17e32eSHoward Hinnanttemplate <class _Elem> class __codecvt_utf8_utf16; 4670c17e32eSHoward Hinnant 468f4c1258dSLouis Dionne#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS 4690c17e32eSHoward Hinnanttemplate <> 470f0544c20SHoward Hinnantclass _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<wchar_t> 4710c17e32eSHoward Hinnant : public codecvt<wchar_t, char, mbstate_t> 4720c17e32eSHoward Hinnant{ 4730c17e32eSHoward Hinnant unsigned long _Maxcode_; 4743ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_PUSH 4750c17e32eSHoward Hinnant codecvt_mode _Mode_; 4763ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_POP 4770c17e32eSHoward Hinnantpublic: 4780c17e32eSHoward Hinnant typedef wchar_t intern_type; 4790c17e32eSHoward Hinnant typedef char extern_type; 4800c17e32eSHoward Hinnant typedef mbstate_t state_type; 4810c17e32eSHoward Hinnant 4823ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_PUSH 483dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 484*b48c5010SNikolas Klauser explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, 485*b48c5010SNikolas Klauser codecvt_mode __mode) 486*b48c5010SNikolas Klauser : codecvt<wchar_t, char, mbstate_t>(__refs), _Maxcode_(__maxcode), 487*b48c5010SNikolas Klauser _Mode_(__mode) {} 4883ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_POP 4890c17e32eSHoward Hinnantprotected: 4900c17e32eSHoward Hinnant virtual result 4910c17e32eSHoward Hinnant do_out(state_type& __st, 4920c17e32eSHoward Hinnant const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 4930c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 4940c17e32eSHoward Hinnant virtual result 4950c17e32eSHoward Hinnant do_in(state_type& __st, 4960c17e32eSHoward Hinnant const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 4970c17e32eSHoward Hinnant intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 4980c17e32eSHoward Hinnant virtual result 4990c17e32eSHoward Hinnant do_unshift(state_type& __st, 5000c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 501585a3cc3SDimitry Andric virtual int do_encoding() const _NOEXCEPT; 502585a3cc3SDimitry Andric virtual bool do_always_noconv() const _NOEXCEPT; 5030c17e32eSHoward Hinnant virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 5040c17e32eSHoward Hinnant size_t __mx) const; 505585a3cc3SDimitry Andric virtual int do_max_length() const _NOEXCEPT; 5060c17e32eSHoward Hinnant}; 507f4c1258dSLouis Dionne#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS 5080c17e32eSHoward Hinnant 509a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_PUSH 5100c17e32eSHoward Hinnanttemplate <> 511f0544c20SHoward Hinnantclass _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<char32_t> 5120c17e32eSHoward Hinnant : public codecvt<char32_t, char, mbstate_t> 5130c17e32eSHoward Hinnant{ 5140c17e32eSHoward Hinnant unsigned long _Maxcode_; 5150c17e32eSHoward Hinnant codecvt_mode _Mode_; 5160c17e32eSHoward Hinnantpublic: 5170c17e32eSHoward Hinnant typedef char32_t intern_type; 5180c17e32eSHoward Hinnant typedef char extern_type; 5190c17e32eSHoward Hinnant typedef mbstate_t state_type; 5200c17e32eSHoward Hinnant 521dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 522*b48c5010SNikolas Klauser explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, 523*b48c5010SNikolas Klauser codecvt_mode __mode) 524*b48c5010SNikolas Klauser : codecvt<char32_t, char, mbstate_t>(__refs), _Maxcode_(__maxcode), 525*b48c5010SNikolas Klauser _Mode_(__mode) {} 526a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_POP 527a984dcafSMarek Kurdej 5280c17e32eSHoward Hinnantprotected: 5290c17e32eSHoward Hinnant virtual result 5300c17e32eSHoward Hinnant do_out(state_type& __st, 5310c17e32eSHoward Hinnant const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 5320c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 5330c17e32eSHoward Hinnant virtual result 5340c17e32eSHoward Hinnant do_in(state_type& __st, 5350c17e32eSHoward Hinnant const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 5360c17e32eSHoward Hinnant intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 5370c17e32eSHoward Hinnant virtual result 5380c17e32eSHoward Hinnant do_unshift(state_type& __st, 5390c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 540585a3cc3SDimitry Andric virtual int do_encoding() const _NOEXCEPT; 541585a3cc3SDimitry Andric virtual bool do_always_noconv() const _NOEXCEPT; 5420c17e32eSHoward Hinnant virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 5430c17e32eSHoward Hinnant size_t __mx) const; 544585a3cc3SDimitry Andric virtual int do_max_length() const _NOEXCEPT; 5450c17e32eSHoward Hinnant}; 5460c17e32eSHoward Hinnant 547a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_PUSH 5480c17e32eSHoward Hinnanttemplate <> 549f0544c20SHoward Hinnantclass _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<char16_t> 5500c17e32eSHoward Hinnant : public codecvt<char16_t, char, mbstate_t> 5510c17e32eSHoward Hinnant{ 5520c17e32eSHoward Hinnant unsigned long _Maxcode_; 5530c17e32eSHoward Hinnant codecvt_mode _Mode_; 5540c17e32eSHoward Hinnantpublic: 5550c17e32eSHoward Hinnant typedef char16_t intern_type; 5560c17e32eSHoward Hinnant typedef char extern_type; 5570c17e32eSHoward Hinnant typedef mbstate_t state_type; 5580c17e32eSHoward Hinnant 559dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 560*b48c5010SNikolas Klauser explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, 561*b48c5010SNikolas Klauser codecvt_mode __mode) 562*b48c5010SNikolas Klauser : codecvt<char16_t, char, mbstate_t>(__refs), _Maxcode_(__maxcode), 563*b48c5010SNikolas Klauser _Mode_(__mode) {} 564a984dcafSMarek Kurdej_LIBCPP_SUPPRESS_DEPRECATED_POP 565a984dcafSMarek Kurdej 5660c17e32eSHoward Hinnantprotected: 5670c17e32eSHoward Hinnant virtual result 5680c17e32eSHoward Hinnant do_out(state_type& __st, 5690c17e32eSHoward Hinnant const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 5700c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 5710c17e32eSHoward Hinnant virtual result 5720c17e32eSHoward Hinnant do_in(state_type& __st, 5730c17e32eSHoward Hinnant const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 5740c17e32eSHoward Hinnant intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 5750c17e32eSHoward Hinnant virtual result 5760c17e32eSHoward Hinnant do_unshift(state_type& __st, 5770c17e32eSHoward Hinnant extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 578585a3cc3SDimitry Andric virtual int do_encoding() const _NOEXCEPT; 579585a3cc3SDimitry Andric virtual bool do_always_noconv() const _NOEXCEPT; 5800c17e32eSHoward Hinnant virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 5810c17e32eSHoward Hinnant size_t __mx) const; 582585a3cc3SDimitry Andric virtual int do_max_length() const _NOEXCEPT; 5830c17e32eSHoward Hinnant}; 5840c17e32eSHoward Hinnant 5853ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_PUSH 5860c17e32eSHoward Hinnanttemplate <class _Elem, unsigned long _Maxcode = 0x10ffff, 5870c17e32eSHoward Hinnant codecvt_mode _Mode = (codecvt_mode)0> 5883ee9a50aSNikolas Klauserclass _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf8_utf16 5890c17e32eSHoward Hinnant : public __codecvt_utf8_utf16<_Elem> 5900c17e32eSHoward Hinnant{ 5910c17e32eSHoward Hinnantpublic: 592dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 5930c17e32eSHoward Hinnant explicit codecvt_utf8_utf16(size_t __refs = 0) 5940c17e32eSHoward Hinnant : __codecvt_utf8_utf16<_Elem>(__refs, _Maxcode, _Mode) {} 5950c17e32eSHoward Hinnant 596dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 5970c17e32eSHoward Hinnant ~codecvt_utf8_utf16() {} 5980c17e32eSHoward Hinnant}; 5993ee9a50aSNikolas Klauser_LIBCPP_SUPPRESS_DEPRECATED_POP 6000c17e32eSHoward Hinnant 6010c17e32eSHoward Hinnant_LIBCPP_END_NAMESPACE_STD 6020c17e32eSHoward Hinnant 6030c17e32eSHoward Hinnant#endif // _LIBCPP_CODECVT 604