diff options
author | Phil Edwards <pme@gcc.gnu.org> | 2002-03-03 17:48:42 +0000 |
---|---|---|
committer | Phil Edwards <pme@gcc.gnu.org> | 2002-03-03 17:48:42 +0000 |
commit | 798355a229acf2076722cee832a98a1e64b122eb (patch) | |
tree | 797fb154ab03a99308f6b6a427891dcb1c1351bd /libstdc++-v3 | |
parent | e81dd3810b095e922795b16de27af819ee190ba8 (diff) | |
download | gcc-798355a229acf2076722cee832a98a1e64b122eb.zip gcc-798355a229acf2076722cee832a98a1e64b122eb.tar.gz gcc-798355a229acf2076722cee832a98a1e64b122eb.tar.bz2 |
std_sstream.h: Remove trailing spaces.
2002-03-03 Phil Edwards <pme@gcc.gnu.org>
* include/std/std_sstream.h: Remove trailing spaces.
(basic_stringbuf::_M_stringbuf_init): Also check for ios_base::app.
* testsuite/27_io/stringbuf.cc (test05, test06): New tests.
From-SVN: r50258
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/std/std_sstream.h | 76 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/27_io/stringbuf.cc | 40 |
3 files changed, 82 insertions, 40 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index d8ccc58..47f4cca 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2002-03-03 Phil Edwards <pme@gcc.gnu.org> + + * include/std/std_sstream.h: Remove trailing spaces. + (basic_stringbuf::_M_stringbuf_init): Also check for ios_base::app. + * testsuite/27_io/stringbuf.cc (test05, test06): New tests. + 2002-03-02 Paolo Carlini <pcarlini@unitus.it> * testsuite/22_locale/num_get_members_char.cc (test04): diff --git a/libstdc++-v3/include/std/std_sstream.h b/libstdc++-v3/include/std/std_sstream.h index bbd6dc6..bb1dfcd 100644 --- a/libstdc++-v3/include/std/std_sstream.h +++ b/libstdc++-v3/include/std/std_sstream.h @@ -69,23 +69,23 @@ namespace std protected: // Data Members: __string_type _M_string; - + public: // Constructors: - explicit + explicit basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out) : __streambuf_type(), _M_string() { _M_stringbuf_init(__mode); } - explicit + explicit basic_stringbuf(const __string_type& __str, ios_base::openmode __mode = ios_base::in | ios_base::out) : __streambuf_type(), _M_string(__str.data(), __str.size()) { _M_stringbuf_init(__mode); } // Get and set: - __string_type - str() const + __string_type + str() const { if (_M_mode & ios_base::out) { @@ -102,7 +102,7 @@ namespace std return _M_string; } - void + void str(const __string_type& __s) { _M_string = __s; @@ -127,14 +127,14 @@ namespace std // suite particular needs. _M_buf_size_opt = 512; _M_mode = __mode; - if (_M_mode & ios_base::ate) - _M_really_sync(0, _M_buf_size); - else + if (_M_mode & (ios_base::ate | ios_base::app)) + _M_really_sync(0, _M_buf_size); + else _M_really_sync(0, 0); } // Overridden virtual functions: - virtual int_type + virtual int_type underflow() { if (_M_in_cur && _M_in_cur < _M_in_end) @@ -143,38 +143,38 @@ namespace std return traits_type::eof(); } - virtual int_type + virtual int_type pbackfail(int_type __c = traits_type::eof()); - virtual int_type + virtual int_type overflow(int_type __c = traits_type::eof()); - virtual __streambuf_type* + virtual __streambuf_type* setbuf(char_type* __s, streamsize __n) - { - if (__s && __n) + { + if (__s && __n) { _M_string = __string_type(__s, __n); _M_really_sync(0, 0); } - return this; - } + return this; + } - virtual pos_type + virtual pos_type seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode = ios_base::in | ios_base::out); - virtual pos_type - seekpos(pos_type __sp, + virtual pos_type + seekpos(pos_type __sp, ios_base::openmode __mode = ios_base::in | ios_base::out); // Internal function for correctly updating the internal buffer // for a particular _M_string, due to initialization or // re-sizing of an existing _M_string. // Assumes: contents of _M_string and internal buffer match exactly. - // __i == _M_in_cur - _M_in_beg + // __i == _M_in_cur - _M_in_beg // __o == _M_out_cur - _M_out_beg - virtual int + virtual int _M_really_sync(__size_type __i, __size_type __o) { char_type* __base = const_cast<char_type*>(_M_string.data()); @@ -221,12 +221,12 @@ namespace std public: // Constructors: - explicit + explicit basic_istringstream(ios_base::openmode __mode = ios_base::in) : __istream_type(NULL), _M_stringbuf(__mode | ios_base::in) { this->init(&_M_stringbuf); } - explicit + explicit basic_istringstream(const __string_type& __str, ios_base::openmode __mode = ios_base::in) : __istream_type(NULL), _M_stringbuf(__str, __mode | ios_base::in) @@ -236,15 +236,15 @@ namespace std { } // Members: - __stringbuf_type* + __stringbuf_type* rdbuf() const { return const_cast<__stringbuf_type*>(&_M_stringbuf); } __string_type str() const { return _M_stringbuf.str(); } - - void + + void str(const __string_type& __s) { _M_stringbuf.str(__s); } }; @@ -276,12 +276,12 @@ namespace std public: // Constructors/destructor: - explicit + explicit basic_ostringstream(ios_base::openmode __mode = ios_base::out) : __ostream_type(NULL), _M_stringbuf(__mode | ios_base::out) { this->init(&_M_stringbuf); } - explicit + explicit basic_ostringstream(const __string_type& __str, ios_base::openmode __mode = ios_base::out) : __ostream_type(NULL), _M_stringbuf(__str, __mode | ios_base::out) @@ -291,20 +291,20 @@ namespace std { } // Members: - __stringbuf_type* + __stringbuf_type* rdbuf() const { return const_cast<__stringbuf_type*>(&_M_stringbuf); } __string_type str() const { return _M_stringbuf.str(); } - - void + + void str(const __string_type& __s) { _M_stringbuf.str(__s); } }; - - + + // 27.7.4 Template class basic_stringstream template <typename _CharT, typename _Traits, typename _Alloc> class basic_stringstream : public basic_iostream<_CharT, _Traits> @@ -331,12 +331,12 @@ namespace std public: // Constructors/destructors - explicit + explicit basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in) : __iostream_type(NULL), _M_stringbuf(__m) { this->init(&_M_stringbuf); } - explicit + explicit basic_stringstream(const __string_type& __str, ios_base::openmode __m = ios_base::out | ios_base::in) : __iostream_type(NULL), _M_stringbuf(__str, __m) @@ -346,7 +346,7 @@ namespace std { } // Members: - __stringbuf_type* + __stringbuf_type* rdbuf() const { return const_cast<__stringbuf_type*>(&_M_stringbuf); } @@ -354,7 +354,7 @@ namespace std str() const { return _M_stringbuf.str(); } - void + void str(const __string_type& __s) { _M_stringbuf.str(__s); } }; diff --git a/libstdc++-v3/testsuite/27_io/stringbuf.cc b/libstdc++-v3/testsuite/27_io/stringbuf.cc index 13d73a4..bc0bbb4 100644 --- a/libstdc++-v3/testsuite/27_io/stringbuf.cc +++ b/libstdc++-v3/testsuite/27_io/stringbuf.cc @@ -1,6 +1,7 @@ // 981208 bkoz test functionality of basic_stringbuf for char_type == char -// Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -439,12 +440,47 @@ bool test04() { } -int main() { +// libstdc++/3955 -- ios_base::app overwrites from the beginning +bool test05() +{ + bool test = true; + + std::ostringstream os ("foo"); + os << "bar"; + + test = os.str() == "bar"; + +#ifdef DEBUG_ASSERT + assert(test); +#endif + + return test; +} + +bool test06() +{ + bool test = true; + + std::ostringstream os ("foo", std::ios_base::app); + os << "bar"; + + test = os.str() == "foobar"; + +#ifdef DEBUG_ASSERT + assert(test); +#endif + + return test; +} +int main() +{ test01(); test02(); test03(); test04(); + test05(); + test06(); return 0; } |