+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
basic_filebuf<char>::int_type
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
template<>
basic_filebuf<wchar_t>::int_type
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
- // Generic definitions.
+ // Generic definitions do nothing.
template <typename _CharT, typename _Traits>
typename basic_filebuf<_CharT, _Traits>::int_type
basic_filebuf<_CharT, _Traits>::underflow()
- { return _M_underflow_common(false); }
+ { return int_type(); }
template <typename _CharT, typename _Traits>
typename basic_filebuf<_CharT, _Traits>::int_type
basic_filebuf<_CharT, _Traits>::uflow()
- { return _M_underflow_common(true); }
-
+ { return int_type(); }
// [27.8.1.5] Template class basic_ifstream
/**
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
template<>
basic_filebuf<wchar_t>::int_type
_M_last_overflowed = false;
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
} // namespace std