std_streambuf.h (_M_buf): is currently used only for basic_filebuf, therefore move...
authorPaolo Carlini <pcarlini@unitus.it>
Mon, 28 Apr 2003 23:51:37 +0000 (01:51 +0200)
committerPaolo Carlini <paolo@gcc.gnu.org>
Mon, 28 Apr 2003 23:51:37 +0000 (23:51 +0000)
2003-04-28  Paolo Carlini  <pcarlini@unitus.it>

* include/std/std_streambuf.h (_M_buf): is currently
used only for basic_filebuf, therefore move it there.
(basic_streambuf(), ~basic_streambuf()): Adjust.
* include/std/std_fstream.h (_M_buf): Moved here.
* include/std/std_sstream.h (setbuf): Don't set _M_buf,
is actually redundant for basic_stringbuf.
(_M_really_sync): Likewise.
* include/bits/fstream.tcc (basic_filebuf()): Adjust.
* include/bits/sstream.tcc (seekoff): Adjust.

From-SVN: r66193

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/fstream.tcc
libstdc++-v3/include/bits/sstream.tcc
libstdc++-v3/include/std/std_fstream.h
libstdc++-v3/include/std/std_sstream.h
libstdc++-v3/include/std/std_streambuf.h

index bf1f4bbf82e6dbb06ddcc541041823ebedff8a9a..9dbc3a18e0ff39a2679389cc55b5163c66ab3b29 100644 (file)
@@ -1,3 +1,15 @@
+2003-04-28  Paolo Carlini  <pcarlini@unitus.it>
+
+       * include/std/std_streambuf.h (_M_buf): is currently
+       used only for basic_filebuf, therefore move it there.
+       (basic_streambuf(), ~basic_streambuf()): Adjust.
+       * include/std/std_fstream.h (_M_buf): Moved here.
+       * include/std/std_sstream.h (setbuf): Don't set _M_buf,
+       is actually redundant for basic_stringbuf.
+       (_M_really_sync): Likewise.
+       * include/bits/fstream.tcc (basic_filebuf()): Adjust.
+       * include/bits/sstream.tcc (seekoff): Adjust.
+
 2003-04-28  Benjamin Kosnik  <bkoz@redhat.com>
 
        * src/localename.cc: Standardize exception strings.
index c03c0e5b4fd4dde9d9dd4a4fef49ac0fb3d781a3..8d9002eaca281fd10a0d9fa7275a4e5690006823 100644 (file)
@@ -76,8 +76,9 @@ namespace std
     basic_filebuf<_CharT, _Traits>::
     basic_filebuf() : __streambuf_type(), _M_file(&_M_lock), 
     _M_state_cur(__state_type()), _M_state_beg(__state_type()), 
-    _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)
+    _M_buf(NULL), _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; }
 
   template<typename _CharT, typename _Traits>
index 1d8cc005d98332085835c562f98c727aededeaa0..11751783722a62dcfeabdeffdf125c453a3ef56b 100644 (file)
@@ -127,7 +127,7 @@ namespace std
 
       if (_M_string.capacity() && (__testin || __testout || __testboth))
        {
-         char_type* __beg = this->_M_buf;
+         char_type* __beg = __testin ? this->_M_in_beg : this->_M_out_beg;
          char_type* __curi = NULL;
          char_type* __curo = NULL;
          char_type* __endi = NULL;
index 8c388bdfb3b610738f7e05cbeebacc79247799d8..ffbf789b77578ccdbef66dcd58dfb3ee2650afe7 100644 (file)
@@ -114,6 +114,13 @@ namespace std
       __state_type             _M_state_cur;
       __state_type             _M_state_beg;
 
+      /**
+       *  @if maint
+       *  Pointer to the beginning of internally-allocated space.
+       *  @endif
+      */
+      char_type*               _M_buf;         
+
       /**
        *  @if maint
        *  Actual size of internal buffer.
index 6dc47e551563d48d8b805d94967b8fd9ec3711c2..cd8faa088614b7e18cc069a325e1728d7056826a 100644 (file)
@@ -229,7 +229,6 @@ namespace std
            _M_string = __string_type(__s, __n);
            
            // Step 2: Use the external array.
-           this->_M_buf = __s;
            _M_really_sync(__s, 0, 0);
          }
        return this;
@@ -263,9 +262,8 @@ namespace std
        const bool __testout = this->_M_mode & ios_base::out;
        __size_type __len = _M_string.size();
 
-       this->_M_buf = __base;
        if (__testin)
-           this->setg(__base, __base + __i, __base + __len);
+         this->setg(__base, __base + __i, __base + __len);
        if (__testout)
          {
            this->setp(__base, __base + _M_string.capacity());
index bfb8e3fd51450e669cdd35f842784e00c617895e..14a5d89ad4aff841bddef3fa93e74ed978ea192c 100644 (file)
@@ -159,16 +159,6 @@ namespace std
                          __streambuf_type* __sbin,__streambuf_type* __sbout);
       
     protected:
-      /**
-       *  @if maint
-       *  Pointer to the beginning of internally-allocated space.  Filebuf
-       *  manually allocates/deallocates this, whereas stringstreams attempt
-       *  to use the built-in intelligence of the string class.  If you are
-       *  managing memory, set this.  If not, leave it NULL.
-       *  @endif
-      */
-      char_type*               _M_buf;         
-
       /**
        *  @if maint
        *  True iff _M_in_* and _M_out_* buffers should always point to
@@ -245,7 +235,7 @@ namespace std
       // __n + _M_out_[cur, lim] <= _M_out_end
       // Assuming all _M_out_[beg, cur, lim] pointers are operating on
       // the same range:
-      // _M_buf <= _M_*_ <= _M_out_end
+      // _M_out_beg <= _M_*_ <= _M_out_end
       void 
       _M_move_out_cur(off_type __n) // argument needs to be +-
       {
@@ -467,10 +457,10 @@ namespace std
        *  - this is not an error
       */
       basic_streambuf()
-      : _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()) 
+      : _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()) 
       { }
 
       // [27.5.2.3.1] get area access