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