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