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