Commit 1a1aed24 by Paolo Carlini Committed by Paolo Carlini

re PR libstdc++/9580 (basic_filebuf<> with custom traits_type fails to link)

2003-02-17  Paolo Carlini  <pcarlini@unitus.it>

	PR libstdc++/9580
	* include/std/std_fstream.h: Declare underflow and uflow
	specializations, change generic definitions to do nothing.
	* src/fstream.cc: Add underflow and uflow specializations.

From-SVN: r63008
parent bea63b0a
2003-02-17 Paolo Carlini <pcarlini@unitus.it> 2003-02-17 Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/9580
* include/std/std_fstream.h: Declare underflow and uflow
specializations, change generic definitions to do nothing.
* src/fstream.cc: Add underflow and uflow specializations.
2003-02-17 Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/9169 PR libstdc++/9169
* include/bits/fstream.tcc (_M_convert_to_external): * include/bits/fstream.tcc (_M_convert_to_external):
Deal correctly with noconv, as prescribed by 27.8.1.4,p8. Deal correctly with noconv, as prescribed by 27.8.1.4,p8.
......
...@@ -439,23 +439,38 @@ namespace std ...@@ -439,23 +439,38 @@ namespace std
basic_filebuf<char>::int_type basic_filebuf<char>::int_type
basic_filebuf<char>::_M_underflow_common(bool __bump); basic_filebuf<char>::_M_underflow_common(bool __bump);
template<>
basic_filebuf<char>::int_type
basic_filebuf<char>::underflow();
template<>
basic_filebuf<char>::int_type
basic_filebuf<char>::uflow();
#ifdef _GLIBCPP_USE_WCHAR_T #ifdef _GLIBCPP_USE_WCHAR_T
template<> template<>
basic_filebuf<wchar_t>::int_type basic_filebuf<wchar_t>::int_type
basic_filebuf<wchar_t>::_M_underflow_common(bool __bump); basic_filebuf<wchar_t>::_M_underflow_common(bool __bump);
template<>
basic_filebuf<wchar_t>::int_type
basic_filebuf<wchar_t>::underflow();
template<>
basic_filebuf<wchar_t>::int_type
basic_filebuf<wchar_t>::uflow();
#endif #endif
// Generic definitions. // Generic definitions do nothing.
template <typename _CharT, typename _Traits> template <typename _CharT, typename _Traits>
typename basic_filebuf<_CharT, _Traits>::int_type typename basic_filebuf<_CharT, _Traits>::int_type
basic_filebuf<_CharT, _Traits>::underflow() basic_filebuf<_CharT, _Traits>::underflow()
{ return _M_underflow_common(false); } { return int_type(); }
template <typename _CharT, typename _Traits> template <typename _CharT, typename _Traits>
typename basic_filebuf<_CharT, _Traits>::int_type typename basic_filebuf<_CharT, _Traits>::int_type
basic_filebuf<_CharT, _Traits>::uflow() basic_filebuf<_CharT, _Traits>::uflow()
{ return _M_underflow_common(true); } { return int_type(); }
// [27.8.1.5] Template class basic_ifstream // [27.8.1.5] Template class basic_ifstream
/** /**
......
...@@ -100,6 +100,16 @@ namespace std ...@@ -100,6 +100,16 @@ namespace std
return __ret; return __ret;
} }
template<>
basic_filebuf<char>::int_type
basic_filebuf<char>::underflow()
{ return _M_underflow_common(false); }
template<>
basic_filebuf<char>::int_type
basic_filebuf<char>::uflow()
{ return _M_underflow_common(true); }
#ifdef _GLIBCPP_USE_WCHAR_T #ifdef _GLIBCPP_USE_WCHAR_T
template<> template<>
basic_filebuf<wchar_t>::int_type basic_filebuf<wchar_t>::int_type
...@@ -189,5 +199,15 @@ namespace std ...@@ -189,5 +199,15 @@ namespace std
_M_last_overflowed = false; _M_last_overflowed = false;
return __ret; return __ret;
} }
template<>
basic_filebuf<wchar_t>::int_type
basic_filebuf<wchar_t>::underflow()
{ return _M_underflow_common(false); }
template<>
basic_filebuf<wchar_t>::int_type
basic_filebuf<wchar_t>::uflow()
{ return _M_underflow_common(true); }
#endif #endif
} // namespace std } // namespace std
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment