+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
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]*;
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
_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:
*;
};
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);
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);
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 :
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 :
}
- 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;
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);
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);
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);
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 { };
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()
{
return 0;
}
+
+
+
+
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;
}
};
using namespace std;
typedef istreambuf_iterator<char> InIt;
+ bool test = true;
+
locale loc(locale::classic(), new My_money_io);
string bufferp("$1234.56");
void test06()
{
using namespace std;
+ bool test = true;
typedef istreambuf_iterator<char> InIt;
InIt iend1, iend2, iend3;
pattern do_pos_format() const
{
- static pattern pat = { { sign, value, space, symbol } };
+ pattern pat = { { sign, value, space, symbol } };
return pat;
}
};
pattern do_pos_format() const
{
- static pattern pat = { { sign, value, symbol, none } };
+ pattern pat = { { sign, value, symbol, none } };
return pat;
}
};
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);
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;
}
};
void test05()
{
using namespace std;
+ bool test = true;
typedef istreambuf_iterator<wchar_t> InIt;
locale loc(locale::classic(), new My_money_io);
void test06()
{
using namespace std;
+ bool test = true;
typedef istreambuf_iterator<wchar_t> InIt;
InIt iend1, iend2, iend3;
pattern do_pos_format() const
{
- static pattern pat = { { sign, value, space, symbol } };
+ pattern pat = { { sign, value, space, symbol } };
return pat;
}
};
pattern do_pos_format() const
{
- static pattern pat = { { sign, value, symbol, none } };
+ pattern pat = { { sign, value, symbol, none } };
return pat;
}
};
void test07()
{
using namespace std;
+ bool test = true;
typedef istreambuf_iterator<wchar_t> InIt;
bool intl = false;
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();