diff options
author | Bernd Schmidt <bernds@redhat.co.uk> | 2001-01-01 17:48:22 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2001-01-01 17:48:22 +0000 |
commit | ba45e35fd9c1c87fd7e5a2ba256a352831d14cba (patch) | |
tree | d1723e8adeefa2ec9103acc29ce0b1a7fdd8ba6a | |
parent | 3b974b69e7542e1cc8ba71365a639b29878726c2 (diff) | |
download | gcc-ba45e35fd9c1c87fd7e5a2ba256a352831d14cba.tar.gz |
Backport some fixes to 2.95
From-SVN: r38593
-rw-r--r-- | libstdc++/ChangeLog | 12 | ||||
-rw-r--r-- | libstdc++/stl/stl_deque.h | 14 | ||||
-rw-r--r-- | libstdc++/stl/stl_rope.h | 28 |
3 files changed, 33 insertions, 21 deletions
diff --git a/libstdc++/ChangeLog b/libstdc++/ChangeLog index d1a6eff416b..1d48242b6cd 100644 --- a/libstdc++/ChangeLog +++ b/libstdc++/ChangeLog @@ -1,3 +1,15 @@ +2001-01-01 Bernd Schmidt <bernds@redhat.co.uk> + + 1999-12-07 Martin v. Löwis <loewis@informatik.hu-berlin.de> + * stl_deque.h (_Deque_base::const_iterator): Change third + template argument to pointer type. + Reported by Carlo Wood <carlo@node1500a.a2000.nl> + + 1999-11-10 Benjamin Kosnik <bkoz@haight.constant.com> + Matthias Klose <doko@cs.tu-berlin.de> + * stl_rope.h: Fix initialization order. + * stl_deque.h: Use static_casts<size_type>(signed_type). + 2000-11-24 Magnus Fromreide <magfr@lysator.liu.se> * sstream: Backport libstdc++-V3 sstream to V2. diff --git a/libstdc++/stl/stl_deque.h b/libstdc++/stl/stl_deque.h index 48a4c76d55a..24a8bfb1bc8 100644 --- a/libstdc++/stl/stl_deque.h +++ b/libstdc++/stl/stl_deque.h @@ -342,7 +342,7 @@ public: _Base; typedef typename _Base::allocator_type allocator_type; typedef _Deque_iterator<_Tp,_Tp&,_Tp*,__bufsiz> iterator; - typedef _Deque_iterator<_Tp,const _Tp&,const _Tp&, __bufsiz> const_iterator; + typedef _Deque_iterator<_Tp,const _Tp&,const _Tp*, __bufsiz> const_iterator; _Deque_base(const allocator_type& __a, size_t __num_elements) : _Base(__a), _M_start(), _M_finish() @@ -815,7 +815,7 @@ public: // Erase iterator __next = __pos; ++__next; difference_type __index = __pos - _M_start; - if (__index < (size() >> 1)) { + if (static_cast<size_type>(__index) < (size() >> 1)) { copy_backward(_M_start, __pos, __next); pop_front(); } @@ -1048,7 +1048,7 @@ deque<_Tp,_Alloc,__bufsize>::erase(iterator __first, iterator __last) else { difference_type __n = __last - __first; difference_type __elems_before = __first - _M_start; - if (__elems_before < (size() - __n) / 2) { + if (static_cast<size_type>(__elems_before) < (size() - __n) / 2) { copy_backward(_M_start, __first, __last); iterator __new_start = _M_start + __n; destroy(_M_start, __new_start); @@ -1282,7 +1282,7 @@ deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos, { difference_type __index = __pos - _M_start; value_type __x_copy = __x; - if (__index < size() / 2) { + if (static_cast<size_type>(__index) < size() / 2) { push_front(front()); iterator __front1 = _M_start; ++__front1; @@ -1311,7 +1311,7 @@ typename deque<_Tp,_Alloc,__bufsize>::iterator deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos) { difference_type __index = __pos - _M_start; - if (__index < size() / 2) { + if (static_cast<size_type>(__index) < size() / 2) { push_front(front()); iterator __front1 = _M_start; ++__front1; @@ -1344,7 +1344,7 @@ deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos, const difference_type __elems_before = __pos - _M_start; size_type __length = size(); value_type __x_copy = __x; - if (__elems_before < __length / 2) { + if (static_cast<size_type>(__elems_before) < __length / 2) { iterator __new_start = _M_reserve_elements_at_front(__n); iterator __old_start = _M_start; __pos = _M_start + __elems_before; @@ -1403,7 +1403,7 @@ deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos, { const difference_type __elemsbefore = __pos - _M_start; size_type __length = size(); - if (__elemsbefore < __length / 2) { + if (static_cast<size_type>(__elemsbefore) < __length / 2) { iterator __new_start = _M_reserve_elements_at_front(__n); iterator __old_start = _M_start; __pos = _M_start + __elemsbefore; diff --git a/libstdc++/stl/stl_rope.h b/libstdc++/stl/stl_rope.h index 44f51aed1ae..fa1e848c065 100644 --- a/libstdc++/stl/stl_rope.h +++ b/libstdc++/stl/stl_rope.h @@ -386,8 +386,8 @@ struct _Rope_RopeRep : public _Rope_rep_base<_CharT,_Alloc> { typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type; _Rope_RopeRep(_Tag __t, int __d, bool __b, size_t __size, allocator_type __a) - : _M_tag(__t), _M_depth(__d), _M_is_balanced(__b), _M_c_string(0), - _Rope_rep_base<_CharT,_Alloc>(__size, __a) + : _Rope_rep_base<_CharT,_Alloc>(__size, __a), + _M_tag(__t), _M_depth(__d), _M_is_balanced(__b), _M_c_string(0) { # ifndef __GC _M_refcount = 1; @@ -562,8 +562,8 @@ struct _Rope_RopeLeaf : public _Rope_RopeRep<_CharT,_Alloc> { /* doesn't matter. */ typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type; _Rope_RopeLeaf(__GC_CONST _CharT* __d, size_t __size, allocator_type __a) - : _M_data(__d) - , _Rope_RopeRep<_CharT,_Alloc>(_S_leaf, 0, true, __size, __a) + : _Rope_RopeRep<_CharT,_Alloc>(_S_leaf, 0, true, __size, __a), + _M_data(__d) { __stl_assert(__size > 0); if (_S_is_basic_char_type((_CharT *)0)) { @@ -593,10 +593,10 @@ struct _Rope_RopeConcatenation : public _Rope_RopeRep<_CharT,_Alloc> { _Rope_RopeConcatenation(_Rope_RopeRep<_CharT,_Alloc>* __l, _Rope_RopeRep<_CharT,_Alloc>* __r, allocator_type __a) - : _M_left(__l), _M_right(__r) - , _Rope_RopeRep<_CharT,_Alloc>( + : _Rope_RopeRep<_CharT,_Alloc>( _S_concat, max(__l->_M_depth, __r->_M_depth) + 1, false, - __l->_M_size + __r->_M_size, __a) + __l->_M_size + __r->_M_size, __a), + _M_left(__l), _M_right(__r) {} # ifndef __GC ~_Rope_RopeConcatenation() { @@ -629,11 +629,12 @@ struct _Rope_RopeFunction : public _Rope_RopeRep<_CharT,_Alloc> { typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type; _Rope_RopeFunction(char_producer<_CharT>* __f, size_t __size, bool __d, allocator_type __a) - : _M_fn(__f) + :_Rope_RopeRep<_CharT,_Alloc>(_S_function, 0, true, __size, __a), + _M_fn(__f) # ifndef __GC , _M_delete_when_done(__d) # endif - , _Rope_RopeRep<_CharT,_Alloc>(_S_function, 0, true, __size, __a) { + { __stl_assert(__size > 0); # ifdef __GC if (__d) { @@ -693,9 +694,8 @@ struct _Rope_RopeSubstring : public _Rope_RopeFunction<_CharT,_Alloc>, typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type; _Rope_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s, size_t __l, allocator_type __a) - : _M_base(__b) + : _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a), _M_base(__b) , _M_start(__s) - , _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a) { __stl_assert(__l > 0); __stl_assert(__s + __l <= __b->_M_size); @@ -766,16 +766,16 @@ class _Rope_char_ref_proxy { _My_rope* _M_root; // The whole rope. public: _Rope_char_ref_proxy(_My_rope* __r, size_t __p) : - _M_pos(__p), _M_root(__r), _M_current_valid(false) {} + _M_pos(__p), _M_current_valid(false), _M_root(__r) {} _Rope_char_ref_proxy(const _Rope_char_ref_proxy& __x) : - _M_pos(__x._M_pos), _M_root(__x._M_root), _M_current_valid(false) {} + _M_pos(__x._M_pos), _M_current_valid(false), _M_root(__x._M_root) {} // Don't preserve cache if the reference can outlive the // expression. We claim that's not possible without calling // a copy constructor or generating reference to a proxy // reference. We declare the latter to have undefined semantics. _Rope_char_ref_proxy(_My_rope* __r, size_t __p, _CharT __c) : - _M_pos(__p), _M_root(__r), _M_current(__c), _M_current_valid(true) {} + _M_pos(__p), _M_current(__c), _M_current_valid(true), _M_root(__r) {} inline operator _CharT () const; _Rope_char_ref_proxy& operator= (_CharT __c); _Rope_char_ptr_proxy<_CharT,_Alloc> operator& () const; |