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]

3.1 Patch: Remove std::construct and std::destroy from ext


Recently Stephen M. Webb improved the libstdc++ code by replacing the
non-standard construct() and destroy() functions with internal library
functions.  This patch applies said changes to the
libstdc++-v3/include/ext/ directory, per Mr. Webb's wishes.

2001-07-04  Jeffrey Oldham  <oldham@codesourcery.com>

        * include/ext/ropeimpl.h (_Rope_RopeRep::_M_free_c_string):
        Replace destroy by _Destroy.
        (_Rope_RopeRep::_S_free_string): Likewise.
        (rope::c_str()): Likewise.
        * include/ext/slist (_Slist_base::_M_erase_after>): Likewise.
        (_Slist_base::_M_erase_after): Likewise.
        (slist::_M_create_node): Replace construct by _Construct.
        (slist::pop_front): Replace destroy by _Destroy.
        * include/ext/stl_hashtable.h (hashtable::_M_new_node): Replace
        construct by _Construct.
        (hashtable::_M_delete_node): Replace destroy by _Destroy.
        * include/ext/stl_rope.h (rope::rope): Replace construct by
        _Construct.
        (rope::copy): Replace destroy by _Destroy.

Applied to      head (3.1)
Tested on       i686-pc-linux-gnu 3.1 bootstrap and regression tests
Approved by	Mark Mitchell (mark@codesourcery.com)

Thanks,
Jeffrey D. Oldham
oldham@codesourcery.com
Index: ropeimpl.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/ext/ropeimpl.h,v
retrieving revision 1.5
diff -c -p -r1.5 ropeimpl.h
*** ropeimpl.h	2001/06/27 17:09:53	1.5
--- ropeimpl.h	2001/07/03 23:48:59
*************** inline void _Rope_RopeRep<_CharT,_Alloc>
*** 317,323 ****
      _CharT* __cstr = _M_c_string;
      if (0 != __cstr) {
  	size_t __size = _M_size + 1;
! 	destroy(__cstr, __cstr + __size);
  	_Data_deallocate(__cstr, __size);
      }
  }
--- 317,323 ----
      _CharT* __cstr = _M_c_string;
      if (0 != __cstr) {
  	size_t __size = _M_size + 1;
! 	_Destroy(__cstr, __cstr + __size);
  	_Data_deallocate(__cstr, __size);
      }
  }
*************** template <class _CharT, class _Alloc>
*** 329,335 ****
  						           allocator_type __a)
  {
      if (!_S_is_basic_char_type((_CharT*)0)) {
! 	destroy(__s, __s + __n);
      }
  //  This has to be a static member, so this gets a bit messy
          __a.deallocate(
--- 329,335 ----
  						           allocator_type __a)
  {
      if (!_S_is_basic_char_type((_CharT*)0)) {
! 	_Destroy(__s, __s + __n);
      }
  //  This has to be a static member, so this gets a bit messy
          __a.deallocate(
*************** const _CharT* rope<_CharT,_Alloc>::c_str
*** 1453,1459 ****
  	// It must have been added in the interim.  Hence it had to have been
  	// separately allocated.  Deallocate the old copy, since we just
  	// replaced it.
! 	destroy(__old_c_string, __old_c_string + __s + 1);
  	_Data_deallocate(__old_c_string, __s + 1);
        }
  #   endif
--- 1453,1459 ----
  	// It must have been added in the interim.  Hence it had to have been
  	// separately allocated.  Deallocate the old copy, since we just
  	// replaced it.
! 	_Destroy(__old_c_string, __old_c_string + __s + 1);
  	_Data_deallocate(__old_c_string, __s + 1);
        }
  #   endif
Index: slist
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/ext/slist,v
retrieving revision 1.8
diff -c -p -r1.8 slist
*** slist	2001/06/27 17:09:53	1.8
--- slist	2001/07/03 23:49:00
*************** protected:
*** 265,271 ****
      _Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next);
      _Slist_node_base* __next_next = __next->_M_next;
      __pos->_M_next = __next_next;
!     destroy(&__next->_M_data);
      _M_put_node(__next);
      return __next_next;
    }
--- 265,271 ----
      _Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next);
      _Slist_node_base* __next_next = __next->_M_next;
      __pos->_M_next = __next_next;
!     _Destroy(&__next->_M_data);
      _M_put_node(__next);
      return __next_next;
    }
