annotate libstdc++-v3/include/bits/ostream.tcc @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // ostream classes -*- C++ -*-
kono
parents:
diff changeset
2
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3 // Copyright (C) 1997-2020 Free Software Foundation, Inc.
111
kono
parents:
diff changeset
4 //
kono
parents:
diff changeset
5 // This file is part of the GNU ISO C++ Library. This library is free
kono
parents:
diff changeset
6 // software; you can redistribute it and/or modify it under the
kono
parents:
diff changeset
7 // terms of the GNU General Public License as published by the
kono
parents:
diff changeset
8 // Free Software Foundation; either version 3, or (at your option)
kono
parents:
diff changeset
9 // any later version.
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 // This library is distributed in the hope that it will be useful,
kono
parents:
diff changeset
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
kono
parents:
diff changeset
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
kono
parents:
diff changeset
14 // GNU General Public License for more details.
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 // Under Section 7 of GPL version 3, you are granted additional
kono
parents:
diff changeset
17 // permissions described in the GCC Runtime Library Exception, version
kono
parents:
diff changeset
18 // 3.1, as published by the Free Software Foundation.
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 // You should have received a copy of the GNU General Public License and
kono
parents:
diff changeset
21 // a copy of the GCC Runtime Library Exception along with this program;
kono
parents:
diff changeset
22 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
kono
parents:
diff changeset
23 // <http://www.gnu.org/licenses/>.
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 /** @file bits/ostream.tcc
kono
parents:
diff changeset
26 * This is an internal header file, included by other library headers.
kono
parents:
diff changeset
27 * Do not attempt to use it directly. @headername{ostream}
kono
parents:
diff changeset
28 */
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 //
kono
parents:
diff changeset
31 // ISO C++ 14882: 27.6.2 Output streams
kono
parents:
diff changeset
32 //
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 #ifndef _OSTREAM_TCC
kono
parents:
diff changeset
35 #define _OSTREAM_TCC 1
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 #pragma GCC system_header
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 #include <bits/cxxabi_forced.h>
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 namespace std _GLIBCXX_VISIBILITY(default)
kono
parents:
diff changeset
42 {
kono
parents:
diff changeset
43 _GLIBCXX_BEGIN_NAMESPACE_VERSION
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 template<typename _CharT, typename _Traits>
kono
parents:
diff changeset
46 basic_ostream<_CharT, _Traits>::sentry::
kono
parents:
diff changeset
47 sentry(basic_ostream<_CharT, _Traits>& __os)
kono
parents:
diff changeset
48 : _M_ok(false), _M_os(__os)
kono
parents:
diff changeset
49 {
kono
parents:
diff changeset
50 // XXX MT
kono
parents:
diff changeset
51 if (__os.tie() && __os.good())
kono
parents:
diff changeset
52 __os.tie()->flush();
kono
parents:
diff changeset
53
kono
parents:
diff changeset
54 if (__os.good())
kono
parents:
diff changeset
55 _M_ok = true;
kono
parents:
diff changeset
56 else
kono
parents:
diff changeset
57 __os.setstate(ios_base::failbit);
kono
parents:
diff changeset
58 }
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 template<typename _CharT, typename _Traits>
kono
parents:
diff changeset
61 template<typename _ValueT>
kono
parents:
diff changeset
62 basic_ostream<_CharT, _Traits>&
kono
parents:
diff changeset
63 basic_ostream<_CharT, _Traits>::
kono
parents:
diff changeset
64 _M_insert(_ValueT __v)
kono
parents:
diff changeset
65 {
kono
parents:
diff changeset
66 sentry __cerb(*this);
kono
parents:
diff changeset
67 if (__cerb)
kono
parents:
diff changeset
68 {
kono
parents:
diff changeset
69 ios_base::iostate __err = ios_base::goodbit;
kono
parents:
diff changeset
70 __try
kono
parents:
diff changeset
71 {
kono
parents:
diff changeset
72 const __num_put_type& __np = __check_facet(this->_M_num_put);
kono
parents:
diff changeset
73 if (__np.put(*this, *this, this->fill(), __v).failed())
kono
parents:
diff changeset
74 __err |= ios_base::badbit;
kono
parents:
diff changeset
75 }
kono
parents:
diff changeset
76 __catch(__cxxabiv1::__forced_unwind&)
kono
parents:
diff changeset
77 {
kono
parents:
diff changeset
78 this->_M_setstate(ios_base::badbit);
kono
parents:
diff changeset
79 __throw_exception_again;
kono
parents:
diff changeset
80 }
kono
parents:
diff changeset
81 __catch(...)
kono
parents:
diff changeset
82 { this->_M_setstate(ios_base::badbit); }
kono
parents:
diff changeset
83 if (__err)
kono
parents:
diff changeset
84 this->setstate(__err);
kono
parents:
diff changeset
85 }
kono
parents:
diff changeset
86 return *this;
kono
parents:
diff changeset
87 }
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 template<typename _CharT, typename _Traits>
kono
parents:
diff changeset
90 basic_ostream<_CharT, _Traits>&
kono
parents:
diff changeset
91 basic_ostream<_CharT, _Traits>::
kono
parents:
diff changeset
92 operator<<(short __n)
kono
parents:
diff changeset
93 {
kono
parents:
diff changeset
94 // _GLIBCXX_RESOLVE_LIB_DEFECTS
kono
parents:
diff changeset
95 // 117. basic_ostream uses nonexistent num_put member functions.
kono
parents:
diff changeset
96 const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
kono
parents:
diff changeset
97 if (__fmt == ios_base::oct || __fmt == ios_base::hex)
kono
parents:
diff changeset
98 return _M_insert(static_cast<long>(static_cast<unsigned short>(__n)));
kono
parents:
diff changeset
99 else
kono
parents:
diff changeset
100 return _M_insert(static_cast<long>(__n));
kono
parents:
diff changeset
101 }
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 template<typename _CharT, typename _Traits>
kono
parents:
diff changeset
104 basic_ostream<_CharT, _Traits>&
kono
parents:
diff changeset
105 basic_ostream<_CharT, _Traits>::
kono
parents:
diff changeset
106 operator<<(int __n)
kono
parents:
diff changeset
107 {
kono
parents:
diff changeset
108 // _GLIBCXX_RESOLVE_LIB_DEFECTS
kono
parents:
diff changeset
109 // 117. basic_ostream uses nonexistent num_put member functions.
kono
parents:
diff changeset
110 const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
kono
parents:
diff changeset
111 if (__fmt == ios_base::oct || __fmt == ios_base::hex)
kono
parents:
diff changeset
112 return _M_insert(static_cast<long>(static_cast<unsigned int>(__n)));
kono
parents:
diff changeset
113 else
kono
parents:
diff changeset
114 return _M_insert(static_cast<long>(__n));
kono
parents:
diff changeset
115 }
kono
parents:
diff changeset
116
kono
parents:
diff changeset
117 template<typename _CharT, typename _Traits>
kono
parents:
diff changeset
118 basic_ostream<_CharT, _Traits>&
kono
parents:
diff changeset
119 basic_ostream<_CharT, _Traits>::
kono
parents:
diff changeset
120 operator<<(__streambuf_type* __sbin)
kono
parents:
diff changeset
121 {
kono
parents:
diff changeset
122 ios_base::iostate __err = ios_base::goodbit;
kono
parents:
diff changeset
123 sentry __cerb(*this);
kono
parents:
diff changeset
124 if (__cerb && __sbin)
kono
parents:
diff changeset
125 {
kono
parents:
diff changeset
126 __try
kono
parents:
diff changeset
127 {
kono
parents:
diff changeset
128 if (!__copy_streambufs(__sbin, this->rdbuf()))
kono
parents:
diff changeset
129 __err |= ios_base::failbit;
kono
parents:
diff changeset
130 }
kono
parents:
diff changeset
131 __catch(__cxxabiv1::__forced_unwind&)
kono
parents:
diff changeset
132 {
kono
parents:
diff changeset
133 this->_M_setstate(ios_base::badbit);
kono
parents:
diff changeset
134 __throw_exception_again;
kono
parents:
diff changeset
135 }
kono
parents:
diff changeset
136 __catch(...)
kono
parents:
diff changeset
137 { this->_M_setstate(ios_base::failbit); }
kono
parents:
diff changeset
138 }
kono
parents:
diff changeset
139 else if (!__sbin)
kono
parents:
diff changeset
140 __err |= ios_base::badbit;
kono
parents:
diff changeset
141 if (__err)
kono
parents:
diff changeset
142 this->setstate(__err);
kono
parents:
diff changeset
143 return *this;
kono
parents:
diff changeset
144 }
kono
parents:
diff changeset
145
kono
parents:
diff changeset
146 template<typename _CharT, typename _Traits>
kono
parents:
diff changeset
147 basic_ostream<_CharT, _Traits>&
kono
parents:
diff changeset
148 basic_ostream<_CharT, _Traits>::
kono
parents:
diff changeset
149 put(char_type __c)
kono
parents:
diff changeset
150 {
kono
parents:
diff changeset
151 // _GLIBCXX_RESOLVE_LIB_DEFECTS
kono
parents:
diff changeset
152 // DR 60. What is a formatted input function?
kono
parents:
diff changeset
153 // basic_ostream::put(char_type) is an unformatted output function.
kono
parents:
diff changeset
154 // DR 63. Exception-handling policy for unformatted output.
kono
parents:
diff changeset
155 // Unformatted output functions should catch exceptions thrown
kono
parents:
diff changeset
156 // from streambuf members.
kono
parents:
diff changeset
157 sentry __cerb(*this);
kono
parents:
diff changeset
158 if (__cerb)
kono
parents:
diff changeset
159 {
kono
parents:
diff changeset
160 ios_base::iostate __err = ios_base::goodbit;
kono
parents:
diff changeset
161 __try
kono
parents:
diff changeset
162 {
kono
parents:
diff changeset
163 const int_type __put = this->rdbuf()->sputc(__c);
kono
parents:
diff changeset
164 if (traits_type::eq_int_type(__put, traits_type::eof()))
kono
parents:
diff changeset
165 __err |= ios_base::badbit;
kono
parents:
diff changeset
166 }
kono
parents:
diff changeset
167 __catch(__cxxabiv1::__forced_unwind&)
kono
parents:
diff changeset
168 {
kono
parents:
diff changeset
169 this->_M_setstate(ios_base::badbit);
kono
parents:
diff changeset
170 __throw_exception_again;
kono
parents:
diff changeset
171 }
kono
parents:
diff changeset
172 __catch(...)
kono
parents:
diff changeset
173 { this->_M_setstate(ios_base::badbit); }
kono
parents:
diff changeset
174 if (__err)
kono
parents:
diff changeset
175 this->setstate(__err);
kono
parents:
diff changeset
176 }
kono
parents:
diff changeset
177 return *this;
kono
parents:
diff changeset
178 }
kono
parents:
diff changeset
179
kono
parents:
diff changeset
180 template<typename _CharT, typename _Traits>
kono
parents:
diff changeset
181 basic_ostream<_CharT, _Traits>&
kono
parents:
diff changeset
182 basic_ostream<_CharT, _Traits>::
kono
parents:
diff changeset
183 write(const _CharT* __s, streamsize __n)
kono
parents:
diff changeset
184 {
kono
parents:
diff changeset
185 // _GLIBCXX_RESOLVE_LIB_DEFECTS
kono
parents:
diff changeset
186 // DR 60. What is a formatted input function?
kono
parents:
diff changeset
187 // basic_ostream::write(const char_type*, streamsize) is an
kono
parents:
diff changeset
188 // unformatted output function.
kono
parents:
diff changeset
189 // DR 63. Exception-handling policy for unformatted output.
kono
parents:
diff changeset
190 // Unformatted output functions should catch exceptions thrown
kono
parents:
diff changeset
191 // from streambuf members.
kono
parents:
diff changeset
192 sentry __cerb(*this);
kono
parents:
diff changeset
193 if (__cerb)
kono
parents:
diff changeset
194 {
kono
parents:
diff changeset
195 __try
kono
parents:
diff changeset
196 { _M_write(__s, __n); }
kono
parents:
diff changeset
197 __catch(__cxxabiv1::__forced_unwind&)
kono
parents:
diff changeset
198 {
kono
parents:
diff changeset
199 this->_M_setstate(ios_base::badbit);
kono
parents:
diff changeset
200 __throw_exception_again;
kono
parents:
diff changeset
201 }
kono
parents:
diff changeset
202 __catch(...)
kono
parents:
diff changeset
203 { this->_M_setstate(ios_base::badbit); }
kono
parents:
diff changeset
204 }
kono
parents:
diff changeset
205 return *this;
kono
parents:
diff changeset
206 }
kono
parents:
diff changeset
207
kono
parents:
diff changeset
208 template<typename _CharT, typename _Traits>
kono
parents:
diff changeset
209 basic_ostream<_CharT, _Traits>&
kono
parents:
diff changeset
210 basic_ostream<_CharT, _Traits>::
kono
parents:
diff changeset
211 flush()
kono
parents:
diff changeset
212 {
kono
parents:
diff changeset
213 // _GLIBCXX_RESOLVE_LIB_DEFECTS
kono
parents:
diff changeset
214 // DR 60. What is a formatted input function?
kono
parents:
diff changeset
215 // basic_ostream::flush() is *not* an unformatted output function.
kono
parents:
diff changeset
216 ios_base::iostate __err = ios_base::goodbit;
kono
parents:
diff changeset
217 __try
kono
parents:
diff changeset
218 {
kono
parents:
diff changeset
219 if (this->rdbuf() && this->rdbuf()->pubsync() == -1)
kono
parents:
diff changeset
220 __err |= ios_base::badbit;
kono
parents:
diff changeset
221 }
kono
parents:
diff changeset
222 __catch(__cxxabiv1::__forced_unwind&)
kono
parents:
diff changeset
223 {
kono
parents:
diff changeset
224 this->_M_setstate(ios_base::badbit);
kono
parents:
diff changeset
225 __throw_exception_again;
kono
parents:
diff changeset
226 }
kono
parents:
diff changeset
227 __catch(...)
kono
parents:
diff changeset
228 { this->_M_setstate(ios_base::badbit); }
kono
parents:
diff changeset
229 if (__err)
kono
parents:
diff changeset
230 this->setstate(__err);
kono
parents:
diff changeset
231 return *this;
kono
parents:
diff changeset
232 }
kono
parents:
diff changeset
233
kono
parents:
diff changeset
234 template<typename _CharT, typename _Traits>
kono
parents:
diff changeset
235 typename basic_ostream<_CharT, _Traits>::pos_type
kono
parents:
diff changeset
236 basic_ostream<_CharT, _Traits>::
kono
parents:
diff changeset
237 tellp()
kono
parents:
diff changeset
238 {
kono
parents:
diff changeset
239 pos_type __ret = pos_type(-1);
kono
parents:
diff changeset
240 __try
kono
parents:
diff changeset
241 {
kono
parents:
diff changeset
242 if (!this->fail())
kono
parents:
diff changeset
243 __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);
kono
parents:
diff changeset
244 }
kono
parents:
diff changeset
245 __catch(__cxxabiv1::__forced_unwind&)
kono
parents:
diff changeset
246 {
kono
parents:
diff changeset
247 this->_M_setstate(ios_base::badbit);
kono
parents:
diff changeset
248 __throw_exception_again;
kono
parents:
diff changeset
249 }
kono
parents:
diff changeset
250 __catch(...)
kono
parents:
diff changeset
251 { this->_M_setstate(ios_base::badbit); }
kono
parents:
diff changeset
252 return __ret;
kono
parents:
diff changeset
253 }
kono
parents:
diff changeset
254
kono
parents:
diff changeset
255 template<typename _CharT, typename _Traits>
kono
parents:
diff changeset
256 basic_ostream<_CharT, _Traits>&
kono
parents:
diff changeset
257 basic_ostream<_CharT, _Traits>::
kono
parents:
diff changeset
258 seekp(pos_type __pos)
kono
parents:
diff changeset
259 {
kono
parents:
diff changeset
260 ios_base::iostate __err = ios_base::goodbit;
kono
parents:
diff changeset
261 __try
kono
parents:
diff changeset
262 {
kono
parents:
diff changeset
263 if (!this->fail())
kono
parents:
diff changeset
264 {
kono
parents:
diff changeset
265 // _GLIBCXX_RESOLVE_LIB_DEFECTS
kono
parents:
diff changeset
266 // 136. seekp, seekg setting wrong streams?
kono
parents:
diff changeset
267 const pos_type __p = this->rdbuf()->pubseekpos(__pos,
kono
parents:
diff changeset
268 ios_base::out);
kono
parents:
diff changeset
269
kono
parents:
diff changeset
270 // 129. Need error indication from seekp() and seekg()
kono
parents:
diff changeset
271 if (__p == pos_type(off_type(-1)))
kono
parents:
diff changeset
272 __err |= ios_base::failbit;
kono
parents:
diff changeset
273 }
kono
parents:
diff changeset
274 }
kono
parents:
diff changeset
275 __catch(__cxxabiv1::__forced_unwind&)
kono
parents:
diff changeset
276 {
kono
parents:
diff changeset
277 this->_M_setstate(ios_base::badbit);
kono
parents:
diff changeset
278 __throw_exception_again;
kono
parents:
diff changeset
279 }
kono
parents:
diff changeset
280 __catch(...)
kono
parents:
diff changeset
281 { this->_M_setstate(ios_base::badbit); }
kono
parents:
diff changeset
282 if (__err)
kono
parents:
diff changeset
283 this->setstate(__err);
kono
parents:
diff changeset
284 return *this;
kono
parents:
diff changeset
285 }
kono
parents:
diff changeset
286
kono
parents:
diff changeset
287 template<typename _CharT, typename _Traits>
kono
parents:
diff changeset
288 basic_ostream<_CharT, _Traits>&
kono
parents:
diff changeset
289 basic_ostream<_CharT, _Traits>::
kono
parents:
diff changeset
290 seekp(off_type __off, ios_base::seekdir __dir)
kono
parents:
diff changeset
291 {
kono
parents:
diff changeset
292 ios_base::iostate __err = ios_base::goodbit;
kono
parents:
diff changeset
293 __try
kono
parents:
diff changeset
294 {
kono
parents:
diff changeset
295 if (!this->fail())
kono
parents:
diff changeset
296 {
kono
parents:
diff changeset
297 // _GLIBCXX_RESOLVE_LIB_DEFECTS
kono
parents:
diff changeset
298 // 136. seekp, seekg setting wrong streams?
kono
parents:
diff changeset
299 const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
kono
parents:
diff changeset
300 ios_base::out);
kono
parents:
diff changeset
301
kono
parents:
diff changeset
302 // 129. Need error indication from seekp() and seekg()
kono
parents:
diff changeset
303 if (__p == pos_type(off_type(-1)))
kono
parents:
diff changeset
304 __err |= ios_base::failbit;
kono
parents:
diff changeset
305 }
kono
parents:
diff changeset
306 }
kono
parents:
diff changeset
307 __catch(__cxxabiv1::__forced_unwind&)
kono
parents:
diff changeset
308 {
kono
parents:
diff changeset
309 this->_M_setstate(ios_base::badbit);
kono
parents:
diff changeset
310 __throw_exception_again;
kono
parents:
diff changeset
311 }
kono
parents:
diff changeset
312 __catch(...)
kono
parents:
diff changeset
313 { this->_M_setstate(ios_base::badbit); }
kono
parents:
diff changeset
314 if (__err)
kono
parents:
diff changeset
315 this->setstate(__err);
kono
parents:
diff changeset
316 return *this;
kono
parents:
diff changeset
317 }
kono
parents:
diff changeset
318
kono
parents:
diff changeset
319 template<typename _CharT, typename _Traits>
kono
parents:
diff changeset
320 basic_ostream<_CharT, _Traits>&
kono
parents:
diff changeset
321 operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
kono
parents:
diff changeset
322 {
kono
parents:
diff changeset
323 if (!__s)
kono
parents:
diff changeset
324 __out.setstate(ios_base::badbit);
kono
parents:
diff changeset
325 else
kono
parents:
diff changeset
326 {
kono
parents:
diff changeset
327 // _GLIBCXX_RESOLVE_LIB_DEFECTS
kono
parents:
diff changeset
328 // 167. Improper use of traits_type::length()
kono
parents:
diff changeset
329 const size_t __clen = char_traits<char>::length(__s);
kono
parents:
diff changeset
330 __try
kono
parents:
diff changeset
331 {
kono
parents:
diff changeset
332 struct __ptr_guard
kono
parents:
diff changeset
333 {
kono
parents:
diff changeset
334 _CharT *__p;
kono
parents:
diff changeset
335 __ptr_guard (_CharT *__ip): __p(__ip) { }
kono
parents:
diff changeset
336 ~__ptr_guard() { delete[] __p; }
kono
parents:
diff changeset
337 _CharT* __get() { return __p; }
kono
parents:
diff changeset
338 } __pg (new _CharT[__clen]);
kono
parents:
diff changeset
339
kono
parents:
diff changeset
340 _CharT *__ws = __pg.__get();
kono
parents:
diff changeset
341 for (size_t __i = 0; __i < __clen; ++__i)
kono
parents:
diff changeset
342 __ws[__i] = __out.widen(__s[__i]);
kono
parents:
diff changeset
343 __ostream_insert(__out, __ws, __clen);
kono
parents:
diff changeset
344 }
kono
parents:
diff changeset
345 __catch(__cxxabiv1::__forced_unwind&)
kono
parents:
diff changeset
346 {
kono
parents:
diff changeset
347 __out._M_setstate(ios_base::badbit);
kono
parents:
diff changeset
348 __throw_exception_again;
kono
parents:
diff changeset
349 }
kono
parents:
diff changeset
350 __catch(...)
kono
parents:
diff changeset
351 { __out._M_setstate(ios_base::badbit); }
kono
parents:
diff changeset
352 }
kono
parents:
diff changeset
353 return __out;
kono
parents:
diff changeset
354 }
kono
parents:
diff changeset
355
kono
parents:
diff changeset
356 // Inhibit implicit instantiations for required instantiations,
kono
parents:
diff changeset
357 // which are defined via explicit instantiations elsewhere.
kono
parents:
diff changeset
358 #if _GLIBCXX_EXTERN_TEMPLATE
kono
parents:
diff changeset
359 extern template class basic_ostream<char>;
kono
parents:
diff changeset
360 extern template ostream& endl(ostream&);
kono
parents:
diff changeset
361 extern template ostream& ends(ostream&);
kono
parents:
diff changeset
362 extern template ostream& flush(ostream&);
kono
parents:
diff changeset
363 extern template ostream& operator<<(ostream&, char);
kono
parents:
diff changeset
364 extern template ostream& operator<<(ostream&, unsigned char);
kono
parents:
diff changeset
365 extern template ostream& operator<<(ostream&, signed char);
kono
parents:
diff changeset
366 extern template ostream& operator<<(ostream&, const char*);
kono
parents:
diff changeset
367 extern template ostream& operator<<(ostream&, const unsigned char*);
kono
parents:
diff changeset
368 extern template ostream& operator<<(ostream&, const signed char*);
kono
parents:
diff changeset
369
kono
parents:
diff changeset
370 extern template ostream& ostream::_M_insert(long);
kono
parents:
diff changeset
371 extern template ostream& ostream::_M_insert(unsigned long);
kono
parents:
diff changeset
372 extern template ostream& ostream::_M_insert(bool);
kono
parents:
diff changeset
373 #ifdef _GLIBCXX_USE_LONG_LONG
kono
parents:
diff changeset
374 extern template ostream& ostream::_M_insert(long long);
kono
parents:
diff changeset
375 extern template ostream& ostream::_M_insert(unsigned long long);
kono
parents:
diff changeset
376 #endif
kono
parents:
diff changeset
377 extern template ostream& ostream::_M_insert(double);
kono
parents:
diff changeset
378 extern template ostream& ostream::_M_insert(long double);
kono
parents:
diff changeset
379 extern template ostream& ostream::_M_insert(const void*);
kono
parents:
diff changeset
380
kono
parents:
diff changeset
381 #ifdef _GLIBCXX_USE_WCHAR_T
kono
parents:
diff changeset
382 extern template class basic_ostream<wchar_t>;
kono
parents:
diff changeset
383 extern template wostream& endl(wostream&);
kono
parents:
diff changeset
384 extern template wostream& ends(wostream&);
kono
parents:
diff changeset
385 extern template wostream& flush(wostream&);
kono
parents:
diff changeset
386 extern template wostream& operator<<(wostream&, wchar_t);
kono
parents:
diff changeset
387 extern template wostream& operator<<(wostream&, char);
kono
parents:
diff changeset
388 extern template wostream& operator<<(wostream&, const wchar_t*);
kono
parents:
diff changeset
389 extern template wostream& operator<<(wostream&, const char*);
kono
parents:
diff changeset
390
kono
parents:
diff changeset
391 extern template wostream& wostream::_M_insert(long);
kono
parents:
diff changeset
392 extern template wostream& wostream::_M_insert(unsigned long);
kono
parents:
diff changeset
393 extern template wostream& wostream::_M_insert(bool);
kono
parents:
diff changeset
394 #ifdef _GLIBCXX_USE_LONG_LONG
kono
parents:
diff changeset
395 extern template wostream& wostream::_M_insert(long long);
kono
parents:
diff changeset
396 extern template wostream& wostream::_M_insert(unsigned long long);
kono
parents:
diff changeset
397 #endif
kono
parents:
diff changeset
398 extern template wostream& wostream::_M_insert(double);
kono
parents:
diff changeset
399 extern template wostream& wostream::_M_insert(long double);
kono
parents:
diff changeset
400 extern template wostream& wostream::_M_insert(const void*);
kono
parents:
diff changeset
401 #endif
kono
parents:
diff changeset
402 #endif
kono
parents:
diff changeset
403
kono
parents:
diff changeset
404 _GLIBCXX_END_NAMESPACE_VERSION
kono
parents:
diff changeset
405 } // namespace std
kono
parents:
diff changeset
406
kono
parents:
diff changeset
407 #endif