diff options
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 13 | ||||
-rw-r--r-- | libstdc++-v3/include/ext/rc_string_base.h | 49 | ||||
-rw-r--r-- | libstdc++-v3/include/ext/sso_string_base.h | 20 | ||||
-rw-r--r-- | libstdc++-v3/include/ext/vstring_util.h | 2 |
4 files changed, 46 insertions, 38 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 9b6a0b0..0722459 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,16 @@ +2005-11-21 Paolo Carlini <pcarlini@suse.de> + + * include/ext/sso_string_base.h: Minor formatting and stylistic fixes. + (__sso_string_base<>::_M_get_allocator): Return by const ref. + * include/ext/rc_string_base.h: Likewise. + (__rc_string_base<>::_M_get_allocator): Return by const ref. + (__rc_string_base<>::_M_dispose): Take void, use _M_get_allocator. + (__rc_string_base<>::_M_grab): Take one alloc, use _M_get_allocator. + (__rc_string_base<>::~__rc_string_base, + __rc_string_base(const __rc_string_base&), _M_assign, _M_reserve, + _M_mutate): Adjust. + * include/ext/vstring_util.h: Minor stylistic fixes. + 2005-11-18 Paolo Carlini <pcarlini@suse.de> * include/ext/rc_string_base.h (__rc_string_base<>::_Rep): Avoid the diff --git a/libstdc++-v3/include/ext/rc_string_base.h b/libstdc++-v3/include/ext/rc_string_base.h index 5899422..8fb7531 100644 --- a/libstdc++-v3/include/ext/rc_string_base.h +++ b/libstdc++-v3/include/ext/rc_string_base.h @@ -193,17 +193,17 @@ namespace __gnu_cxx { return &((reinterpret_cast<_Rep*>(_M_data()))[-1]); } _CharT* - _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2) const + _M_grab(const _Alloc& __alloc) const { - return (!_M_is_leaked() && __alloc1 == __alloc2) - ? _M_rep()->_M_refcopy() : _M_rep()->_M_clone(__alloc1); + return (!_M_is_leaked() && _M_get_allocator() == __alloc) + ? _M_rep()->_M_refcopy() : _M_rep()->_M_clone(__alloc); } void - _M_dispose(const _Alloc& __a) + _M_dispose() { if (__exchange_and_add(&_M_rep()->_M_info._M_refcount, -1) <= 0) - _M_rep()->_M_destroy(__a); + _M_rep()->_M_destroy(_M_get_allocator()); } // XXX MT bool @@ -219,7 +219,7 @@ namespace __gnu_cxx // _S_construct_aux is used to implement the 21.3.1 para 15 which // requires special behaviour if _InIterator is an integral type - template<class _InIterator> + template<typename _InIterator> static _CharT* _S_construct_aux(_InIterator __beg, _InIterator __end, const _Alloc& __a, __false_type) @@ -228,14 +228,14 @@ namespace __gnu_cxx return _S_construct(__beg, __end, __a, _Tag()); } - template<class _InIterator> + template<typename _InIterator> static _CharT* _S_construct_aux(_InIterator __beg, _InIterator __end, const _Alloc& __a, __true_type) { return _S_construct(static_cast<size_type>(__beg), static_cast<value_type>(__end), __a); } - template<class _InIterator> + template<typename _InIterator> static _CharT* _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a) { @@ -244,14 +244,14 @@ namespace __gnu_cxx } // For Input Iterators, used in istreambuf_iterators, etc. - template<class _InIterator> + template<typename _InIterator> static _CharT* _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, std::input_iterator_tag); // For forward_iterators up to random_access_iterators, used for // string::iterator, _CharT*, etc. - template<class _FwdIterator> + template<typename _FwdIterator> static _CharT* _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a, std::forward_iterator_tag); @@ -309,9 +309,9 @@ namespace __gnu_cxx const _Alloc& __a); ~__rc_string_base() - { _M_dispose(_M_get_allocator()); } + { _M_dispose(); } - allocator_type + const allocator_type& _M_get_allocator() const { return _M_dataplus; } @@ -372,9 +372,6 @@ namespace __gnu_cxx // The below implements an exponential growth policy, necessary to // meet amortized linear time requirements of the library: see // http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html. - // It's active for allocations requiring an amount of memory above - // system pagesize. This is consistent with the requirements of the - // standard: http://gcc.gnu.org/ml/libstdc++/2001-07/msg00130.html if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) __capacity = 2 * __old_capacity; @@ -441,8 +438,7 @@ namespace __gnu_cxx __rc_string_base<_CharT, _Traits, _Alloc>:: __rc_string_base(const __rc_string_base& __rcs) : _M_dataplus(__rcs._M_get_allocator(), - __rcs._M_grab(_Alloc(__rcs._M_get_allocator()), - __rcs._M_get_allocator())) { } + __rcs._M_grab(__rcs._M_get_allocator())) { } template<typename _CharT, typename _Traits, typename _Alloc> __rc_string_base<_CharT, _Traits, _Alloc>:: @@ -516,7 +512,7 @@ namespace __gnu_cxx } template<typename _CharT, typename _Traits, typename _Alloc> - template <typename _InIterator> + template<typename _InIterator> _CharT* __rc_string_base<_CharT, _Traits, _Alloc>:: _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, @@ -587,9 +583,8 @@ namespace __gnu_cxx { if (_M_rep() != __rcs._M_rep()) { - const allocator_type __a = _M_get_allocator(); - _CharT* __tmp = __rcs._M_grab(__a, __rcs._M_get_allocator()); - _M_dispose(__a); + _CharT* __tmp = __rcs._M_grab(_M_get_allocator()); + _M_dispose(); _M_data(__tmp); } } @@ -605,9 +600,9 @@ namespace __gnu_cxx if (__res < _M_length()) __res = _M_length(); - const allocator_type __a = _M_get_allocator(); - _CharT* __tmp = _M_rep()->_M_clone(__a, __res - _M_length()); - _M_dispose(__a); + _CharT* __tmp = _M_rep()->_M_clone(_M_get_allocator(), + __res - _M_length()); + _M_dispose(); _M_data(__tmp); } } @@ -624,8 +619,8 @@ namespace __gnu_cxx if (__new_size > _M_capacity() || _M_is_shared()) { // Must reallocate. - const allocator_type __a = _M_get_allocator(); - _Rep* __r = _Rep::_S_create(__new_size, _M_capacity(), __a); + _Rep* __r = _Rep::_S_create(__new_size, _M_capacity(), + _M_get_allocator()); if (__pos) _S_copy(__r->_M_refdata(), _M_data(), __pos); @@ -633,7 +628,7 @@ namespace __gnu_cxx _S_copy(__r->_M_refdata() + __pos + __len2, _M_data() + __pos + __len1, __how_much); - _M_dispose(__a); + _M_dispose(); _M_data(__r->_M_refdata()); } else if (__how_much && __len1 != __len2) diff --git a/libstdc++-v3/include/ext/sso_string_base.h b/libstdc++-v3/include/ext/sso_string_base.h index bd29413..f4bd3fb 100644 --- a/libstdc++-v3/include/ext/sso_string_base.h +++ b/libstdc++-v3/include/ext/sso_string_base.h @@ -74,8 +74,8 @@ namespace __gnu_cxx union { - _CharT _M_local_data[_S_local_capacity + 1]; - size_type _M_allocated_capacity; + _CharT _M_local_data[_S_local_capacity + 1]; + size_type _M_allocated_capacity; }; void @@ -99,7 +99,7 @@ namespace __gnu_cxx _M_create(size_type&, size_type); void - _M_dispose() throw() + _M_dispose() { if (!_M_is_local()) _M_destroy(_M_allocated_capacity + 1); @@ -110,7 +110,7 @@ namespace __gnu_cxx // _M_construct_aux is used to implement the 21.3.1 para 15 which // requires special behaviour if _InIterator is an integral type - template<class _InIterator> + template<typename _InIterator> void _M_construct_aux(_InIterator __beg, _InIterator __end, __false_type) { @@ -118,13 +118,13 @@ namespace __gnu_cxx _M_construct(__beg, __end, _Tag()); } - template<class _InIterator> + template<typename _InIterator> void _M_construct_aux(_InIterator __beg, _InIterator __end, __true_type) { _M_construct(static_cast<size_type>(__beg), static_cast<value_type>(__end)); } - template<class _InIterator> + template<typename _InIterator> void _M_construct(_InIterator __beg, _InIterator __end) { @@ -133,14 +133,14 @@ namespace __gnu_cxx } // For Input Iterators, used in istreambuf_iterators, etc. - template<class _InIterator> + template<typename _InIterator> void _M_construct(_InIterator __beg, _InIterator __end, std::input_iterator_tag); // For forward_iterators up to random_access_iterators, used for // string::iterator, _CharT*, etc. - template<class _FwdIterator> + template<typename _FwdIterator> void _M_construct(_FwdIterator __beg, _FwdIterator __end, std::forward_iterator_tag); @@ -202,7 +202,7 @@ namespace __gnu_cxx ~__sso_string_base() { _M_dispose(); } - allocator_type + const allocator_type& _M_get_allocator() const { return _M_dataplus; } @@ -392,7 +392,7 @@ namespace __gnu_cxx } template<typename _CharT, typename _Traits, typename _Alloc> - template <typename _InIterator> + template<typename _InIterator> void __sso_string_base<_CharT, _Traits, _Alloc>:: _M_construct(_InIterator __beg, _InIterator __end, diff --git a/libstdc++-v3/include/ext/vstring_util.h b/libstdc++-v3/include/ext/vstring_util.h index 2a53fbd..2a8c45c 100644 --- a/libstdc++-v3/include/ext/vstring_util.h +++ b/libstdc++-v3/include/ext/vstring_util.h @@ -160,7 +160,7 @@ namespace __gnu_cxx // _S_copy_chars is a separate template to permit specialization // to optimize for the common case of pointers as iterators. - template<class _Iterator> + template<typename _Iterator> static void _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) { |