diff options
author | Paolo Carlini <pcarlini@unitus.it> | 2003-02-17 21:07:48 +0100 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2003-02-17 20:07:48 +0000 |
commit | 1a1aed246641008d32b13e1950f8b2412ad49e74 (patch) | |
tree | 4db647a401ec37cbc6b4295f5d8708887f42d6d7 | |
parent | bea63b0accf638e9b45b75efc2b75a746aba88a6 (diff) | |
download | gcc-1a1aed246641008d32b13e1950f8b2412ad49e74.zip gcc-1a1aed246641008d32b13e1950f8b2412ad49e74.tar.gz gcc-1a1aed246641008d32b13e1950f8b2412ad49e74.tar.bz2 |
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
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/std/std_fstream.h | 23 | ||||
-rw-r--r-- | libstdc++-v3/src/fstream.cc | 20 |
3 files changed, 46 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 75d729b..1426811 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,12 @@ 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 * include/bits/fstream.tcc (_M_convert_to_external): Deal correctly with noconv, as prescribed by 27.8.1.4,p8. diff --git a/libstdc++-v3/include/std/std_fstream.h b/libstdc++-v3/include/std/std_fstream.h index 6a5e3bc..d7a0e09 100644 --- a/libstdc++-v3/include/std/std_fstream.h +++ b/libstdc++-v3/include/std/std_fstream.h @@ -439,23 +439,38 @@ namespace std 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 /** diff --git a/libstdc++-v3/src/fstream.cc b/libstdc++-v3/src/fstream.cc index be71133..944bae2 100644 --- a/libstdc++-v3/src/fstream.cc +++ b/libstdc++-v3/src/fstream.cc @@ -100,6 +100,16 @@ namespace std 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 @@ -189,5 +199,15 @@ namespace std _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 |