Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: third_party/libcxx/include/codecvt

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

Powered by Google App Engine
This is Rietveld 408576698