This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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]

[v3, trunk] Remove _M_out_buf_size()


Hi,

tested x86-linux, committed.

Paolo.

/////////
2003-03-31  Paolo Carlini  <pcarlini at unitus dot 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.
diff -urN libstdc++-v3-orig/include/bits/fstream.tcc libstdc++-v3/include/bits/fstream.tcc
--- libstdc++-v3-orig/include/bits/fstream.tcc	2003-03-30 10:32:11.000000000 +0200
+++ libstdc++-v3/include/bits/fstream.tcc	2003-03-30 21:25:46.000000000 +0200
@@ -48,10 +48,8 @@
 	{
 	  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];
-	  // ... and consistently set the end of buffer pointer.
-	  this->_M_out_end = this->_M_buf + this->_M_buf_size;
 	  _M_buf_allocated = true;
 	}
     }
@@ -255,7 +253,8 @@
     overflow(int_type __c)
     {
       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;
       
       if (__testout)
diff -urN libstdc++-v3-orig/include/bits/sstream.tcc libstdc++-v3/include/bits/sstream.tcc
--- libstdc++-v3-orig/include/bits/sstream.tcc	2003-02-24 19:22:57.000000000 +0100
+++ libstdc++-v3/include/bits/sstream.tcc	2003-03-30 21:28:08.000000000 +0200
@@ -92,7 +92,7 @@
       __size_type __len =
 	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))
 	return traits_type::eof();
 
diff -urN libstdc++-v3-orig/include/bits/streambuf.tcc libstdc++-v3/include/bits/streambuf.tcc
--- libstdc++-v3-orig/include/bits/streambuf.tcc	2003-03-08 09:16:05.000000000 +0100
+++ libstdc++-v3/include/bits/streambuf.tcc	2003-03-30 20:43:21.000000000 +0200
@@ -99,7 +99,7 @@
     sputc(char_type __c)
     {
       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_move(1);
@@ -152,7 +152,7 @@
       streamsize __ret = 0;
       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)
 	    {
 	      off_type __remaining = __n - __ret;
@@ -189,11 +189,12 @@
 		      basic_streambuf<_CharT, _Traits>* __sbout) 
   {
       typedef typename _Traits::int_type	int_type;
+      typedef typename _Traits::off_type	off_type;
 
       streamsize __ret = 0;
       streamsize __bufsize = __sbin->in_avail();
       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;
 
       try 
@@ -213,7 +214,8 @@
 		{
 		  streamsize __charsread;
 		  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)
 		    {
 		      _CharT* __buf =
diff -urN libstdc++-v3-orig/include/std/std_fstream.h libstdc++-v3/include/std/std_fstream.h
--- libstdc++-v3-orig/include/std/std_fstream.h	2003-03-30 10:32:11.000000000 +0200
+++ libstdc++-v3/include/std/std_fstream.h	2003-03-30 20:35:09.000000000 +0200
@@ -409,13 +409,10 @@
 	bool __testin = this->_M_mode & ios_base::in;
 	bool __testout = this->_M_mode & ios_base::out;
 	if (__testin)
-	  {
-	    this->_M_in_beg = this->_M_in_cur = this->_M_buf;
-	    this->_M_in_end = this->_M_buf + __off;
-	  }
+	  this->setg(this->_M_buf, this->_M_buf, this->_M_buf + __off);
 	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;
 	  }
 	_M_filepos = this->_M_buf + __off;
diff -urN libstdc++-v3-orig/include/std/std_streambuf.h libstdc++-v3/include/std/std_streambuf.h
--- libstdc++-v3-orig/include/std/std_streambuf.h	2003-02-24 19:22:57.000000000 +0100
+++ libstdc++-v3/include/std/std_streambuf.h	2003-03-30 20:36:45.000000000 +0200
@@ -333,16 +333,6 @@
 	  }
       }
 
-      // 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:
       /// Destructor deallocates no buffer space.
       virtual 

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