diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-08 15:46:28 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-08 15:46:28 +0000 |
commit | 5eabcc3a3c43e15244bd586ff5cca7966d4ea7a3 (patch) | |
tree | b575696a6bc27aaebd9e0eb5902c1870af61a812 /libstdc++-v3/include/std/std_istream.h | |
parent | 48fc5f4f3ba68b9b15116d34a707e0a2c5130fb4 (diff) | |
download | ppe42-gcc-5eabcc3a3c43e15244bd586ff5cca7966d4ea7a3.tar.gz ppe42-gcc-5eabcc3a3c43e15244bd586ff5cca7966d4ea7a3.zip |
2004-11-08 Paolo Carlini <pcarlini@suse.de>
* include/bits/istream.tcc (getline(char_type*, streamsize,
char_type), ignore(streamsize), ignore(streamsize, int_type)):
Restore a generic version of the functions, not using the
protected members of basic_streambuf.
* include/std/std_istream.h (getline(char_type*, streamsize,
char_type), ignore(streamsize), ignore(streamsize, int_type)):
Declare optimized specializations for char and wchar_t.
* src/istream.cc: New file, define the latter.
* src/Makefile.am: Add.
* src/Makefile.in: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90268 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include/std/std_istream.h')
-rw-r--r-- | libstdc++-v3/include/std/std_istream.h | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/libstdc++-v3/include/std/std_istream.h b/libstdc++-v3/include/std/std_istream.h index 65f9e6c3034..28b0fdd5c60 100644 --- a/libstdc++-v3/include/std/std_istream.h +++ b/libstdc++-v3/include/std/std_istream.h @@ -574,7 +574,40 @@ namespace std explicit basic_istream(): _M_gcount(streamsize(0)) { } }; + + // Explicit specialization declarations, defined in src/istream.cc. + template<> + basic_istream<char>& + basic_istream<char>:: + getline(char_type* __s, streamsize __n, char_type __delim); + + template<> + basic_istream<char>& + basic_istream<char>:: + ignore(streamsize __n); + template<> + basic_istream<char>& + basic_istream<char>:: + ignore(streamsize __n, int_type __delim); + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + basic_istream<wchar_t>& + basic_istream<wchar_t>:: + getline(char_type* __s, streamsize __n, char_type __delim); + + template<> + basic_istream<wchar_t>& + basic_istream<wchar_t>:: + ignore(streamsize __n); + + template<> + basic_istream<wchar_t>& + basic_istream<wchar_t>:: + ignore(streamsize __n, int_type __delim); +#endif + /** * @brief Performs setup work for input streams. * @@ -693,13 +726,13 @@ namespace std operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s); template<class _Traits> - basic_istream<char,_Traits>& - operator>>(basic_istream<char,_Traits>& __in, unsigned char* __s) + basic_istream<char, _Traits>& + operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s) { return (__in >> reinterpret_cast<char*>(__s)); } template<class _Traits> - basic_istream<char,_Traits>& - operator>>(basic_istream<char,_Traits>& __in, signed char* __s) + basic_istream<char, _Traits>& + operator>>(basic_istream<char, _Traits>& __in, signed char* __s) { return (__in >> reinterpret_cast<char*>(__s)); } //@} |