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