std_streambuf.h (_M_out_buf_size()): Remove.

2003-03-31  Paolo Carlini  <pcarlini@unitus.it>

	* include/std/std_streambuf.h (_M_out_buf_size()): Remove.
	* include/bits/fstream.tcc (_M_allocate_internal_buffer):
	Don't set _M_out_end.
	(basic_filebuf::overflow): Replace _M_out_buf_size() with
	this->_M_out_cur && this->_M_out_cur < this->_M_out_end.
	* include/bits/sstream.tcc (basic_stringbuf::overflow):
	Replace _M_out_buf_size() with this->_M_out_cur < this->_M_out_end;
	* include/bits/streambuf.tcc (basic_streambuf::sputc):
	Replace _M_out_buf_size() with _M_out_cur && _M_out_cur < _M_out_end.
	(basic_streambuf::xsputn): Replace _M_out_buf_size() with
	_M_out_end - _M_out_cur.
	(__copy_streambufs): Likewise.
	* include/std/std_fstream.h (_M_set_determinate): Set
	_M_out_end here.

From-SVN: r65093
This commit is contained in:
Paolo Carlini 2003-03-31 20:24:13 +02:00 committed by Paolo Carlini
parent c8ae788f59
commit eb98bd16ce
6 changed files with 29 additions and 24 deletions

View File

@ -1,3 +1,20 @@
2003-03-31 Paolo Carlini <pcarlini@unitus.it>
* include/std/std_streambuf.h (_M_out_buf_size()): Remove.
* include/bits/fstream.tcc (_M_allocate_internal_buffer):
Don't set _M_out_end.
(basic_filebuf::overflow): Replace _M_out_buf_size() with
this->_M_out_cur && this->_M_out_cur < this->_M_out_end.
* include/bits/sstream.tcc (basic_stringbuf::overflow):
Replace _M_out_buf_size() with this->_M_out_cur < this->_M_out_end;
* include/bits/streambuf.tcc (basic_streambuf::sputc):
Replace _M_out_buf_size() with _M_out_cur && _M_out_cur < _M_out_end.
(basic_streambuf::xsputn): Replace _M_out_buf_size() with
_M_out_end - _M_out_cur.
(__copy_streambufs): Likewise.
* include/std/std_fstream.h (_M_set_determinate): Set
_M_out_end here.
2003-03-30 Paolo Carlini <pcarlini@unitus.it> 2003-03-30 Paolo Carlini <pcarlini@unitus.it>
* include/bits/fstream.tcc (basic_filebuf::showmanyc, * include/bits/fstream.tcc (basic_filebuf::showmanyc,

View File

@ -48,10 +48,8 @@ namespace std
{ {
this->_M_buf_size = this->_M_buf_size_opt; this->_M_buf_size = this->_M_buf_size_opt;
// Allocate internal buffer... // Allocate internal buffer.
this->_M_buf = new char_type[this->_M_buf_size]; this->_M_buf = new char_type[this->_M_buf_size];
// ... and consistently set the end of buffer pointer.
this->_M_out_end = this->_M_buf + this->_M_buf_size;
_M_buf_allocated = true; _M_buf_allocated = true;
} }
} }
@ -255,7 +253,8 @@ namespace std
overflow(int_type __c) overflow(int_type __c)
{ {
int_type __ret = traits_type::eof(); int_type __ret = traits_type::eof();
bool __testput = _M_out_buf_size(); bool __testput =
this->_M_out_cur && this->_M_out_cur < this->_M_out_end;
bool __testout = this->_M_mode & ios_base::out; bool __testout = this->_M_mode & ios_base::out;
if (__testout) if (__testout)

View File

@ -92,7 +92,7 @@ namespace std
__size_type __len = __size_type __len =
std::max(_M_string.capacity() + 1, this->_M_buf_size_opt); std::max(_M_string.capacity() + 1, this->_M_buf_size_opt);
bool __testwrite = _M_out_buf_size(); bool __testwrite = this->_M_out_cur < this->_M_out_end;
if (__builtin_expect(!__testwrite && __len > _M_string.max_size(), false)) if (__builtin_expect(!__testwrite && __len > _M_string.max_size(), false))
return traits_type::eof(); return traits_type::eof();

View File

@ -99,7 +99,7 @@ namespace std
sputc(char_type __c) sputc(char_type __c)
{ {
int_type __ret; int_type __ret;
if (_M_out_buf_size()) if (_M_out_cur && _M_out_cur < _M_out_end)
{ {
*_M_out_cur = __c; *_M_out_cur = __c;
_M_out_cur_move(1); _M_out_cur_move(1);
@ -152,7 +152,7 @@ namespace std
streamsize __ret = 0; streamsize __ret = 0;
while (__ret < __n) while (__ret < __n)
{ {
off_type __buf_len = _M_out_buf_size(); off_type __buf_len = _M_out_end - _M_out_cur;
if (__buf_len > 0) if (__buf_len > 0)
{ {
off_type __remaining = __n - __ret; off_type __remaining = __n - __ret;
@ -189,11 +189,12 @@ namespace std
basic_streambuf<_CharT, _Traits>* __sbout) basic_streambuf<_CharT, _Traits>* __sbout)
{ {
typedef typename _Traits::int_type int_type; typedef typename _Traits::int_type int_type;
typedef typename _Traits::off_type off_type;
streamsize __ret = 0; streamsize __ret = 0;
streamsize __bufsize = __sbin->in_avail(); streamsize __bufsize = __sbin->in_avail();
streamsize __xtrct; streamsize __xtrct;
const typename _Traits::off_type __size_opt = const off_type __size_opt =
__sbin->_M_buf_size_opt > 0 ? __sbin->_M_buf_size_opt : 1; __sbin->_M_buf_size_opt > 0 ? __sbin->_M_buf_size_opt : 1;
try try
@ -213,7 +214,8 @@ namespace std
{ {
streamsize __charsread; streamsize __charsread;
const streamsize __size = const streamsize __size =
std::min(__size_opt, __sbout->_M_out_buf_size()); std::min(__size_opt, off_type(__sbout->_M_out_end -
__sbout->_M_out_cur));
if (__size > 1) if (__size > 1)
{ {
_CharT* __buf = _CharT* __buf =

View File

@ -409,13 +409,10 @@ namespace std
bool __testin = this->_M_mode & ios_base::in; bool __testin = this->_M_mode & ios_base::in;
bool __testout = this->_M_mode & ios_base::out; bool __testout = this->_M_mode & ios_base::out;
if (__testin) if (__testin)
{ this->setg(this->_M_buf, this->_M_buf, this->_M_buf + __off);
this->_M_in_beg = this->_M_in_cur = this->_M_buf;
this->_M_in_end = this->_M_buf + __off;
}
if (__testout) if (__testout)
{ {
this->_M_out_beg = this->_M_out_cur = this->_M_buf; this->setp(this->_M_buf, this->_M_buf + this->_M_buf_size);
this->_M_out_lim = this->_M_buf + __off; this->_M_out_lim = this->_M_buf + __off;
} }
_M_filepos = this->_M_buf + __off; _M_filepos = this->_M_buf + __off;

View File

@ -333,16 +333,6 @@ namespace std
} }
} }
// Returns zero if the output buffer is full (-> overflow).
off_type
_M_out_buf_size()
{
if (_M_out_cur)
return _M_out_end - _M_out_cur;
else
return off_type(0);
}
public: public:
/// Destructor deallocates no buffer space. /// Destructor deallocates no buffer space.
virtual virtual