std_streambuf.h (_M_buf): is currently used only for basic_filebuf, therefore move it there.

2003-04-28  Paolo Carlini  <pcarlini@unitus.it>

	* include/std/std_streambuf.h (_M_buf): is currently
	used only for basic_filebuf, therefore move it there.
	(basic_streambuf(), ~basic_streambuf()): Adjust.
	* include/std/std_fstream.h (_M_buf): Moved here.
	* include/std/std_sstream.h (setbuf): Don't set _M_buf,
	is actually redundant for basic_stringbuf.
	(_M_really_sync): Likewise.
	* include/bits/fstream.tcc (basic_filebuf()): Adjust.
	* include/bits/sstream.tcc (seekoff): Adjust.

From-SVN: r66193
This commit is contained in:
Paolo Carlini 2003-04-29 01:51:37 +02:00 committed by Paolo Carlini
parent 988ad90d00
commit 479a181108
6 changed files with 29 additions and 21 deletions

View File

@ -1,3 +1,15 @@
2003-04-28 Paolo Carlini <pcarlini@unitus.it>
* include/std/std_streambuf.h (_M_buf): is currently
used only for basic_filebuf, therefore move it there.
(basic_streambuf(), ~basic_streambuf()): Adjust.
* include/std/std_fstream.h (_M_buf): Moved here.
* include/std/std_sstream.h (setbuf): Don't set _M_buf,
is actually redundant for basic_stringbuf.
(_M_really_sync): Likewise.
* include/bits/fstream.tcc (basic_filebuf()): Adjust.
* include/bits/sstream.tcc (seekoff): Adjust.
2003-04-28 Benjamin Kosnik <bkoz@redhat.com>
* src/localename.cc: Standardize exception strings.

View File

@ -76,8 +76,9 @@ namespace std
basic_filebuf<_CharT, _Traits>::
basic_filebuf() : __streambuf_type(), _M_file(&_M_lock),
_M_state_cur(__state_type()), _M_state_beg(__state_type()),
_M_buf_size(BUFSIZ), _M_buf_allocated(false), _M_last_overflowed(false),
_M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false)
_M_buf(NULL), _M_buf_size(BUFSIZ), _M_buf_allocated(false),
_M_last_overflowed(false), _M_pback_cur_save(0),
_M_pback_end_save(0), _M_pback_init(false)
{ this->_M_buf_unified = true; }
template<typename _CharT, typename _Traits>

View File

@ -127,7 +127,7 @@ namespace std
if (_M_string.capacity() && (__testin || __testout || __testboth))
{
char_type* __beg = this->_M_buf;
char_type* __beg = __testin ? this->_M_in_beg : this->_M_out_beg;
char_type* __curi = NULL;
char_type* __curo = NULL;
char_type* __endi = NULL;

View File

@ -114,6 +114,13 @@ namespace std
__state_type _M_state_cur;
__state_type _M_state_beg;
/**
* @if maint
* Pointer to the beginning of internally-allocated space.
* @endif
*/
char_type* _M_buf;
/**
* @if maint
* Actual size of internal buffer.

View File

@ -229,7 +229,6 @@ namespace std
_M_string = __string_type(__s, __n);
// Step 2: Use the external array.
this->_M_buf = __s;
_M_really_sync(__s, 0, 0);
}
return this;
@ -263,9 +262,8 @@ namespace std
const bool __testout = this->_M_mode & ios_base::out;
__size_type __len = _M_string.size();
this->_M_buf = __base;
if (__testin)
this->setg(__base, __base + __i, __base + __len);
this->setg(__base, __base + __i, __base + __len);
if (__testout)
{
this->setp(__base, __base + _M_string.capacity());

View File

@ -159,16 +159,6 @@ namespace std
__streambuf_type* __sbin,__streambuf_type* __sbout);
protected:
/**
* @if maint
* Pointer to the beginning of internally-allocated space. Filebuf
* manually allocates/deallocates this, whereas stringstreams attempt
* to use the built-in intelligence of the string class. If you are
* managing memory, set this. If not, leave it NULL.
* @endif
*/
char_type* _M_buf;
/**
* @if maint
* True iff _M_in_* and _M_out_* buffers should always point to
@ -245,7 +235,7 @@ namespace std
// __n + _M_out_[cur, lim] <= _M_out_end
// Assuming all _M_out_[beg, cur, lim] pointers are operating on
// the same range:
// _M_buf <= _M_*_ <= _M_out_end
// _M_out_beg <= _M_*_ <= _M_out_end
void
_M_move_out_cur(off_type __n) // argument needs to be +-
{
@ -467,10 +457,10 @@ namespace std
* - this is not an error
*/
basic_streambuf()
: _M_buf(NULL), _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_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())
{ }
// [27.5.2.3.1] get area access