From ec2061a9bfaf34fa44584beb2c440b2a15e6df10 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Fri, 13 Oct 2006 09:00:31 +0000 Subject: [PATCH] PR libstdc++/28277 (partial: ostream bits 2) 2006-10-13 Paolo Carlini PR libstdc++/28277 (partial: ostream bits 2) * include/std/std_ostream.h (basic_ostream<>::_M_insert(const char_type*, streamsize)): New. (basic_ostream<>::_M_write(char_type, streamsize)): Likewise. (operator<<(basic_ostream<>&, _CharT), operator<<(basic_ostream<>&, char), operator<<(basic_ostream<>&, const _CharT*), operator<<(basic_ostream<>&, const char*)): Use the latter. * include/bits/ostream.tcc (basic_ostream<>::_M_insert(const char_type*, streamsize)): Define. (operator<<(basic_ostream<>&, const char*)): Use the latter. (operator<<(basic_ostream<>&, _CharT), operator<<(basic_ostream<>&, char), operator<<(basic_ostream<>&, const _CharT*), operator<<(basic_ostream<>&, const char*), operator<<(basic_ostream<>&, const basic_string<>&)): Remove. * include/bits/basic_string.h (operator<<(basic_ostream<>&, const basic_string<>&)): Use the latter, implement DR 586. * config/abi/pre/gnu.ver: Adjust, export the new _M_insert. * docs/html/ext/howto.html: Add an entry for DR 586. * testsuite/21_strings/basic_string/inserters_extractors/char/ 28277.cc: New. * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/ 28277.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_character/char/ 28277-3.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_character/char/ 28277-4.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_character/wchar_t/ 28277-2.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_character/wchar_t/ 28277-3.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_character/wchar_t/ 28277-4.cc: Likewise. From-SVN: r117689 --- libstdc++-v3/ChangeLog | 35 +++ libstdc++-v3/config/abi/pre/gnu.ver | 7 +- libstdc++-v3/docs/html/ext/howto.html | 6 + libstdc++-v3/include/bits/basic_string.h | 7 +- libstdc++-v3/include/bits/ostream.tcc | 201 +++--------------- libstdc++-v3/include/std/std_ostream.h | 50 ++++- .../inserters_extractors/char/28277.cc | 49 +++++ .../inserters_extractors/wchar_t/28277.cc | 49 +++++ .../inserters_character/char/28277-3.cc | 48 +++++ .../inserters_character/char/28277-4.cc | 49 +++++ .../inserters_character/wchar_t/28277-2.cc | 49 +++++ .../inserters_character/wchar_t/28277-3.cc | 48 +++++ .../inserters_character/wchar_t/28277-4.cc | 49 +++++ 13 files changed, 463 insertions(+), 184 deletions(-) create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc create mode 100644 libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/28277.cc create mode 100644 libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-3.cc create mode 100644 libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-4.cc create mode 100644 libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-2.cc create mode 100644 libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-3.cc create mode 100644 libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-4.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 44bf1031763..c42aba17c4f 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,38 @@ +2006-10-13 Paolo Carlini + + PR libstdc++/28277 (partial: ostream bits 2) + * include/std/std_ostream.h (basic_ostream<>::_M_insert(const + char_type*, streamsize)): New. + (basic_ostream<>::_M_write(char_type, streamsize)): Likewise. + (operator<<(basic_ostream<>&, _CharT), operator<<(basic_ostream<>&, + char), operator<<(basic_ostream<>&, const _CharT*), + operator<<(basic_ostream<>&, const char*)): Use the latter. + * include/bits/ostream.tcc (basic_ostream<>::_M_insert(const + char_type*, streamsize)): Define. + (operator<<(basic_ostream<>&, const char*)): Use the latter. + (operator<<(basic_ostream<>&, _CharT), operator<<(basic_ostream<>&, + char), operator<<(basic_ostream<>&, const _CharT*), + operator<<(basic_ostream<>&, const char*), + operator<<(basic_ostream<>&, const basic_string<>&)): Remove. + * include/bits/basic_string.h (operator<<(basic_ostream<>&, + const basic_string<>&)): Use the latter, implement DR 586. + * config/abi/pre/gnu.ver: Adjust, export the new _M_insert. + * docs/html/ext/howto.html: Add an entry for DR 586. + * testsuite/21_strings/basic_string/inserters_extractors/char/ + 28277.cc: New. + * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/ + 28277.cc: Likewise. + * testsuite/27_io/basic_ostream/inserters_character/char/ + 28277-3.cc: Likewise. + * testsuite/27_io/basic_ostream/inserters_character/char/ + 28277-4.cc: Likewise. + * testsuite/27_io/basic_ostream/inserters_character/wchar_t/ + 28277-2.cc: Likewise. + * testsuite/27_io/basic_ostream/inserters_character/wchar_t/ + 28277-3.cc: Likewise. + * testsuite/27_io/basic_ostream/inserters_character/wchar_t/ + 28277-4.cc: Likewise. + 2006-10-11 Paolo Carlini * docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 44. diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index 384ad35e26c..dd6854c80f7 100644 --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -285,7 +285,7 @@ GLIBCXX_3.4 { _ZNSoC*; _ZNSoD*; _ZNKSo6sentrycvbEv; - _ZNSo8_M_write*; + _ZNSo8_M_writeEPKc[il]; _ZNSo[0-9][a-z]*; _ZNSolsE*[^g]; @@ -299,7 +299,7 @@ GLIBCXX_3.4 { _ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv; _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKw*; _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentry*; - _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_write*; + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKw[il]; _ZNSt13basic_ostreamIwSt11char_traitsIwEElsE*[^g]; # std::ostream operators and inserters @@ -659,6 +659,9 @@ GLIBCXX_3.4.9 { _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractI[^g]*; _ZSt21__copy_streambufs_eofI[cw]St11char_traitsI[cw]EE[il]PSt15basic_streambuf*; + + _ZNSo9_M_insertEPKc[il]; + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertEPKw[il]; } GLIBCXX_3.4.8; diff --git a/libstdc++-v3/docs/html/ext/howto.html b/libstdc++-v3/docs/html/ext/howto.html index 7a9e4ef15a6..a39e0fbf915 100644 --- a/libstdc++-v3/docs/html/ext/howto.html +++ b/libstdc++-v3/docs/html/ext/howto.html @@ -593,6 +593,12 @@
In case of input_iterator/output_iterator rely on Assignability of input_iterator' value_type.
+ +
586: + string inserter not a formatted function +
+
Change it to be a formatted output function (i.e. catch exceptions). +