std_fstream.h (_M_is_indeterminate): Remove.
2003-05-07 Paolo Carlini <pcarlini@unitus.it> * include/std/std_fstream.h (_M_is_indeterminate): Remove. * src/fstream.cc (basic_filebuf<char/wchar_t>::_M_underflow): Simplify: either there is no buffer or __testget == !__testinit. * src/fstream.cc (basic_filebuf<char/wchar_t>::_M_underflow): _M_set_determinate() automatically sets, if appropriate, _M_out_cur == _M_in_cur. * include/std/std_fstream.h (_M_destroy_pback): Don't set unnecessarily _M_pback_cur_save and _M_pback_end_save. * include/std/std_fstream.h (_M_set_determinate): Minor tweak. * include/std/std_sstream.h (_M_sync): Minor tweak. * include/bits/fstream.tcc (close): No need to call _M_destroy_pback, setting _M_pback_init to false suffices to clean up. From-SVN: r66557
This commit is contained in:
parent
da635858a5
commit
cd96b185c5
|
@ -1,3 +1,25 @@
|
||||||
|
2003-05-07 Paolo Carlini <pcarlini@unitus.it>
|
||||||
|
|
||||||
|
* include/std/std_fstream.h (_M_is_indeterminate): Remove.
|
||||||
|
* src/fstream.cc
|
||||||
|
(basic_filebuf<char/wchar_t>::_M_underflow): Simplify: either
|
||||||
|
there is no buffer or __testget == !__testinit.
|
||||||
|
|
||||||
|
* src/fstream.cc
|
||||||
|
(basic_filebuf<char/wchar_t>::_M_underflow): _M_set_determinate()
|
||||||
|
automatically sets, if appropriate, _M_out_cur == _M_in_cur.
|
||||||
|
|
||||||
|
* include/std/std_fstream.h (_M_destroy_pback): Don't set
|
||||||
|
unnecessarily _M_pback_cur_save and _M_pback_end_save.
|
||||||
|
|
||||||
|
* include/std/std_fstream.h (_M_set_determinate): Minor tweak.
|
||||||
|
|
||||||
|
* include/std/std_sstream.h (_M_sync): Minor tweak.
|
||||||
|
|
||||||
|
* include/bits/fstream.tcc (close): No need to call
|
||||||
|
_M_destroy_pback, setting _M_pback_init to false suffices
|
||||||
|
to clean up.
|
||||||
|
|
||||||
2003-05-06 Benjamin Kosnik <bkoz@redhat.com>
|
2003-05-06 Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
* include/bits/stl_algo.h: Enums as _S_.
|
* include/bits/stl_algo.h: Enums as _S_.
|
||||||
|
|
|
@ -143,8 +143,8 @@ namespace std
|
||||||
|
|
||||||
// NB: Do this here so that re-opened filebufs will be cool...
|
// NB: Do this here so that re-opened filebufs will be cool...
|
||||||
this->_M_mode = ios_base::openmode(0);
|
this->_M_mode = ios_base::openmode(0);
|
||||||
|
this->_M_pback_init = false;
|
||||||
_M_destroy_internal_buffer();
|
_M_destroy_internal_buffer();
|
||||||
_M_destroy_pback();
|
|
||||||
|
|
||||||
if (!_M_file.close())
|
if (!_M_file.close())
|
||||||
__testfail = true;
|
__testfail = true;
|
||||||
|
|
|
@ -201,8 +201,6 @@ namespace std
|
||||||
|
|
||||||
this->setg(this->_M_buf, _M_pback_cur_save + __off_cur,
|
this->setg(this->_M_buf, _M_pback_cur_save + __off_cur,
|
||||||
_M_pback_end_save + __off_end);
|
_M_pback_end_save + __off_end);
|
||||||
_M_pback_cur_save = NULL;
|
|
||||||
_M_pback_end_save = NULL;
|
|
||||||
_M_pback_init = false;
|
_M_pback_init = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -452,7 +450,7 @@ namespace std
|
||||||
void
|
void
|
||||||
_M_output_unshift();
|
_M_output_unshift();
|
||||||
|
|
||||||
// These three functions are used to clarify internal buffer
|
// These two functions are used to clarify internal buffer
|
||||||
// maintenance. After an overflow, or after a seekoff call that
|
// maintenance. After an overflow, or after a seekoff call that
|
||||||
// started at beg or end, or possibly when the stream becomes
|
// started at beg or end, or possibly when the stream becomes
|
||||||
// unbuffered, and a myrid other obscure corner cases, the
|
// unbuffered, and a myrid other obscure corner cases, the
|
||||||
|
@ -483,34 +481,10 @@ namespace std
|
||||||
if (__testout)
|
if (__testout)
|
||||||
{
|
{
|
||||||
this->setp(this->_M_buf, this->_M_buf + this->_M_buf_size);
|
this->setp(this->_M_buf, this->_M_buf + this->_M_buf_size);
|
||||||
this->_M_out_lim = this->_M_buf + __off;
|
this->_M_out_lim += __off;
|
||||||
}
|
}
|
||||||
_M_filepos = this->_M_buf + __off;
|
_M_filepos = this->_M_buf + __off;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @if maint
|
|
||||||
* @doctodo
|
|
||||||
* @endif
|
|
||||||
*/
|
|
||||||
bool
|
|
||||||
_M_is_indeterminate(void)
|
|
||||||
{
|
|
||||||
const bool __testin = this->_M_mode & ios_base::in;
|
|
||||||
const bool __testout = this->_M_mode & ios_base::out;
|
|
||||||
bool __ret = false;
|
|
||||||
// Don't return true if unbuffered.
|
|
||||||
if (this->_M_buf)
|
|
||||||
{
|
|
||||||
if (__testin)
|
|
||||||
__ret = this->_M_in_beg == this->_M_in_cur
|
|
||||||
&& this->_M_in_cur == this->_M_in_end;
|
|
||||||
if (__testout)
|
|
||||||
__ret = this->_M_out_beg == this->_M_out_cur
|
|
||||||
&& this->_M_out_cur == this->_M_out_lim;
|
|
||||||
}
|
|
||||||
return __ret;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Explicit specialization declarations, defined in src/fstream.cc.
|
// Explicit specialization declarations, defined in src/fstream.cc.
|
||||||
|
|
|
@ -258,7 +258,7 @@ namespace std
|
||||||
{
|
{
|
||||||
this->setp(__base, __base + _M_string.capacity());
|
this->setp(__base, __base + _M_string.capacity());
|
||||||
// _M_out_lim points to the string end.
|
// _M_out_lim points to the string end.
|
||||||
this->_M_out_lim = __base + __len;
|
this->_M_out_lim += __len;
|
||||||
this->_M_out_cur += __o;
|
this->_M_out_cur += __o;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,6 @@ namespace std
|
||||||
// Sync internal and external buffers.
|
// Sync internal and external buffers.
|
||||||
// NB: __testget -> __testput as _M_buf_unified here.
|
// NB: __testget -> __testput as _M_buf_unified here.
|
||||||
const bool __testget = _M_in_beg < _M_in_cur;
|
const bool __testget = _M_in_beg < _M_in_cur;
|
||||||
const bool __testinit = _M_is_indeterminate();
|
|
||||||
if (__testget)
|
if (__testget)
|
||||||
{
|
{
|
||||||
if (__testout)
|
if (__testout)
|
||||||
|
@ -74,7 +73,7 @@ namespace std
|
||||||
ios_base::cur, __testsync, ios_base::in);
|
ios_base::cur, __testsync, ios_base::in);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__testinit || __testget)
|
if (_M_buf_size)
|
||||||
{
|
{
|
||||||
streamsize __elen = 0;
|
streamsize __elen = 0;
|
||||||
streamsize __ilen = 0;
|
streamsize __ilen = 0;
|
||||||
|
@ -86,8 +85,6 @@ namespace std
|
||||||
if (0 < __ilen)
|
if (0 < __ilen)
|
||||||
{
|
{
|
||||||
_M_set_determinate(__ilen);
|
_M_set_determinate(__ilen);
|
||||||
if (__testout)
|
|
||||||
_M_out_cur = _M_in_cur;
|
|
||||||
__ret = traits_type::to_int_type(*_M_in_cur);
|
__ret = traits_type::to_int_type(*_M_in_cur);
|
||||||
if (__bump)
|
if (__bump)
|
||||||
_M_move_in_cur(1);
|
_M_move_in_cur(1);
|
||||||
|
@ -145,7 +142,6 @@ namespace std
|
||||||
// Sync internal and external buffers.
|
// Sync internal and external buffers.
|
||||||
// NB: __testget -> __testput as _M_buf_unified here.
|
// NB: __testget -> __testput as _M_buf_unified here.
|
||||||
const bool __testget = _M_in_beg < _M_in_cur;
|
const bool __testget = _M_in_beg < _M_in_cur;
|
||||||
const bool __testinit = _M_is_indeterminate();
|
|
||||||
if (__testget)
|
if (__testget)
|
||||||
{
|
{
|
||||||
if (__testout)
|
if (__testout)
|
||||||
|
@ -155,7 +151,7 @@ namespace std
|
||||||
ios_base::cur, __testsync, ios_base::in);
|
ios_base::cur, __testsync, ios_base::in);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__testinit || __testget)
|
if (_M_buf_size)
|
||||||
{
|
{
|
||||||
streamsize __elen = 0;
|
streamsize __elen = 0;
|
||||||
streamsize __ilen = 0;
|
streamsize __ilen = 0;
|
||||||
|
@ -191,8 +187,6 @@ namespace std
|
||||||
if (0 < __ilen)
|
if (0 < __ilen)
|
||||||
{
|
{
|
||||||
_M_set_determinate(__ilen);
|
_M_set_determinate(__ilen);
|
||||||
if (__testout)
|
|
||||||
_M_out_cur = _M_in_cur;
|
|
||||||
__ret = traits_type::to_int_type(*_M_in_cur);
|
__ret = traits_type::to_int_type(*_M_in_cur);
|
||||||
if (__bump)
|
if (__bump)
|
||||||
_M_move_in_cur(1);
|
_M_move_in_cur(1);
|
||||||
|
|
Loading…
Reference in New Issue