diff options
Diffstat (limited to 'libstdc++-v3/include/std')
-rw-r--r-- | libstdc++-v3/include/std/bitset | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/std/ostream | 53 | ||||
-rw-r--r-- | libstdc++-v3/include/std/string | 5 |
3 files changed, 14 insertions, 52 deletions
diff --git a/libstdc++-v3/include/std/bitset b/libstdc++-v3/include/std/bitset index 3a7d40b..9c869bf 100644 --- a/libstdc++-v3/include/std/bitset +++ b/libstdc++-v3/include/std/bitset @@ -1240,7 +1240,6 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD) { try { - basic_streambuf<_CharT, _Traits>* __buf = __is.rdbuf(); // _GLIBCXX_RESOLVE_LIB_DEFECTS // 303. Bitset input operator underspecified const char_type __zero = __is.widen('0'); @@ -1249,7 +1248,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD) { static typename _Traits::int_type __eof = _Traits::eof(); - typename _Traits::int_type __c1 = __buf->sbumpc(); + typename _Traits::int_type __c1 = __is.rdbuf()->sbumpc(); if (_Traits::eq_int_type(__c1, __eof)) { __state |= __ios_base::eofbit; @@ -1262,8 +1261,9 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD) __tmp.push_back('0'); else if (__c2 == __one) __tmp.push_back('1'); - else if (_Traits::eq_int_type(__buf->sputbackc(__c2), - __eof)) + else if (_Traits:: + eq_int_type(__is.rdbuf()->sputbackc(__c2), + __eof)) { __state |= __ios_base::failbit; break; diff --git a/libstdc++-v3/include/std/ostream b/libstdc++-v3/include/std/ostream index 942a5a4..dc859b1 100644 --- a/libstdc++-v3/include/std/ostream +++ b/libstdc++-v3/include/std/ostream @@ -44,6 +44,7 @@ #include <ios> #include <locale> +#include <bits/ostream_insert.h> _GLIBCXX_BEGIN_NAMESPACE(std) @@ -74,31 +75,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __num_put_type; typedef ctype<_CharT> __ctype_type; - template<typename _CharT2, typename _Traits2> - friend basic_ostream<_CharT2, _Traits2>& - operator<<(basic_ostream<_CharT2, _Traits2>&, _CharT2); - - template<typename _Traits2> - friend basic_ostream<char, _Traits2>& - operator<<(basic_ostream<char, _Traits2>&, char); - - template<typename _CharT2, typename _Traits2> - friend basic_ostream<_CharT2, _Traits2>& - operator<<(basic_ostream<_CharT2, _Traits2>&, const _CharT2*); - - template<typename _Traits2> - friend basic_ostream<char, _Traits2>& - operator<<(basic_ostream<char, _Traits2>&, const char*); - - template<typename _CharT2, typename _Traits2> - friend basic_ostream<_CharT2, _Traits2>& - operator<<(basic_ostream<_CharT2, _Traits2>&, const char*); - - template<typename _CharT2, typename _Traits2, typename _Alloc> - friend basic_ostream<_CharT2, _Traits2>& - operator<<(basic_ostream<_CharT2, _Traits2>&, - const basic_string<_CharT2, _Traits2, _Alloc>&); - // [27.6.2.2] constructor/destructor /** * @brief Base constructor. @@ -320,20 +296,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) this->setstate(ios_base::badbit); } - void - _M_write(char_type __c, streamsize __n) - { - for (; __n > 0; --__n) - { - const int_type __put = this->rdbuf()->sputc(__c); - if (traits_type::eq_int_type(__put, traits_type::eof())) - { - this->setstate(ios_base::badbit); - break; - } - } - } - /** * @brief Character string insertion. * @param s The array to insert. @@ -407,9 +369,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<typename _ValueT> __ostream_type& _M_insert(_ValueT __v); - - __ostream_type& - _M_insert(const char_type* __s, streamsize __n); }; /** @@ -493,7 +452,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<typename _CharT, typename _Traits> inline basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) - { return __out._M_insert(&__c, 1); } + { return __ostream_insert(__out, &__c, 1); } template<typename _CharT, typename _Traits> inline basic_ostream<_CharT, _Traits>& @@ -504,7 +463,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template <class _Traits> inline basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>& __out, char __c) - { return __out._M_insert(&__c, 1); } + { return __ostream_insert(__out, &__c, 1); } // Signed and unsigned template<class _Traits> @@ -539,7 +498,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) if (!__s) __out.setstate(ios_base::badbit); else - __out._M_insert(__s, static_cast<streamsize>(_Traits::length(__s))); + __ostream_insert(__out, __s, + static_cast<streamsize>(_Traits::length(__s))); return __out; } @@ -555,7 +515,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) if (!__s) __out.setstate(ios_base::badbit); else - __out._M_insert(__s, static_cast<streamsize>(_Traits::length(__s))); + __ostream_insert(__out, __s, + static_cast<streamsize>(_Traits::length(__s))); return __out; } diff --git a/libstdc++-v3/include/std/string b/libstdc++-v3/include/std/string index 7819015..9bf7796 100644 --- a/libstdc++-v3/include/std/string +++ b/libstdc++-v3/include/std/string @@ -47,9 +47,10 @@ #include <bits/char_traits.h> // NB: In turn includes stl_algobase.h #include <bits/allocator.h> #include <bits/cpp_type_traits.h> -#include <iosfwd> // For operators >>, <<, and getline decls. +#include <bits/localefwd.h> // For operators >>, <<, and getline. +#include <bits/ostream_insert.h> #include <bits/stl_iterator.h> -#include <bits/stl_function.h> // For less +#include <bits/stl_function.h> // For less #include <bits/basic_string.h> #ifndef _GLIBCXX_EXPORT_TEMPLATE |