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] Another small set of clean ups


Hi,

tested x86-linux, reviewed by Benjamin.

Paolo.

////////
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.
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-04-29 01:51:36.000000000 +0200
+++ libstdc++-v3/include/std/std_fstream.h	2003-05-07 14:25:01.000000000 +0200
@@ -201,8 +201,6 @@
 
 	    this->setg(this->_M_buf, _M_pback_cur_save + __off_cur, 
 		       _M_pback_end_save + __off_end);
-	    _M_pback_cur_save = NULL;
-	    _M_pback_end_save = NULL;
 	    _M_pback_init = false;
 	  }
       }
@@ -452,7 +450,7 @@
       void
       _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
       // started at beg or end, or possibly when the stream becomes
       // unbuffered, and a myrid other obscure corner cases, the
@@ -483,34 +481,10 @@
 	if (__testout)
 	  {
 	    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;
       }
-
-      /**
-       *  @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.
diff -urN libstdc++-v3-orig/include/std/std_sstream.h libstdc++-v3/include/std/std_sstream.h
--- libstdc++-v3-orig/include/std/std_sstream.h	2003-05-07 14:19:47.000000000 +0200
+++ libstdc++-v3/include/std/std_sstream.h	2003-05-07 14:25:31.000000000 +0200
@@ -258,7 +258,7 @@
 	  {
 	    this->setp(__base, __base + _M_string.capacity());
 	    // _M_out_lim points to the string end.
-	    this->_M_out_lim = __base + __len;
+	    this->_M_out_lim += __len;
 	    this->_M_out_cur += __o;
 	  }
       }
diff -urN libstdc++-v3-orig/src/fstream.cc libstdc++-v3/src/fstream.cc
--- libstdc++-v3-orig/src/fstream.cc	2003-04-28 06:54:54.000000000 +0200
+++ libstdc++-v3/src/fstream.cc	2003-05-07 14:23:17.000000000 +0200
@@ -64,7 +64,6 @@
 	  // Sync internal and external buffers.
 	  // NB: __testget -> __testput as _M_buf_unified here.
 	  const bool __testget = _M_in_beg < _M_in_cur;
-	  const bool __testinit = _M_is_indeterminate();
 	  if (__testget)
 	    {
 	      if (__testout)
@@ -74,7 +73,7 @@
 				ios_base::cur, __testsync, ios_base::in);
 	    }
 
-	  if (__testinit || __testget)
+	  if (_M_buf_size)
 	    {
 	      streamsize __elen = 0;
 	      streamsize __ilen = 0;
@@ -86,8 +85,6 @@
 	      if (0 < __ilen)
 		{
 		  _M_set_determinate(__ilen);
-		  if (__testout)
-		    _M_out_cur = _M_in_cur;
 		  __ret = traits_type::to_int_type(*_M_in_cur);
 		  if (__bump)
 		    _M_move_in_cur(1);
@@ -145,7 +142,6 @@
 	  // Sync internal and external buffers.
 	  // NB: __testget -> __testput as _M_buf_unified here.
 	  const bool __testget = _M_in_beg < _M_in_cur;
-	  const bool __testinit = _M_is_indeterminate();
 	  if (__testget)
 	    {
 	      if (__testout)
@@ -155,7 +151,7 @@
 				ios_base::cur, __testsync, ios_base::in);
 	    }
 
-	  if (__testinit || __testget)
+	  if (_M_buf_size)
 	    {
 	      streamsize __elen = 0;
 	      streamsize __ilen = 0;
@@ -191,8 +187,6 @@
 	      if (0 < __ilen)
 		{
 		  _M_set_determinate(__ilen);
-		  if (__testout)
-		    _M_out_cur = _M_in_cur;
 		  __ret = traits_type::to_int_type(*_M_in_cur);
 		  if (__bump)
 		    _M_move_in_cur(1);

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