From 0d223e3a4eeb0b099a8a4049fb13984feb3b6afa Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Wed, 20 Feb 2002 00:58:17 +0000 Subject: [PATCH] std_iomanip.h: Inline, tweaks. 2002-02-19 Benjamin Kosnik * include/std/std_iomanip.h: Inline, tweaks. * config/linker-map.gnu: Remove hacks. * testsuite/21_strings/capacity.cc: Add explicit instantiations. * testsuite/27_io/ios_init.cc: Same. * testsuite/22_locale/money_get_members_char.cc (test07): Fix. * testsuite/22_locale/money_get_members_wchar_t.cc (test07): Same. From-SVN: r49884 --- libstdc++-v3/ChangeLog | 10 ++++ libstdc++-v3/config/linker-map.gnu | 41 +++++--------- libstdc++-v3/include/std/std_iomanip.h | 54 +++++++++---------- libstdc++-v3/testsuite/21_strings/capacity.cc | 16 +++++- .../22_locale/money_get_members_char.cc | 12 +++-- .../22_locale/money_get_members_wchar_t.cc | 11 ++-- libstdc++-v3/testsuite/27_io/ios_init.cc | 9 ++++ 7 files changed, 88 insertions(+), 65 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 4f84eaa5837..e006bfca7d1 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,13 @@ +2002-02-19 Benjamin Kosnik + + * include/std/std_iomanip.h: Inline, tweaks. + * config/linker-map.gnu: Remove hacks. + + * testsuite/21_strings/capacity.cc: Add explicit instantiations. + * testsuite/27_io/ios_init.cc: Same. + * testsuite/22_locale/money_get_members_char.cc (test07): Fix. + * testsuite/22_locale/money_get_members_wchar_t.cc (test07): Same. + 2002-02-19 Benjamin Kosnik * config/linker-map.gnu: Export global vtable, typeinfo, guard diff --git a/libstdc++-v3/config/linker-map.gnu b/libstdc++-v3/config/linker-map.gnu index 6c5b5ff3f2f..7d76b9dd6a7 100644 --- a/libstdc++-v3/config/linker-map.gnu +++ b/libstdc++-v3/config/linker-map.gnu @@ -25,8 +25,8 @@ GLIBCPP_3.1 { global: - ## Names inside the 'extern' block are demangled names. - ## All but the last are terminated with a semicolon. + # Names inside the 'extern' block are demangled names. + # All but the last are terminated with a semicolon. extern "C++" { std::[A-Za-z]*; @@ -36,17 +36,17 @@ GLIBCPP_3.1 { std::__timepunct* }; - ## Names not in an 'extern' block are mangled names. - ## operator new(unsigned) + # Names not in an 'extern' block are mangled names. + # operator new(unsigned) _Znwj; - ## operator delete(void*) + # operator delete(void*) _ZdlPv; - ## operator new[](unsigned) + # operator new[](unsigned) _Znaj; - ## operator delete[](void*) + # operator delete[](void*) _ZdaPv; # vtable @@ -65,41 +65,26 @@ GLIBCPP_3.1 { _ZTv*; _ZTc*; - # XXX + # libsupc++ __cxa_*; __gxx_personality_v0; __dynamic_cast; - ## std::_S_rb_tree_red + # std::_S_rb_tree_red _ZSt14_S_rb_tree_red; - ## std::_S_rb_tree_black + # std::_S_rb_tree_black _ZSt16_S_rb_tree_black; - ## std::__stl_threshold + # std::__stl_threshold _ZSt15__stl_threshold; - ## std::__stl_chunk_size + # std::__stl_chunk_size _ZSt16__stl_chunk_size; - # this is a function, "void std::__convert_to_v(stuff)", and as such - # doesn't work well in the demangled section above + # std::__convert_to_v _ZSt14__convert_to_v*; - # likewise for "std::_Setfill std::setfill(char)" - _ZSt7setfillIcESt8_SetfillIT_ES1_; - - # likewise for "bool std::has_facet >(std::locale const&)" - _ZSt9has_facetISt5ctypeIcEEbRKSt6locale; - - # likewise for "bool - # std::has_facet > > >(std::locale const&)" - _ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale; - - # ditto for istreambuf_iterator - _ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale; - local: *; }; diff --git a/libstdc++-v3/include/std/std_iomanip.h b/libstdc++-v3/include/std/std_iomanip.h index d2e3d3182d4..e046c82f8fa 100644 --- a/libstdc++-v3/include/std/std_iomanip.h +++ b/libstdc++-v3/include/std/std_iomanip.h @@ -57,16 +57,16 @@ namespace std return __x; } - template - basic_istream<_CharT,_Traits>& + template + inline basic_istream<_CharT,_Traits>& operator>>(basic_istream<_CharT,_Traits>& __is, _Resetiosflags __f) { __is.setf(ios_base::fmtflags(0), __f._M_mask); return __is; } - template - basic_ostream<_CharT,_Traits>& + template + inline basic_ostream<_CharT,_Traits>& operator<<(basic_ostream<_CharT,_Traits>& __os, _Resetiosflags __f) { __os.setf(ios_base::fmtflags(0), __f._M_mask); @@ -84,16 +84,16 @@ namespace std return __x; } - template - basic_istream<_CharT,_Traits>& + template + inline basic_istream<_CharT,_Traits>& operator>>(basic_istream<_CharT,_Traits>& __is, _Setiosflags __f) { __is.setf(__f._M_mask); return __is; } - template - basic_ostream<_CharT,_Traits>& + template + inline basic_ostream<_CharT,_Traits>& operator<<(basic_ostream<_CharT,_Traits>& __os, _Setiosflags __f) { __os.setf(__f._M_mask); @@ -111,8 +111,8 @@ namespace std return __x; } - template - basic_istream<_CharT,_Traits>& + template + inline basic_istream<_CharT,_Traits>& operator>>(basic_istream<_CharT,_Traits>& __is, _Setbase __f) { __is.setf(__f._M_base == 8 ? ios_base::oct : @@ -122,8 +122,8 @@ namespace std return __is; } - template - basic_ostream<_CharT,_Traits>& + template + inline basic_ostream<_CharT,_Traits>& operator<<(basic_ostream<_CharT,_Traits>& __os, _Setbase __f) { __os.setf(__f._M_base == 8 ? ios_base::oct : @@ -134,11 +134,11 @@ namespace std } - template + template struct _Setfill { _CharT _M_c; }; - template - _Setfill<_CharT> + template + inline _Setfill<_CharT> setfill(_CharT __c) { _Setfill<_CharT> __x; @@ -146,16 +146,16 @@ namespace std return __x; } - template - basic_istream<_CharT,_Traits>& + template + inline basic_istream<_CharT,_Traits>& operator>>(basic_istream<_CharT,_Traits>& __is, _Setfill<_CharT> __f) { __is.fill(__f._M_c); return __is; } - template - basic_ostream<_CharT,_Traits>& + template + inline basic_ostream<_CharT,_Traits>& operator<<(basic_ostream<_CharT,_Traits>& __os, _Setfill<_CharT> __f) { __os.fill(__f._M_c); @@ -173,16 +173,16 @@ namespace std return __x; } - template - basic_istream<_CharT,_Traits>& + template + inline basic_istream<_CharT,_Traits>& operator>>(basic_istream<_CharT,_Traits>& __is, _Setprecision __f) { __is.precision(__f._M_n); return __is; } - template - basic_ostream<_CharT,_Traits>& + template + inline basic_ostream<_CharT,_Traits>& operator<<(basic_ostream<_CharT,_Traits>& __os, _Setprecision __f) { __os.precision(__f._M_n); @@ -200,16 +200,16 @@ namespace std return __x; } - template - basic_istream<_CharT,_Traits>& + template + inline basic_istream<_CharT,_Traits>& operator>>(basic_istream<_CharT,_Traits>& __is, _Setw __f) { __is.width(__f._M_n); return __is; } - template - basic_ostream<_CharT,_Traits>& + template + inline basic_ostream<_CharT,_Traits>& operator<<(basic_ostream<_CharT,_Traits>& __os, _Setw __f) { __os.width(__f._M_n); diff --git a/libstdc++-v3/testsuite/21_strings/capacity.cc b/libstdc++-v3/testsuite/21_strings/capacity.cc index 8239f1b6488..c8f78890f9b 100644 --- a/libstdc++-v3/testsuite/21_strings/capacity.cc +++ b/libstdc++-v3/testsuite/21_strings/capacity.cc @@ -29,11 +29,11 @@ template template bool - operator==(const A& a, const A& b) { } + operator==(const A& a, const A& b) { return true; } template bool - operator<(const A& a, const A& b) { } + operator<(const A& a, const A& b) { return true; } struct B { }; @@ -188,6 +188,14 @@ bool test02() return test; } +// Explicitly instantiate for systems with no COMDAT or weak support. +template + std::basic_string< A >::size_type + std::basic_string< A >::_Rep::_S_max_size; + +template + A + std::basic_string< A >::_Rep::_S_terminal; int main() { @@ -196,3 +204,7 @@ int main() return 0; } + + + + diff --git a/libstdc++-v3/testsuite/22_locale/money_get_members_char.cc b/libstdc++-v3/testsuite/22_locale/money_get_members_char.cc index e26189c32c3..efe806fed33 100644 --- a/libstdc++-v3/testsuite/22_locale/money_get_members_char.cc +++ b/libstdc++-v3/testsuite/22_locale/money_get_members_char.cc @@ -352,13 +352,13 @@ struct My_money_io : public std::moneypunct pattern do_pos_format() const { - static pattern pat = { { symbol, none, sign, value } }; + pattern pat = { { symbol, none, sign, value } }; return pat; } pattern do_neg_format() const { - static pattern pat = { { symbol, none, sign, value } }; + pattern pat = { { symbol, none, sign, value } }; return pat; } }; @@ -369,6 +369,8 @@ void test05() using namespace std; typedef istreambuf_iterator InIt; + bool test = true; + locale loc(locale::classic(), new My_money_io); string bufferp("$1234.56"); @@ -416,6 +418,7 @@ void test05() void test06() { using namespace std; + bool test = true; typedef istreambuf_iterator InIt; InIt iend1, iend2, iend3; @@ -461,7 +464,7 @@ struct My_money_io_a : public std::moneypunct pattern do_pos_format() const { - static pattern pat = { { sign, value, space, symbol } }; + pattern pat = { { sign, value, space, symbol } }; return pat; } }; @@ -478,7 +481,7 @@ struct My_money_io_b : public std::moneypunct pattern do_pos_format() const { - static pattern pat = { { sign, value, symbol, none } }; + pattern pat = { { sign, value, symbol, none } }; return pat; } }; @@ -493,6 +496,7 @@ void test07() typedef istreambuf_iterator InIt; bool intl = false; + bool test = true; ios_base::iostate err; locale loc_a(locale::classic(), new My_money_io_a); diff --git a/libstdc++-v3/testsuite/22_locale/money_get_members_wchar_t.cc b/libstdc++-v3/testsuite/22_locale/money_get_members_wchar_t.cc index 9f79661a080..2229de87ef6 100644 --- a/libstdc++-v3/testsuite/22_locale/money_get_members_wchar_t.cc +++ b/libstdc++-v3/testsuite/22_locale/money_get_members_wchar_t.cc @@ -354,13 +354,13 @@ struct My_money_io : public std::moneypunct pattern do_pos_format() const { - static pattern pat = { { symbol, none, sign, value } }; + pattern pat = { { symbol, none, sign, value } }; return pat; } pattern do_neg_format() const { - static pattern pat = { { symbol, none, sign, value } }; + pattern pat = { { symbol, none, sign, value } }; return pat; } }; @@ -369,6 +369,7 @@ struct My_money_io : public std::moneypunct void test05() { using namespace std; + bool test = true; typedef istreambuf_iterator InIt; locale loc(locale::classic(), new My_money_io); @@ -418,6 +419,7 @@ void test05() void test06() { using namespace std; + bool test = true; typedef istreambuf_iterator InIt; InIt iend1, iend2, iend3; @@ -463,7 +465,7 @@ struct My_money_io_a : public std::moneypunct pattern do_pos_format() const { - static pattern pat = { { sign, value, space, symbol } }; + pattern pat = { { sign, value, space, symbol } }; return pat; } }; @@ -480,7 +482,7 @@ struct My_money_io_b : public std::moneypunct pattern do_pos_format() const { - static pattern pat = { { sign, value, symbol, none } }; + pattern pat = { { sign, value, symbol, none } }; return pat; } }; @@ -492,6 +494,7 @@ struct My_money_io_b : public std::moneypunct void test07() { using namespace std; + bool test = true; typedef istreambuf_iterator InIt; bool intl = false; diff --git a/libstdc++-v3/testsuite/27_io/ios_init.cc b/libstdc++-v3/testsuite/27_io/ios_init.cc index 8356448af9d..626439bdb8b 100644 --- a/libstdc++-v3/testsuite/27_io/ios_init.cc +++ b/libstdc++-v3/testsuite/27_io/ios_init.cc @@ -131,6 +131,15 @@ void test02() VERIFY( test ); } +// Explicitly instantiate for systems with no COMDAT or weak support. +template + std::basic_string::size_type + std::basic_string::_Rep::_S_max_size; + +template + unsigned short + std::basic_string::_Rep::_S_terminal; + int main() { test01(); -- 2.30.2