diff options
author | Paolo Carlini <pcarlini@unitus.it> | 2003-04-12 21:21:35 +0200 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2003-04-12 19:21:35 +0000 |
commit | 7ef9fd85efee623d62215c4ab0f97fe6b796af55 (patch) | |
tree | 73a480ea88c541c409b09d39cd3afd7f34452644 | |
parent | 2bd020439ad63aa78333cf0e66f6b8ca0b63685c (diff) | |
download | gcc-7ef9fd85efee623d62215c4ab0f97fe6b796af55.zip gcc-7ef9fd85efee623d62215c4ab0f97fe6b796af55.tar.gz gcc-7ef9fd85efee623d62215c4ab0f97fe6b796af55.tar.bz2 |
Remove _M_buf_size_opt, use directly _M_buf_size instead.
2003-04-12 Paolo Carlini <pcarlini@unitus.it>
Remove _M_buf_size_opt, use directly _M_buf_size instead.
* include/bits/fstream.tcc
(basic_filebuf::_M_allocate_internal_buffer, setbuf): Remove
references to _M_buf_size_opt.
* include/bits/sstream.tcc (basic_stringbuf::overflow): Likewise.
* include/bits/streambuf.tcc (__copy_streambufs): Likewise, rename
__bufsize to __in_avail and __size_opt to __buf_size.
* include/ext/stdio_filebuf.h (stdio_filebuf::stdio_filebuf): Likewise.
* include/std/std_sstream.h (_M_stringbuf_init, setbuf): Likewise.
* include/std/std_streambuf.h (~basic_streambuf(),
basic_streambuf()): Likewise, remove _M_buf_size_opt member.
* testsuite/27_io/basic_filebuf/close/char/3.cc: Set _M_buf_size.
* testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Likewise.
* testsuite/27_io/basic_filebuf/sbumpc/char/1.cc: Likewise.
* testsuite/27_io/basic_filebuf/seekoff/char/1.cc: Likewise.
* testsuite/27_io/basic_filebuf/seekpos/char/1.cc: Likewise.
* testsuite/27_io/basic_filebuf/sgetc/char/1.cc: Likewise.
* testsuite/27_io/basic_filebuf/sgetn/char/1.cc: Likewise.
* testsuite/27_io/basic_filebuf/snextc/char/1.cc: Likewise.
* testsuite/27_io/basic_filebuf/sputbackc/char/1.cc: Likewise.
* testsuite/27_io/basic_filebuf/sputc/char/1.cc: Likewise.
* testsuite/27_io/basic_filebuf/sputn/char/1.cc: Likewise.
* testsuite/27_io/basic_filebuf/sungetc/char/1.cc: Likewise.
From-SVN: r65518
19 files changed, 69 insertions, 57 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 65197a2..10791e4 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,29 @@ +2003-04-12 Paolo Carlini <pcarlini@unitus.it> + + Remove _M_buf_size_opt, use directly _M_buf_size instead. + * include/bits/fstream.tcc + (basic_filebuf::_M_allocate_internal_buffer, setbuf): Remove + references to _M_buf_size_opt. + * include/bits/sstream.tcc (basic_stringbuf::overflow): Likewise. + * include/bits/streambuf.tcc (__copy_streambufs): Likewise, rename + __bufsize to __in_avail and __size_opt to __buf_size. + * include/ext/stdio_filebuf.h (stdio_filebuf::stdio_filebuf): Likewise. + * include/std/std_sstream.h (_M_stringbuf_init, setbuf): Likewise. + * include/std/std_streambuf.h (~basic_streambuf(), + basic_streambuf()): Likewise, remove _M_buf_size_opt member. + * testsuite/27_io/basic_filebuf/close/char/3.cc: Set _M_buf_size. + * testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Likewise. + * testsuite/27_io/basic_filebuf/sbumpc/char/1.cc: Likewise. + * testsuite/27_io/basic_filebuf/seekoff/char/1.cc: Likewise. + * testsuite/27_io/basic_filebuf/seekpos/char/1.cc: Likewise. + * testsuite/27_io/basic_filebuf/sgetc/char/1.cc: Likewise. + * testsuite/27_io/basic_filebuf/sgetn/char/1.cc: Likewise. + * testsuite/27_io/basic_filebuf/snextc/char/1.cc: Likewise. + * testsuite/27_io/basic_filebuf/sputbackc/char/1.cc: Likewise. + * testsuite/27_io/basic_filebuf/sputc/char/1.cc: Likewise. + * testsuite/27_io/basic_filebuf/sputn/char/1.cc: Likewise. + * testsuite/27_io/basic_filebuf/sungetc/char/1.cc: Likewise. + 2003-04-12 Paolo Carlini <pcarlini at unitus dot it> * include/ext/stdio_filebuf.h diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc index c4481ba..360b907 100644 --- a/libstdc++-v3/include/bits/fstream.tcc +++ b/libstdc++-v3/include/bits/fstream.tcc @@ -44,10 +44,8 @@ namespace std basic_filebuf<_CharT, _Traits>:: _M_allocate_internal_buffer() { - if (!this->_M_buf && this->_M_buf_size_opt) + if (!this->_M_buf && this->_M_buf_size) { - this->_M_buf_size = this->_M_buf_size_opt; - // Allocate internal buffer. this->_M_buf = new char_type[this->_M_buf_size]; _M_buf_allocated = true; @@ -416,7 +414,7 @@ namespace std setbuf(char_type* __s, streamsize __n) { if (!this->is_open() && __s == 0 && __n == 0) - this->_M_buf_size_opt = 0; + this->_M_buf_size = 0; else if (__s && __n) { // This is implementation-defined behavior, and assumes @@ -429,7 +427,7 @@ namespace std // Step 2: Use the external array. this->_M_buf = __s; - this->_M_buf_size_opt = this->_M_buf_size = __n; + this->_M_buf_size = __n; // Consistently set the end of buffer pointer. this->_M_out_end = this->_M_buf + this->_M_buf_size; _M_set_indeterminate(); diff --git a/libstdc++-v3/include/bits/sstream.tcc b/libstdc++-v3/include/bits/sstream.tcc index d41b3cf..ab3298c 100644 --- a/libstdc++-v3/include/bits/sstream.tcc +++ b/libstdc++-v3/include/bits/sstream.tcc @@ -88,10 +88,12 @@ namespace std if (__builtin_expect(__testeof, false)) return traits_type::not_eof(__c); - // In virtue of DR 169 (TC) we are allowed to grow more than - // one char the first time and also... - __size_type __len = std::max(__size_type(_M_string.capacity() + 1), - this->_M_buf_size_opt); + // NB: Start ostringstream buffers at 512 chars. This is an + // experimental value (pronounced "arbitrary" in some of the + // hipper english-speaking countries), and can be changed to + // suit particular needs. + __size_type __len = std::max(__size_type(_M_string.capacity() + 1), + __size_type(512)); bool __testput = this->_M_out_cur < this->_M_out_end; if (__builtin_expect(!__testput && __len > _M_string.max_size(), false)) return traits_type::eof(); @@ -102,8 +104,9 @@ namespace std { // Force-allocate, re-sync. _M_string = this->str(); - // ... the next time. That's easy to implement thanks to the - // exponential growth policy builtin into basic_string. + // In virtue of DR 169 (TC) we are allowed to grow more than + // one char. That's easy to implement thanks to the exponential + // growth policy builtin into basic_string. _M_string.reserve(__len); _M_really_sync(const_cast<char_type*>(_M_string.data()), this->_M_in_cur - this->_M_in_beg, diff --git a/libstdc++-v3/include/bits/streambuf.tcc b/libstdc++-v3/include/bits/streambuf.tcc index 47fc4ec..75ef518 100644 --- a/libstdc++-v3/include/bits/streambuf.tcc +++ b/libstdc++-v3/include/bits/streambuf.tcc @@ -192,29 +192,29 @@ namespace std typedef typename _Traits::off_type off_type; streamsize __ret = 0; - streamsize __bufsize = __sbin->in_avail(); + streamsize __in_avail = __sbin->in_avail(); streamsize __xtrct; - const off_type __size_opt = - __sbin->_M_buf_size_opt > 0 ? __sbin->_M_buf_size_opt : 1; + const off_type __buf_size = + __sbin->_M_buf_size > 0 ? __sbin->_M_buf_size : 1; try { - while (__bufsize != -1) + while (__in_avail != -1) { - if (__bufsize != 0 && __sbin->gptr() != NULL - && __sbin->gptr() + __bufsize <= __sbin->egptr()) + if (__in_avail != 0 && __sbin->gptr() + && __sbin->gptr() + __in_avail <= __sbin->egptr()) { - __xtrct = __sbout->sputn(__sbin->gptr(), __bufsize); + __xtrct = __sbout->sputn(__sbin->gptr(), __in_avail); __ret += __xtrct; __sbin->_M_in_cur_move(__xtrct); - if (__xtrct != __bufsize) + if (__xtrct != __in_avail) break; } else { streamsize __charsread; const streamsize __size = - std::min(__size_opt, off_type(__sbout->_M_out_end - + std::min(__buf_size, off_type(__sbout->_M_out_end - __sbout->_M_out_cur)); if (__size > 1) { @@ -246,7 +246,7 @@ namespace std } if (_Traits::eq_int_type(__sbin->sgetc(), _Traits::eof())) break; - __bufsize = __sbin->in_avail(); + __in_avail = __sbin->in_avail(); } } catch(exception& __fail) diff --git a/libstdc++-v3/include/ext/stdio_filebuf.h b/libstdc++-v3/include/ext/stdio_filebuf.h index b15d8d8..c2cfa2c 100644 --- a/libstdc++-v3/include/ext/stdio_filebuf.h +++ b/libstdc++-v3/include/ext/stdio_filebuf.h @@ -129,11 +129,10 @@ namespace __gnu_cxx // Specify not to use an allocated buffer. this->_M_buf = _M_unbuf; this->_M_buf_size = __size; - this->_M_buf_size_opt = 0; } else { - this->_M_buf_size_opt = __size; + this->_M_buf_size = __size; _M_allocate_internal_buffer(); } _M_set_indeterminate(); @@ -154,11 +153,10 @@ namespace __gnu_cxx // Specify not to use an allocated buffer. this->_M_buf = _M_unbuf; this->_M_buf_size = __size; - this->_M_buf_size_opt = 0; } else { - this->_M_buf_size_opt = __size; + this->_M_buf_size = __size; _M_allocate_internal_buffer(); } _M_set_indeterminate(); diff --git a/libstdc++-v3/include/std/std_sstream.h b/libstdc++-v3/include/std/std_sstream.h index 96fc6f0..635e8ed 100644 --- a/libstdc++-v3/include/std/std_sstream.h +++ b/libstdc++-v3/include/std/std_sstream.h @@ -177,13 +177,8 @@ namespace std void _M_stringbuf_init(ios_base::openmode __mode) { - // NB: Start ostringstream buffers at 512 bytes. This is an - // experimental value (pronounced "arbitrary" in some of the - // hipper english-speaking countries), and can be changed to - // suit particular needs. - this->_M_buf_size_opt = 512; this->_M_mode = __mode; - + __size_type __len = 0; if (this->_M_mode & (ios_base::ate | ios_base::app)) __len = _M_string.size(); @@ -235,7 +230,7 @@ namespace std // Step 2: Use the external array. this->_M_buf = __s; - this->_M_buf_size_opt = this->_M_buf_size = __n; + this->_M_buf_size = __n; _M_really_sync(__s, 0, 0); } return this; diff --git a/libstdc++-v3/include/std/std_streambuf.h b/libstdc++-v3/include/std/std_streambuf.h index 81fe656..f6a31ac 100644 --- a/libstdc++-v3/include/std/std_streambuf.h +++ b/libstdc++-v3/include/std/std_streambuf.h @@ -172,21 +172,14 @@ namespace std /** * @if maint - * Actual size of allocated internal buffer, in bytes. Unused - * for sstreams, which have readily available _M_string.capacity(). + * Actual size of allocated internal buffer. Unused for sstreams, + * which have readily available _M_string.capacity(). * @endif */ size_t _M_buf_size; /** * @if maint - * Optimal or preferred size of internal buffer, in bytes. - * @endif - */ - size_t _M_buf_size_opt; - - /** - * @if maint * True iff _M_in_* and _M_out_* buffers should always point to * the same place. True for fstreams, false for sstreams. * @endif @@ -340,7 +333,6 @@ namespace std { _M_buf_unified = false; _M_buf_size = 0; - _M_buf_size_opt = 0; _M_mode = ios_base::openmode(0); } @@ -552,9 +544,9 @@ namespace std * - this is not an error */ basic_streambuf() - : _M_buf(NULL), _M_buf_size(0), _M_buf_size_opt(BUFSIZ), - _M_buf_unified(false), _M_in_beg(0), _M_in_cur(0), _M_in_end(0), - _M_out_beg(0), _M_out_cur(0), _M_out_end(0), _M_out_lim(0), + : _M_buf(NULL), _M_buf_size(BUFSIZ), _M_buf_unified(false), + _M_in_beg(0), _M_in_cur(0), _M_in_end(0), _M_out_beg(0), + _M_out_cur(0), _M_out_end(0), _M_out_lim(0), _M_mode(ios_base::openmode(0)), _M_buf_locale(locale()), _M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false) diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/3.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/3.cc index d7c1286..94059d0 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/3.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/3.cc @@ -54,7 +54,7 @@ class derived_filebuf: public std::filebuf { public: void - set_size(int_type __size) { _M_buf_size_opt = __size; } + set_size(int_type __size) { _M_buf_size = __size; } }; derived_filebuf fb_01; // in diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/1.cc index eca4951..479ff7b 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/1.cc @@ -54,7 +54,7 @@ class derived_filebuf: public std::filebuf { public: void - set_size(int_type __size) { _M_buf_size_opt = __size; } + set_size(int_type __size) { _M_buf_size = __size; } }; derived_filebuf fb_01; // in diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1.cc index 5a27cdd..d2c7ccd 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1.cc @@ -41,7 +41,7 @@ class derived_filebuf: public std::filebuf { public: void - set_size(int_type __size) { _M_buf_size_opt = __size; } + set_size(int_type __size) { _M_buf_size = __size; } }; derived_filebuf fb_01; // in diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1.cc index cb64d10..e448326 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1.cc @@ -39,7 +39,7 @@ class derived_filebuf: public std::filebuf { public: void - set_size(int_type __size) { _M_buf_size_opt = __size; } + set_size(int_type __size) { _M_buf_size = __size; } }; derived_filebuf fb_03; // in | out diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1.cc index 65a91c4..cd4084f 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1.cc @@ -39,7 +39,7 @@ class derived_filebuf: public std::filebuf { public: void - set_size(int_type __size) { _M_buf_size_opt = __size; } + set_size(int_type __size) { _M_buf_size = __size; } }; derived_filebuf fb_03; // in | out diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1.cc index 34f5355..f5a194c 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1.cc @@ -54,7 +54,7 @@ class derived_filebuf: public std::filebuf { public: void - set_size(int_type __size) { _M_buf_size_opt = __size; } + set_size(int_type __size) { _M_buf_size = __size; } }; derived_filebuf fb_01; // in diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1.cc index 1f0fd4c..634d41b 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1.cc @@ -41,7 +41,7 @@ class derived_filebuf: public std::filebuf { public: void - set_size(int_type __size) { _M_buf_size_opt = __size; } + set_size(int_type __size) { _M_buf_size = __size; } }; derived_filebuf fb_01; // in diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1.cc index 9dcfcb5..fb205bd 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1.cc @@ -41,7 +41,7 @@ class derived_filebuf: public std::filebuf { public: void - set_size(int_type __size) { _M_buf_size_opt = __size; } + set_size(int_type __size) { _M_buf_size = __size; } }; derived_filebuf fb_01; // in diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1.cc index 62dc70e..0f2eb89 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1.cc @@ -54,7 +54,7 @@ class derived_filebuf: public std::filebuf { public: void - set_size(int_type __size) { _M_buf_size_opt = __size; } + set_size(int_type __size) { _M_buf_size = __size; } }; derived_filebuf fb_01; // in diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1.cc index db386f7..875f37e 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1.cc @@ -54,7 +54,7 @@ class derived_filebuf: public std::filebuf { public: void - set_size(int_type __size) { _M_buf_size_opt = __size; } + set_size(int_type __size) { _M_buf_size = __size; } }; derived_filebuf fb_01; // in diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1.cc index 38acef6..a8bafd5 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1.cc @@ -54,7 +54,7 @@ class derived_filebuf: public std::filebuf { public: void - set_size(int_type __size) { _M_buf_size_opt = __size; } + set_size(int_type __size) { _M_buf_size = __size; } }; derived_filebuf fb_01; // in diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1.cc index 92af728..c0f2520 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1.cc @@ -54,7 +54,7 @@ class derived_filebuf: public std::filebuf { public: void - set_size(int_type __size) { _M_buf_size_opt = __size; } + set_size(int_type __size) { _M_buf_size = __size; } }; derived_filebuf fb_01; // in |