* include/ext/stdio_filebuf.h (stdio_filebuf): Explicitly set
_M_buf_size_opt to zero when unbuffering.
* include/bits/fstream.tcc (filebuf::showmanyc): Simplify.
Consistency checks for _M_buf_size_opt.
Revert PR libstdc++/7445
* src/locale.cc (locale::classic): Revert.
* docs/html/17_intro/TODO: Add.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@56365
138bc75d-0d04-0410-961f-
82ee72b054a4
+2002-08-15 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/ext/stdio_filebuf.h (stdio_filebuf): Explicitly set
+ _M_buf_size_opt to zero when unbuffering.
+ * include/bits/fstream.tcc (filebuf::showmanyc): Simplify.
+ Consistency checks for _M_buf_size_opt.
+
+ Revert PR libstdc++/7445
+ * src/locale.cc (locale::classic): Revert.
+
+ * docs/html/17_intro/TODO: Add.
+
2002-08-15 Phil Edwards <pme@gcc.gnu.org>
* docs/html/documentation.html: Update doxygen links for 3.2.
- benchmarking addition to the testsuite that does the above.
-- implement symbol versioning for ELF targets.
+- implement testing for symbol versioning for ELF targets.
+
+- review streambuf, filebuf, stringbuf to optimize data member
+placement. Do pback bits need to be in streambuf? How about
+_M_set_indeterminate, etc?
+
+- Think about naming all member data and member functions consistently
+as per
+funtions: _M_verb_adverb
+data: _M_noun_adjective
- exception specifications need to be reviewed for all parts of the
library support and utility areas, particularly <new>.
{
_M_allocate_internal_buffer();
_M_mode = __mode;
-
- // For time being, set both (in/out) sets of pointers.
_M_set_indeterminate();
+
if ((__mode & ios_base::ate)
&& this->seekoff(0, ios_base::end, __mode) < 0)
this->close();
bool __testin = _M_mode & ios_base::in;
if (__testin && this->is_open())
- {
- if (_M_in_cur < _M_in_end)
- __ret = _M_in_end - _M_in_cur;
- else
- __ret = 0;
- }
+ __ret = _M_in_end - _M_in_cur;
_M_last_overflowed = false;
return __ret;
}
{
int_type __ret = traits_type::eof();
bool __testput = _M_out_cur && _M_out_beg < _M_out_end;
- bool __testunbuffered = _M_file.is_open() && !_M_buf_size;
+ bool __testunbuffered = _M_file.is_open() && !_M_buf_size_opt;
if (__testput || __testunbuffered)
{
if (this->is_open())
{
_M_mode = __mode;
- _M_buf_size_opt = __size;
-
if (__size > 0 && __size < 4)
{
+ // Specify unbuffered.
_M_buf = _M_unbuf;
_M_buf_size = __size;
+ _M_buf_size_opt = 0;
}
else
- _M_allocate_internal_buffer();
-
+ {
+ _M_buf_size_opt = __size;
+ _M_allocate_internal_buffer();
+ }
_M_set_indeterminate();
}
}
if (this->is_open())
{
_M_mode = __mode;
- _M_buf_size_opt = __size;
-
if (__size > 0 && __size < 4)
{
+ // Specify unbuffered.
_M_buf = _M_unbuf;
_M_buf_size = __size;
+ _M_buf_size_opt = 0;
}
else
- _M_allocate_internal_buffer();
-
+ {
+ _M_buf_size_opt = __size;
+ _M_allocate_internal_buffer();
+ }
_M_set_indeterminate();
}
}
const locale&
locale::classic()
{
+ static _STL_mutex_lock __lock __STL_MUTEX_INITIALIZER;
+ _STL_auto_lock __auto(__lock);
+
if (!_S_classic)
{
- static _STL_mutex_lock __lock __STL_MUTEX_INITIALIZER;
- _STL_auto_lock __auto(__lock);
-
try
{
// 26 Standard facets, 2 references.