This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[Patch] Move _M_buf_size to basic_filebuf
- From: Paolo Carlini <pcarlini at unitus dot it>
- To: libstdc++ at gcc dot gnu dot org
- Cc: bkoz <bkoz at redhat dot com>
- Date: Sun, 27 Apr 2003 18:39:41 +0200
- Subject: [Patch] Move _M_buf_size to basic_filebuf
Hi,
currently, it's used only by basic_filebuf, therefore can
be moved there, thus making basic_streambuf yet more lean.
Tested x86-linux. Ok for trunk?
Paolo.
////////
2003-04-27 Paolo Carlini <pcarlini at unitus dot it>
* include/std/std_streambuf.h (_M_buf_size): is currently
used only for basic_filebuf, therefore move it there.
(basic_streambuf(), ~basic_streambuf()): Adjust.
* include/std/std_fstream.h (_M_buf_size): Moved here.
* include/bits/fstream.tcc (basic_filebuf()): Adjust.
diff -urN libstdc++-v3-curr/include/bits/fstream.tcc libstdc++-v3/include/bits/fstream.tcc
--- libstdc++-v3-curr/include/bits/fstream.tcc 2003-04-26 20:42:26.000000000 +0200
+++ libstdc++-v3/include/bits/fstream.tcc 2003-04-27 17:30:53.000000000 +0200
@@ -76,7 +76,7 @@
basic_filebuf<_CharT, _Traits>::
basic_filebuf() : __streambuf_type(), _M_file(&_M_lock),
_M_state_cur(__state_type()), _M_state_beg(__state_type()),
- _M_buf_allocated(false), _M_last_overflowed(false),
+ _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; }
diff -urN libstdc++-v3-curr/include/std/std_fstream.h libstdc++-v3/include/std/std_fstream.h
--- libstdc++-v3-curr/include/std/std_fstream.h 2003-04-26 20:42:26.000000000 +0200
+++ libstdc++-v3/include/std/std_fstream.h 2003-04-27 17:42:59.000000000 +0200
@@ -45,6 +45,7 @@
#include <istream>
#include <ostream>
#include <locale> // For codecvt
+#include <cstdio> // For SEEK_SET, SEEK_CUR, SEEK_END, BUFSIZ
#include <bits/basic_file.h>
#include <bits/gthr.h>
@@ -113,6 +114,13 @@
__state_type _M_state_cur;
__state_type _M_state_beg;
+ /**
+ * @if maint
+ * Actual size of internal buffer.
+ * @endif
+ */
+ size_t _M_buf_size;
+
// Set iff _M_buf is allocated memory from _M_allocate_internal_buffer.
/**
* @if maint
@@ -209,6 +217,7 @@
~basic_filebuf()
{
this->close();
+ _M_buf_size = 0;
_M_last_overflowed = false;
}
diff -urN libstdc++-v3-curr/include/std/std_streambuf.h libstdc++-v3/include/std/std_streambuf.h
--- libstdc++-v3-curr/include/std/std_streambuf.h 2003-04-22 19:32:25.000000000 +0200
+++ libstdc++-v3/include/std/std_streambuf.h 2003-04-27 17:42:51.000000000 +0200
@@ -44,7 +44,6 @@
#include <bits/c++config.h>
#include <iosfwd>
-#include <cstdio> // For SEEK_SET, SEEK_CUR, SEEK_END
#include <bits/localefwd.h>
#include <bits/ios_base.h>
@@ -172,14 +171,6 @@
/**
* @if maint
- * Actual size of allocated internal buffer. Unused for sstreams,
- * which have readily available _M_string.capacity().
- * @endif
- */
- size_t _M_buf_size;
-
- /**
- * @if maint
* True iff _M_in_* and _M_out_* buffers should always point to
* the same place. True for fstreams, false for sstreams.
* @endif
@@ -278,7 +269,6 @@
~basic_streambuf()
{
_M_buf_unified = false;
- _M_buf_size = 0;
_M_mode = ios_base::openmode(0);
}
@@ -477,7 +467,7 @@
* - this is not an error
*/
basic_streambuf()
- : _M_buf(NULL), _M_buf_size(BUFSIZ), _M_buf_unified(false),
+ : _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())