34 _M_locale() { |
34 _M_locale() { |
35 // _M_lock._M_initialize(); |
35 // _M_lock._M_initialize(); |
36 } |
36 } |
37 #endif |
37 #endif |
38 |
38 |
39 template <class _CharT, class _Traits> |
39 |
40 basic_streambuf<_CharT, _Traits>::~basic_streambuf() |
|
41 {} |
|
42 |
40 |
43 template <class _CharT, class _Traits> |
41 template <class _CharT, class _Traits> |
44 locale |
42 locale |
45 basic_streambuf<_CharT, _Traits>::pubimbue(const locale& __loc) { |
43 basic_streambuf<_CharT, _Traits>::pubimbue(const locale& __loc) { |
46 this->imbue(__loc); |
44 this->imbue(__loc); |
47 locale __tmp = _M_locale; |
45 locale __tmp = _M_locale; |
48 _M_locale = __loc; |
46 _M_locale = __loc; |
49 return __tmp; |
47 return __tmp; |
50 } |
48 } |
51 |
49 |
52 template <class _CharT, class _Traits> |
|
53 streamsize |
|
54 basic_streambuf<_CharT, _Traits>::xsgetn(_CharT* __s, streamsize __n) { |
|
55 streamsize __result = 0; |
|
56 const int_type __eof = _Traits::eof(); |
|
57 |
50 |
58 while (__result < __n) { |
|
59 if (_M_gnext < _M_gend) { |
|
60 size_t __chunk = (min) (__STATIC_CAST(size_t,_M_gend - _M_gnext), |
|
61 __STATIC_CAST(size_t,__n - __result)); |
|
62 _Traits::copy(__s, _M_gnext, __chunk); |
|
63 __result += __chunk; |
|
64 __s += __chunk; |
|
65 _M_gnext += __chunk; |
|
66 } |
|
67 else { |
|
68 int_type __c = this->sbumpc(); |
|
69 if (!_Traits::eq_int_type(__c, __eof)) { |
|
70 *__s = _Traits::to_char_type(__c); |
|
71 ++__result; |
|
72 ++__s; |
|
73 } |
|
74 else |
|
75 break; |
|
76 } |
|
77 } |
|
78 |
|
79 return __result; |
|
80 } |
|
81 |
|
82 template <class _CharT, class _Traits> |
|
83 streamsize |
|
84 basic_streambuf<_CharT, _Traits>::xsputn(const _CharT* __s, streamsize __n) |
|
85 { |
|
86 streamsize __result = 0; |
|
87 const int_type __eof = _Traits::eof(); |
|
88 |
|
89 while (__result < __n) { |
|
90 if (_M_pnext < _M_pend) { |
|
91 size_t __chunk = (min) (__STATIC_CAST(size_t,_M_pend - _M_pnext), |
|
92 __STATIC_CAST(size_t,__n - __result)); |
|
93 _Traits::copy(_M_pnext, __s, __chunk); |
|
94 __result += __chunk; |
|
95 __s += __chunk; |
|
96 _M_pnext += __chunk; |
|
97 } |
|
98 |
|
99 else if (!_Traits::eq_int_type(this->overflow(_Traits::to_int_type(*__s)), |
|
100 __eof)) { |
|
101 ++__result; |
|
102 ++__s; |
|
103 } |
|
104 else |
|
105 break; |
|
106 } |
|
107 return __result; |
|
108 } |
|
109 |
|
110 template <class _CharT, class _Traits> |
|
111 streamsize |
|
112 basic_streambuf<_CharT, _Traits>::_M_xsputnc(_CharT __c, streamsize __n) |
|
113 { |
|
114 streamsize __result = 0; |
|
115 const int_type __eof = _Traits::eof(); |
|
116 |
|
117 while (__result < __n) { |
|
118 if (_M_pnext < _M_pend) { |
|
119 size_t __chunk = (min) (__STATIC_CAST(size_t,_M_pend - _M_pnext), |
|
120 __STATIC_CAST(size_t,__n - __result)); |
|
121 _Traits::assign(_M_pnext, __chunk, __c); |
|
122 __result += __chunk; |
|
123 _M_pnext += __chunk; |
|
124 } |
|
125 |
|
126 else if (!_Traits::eq_int_type(this->overflow(_Traits::to_int_type(__c)), |
|
127 __eof)) |
|
128 ++__result; |
|
129 else |
|
130 break; |
|
131 } |
|
132 return __result; |
|
133 } |
|
134 |
51 |
135 template <class _CharT, class _Traits> |
52 template <class _CharT, class _Traits> |
136 _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type |
53 _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type |
137 basic_streambuf<_CharT, _Traits>::_M_snextc_aux() |
54 basic_streambuf<_CharT, _Traits>::_M_snextc_aux() |
138 { |
55 { |
143 _M_gnext = _M_gend; |
60 _M_gnext = _M_gend; |
144 return this->underflow(); |
61 return this->underflow(); |
145 } |
62 } |
146 } |
63 } |
147 |
64 |
148 template <class _CharT, class _Traits> |
|
149 _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type |
|
150 basic_streambuf<_CharT, _Traits>::pbackfail(int_type) { |
|
151 return _Traits::eof(); |
|
152 } |
|
153 |
65 |
154 template <class _CharT, class _Traits> |
|
155 _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type |
|
156 basic_streambuf<_CharT, _Traits>::overflow(int_type) { |
|
157 return _Traits::eof(); |
|
158 } |
|
159 |
|
160 template <class _CharT, class _Traits> |
|
161 _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type |
|
162 basic_streambuf<_CharT, _Traits>::uflow() { |
|
163 return ( _Traits::eq_int_type(this->underflow(),_Traits::eof()) ? |
|
164 _Traits::eof() : |
|
165 _Traits::to_int_type(*_M_gnext++)); |
|
166 } |
|
167 |
|
168 template <class _CharT, class _Traits> |
|
169 _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type |
|
170 basic_streambuf<_CharT, _Traits>::underflow() |
|
171 { return _Traits::eof(); } |
|
172 |
|
173 template <class _CharT, class _Traits> |
|
174 streamsize |
|
175 basic_streambuf<_CharT, _Traits>::showmanyc() |
|
176 { return 0; } |
|
177 |
|
178 template <class _CharT, class _Traits> |
|
179 void |
|
180 basic_streambuf<_CharT, _Traits>::imbue(const locale&) {} |
|
181 |
|
182 template <class _CharT, class _Traits> |
|
183 int |
|
184 basic_streambuf<_CharT, _Traits>::sync() { return 0; } |
|
185 |
|
186 template <class _CharT, class _Traits> |
|
187 _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::pos_type |
|
188 basic_streambuf<_CharT, _Traits>::seekpos(pos_type, ios_base::openmode) |
|
189 { return pos_type(-1); } |
|
190 |
|
191 template <class _CharT, class _Traits> |
|
192 _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::pos_type |
|
193 basic_streambuf<_CharT, _Traits>::seekoff(off_type, ios_base::seekdir, |
|
194 ios_base::openmode) |
|
195 { return pos_type(-1); } |
|
196 |
|
197 template <class _CharT, class _Traits> |
|
198 basic_streambuf<_CharT, _Traits>* |
|
199 basic_streambuf<_CharT, _Traits>:: setbuf(char_type*, streamsize) |
|
200 { return this; } |
|
201 |
66 |
202 _STLP_END_NAMESPACE |
67 _STLP_END_NAMESPACE |
203 |
68 |
204 #endif |
69 #endif |
205 |
70 |