Commit 479a1811 by Paolo Carlini Committed by Paolo Carlini

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
parent 988ad90d
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.
......
......@@ -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>
......
......@@ -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;
......
......@@ -116,6 +116,13 @@ namespace std
/**
* @if maint
* Pointer to the beginning of internally-allocated space.
* @endif
*/
char_type* _M_buf;
/**
* @if maint
* Actual size of internal buffer.
* @endif
*/
......
......@@ -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());
......
......@@ -161,16 +161,6 @@ namespace std
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
* the same place. True for fstreams, false for sstreams.
* @endif
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment