std_iomanip.h: Inline, tweaks.
2002-02-19 Benjamin Kosnik <bkoz@redhat.com> * 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
This commit is contained in:
parent
ae34ac46dc
commit
0d223e3a4e
@ -1,3 +1,13 @@
|
||||
2002-02-19 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* 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 <bkoz@redhat.com>
|
||||
|
||||
* config/linker-map.gnu: Export global vtable, typeinfo, guard
|
||||
|
@ -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<char> std::setfill<char>(char)"
|
||||
_ZSt7setfillIcESt8_SetfillIT_ES1_;
|
||||
|
||||
# likewise for "bool std::has_facet<std::ctype<char> >(std::locale const&)"
|
||||
_ZSt9has_facetISt5ctypeIcEEbRKSt6locale;
|
||||
|
||||
# likewise for "bool
|
||||
# std::has_facet<std::num_put<char, std::ostreambuf_iterator<char,
|
||||
# std::char_traits<char> > > >(std::locale const&)"
|
||||
_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale;
|
||||
|
||||
# ditto for istreambuf_iterator
|
||||
_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale;
|
||||
|
||||
local:
|
||||
*;
|
||||
};
|
||||
|
@ -57,16 +57,16 @@ namespace std
|
||||
return __x;
|
||||
}
|
||||
|
||||
template <class _CharT, class _Traits>
|
||||
basic_istream<_CharT,_Traits>&
|
||||
template<typename _CharT, typename _Traits>
|
||||
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 <class _CharT, class _Traits>
|
||||
basic_ostream<_CharT,_Traits>&
|
||||
template<typename _CharT, typename _Traits>
|
||||
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 <class _CharT, class _Traits>
|
||||
basic_istream<_CharT,_Traits>&
|
||||
template<typename _CharT, typename _Traits>
|
||||
inline basic_istream<_CharT,_Traits>&
|
||||
operator>>(basic_istream<_CharT,_Traits>& __is, _Setiosflags __f)
|
||||
{
|
||||
__is.setf(__f._M_mask);
|
||||
return __is;
|
||||
}
|
||||
|
||||
template <class _CharT, class _Traits>
|
||||
basic_ostream<_CharT,_Traits>&
|
||||
template<typename _CharT, typename _Traits>
|
||||
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 <class _CharT, class _Traits>
|
||||
basic_istream<_CharT,_Traits>&
|
||||
template<typename _CharT, typename _Traits>
|
||||
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 <class _CharT, class _Traits>
|
||||
basic_ostream<_CharT,_Traits>&
|
||||
template<typename _CharT, typename _Traits>
|
||||
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<class _CharT>
|
||||
template<typename _CharT>
|
||||
struct _Setfill { _CharT _M_c; };
|
||||
|
||||
template<class _CharT>
|
||||
_Setfill<_CharT>
|
||||
template<typename _CharT>
|
||||
inline _Setfill<_CharT>
|
||||
setfill(_CharT __c)
|
||||
{
|
||||
_Setfill<_CharT> __x;
|
||||
@ -146,16 +146,16 @@ namespace std
|
||||
return __x;
|
||||
}
|
||||
|
||||
template <class _CharT, class _Traits>
|
||||
basic_istream<_CharT,_Traits>&
|
||||
template<typename _CharT, typename _Traits>
|
||||
inline basic_istream<_CharT,_Traits>&
|
||||
operator>>(basic_istream<_CharT,_Traits>& __is, _Setfill<_CharT> __f)
|
||||
{
|
||||
__is.fill(__f._M_c);
|
||||
return __is;
|
||||
}
|
||||
|
||||
template <class _CharT, class _Traits>
|
||||
basic_ostream<_CharT,_Traits>&
|
||||
template<typename _CharT, typename _Traits>
|
||||
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 <class _CharT, class _Traits>
|
||||
basic_istream<_CharT,_Traits>&
|
||||
template<typename _CharT, typename _Traits>
|
||||
inline basic_istream<_CharT,_Traits>&
|
||||
operator>>(basic_istream<_CharT,_Traits>& __is, _Setprecision __f)
|
||||
{
|
||||
__is.precision(__f._M_n);
|
||||
return __is;
|
||||
}
|
||||
|
||||
template <class _CharT, class _Traits>
|
||||
basic_ostream<_CharT,_Traits>&
|
||||
template<typename _CharT, typename _Traits>
|
||||
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 <class _CharT, class _Traits>
|
||||
basic_istream<_CharT,_Traits>&
|
||||
template<typename _CharT, typename _Traits>
|
||||
inline basic_istream<_CharT,_Traits>&
|
||||
operator>>(basic_istream<_CharT,_Traits>& __is, _Setw __f)
|
||||
{
|
||||
__is.width(__f._M_n);
|
||||
return __is;
|
||||
}
|
||||
|
||||
template <class _CharT, class _Traits>
|
||||
basic_ostream<_CharT,_Traits>&
|
||||
template<typename _CharT, typename _Traits>
|
||||
inline basic_ostream<_CharT,_Traits>&
|
||||
operator<<(basic_ostream<_CharT,_Traits>& __os, _Setw __f)
|
||||
{
|
||||
__os.width(__f._M_n);
|
||||
|
@ -29,11 +29,11 @@ template<typename T>
|
||||
|
||||
template<typename T>
|
||||
bool
|
||||
operator==(const A<T>& a, const A<T>& b) { }
|
||||
operator==(const A<T>& a, const A<T>& b) { return true; }
|
||||
|
||||
template<typename T>
|
||||
bool
|
||||
operator<(const A<T>& a, const A<T>& b) { }
|
||||
operator<(const A<T>& a, const A<T>& 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<B> >::size_type
|
||||
std::basic_string< A<B> >::_Rep::_S_max_size;
|
||||
|
||||
template
|
||||
A<B>
|
||||
std::basic_string< A<B> >::_Rep::_S_terminal;
|
||||
|
||||
int main()
|
||||
{
|
||||
@ -196,3 +204,7 @@ int main()
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -352,13 +352,13 @@ struct My_money_io : public std::moneypunct<char,false>
|
||||
|
||||
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<char> 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<char> InIt;
|
||||
InIt iend1, iend2, iend3;
|
||||
@ -461,7 +464,7 @@ struct My_money_io_a : public std::moneypunct<char,false>
|
||||
|
||||
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<char,false>
|
||||
|
||||
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<char> InIt;
|
||||
|
||||
bool intl = false;
|
||||
bool test = true;
|
||||
ios_base::iostate err;
|
||||
|
||||
locale loc_a(locale::classic(), new My_money_io_a);
|
||||
|
@ -354,13 +354,13 @@ struct My_money_io : public std::moneypunct<wchar_t,false>
|
||||
|
||||
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<wchar_t,false>
|
||||
void test05()
|
||||
{
|
||||
using namespace std;
|
||||
bool test = true;
|
||||
typedef istreambuf_iterator<wchar_t> 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<wchar_t> InIt;
|
||||
InIt iend1, iend2, iend3;
|
||||
@ -463,7 +465,7 @@ struct My_money_io_a : public std::moneypunct<wchar_t,false>
|
||||
|
||||
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<wchar_t,false>
|
||||
|
||||
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<wchar_t,false>
|
||||
void test07()
|
||||
{
|
||||
using namespace std;
|
||||
bool test = true;
|
||||
typedef istreambuf_iterator<wchar_t> InIt;
|
||||
|
||||
bool intl = false;
|
||||
|
@ -131,6 +131,15 @@ void test02()
|
||||
VERIFY( test );
|
||||
}
|
||||
|
||||
// Explicitly instantiate for systems with no COMDAT or weak support.
|
||||
template
|
||||
std::basic_string<unsigned short>::size_type
|
||||
std::basic_string<unsigned short>::_Rep::_S_max_size;
|
||||
|
||||
template
|
||||
unsigned short
|
||||
std::basic_string<unsigned short>::_Rep::_S_terminal;
|
||||
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
|
Loading…
Reference in New Issue
Block a user