*************** _Slist_base<_Tp,_Alloc>::_M_erase_after(
*** 280,286 ****
    while (__cur != __last_node) {
      _Slist_node<_Tp>* __tmp = __cur;
      __cur = (_Slist_node<_Tp>*) __cur->_M_next;
!     destroy(&__tmp->_M_data);
      _M_put_node(__tmp);
    }
    __before_first->_M_next = __last_node;
--- 280,286 ----
    while (__cur != __last_node) {
      _Slist_node<_Tp>* __tmp = __cur;
      __cur = (_Slist_node<_Tp>*) __cur->_M_next;
!     _Destroy(&__tmp->_M_data);
      _M_put_node(__tmp);
    }
    __before_first->_M_next = __last_node;
*************** private:
*** 318,324 ****
    _Node* _M_create_node(const value_type& __x) {
      _Node* __node = this->_M_get_node();
      __STL_TRY {
!       construct(&__node->_M_data, __x);
        __node->_M_next = 0;
      }
      __STL_UNWIND(this->_M_put_node(__node));
--- 318,324 ----
    _Node* _M_create_node(const value_type& __x) {
      _Node* __node = this->_M_get_node();
      __STL_TRY {
!       _Construct(&__node->_M_data, __x);
        __node->_M_next = 0;
      }
      __STL_UNWIND(this->_M_put_node(__node));
*************** private:
*** 328,334 ****
    _Node* _M_create_node() {
      _Node* __node = this->_M_get_node();
      __STL_TRY {
!       construct(&__node->_M_data);
        __node->_M_next = 0;
      }
      __STL_UNWIND(this->_M_put_node(__node));
--- 328,334 ----
    _Node* _M_create_node() {
      _Node* __node = this->_M_get_node();
      __STL_TRY {
!       _Construct(&__node->_M_data);
        __node->_M_next = 0;
      }
      __STL_UNWIND(this->_M_put_node(__node));
*************** public:
*** 425,431 ****
    void pop_front() {
      _Node* __node = (_Node*) this->_M_head._M_next;
      this->_M_head._M_next = __node->_M_next;
!     destroy(&__node->_M_data);
      this->_M_put_node(__node);
    }
  
--- 425,431 ----
    void pop_front() {
      _Node* __node = (_Node*) this->_M_head._M_next;
      this->_M_head._M_next = __node->_M_next;
!     _Destroy(&__node->_M_data);
      this->_M_put_node(__node);
    }
  
Index: stl_hashtable.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/ext/stl_hashtable.h,v
retrieving revision 1.7
diff -c -p -r1.7 stl_hashtable.h
*** stl_hashtable.h	2001/06/27 17:09:53	1.7
--- stl_hashtable.h	2001/07/03 23:49:00
*************** private:
*** 517,523 ****
      _Node* __n = _M_get_node();
      __n->_M_next = 0;
      __STL_TRY {
!       construct(&__n->_M_val, __obj);
        return __n;
      }
      __STL_UNWIND(_M_put_node(__n));
--- 517,523 ----
      _Node* __n = _M_get_node();
      __n->_M_next = 0;
      __STL_TRY {
!       _Construct(&__n->_M_val, __obj);
        return __n;
      }
      __STL_UNWIND(_M_put_node(__n));
*************** private:
*** 525,531 ****
    
    void _M_delete_node(_Node* __n)
    {
!     destroy(&__n->_M_val);
      _M_put_node(__n);
    }
  
--- 525,531 ----
    
    void _M_delete_node(_Node* __n)
    {
!     _Destroy(&__n->_M_val);
      _M_put_node(__n);
    }
  
Index: stl_rope.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/ext/stl_rope.h,v
retrieving revision 1.5
diff -c -p -r1.5 stl_rope.h
*** stl_rope.h	2001/06/27 17:09:53	1.5
--- stl_rope.h	2001/07/03 23:49:01
*************** class rope : public _Rope_base<_CharT,_A
*** 1540,1546 ****
          {
              _CharT* __buf = _Data_allocate(_S_rounded_up_size(1));
  
!             construct(__buf, __c);
              __STL_TRY {
                  _M_tree_ptr = _S_new_RopeLeaf(__buf, 1, __a);
              }
--- 1540,1546 ----
          {
              _CharT* __buf = _Data_allocate(_S_rounded_up_size(1));
  
!             _Construct(__buf, __c);
              __STL_TRY {
                  _M_tree_ptr = _S_new_RopeLeaf(__buf, 1, __a);
              }
*************** class rope : public _Rope_base<_CharT,_A
*** 1642,1648 ****
          }
  
          void copy(_CharT* __buffer) const {
!             destroy(__buffer, __buffer + size());
              _S_flatten(_M_tree_ptr, __buffer);
          }
  
--- 1642,1648 ----
          }
  
          void copy(_CharT* __buffer) const {
!             _Destroy(__buffer, __buffer + size());
              _S_flatten(_M_tree_ptr, __buffer);
          }
  
*************** class rope : public _Rope_base<_CharT,_A
*** 1656,1662 ****
              size_t __size = size();
              size_t __len = (__pos + __n > __size? __size - __pos : __n);
  
!             destroy(__buffer, __buffer + __len);
              _S_flatten(_M_tree_ptr, __pos, __len, __buffer);
              return __len;
          }
--- 1656,1662 ----
              size_t __size = size();
              size_t __len = (__pos + __n > __size? __size - __pos : __n);
  
!             _Destroy(__buffer, __buffer + __len);
              _S_flatten(_M_tree_ptr, __pos, __len, __buffer);
              return __len;
          }

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