This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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()) 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]