codecvt revision 227825
1227825Stheraven// -*- C++ -*- 2227825Stheraven//===-------------------------- codecvt -----------------------------------===// 3227825Stheraven// 4227825Stheraven// The LLVM Compiler Infrastructure 5227825Stheraven// 6227825Stheraven// This file is dual licensed under the MIT and the University of Illinois Open 7227825Stheraven// Source Licenses. See LICENSE.TXT for details. 8227825Stheraven// 9227825Stheraven//===----------------------------------------------------------------------===// 10227825Stheraven 11227825Stheraven#ifndef _LIBCPP_CODECVT 12227825Stheraven#define _LIBCPP_CODECVT 13227825Stheraven 14227825Stheraven/* 15227825Stheraven codecvt synopsis 16227825Stheraven 17227825Stheravennamespace std 18227825Stheraven{ 19227825Stheraven 20227825Stheravenenum codecvt_mode 21227825Stheraven{ 22227825Stheraven consume_header = 4, 23227825Stheraven generate_header = 2, 24227825Stheraven little_endian = 1 25227825Stheraven}; 26227825Stheraven 27227825Stheraventemplate <class Elem, unsigned long Maxcode = 0x10ffff, 28227825Stheraven codecvt_mode Mode = (codecvt_mode)0> 29227825Stheravenclass codecvt_utf8 30227825Stheraven : public codecvt<Elem, char, mbstate_t> 31227825Stheraven{ 32227825Stheraven // unspecified 33227825Stheraven}; 34227825Stheraven 35227825Stheraventemplate <class Elem, unsigned long Maxcode = 0x10ffff, 36227825Stheraven codecvt_mode Mode = (codecvt_mode)0> 37227825Stheravenclass codecvt_utf16 38227825Stheraven : public codecvt<Elem, char, mbstate_t> 39227825Stheraven{ 40227825Stheraven // unspecified 41227825Stheraven}; 42227825Stheraven 43227825Stheraventemplate <class Elem, unsigned long Maxcode = 0x10ffff, 44227825Stheraven codecvt_mode Mode = (codecvt_mode)0> 45227825Stheravenclass codecvt_utf8_utf16 46227825Stheraven : public codecvt<Elem, char, mbstate_t> 47227825Stheraven{ 48227825Stheraven // unspecified 49227825Stheraven}; 50227825Stheraven 51227825Stheraven} // std 52227825Stheraven 53227825Stheraven*/ 54227825Stheraven 55227825Stheraven#include <__config> 56227825Stheraven#include <__locale> 57227825Stheraven 58227825Stheraven#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 59227825Stheraven#pragma GCC system_header 60227825Stheraven#endif 61227825Stheraven 62227825Stheraven_LIBCPP_BEGIN_NAMESPACE_STD 63227825Stheraven 64227825Stheravenenum codecvt_mode 65227825Stheraven{ 66227825Stheraven consume_header = 4, 67227825Stheraven generate_header = 2, 68227825Stheraven little_endian = 1 69227825Stheraven}; 70227825Stheraven 71227825Stheraven// codecvt_utf8 72227825Stheraven 73227825Stheraventemplate <class _Elem> class __codecvt_utf8; 74227825Stheraven 75227825Stheraventemplate <> 76227825Stheravenclass __codecvt_utf8<wchar_t> 77227825Stheraven : public codecvt<wchar_t, char, mbstate_t> 78227825Stheraven{ 79227825Stheraven unsigned long _Maxcode_; 80227825Stheraven codecvt_mode _Mode_; 81227825Stheravenpublic: 82227825Stheraven typedef wchar_t intern_type; 83227825Stheraven typedef char extern_type; 84227825Stheraven typedef mbstate_t state_type; 85227825Stheraven 86227825Stheraven _LIBCPP_ALWAYS_INLINE 87227825Stheraven explicit __codecvt_utf8(size_t __refs, unsigned long _Maxcode, 88227825Stheraven codecvt_mode _Mode) 89227825Stheraven : codecvt<wchar_t, char, mbstate_t>(__refs), _Maxcode_(_Maxcode), 90227825Stheraven _Mode_(_Mode) {} 91227825Stheravenprotected: 92227825Stheraven virtual result 93227825Stheraven do_out(state_type& __st, 94227825Stheraven const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 95227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 96227825Stheraven virtual result 97227825Stheraven do_in(state_type& __st, 98227825Stheraven const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 99227825Stheraven intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 100227825Stheraven virtual result 101227825Stheraven do_unshift(state_type& __st, 102227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 103227825Stheraven virtual int do_encoding() const throw(); 104227825Stheraven virtual bool do_always_noconv() const throw(); 105227825Stheraven virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 106227825Stheraven size_t __mx) const; 107227825Stheraven virtual int do_max_length() const throw(); 108227825Stheraven}; 109227825Stheraven 110227825Stheraventemplate <> 111227825Stheravenclass __codecvt_utf8<char16_t> 112227825Stheraven : public codecvt<char16_t, char, mbstate_t> 113227825Stheraven{ 114227825Stheraven unsigned long _Maxcode_; 115227825Stheraven codecvt_mode _Mode_; 116227825Stheravenpublic: 117227825Stheraven typedef char16_t intern_type; 118227825Stheraven typedef char extern_type; 119227825Stheraven typedef mbstate_t state_type; 120227825Stheraven 121227825Stheraven _LIBCPP_ALWAYS_INLINE 122227825Stheraven explicit __codecvt_utf8(size_t __refs, unsigned long _Maxcode, 123227825Stheraven codecvt_mode _Mode) 124227825Stheraven : codecvt<char16_t, char, mbstate_t>(__refs), _Maxcode_(_Maxcode), 125227825Stheraven _Mode_(_Mode) {} 126227825Stheravenprotected: 127227825Stheraven virtual result 128227825Stheraven do_out(state_type& __st, 129227825Stheraven const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 130227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 131227825Stheraven virtual result 132227825Stheraven do_in(state_type& __st, 133227825Stheraven const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 134227825Stheraven intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 135227825Stheraven virtual result 136227825Stheraven do_unshift(state_type& __st, 137227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 138227825Stheraven virtual int do_encoding() const throw(); 139227825Stheraven virtual bool do_always_noconv() const throw(); 140227825Stheraven virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 141227825Stheraven size_t __mx) const; 142227825Stheraven virtual int do_max_length() const throw(); 143227825Stheraven}; 144227825Stheraven 145227825Stheraventemplate <> 146227825Stheravenclass __codecvt_utf8<char32_t> 147227825Stheraven : public codecvt<char32_t, char, mbstate_t> 148227825Stheraven{ 149227825Stheraven unsigned long _Maxcode_; 150227825Stheraven codecvt_mode _Mode_; 151227825Stheravenpublic: 152227825Stheraven typedef char32_t intern_type; 153227825Stheraven typedef char extern_type; 154227825Stheraven typedef mbstate_t state_type; 155227825Stheraven 156227825Stheraven _LIBCPP_ALWAYS_INLINE 157227825Stheraven explicit __codecvt_utf8(size_t __refs, unsigned long _Maxcode, 158227825Stheraven codecvt_mode _Mode) 159227825Stheraven : codecvt<char32_t, char, mbstate_t>(__refs), _Maxcode_(_Maxcode), 160227825Stheraven _Mode_(_Mode) {} 161227825Stheravenprotected: 162227825Stheraven virtual result 163227825Stheraven do_out(state_type& __st, 164227825Stheraven const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 165227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 166227825Stheraven virtual result 167227825Stheraven do_in(state_type& __st, 168227825Stheraven const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 169227825Stheraven intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 170227825Stheraven virtual result 171227825Stheraven do_unshift(state_type& __st, 172227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 173227825Stheraven virtual int do_encoding() const throw(); 174227825Stheraven virtual bool do_always_noconv() const throw(); 175227825Stheraven virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 176227825Stheraven size_t __mx) const; 177227825Stheraven virtual int do_max_length() const throw(); 178227825Stheraven}; 179227825Stheraven 180227825Stheraventemplate <class _Elem, unsigned long _Maxcode = 0x10ffff, 181227825Stheraven codecvt_mode _Mode = (codecvt_mode)0> 182227825Stheravenclass _LIBCPP_VISIBLE codecvt_utf8 183227825Stheraven : public __codecvt_utf8<_Elem> 184227825Stheraven{ 185227825Stheravenpublic: 186227825Stheraven _LIBCPP_ALWAYS_INLINE 187227825Stheraven explicit codecvt_utf8(size_t __refs = 0) 188227825Stheraven : __codecvt_utf8<_Elem>(__refs, _Maxcode, _Mode) {} 189227825Stheraven 190227825Stheraven _LIBCPP_ALWAYS_INLINE 191227825Stheraven ~codecvt_utf8() {} 192227825Stheraven}; 193227825Stheraven 194227825Stheraven// codecvt_utf16 195227825Stheraven 196227825Stheraventemplate <class _Elem, bool _LittleEndian> class __codecvt_utf16; 197227825Stheraven 198227825Stheraventemplate <> 199227825Stheravenclass __codecvt_utf16<wchar_t, false> 200227825Stheraven : public codecvt<wchar_t, char, mbstate_t> 201227825Stheraven{ 202227825Stheraven unsigned long _Maxcode_; 203227825Stheraven codecvt_mode _Mode_; 204227825Stheravenpublic: 205227825Stheraven typedef wchar_t intern_type; 206227825Stheraven typedef char extern_type; 207227825Stheraven typedef mbstate_t state_type; 208227825Stheraven 209227825Stheraven _LIBCPP_ALWAYS_INLINE 210227825Stheraven explicit __codecvt_utf16(size_t __refs, unsigned long _Maxcode, 211227825Stheraven codecvt_mode _Mode) 212227825Stheraven : codecvt<wchar_t, char, mbstate_t>(__refs), _Maxcode_(_Maxcode), 213227825Stheraven _Mode_(_Mode) {} 214227825Stheravenprotected: 215227825Stheraven virtual result 216227825Stheraven do_out(state_type& __st, 217227825Stheraven const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 218227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 219227825Stheraven virtual result 220227825Stheraven do_in(state_type& __st, 221227825Stheraven const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 222227825Stheraven intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 223227825Stheraven virtual result 224227825Stheraven do_unshift(state_type& __st, 225227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 226227825Stheraven virtual int do_encoding() const throw(); 227227825Stheraven virtual bool do_always_noconv() const throw(); 228227825Stheraven virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 229227825Stheraven size_t __mx) const; 230227825Stheraven virtual int do_max_length() const throw(); 231227825Stheraven}; 232227825Stheraven 233227825Stheraventemplate <> 234227825Stheravenclass __codecvt_utf16<wchar_t, true> 235227825Stheraven : public codecvt<wchar_t, char, mbstate_t> 236227825Stheraven{ 237227825Stheraven unsigned long _Maxcode_; 238227825Stheraven codecvt_mode _Mode_; 239227825Stheravenpublic: 240227825Stheraven typedef wchar_t intern_type; 241227825Stheraven typedef char extern_type; 242227825Stheraven typedef mbstate_t state_type; 243227825Stheraven 244227825Stheraven _LIBCPP_ALWAYS_INLINE 245227825Stheraven explicit __codecvt_utf16(size_t __refs, unsigned long _Maxcode, 246227825Stheraven codecvt_mode _Mode) 247227825Stheraven : codecvt<wchar_t, char, mbstate_t>(__refs), _Maxcode_(_Maxcode), 248227825Stheraven _Mode_(_Mode) {} 249227825Stheravenprotected: 250227825Stheraven virtual result 251227825Stheraven do_out(state_type& __st, 252227825Stheraven const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 253227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 254227825Stheraven virtual result 255227825Stheraven do_in(state_type& __st, 256227825Stheraven const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 257227825Stheraven intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 258227825Stheraven virtual result 259227825Stheraven do_unshift(state_type& __st, 260227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 261227825Stheraven virtual int do_encoding() const throw(); 262227825Stheraven virtual bool do_always_noconv() const throw(); 263227825Stheraven virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 264227825Stheraven size_t __mx) const; 265227825Stheraven virtual int do_max_length() const throw(); 266227825Stheraven}; 267227825Stheraven 268227825Stheraventemplate <> 269227825Stheravenclass __codecvt_utf16<char16_t, false> 270227825Stheraven : public codecvt<char16_t, char, mbstate_t> 271227825Stheraven{ 272227825Stheraven unsigned long _Maxcode_; 273227825Stheraven codecvt_mode _Mode_; 274227825Stheravenpublic: 275227825Stheraven typedef char16_t intern_type; 276227825Stheraven typedef char extern_type; 277227825Stheraven typedef mbstate_t state_type; 278227825Stheraven 279227825Stheraven _LIBCPP_ALWAYS_INLINE 280227825Stheraven explicit __codecvt_utf16(size_t __refs, unsigned long _Maxcode, 281227825Stheraven codecvt_mode _Mode) 282227825Stheraven : codecvt<char16_t, char, mbstate_t>(__refs), _Maxcode_(_Maxcode), 283227825Stheraven _Mode_(_Mode) {} 284227825Stheravenprotected: 285227825Stheraven virtual result 286227825Stheraven do_out(state_type& __st, 287227825Stheraven const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 288227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 289227825Stheraven virtual result 290227825Stheraven do_in(state_type& __st, 291227825Stheraven const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 292227825Stheraven intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 293227825Stheraven virtual result 294227825Stheraven do_unshift(state_type& __st, 295227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 296227825Stheraven virtual int do_encoding() const throw(); 297227825Stheraven virtual bool do_always_noconv() const throw(); 298227825Stheraven virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 299227825Stheraven size_t __mx) const; 300227825Stheraven virtual int do_max_length() const throw(); 301227825Stheraven}; 302227825Stheraven 303227825Stheraventemplate <> 304227825Stheravenclass __codecvt_utf16<char16_t, true> 305227825Stheraven : public codecvt<char16_t, char, mbstate_t> 306227825Stheraven{ 307227825Stheraven unsigned long _Maxcode_; 308227825Stheraven codecvt_mode _Mode_; 309227825Stheravenpublic: 310227825Stheraven typedef char16_t intern_type; 311227825Stheraven typedef char extern_type; 312227825Stheraven typedef mbstate_t state_type; 313227825Stheraven 314227825Stheraven _LIBCPP_ALWAYS_INLINE 315227825Stheraven explicit __codecvt_utf16(size_t __refs, unsigned long _Maxcode, 316227825Stheraven codecvt_mode _Mode) 317227825Stheraven : codecvt<char16_t, char, mbstate_t>(__refs), _Maxcode_(_Maxcode), 318227825Stheraven _Mode_(_Mode) {} 319227825Stheravenprotected: 320227825Stheraven virtual result 321227825Stheraven do_out(state_type& __st, 322227825Stheraven const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 323227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 324227825Stheraven virtual result 325227825Stheraven do_in(state_type& __st, 326227825Stheraven const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 327227825Stheraven intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 328227825Stheraven virtual result 329227825Stheraven do_unshift(state_type& __st, 330227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 331227825Stheraven virtual int do_encoding() const throw(); 332227825Stheraven virtual bool do_always_noconv() const throw(); 333227825Stheraven virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 334227825Stheraven size_t __mx) const; 335227825Stheraven virtual int do_max_length() const throw(); 336227825Stheraven}; 337227825Stheraven 338227825Stheraventemplate <> 339227825Stheravenclass __codecvt_utf16<char32_t, false> 340227825Stheraven : public codecvt<char32_t, char, mbstate_t> 341227825Stheraven{ 342227825Stheraven unsigned long _Maxcode_; 343227825Stheraven codecvt_mode _Mode_; 344227825Stheravenpublic: 345227825Stheraven typedef char32_t intern_type; 346227825Stheraven typedef char extern_type; 347227825Stheraven typedef mbstate_t state_type; 348227825Stheraven 349227825Stheraven _LIBCPP_ALWAYS_INLINE 350227825Stheraven explicit __codecvt_utf16(size_t __refs, unsigned long _Maxcode, 351227825Stheraven codecvt_mode _Mode) 352227825Stheraven : codecvt<char32_t, char, mbstate_t>(__refs), _Maxcode_(_Maxcode), 353227825Stheraven _Mode_(_Mode) {} 354227825Stheravenprotected: 355227825Stheraven virtual result 356227825Stheraven do_out(state_type& __st, 357227825Stheraven const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 358227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 359227825Stheraven virtual result 360227825Stheraven do_in(state_type& __st, 361227825Stheraven const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 362227825Stheraven intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 363227825Stheraven virtual result 364227825Stheraven do_unshift(state_type& __st, 365227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 366227825Stheraven virtual int do_encoding() const throw(); 367227825Stheraven virtual bool do_always_noconv() const throw(); 368227825Stheraven virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 369227825Stheraven size_t __mx) const; 370227825Stheraven virtual int do_max_length() const throw(); 371227825Stheraven}; 372227825Stheraven 373227825Stheraventemplate <> 374227825Stheravenclass __codecvt_utf16<char32_t, true> 375227825Stheraven : public codecvt<char32_t, char, mbstate_t> 376227825Stheraven{ 377227825Stheraven unsigned long _Maxcode_; 378227825Stheraven codecvt_mode _Mode_; 379227825Stheravenpublic: 380227825Stheraven typedef char32_t intern_type; 381227825Stheraven typedef char extern_type; 382227825Stheraven typedef mbstate_t state_type; 383227825Stheraven 384227825Stheraven _LIBCPP_ALWAYS_INLINE 385227825Stheraven explicit __codecvt_utf16(size_t __refs, unsigned long _Maxcode, 386227825Stheraven codecvt_mode _Mode) 387227825Stheraven : codecvt<char32_t, char, mbstate_t>(__refs), _Maxcode_(_Maxcode), 388227825Stheraven _Mode_(_Mode) {} 389227825Stheravenprotected: 390227825Stheraven virtual result 391227825Stheraven do_out(state_type& __st, 392227825Stheraven const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 393227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 394227825Stheraven virtual result 395227825Stheraven do_in(state_type& __st, 396227825Stheraven const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 397227825Stheraven intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 398227825Stheraven virtual result 399227825Stheraven do_unshift(state_type& __st, 400227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 401227825Stheraven virtual int do_encoding() const throw(); 402227825Stheraven virtual bool do_always_noconv() const throw(); 403227825Stheraven virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 404227825Stheraven size_t __mx) const; 405227825Stheraven virtual int do_max_length() const throw(); 406227825Stheraven}; 407227825Stheraven 408227825Stheraventemplate <class _Elem, unsigned long _Maxcode = 0x10ffff, 409227825Stheraven codecvt_mode _Mode = (codecvt_mode)0> 410227825Stheravenclass _LIBCPP_VISIBLE codecvt_utf16 411227825Stheraven : public __codecvt_utf16<_Elem, _Mode & little_endian> 412227825Stheraven{ 413227825Stheravenpublic: 414227825Stheraven _LIBCPP_ALWAYS_INLINE 415227825Stheraven explicit codecvt_utf16(size_t __refs = 0) 416227825Stheraven : __codecvt_utf16<_Elem, _Mode & little_endian>(__refs, _Maxcode, _Mode) {} 417227825Stheraven 418227825Stheraven _LIBCPP_ALWAYS_INLINE 419227825Stheraven ~codecvt_utf16() {} 420227825Stheraven}; 421227825Stheraven 422227825Stheraven// codecvt_utf8_utf16 423227825Stheraven 424227825Stheraventemplate <class _Elem> class __codecvt_utf8_utf16; 425227825Stheraven 426227825Stheraventemplate <> 427227825Stheravenclass __codecvt_utf8_utf16<wchar_t> 428227825Stheraven : public codecvt<wchar_t, char, mbstate_t> 429227825Stheraven{ 430227825Stheraven unsigned long _Maxcode_; 431227825Stheraven codecvt_mode _Mode_; 432227825Stheravenpublic: 433227825Stheraven typedef wchar_t intern_type; 434227825Stheraven typedef char extern_type; 435227825Stheraven typedef mbstate_t state_type; 436227825Stheraven 437227825Stheraven _LIBCPP_ALWAYS_INLINE 438227825Stheraven explicit __codecvt_utf8_utf16(size_t __refs, unsigned long _Maxcode, 439227825Stheraven codecvt_mode _Mode) 440227825Stheraven : codecvt<wchar_t, char, mbstate_t>(__refs), _Maxcode_(_Maxcode), 441227825Stheraven _Mode_(_Mode) {} 442227825Stheravenprotected: 443227825Stheraven virtual result 444227825Stheraven do_out(state_type& __st, 445227825Stheraven const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 446227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 447227825Stheraven virtual result 448227825Stheraven do_in(state_type& __st, 449227825Stheraven const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 450227825Stheraven intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 451227825Stheraven virtual result 452227825Stheraven do_unshift(state_type& __st, 453227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 454227825Stheraven virtual int do_encoding() const throw(); 455227825Stheraven virtual bool do_always_noconv() const throw(); 456227825Stheraven virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 457227825Stheraven size_t __mx) const; 458227825Stheraven virtual int do_max_length() const throw(); 459227825Stheraven}; 460227825Stheraven 461227825Stheraventemplate <> 462227825Stheravenclass __codecvt_utf8_utf16<char32_t> 463227825Stheraven : public codecvt<char32_t, char, mbstate_t> 464227825Stheraven{ 465227825Stheraven unsigned long _Maxcode_; 466227825Stheraven codecvt_mode _Mode_; 467227825Stheravenpublic: 468227825Stheraven typedef char32_t intern_type; 469227825Stheraven typedef char extern_type; 470227825Stheraven typedef mbstate_t state_type; 471227825Stheraven 472227825Stheraven _LIBCPP_ALWAYS_INLINE 473227825Stheraven explicit __codecvt_utf8_utf16(size_t __refs, unsigned long _Maxcode, 474227825Stheraven codecvt_mode _Mode) 475227825Stheraven : codecvt<char32_t, char, mbstate_t>(__refs), _Maxcode_(_Maxcode), 476227825Stheraven _Mode_(_Mode) {} 477227825Stheravenprotected: 478227825Stheraven virtual result 479227825Stheraven do_out(state_type& __st, 480227825Stheraven const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 481227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 482227825Stheraven virtual result 483227825Stheraven do_in(state_type& __st, 484227825Stheraven const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 485227825Stheraven intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 486227825Stheraven virtual result 487227825Stheraven do_unshift(state_type& __st, 488227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 489227825Stheraven virtual int do_encoding() const throw(); 490227825Stheraven virtual bool do_always_noconv() const throw(); 491227825Stheraven virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 492227825Stheraven size_t __mx) const; 493227825Stheraven virtual int do_max_length() const throw(); 494227825Stheraven}; 495227825Stheraven 496227825Stheraventemplate <> 497227825Stheravenclass __codecvt_utf8_utf16<char16_t> 498227825Stheraven : public codecvt<char16_t, char, mbstate_t> 499227825Stheraven{ 500227825Stheraven unsigned long _Maxcode_; 501227825Stheraven codecvt_mode _Mode_; 502227825Stheravenpublic: 503227825Stheraven typedef char16_t intern_type; 504227825Stheraven typedef char extern_type; 505227825Stheraven typedef mbstate_t state_type; 506227825Stheraven 507227825Stheraven _LIBCPP_ALWAYS_INLINE 508227825Stheraven explicit __codecvt_utf8_utf16(size_t __refs, unsigned long _Maxcode, 509227825Stheraven codecvt_mode _Mode) 510227825Stheraven : codecvt<char16_t, char, mbstate_t>(__refs), _Maxcode_(_Maxcode), 511227825Stheraven _Mode_(_Mode) {} 512227825Stheravenprotected: 513227825Stheraven virtual result 514227825Stheraven do_out(state_type& __st, 515227825Stheraven const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, 516227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 517227825Stheraven virtual result 518227825Stheraven do_in(state_type& __st, 519227825Stheraven const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, 520227825Stheraven intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; 521227825Stheraven virtual result 522227825Stheraven do_unshift(state_type& __st, 523227825Stheraven extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; 524227825Stheraven virtual int do_encoding() const throw(); 525227825Stheraven virtual bool do_always_noconv() const throw(); 526227825Stheraven virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, 527227825Stheraven size_t __mx) const; 528227825Stheraven virtual int do_max_length() const throw(); 529227825Stheraven}; 530227825Stheraven 531227825Stheraventemplate <class _Elem, unsigned long _Maxcode = 0x10ffff, 532227825Stheraven codecvt_mode _Mode = (codecvt_mode)0> 533227825Stheravenclass _LIBCPP_VISIBLE codecvt_utf8_utf16 534227825Stheraven : public __codecvt_utf8_utf16<_Elem> 535227825Stheraven{ 536227825Stheravenpublic: 537227825Stheraven _LIBCPP_ALWAYS_INLINE 538227825Stheraven explicit codecvt_utf8_utf16(size_t __refs = 0) 539227825Stheraven : __codecvt_utf8_utf16<_Elem>(__refs, _Maxcode, _Mode) {} 540227825Stheraven 541227825Stheraven _LIBCPP_ALWAYS_INLINE 542227825Stheraven ~codecvt_utf8_utf16() {} 543227825Stheraven}; 544227825Stheraven 545227825Stheraven_LIBCPP_END_NAMESPACE_STD 546227825Stheraven 547227825Stheraven#endif // _LIBCPP_CODECVT 548