|
1 /* |
|
2 * Copyright (c) 1999 |
|
3 * Silicon Graphics Computer Systems, Inc. |
|
4 * |
|
5 * Copyright (c) 1999 |
|
6 * Boris Fomitchev |
|
7 * |
|
8 * This material is provided "as is", with absolutely no warranty expressed |
|
9 * or implied. Any use is at your own risk. |
|
10 * |
|
11 * Permission to use or copy this software for any purpose is hereby granted |
|
12 * without fee, provided the above notices are retained on all copies. |
|
13 * Permission to modify the code and to distribute modified code is granted, |
|
14 * provided the above notices are retained, and a notice that the code was |
|
15 * modified is included with the above copyright notice. |
|
16 * |
|
17 */ |
|
18 #include "stlport_prefix.h" |
|
19 |
|
20 #include <locale> |
|
21 #include <algorithm> |
|
22 |
|
23 _STLP_BEGIN_NAMESPACE |
|
24 |
|
25 //---------------------------------------------------------------------- |
|
26 // codecvt<char, char, mbstate_t> |
|
27 |
|
28 codecvt<char, char, mbstate_t>::~codecvt() {} |
|
29 |
|
30 int codecvt<char, char, mbstate_t>::do_length(state_type&, |
|
31 const char* from, |
|
32 const char* end, |
|
33 size_t mx) const |
|
34 { return (int)(min) ( __STATIC_CAST(size_t, (end - from)), mx); } |
|
35 |
|
36 int codecvt<char, char, mbstate_t>::do_max_length() const _STLP_NOTHROW |
|
37 { return 1; } |
|
38 |
|
39 bool |
|
40 codecvt<char, char, mbstate_t>::do_always_noconv() const _STLP_NOTHROW |
|
41 { return true; } |
|
42 |
|
43 int |
|
44 codecvt<char, char, mbstate_t>::do_encoding() const _STLP_NOTHROW |
|
45 { return 1; } |
|
46 |
|
47 codecvt_base::result |
|
48 codecvt<char, char, mbstate_t>::do_unshift(state_type& /* __state */, |
|
49 char* __to, |
|
50 char* /* __to_limit */, |
|
51 char*& __to_next) const |
|
52 { __to_next = __to; return noconv; } |
|
53 |
|
54 codecvt_base::result |
|
55 codecvt<char, char, mbstate_t>::do_in (state_type& /* __state */ , |
|
56 const char* __from, |
|
57 const char* /* __from_end */, |
|
58 const char*& __from_next, |
|
59 char* __to, |
|
60 char* /* __to_end */, |
|
61 char*& __to_next) const |
|
62 { __from_next = __from; __to_next = __to; return noconv; } |
|
63 |
|
64 codecvt_base::result |
|
65 codecvt<char, char, mbstate_t>::do_out(state_type& /* __state */, |
|
66 const char* __from, |
|
67 const char* /* __from_end */, |
|
68 const char*& __from_next, |
|
69 char* __to, |
|
70 char* /* __to_limit */, |
|
71 char*& __to_next) const |
|
72 { __from_next = __from; __to_next = __to; return noconv; } |
|
73 |
|
74 |
|
75 #if !defined (_STLP_NO_WCHAR_T) |
|
76 //---------------------------------------------------------------------- |
|
77 // codecvt<wchar_t, char, mbstate_t> |
|
78 |
|
79 codecvt<wchar_t, char, mbstate_t>::~codecvt() {} |
|
80 |
|
81 |
|
82 codecvt<wchar_t, char, mbstate_t>::result |
|
83 codecvt<wchar_t, char, mbstate_t>::do_out(state_type& /* state */, |
|
84 const intern_type* from, |
|
85 const intern_type* from_end, |
|
86 const intern_type*& from_next, |
|
87 extern_type* to, |
|
88 extern_type* to_limit, |
|
89 extern_type*& to_next) const { |
|
90 ptrdiff_t len = (min) (from_end - from, to_limit - to); |
|
91 copy(from, from + len, to); |
|
92 from_next = from + len; |
|
93 to_next = to + len; |
|
94 return ok; |
|
95 } |
|
96 |
|
97 codecvt<wchar_t, char, mbstate_t>::result |
|
98 codecvt<wchar_t, char, mbstate_t>::do_in (state_type& /* state */, |
|
99 const extern_type* from, |
|
100 const extern_type* from_end, |
|
101 const extern_type*& from_next, |
|
102 intern_type* to, |
|
103 intern_type* to_limit, |
|
104 intern_type*& to_next) const { |
|
105 ptrdiff_t len = (min) (from_end - from, to_limit - to); |
|
106 copy(__REINTERPRET_CAST(const unsigned char*, from), |
|
107 __REINTERPRET_CAST(const unsigned char*, from) + len, to); |
|
108 from_next = from + len; |
|
109 to_next = to + len; |
|
110 return ok; |
|
111 } |
|
112 |
|
113 codecvt<wchar_t, char, mbstate_t>::result |
|
114 codecvt<wchar_t, char, mbstate_t>::do_unshift(state_type& /* state */, |
|
115 extern_type* to, |
|
116 extern_type* , |
|
117 extern_type*& to_next) const { |
|
118 to_next = to; |
|
119 return noconv; |
|
120 } |
|
121 |
|
122 int codecvt<wchar_t, char, mbstate_t>::do_encoding() const _STLP_NOTHROW |
|
123 { return 1; } |
|
124 |
|
125 bool codecvt<wchar_t, char, mbstate_t>::do_always_noconv() const _STLP_NOTHROW |
|
126 { return true; } |
|
127 |
|
128 int codecvt<wchar_t, char, mbstate_t>::do_length(state_type&, |
|
129 const extern_type* from, |
|
130 const extern_type* end, |
|
131 size_t mx) const |
|
132 { return (int)(min) ((size_t) (end - from), mx); } |
|
133 |
|
134 int codecvt<wchar_t, char, mbstate_t>::do_max_length() const _STLP_NOTHROW |
|
135 { return 1; } |
|
136 #endif /* wchar_t */ |
|
137 |
|
138 _STLP_END_NAMESPACE |
|
139 |
|
140 // Local Variables: |
|
141 // mode:C++ |
|
142 // End: |
|
143 |