Commit 6b6d5d09 by Paolo Carlini Committed by Paolo Carlini

stl_tree.h (_Rb_tree<>::_M_const_cast_iter): Remove.

2010-11-14  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/stl_tree.h (_Rb_tree<>::_M_const_cast_iter): Remove.
	(_Rb_tree_const_iterator<>::_M_const_cast): Add.
	(_Rb_tree<>::erase, _M_insert_unique_): Adjust.
	* include/debug/map.h (map<>::erase, insert): Fix C++0x signatures.
	* include/debug/multimap.h (multimap<>::erase, insert): Likewise.
	* include/debug/set.h (set<>::erase, insert): Fix, only cosmetic
	changes in this case.
	* include/debug/multiset.h (multiset<>::erase, insert): Likewise.
	* include/profile/set.h (set<>::insert): Remove redundant macro.
	* include/profile/multiset.h (multiset<>::insert): Likewise.
	* include/bits/stl_set.h (set<>::insert): Likewise.
	* include/bits/stl_multiset.h (multiset<>::insert): Likewise.

From-SVN: r166734
parent fc3f9236
2010-11-14 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/stl_tree.h (_Rb_tree<>::_M_const_cast_iter): Remove.
(_Rb_tree_const_iterator<>::_M_const_cast): Add.
(_Rb_tree<>::erase, _M_insert_unique_): Adjust.
* include/debug/map.h (map<>::erase, insert): Fix C++0x signatures.
* include/debug/multimap.h (multimap<>::erase, insert): Likewise.
* include/debug/set.h (set<>::erase, insert): Fix, only cosmetic
changes in this case.
* include/debug/multiset.h (multiset<>::erase, insert): Likewise.
* include/profile/set.h (set<>::insert): Remove redundant macro.
* include/profile/multiset.h (multiset<>::insert): Likewise.
* include/bits/stl_set.h (set<>::insert): Likewise.
* include/bits/stl_multiset.h (multiset<>::insert): Likewise.
2010-11-12 Ian Lance Taylor <iant@google.com> 2010-11-12 Ian Lance Taylor <iant@google.com>
PR other/46332 PR other/46332
......
...@@ -423,11 +423,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -423,11 +423,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
* Insertion requires logarithmic time (if the hint is not taken). * Insertion requires logarithmic time (if the hint is not taken).
*/ */
iterator iterator
#ifdef __GXX_EXPERIMENTAL_CXX0X__
insert(const_iterator __position, const value_type& __x) insert(const_iterator __position, const value_type& __x)
#else
insert(iterator __position, const value_type& __x)
#endif
{ return _M_t._M_insert_equal_(__position, __x); } { return _M_t._M_insert_equal_(__position, __x); }
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
......
...@@ -439,11 +439,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -439,11 +439,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
* Insertion requires logarithmic time (if the hint is not taken). * Insertion requires logarithmic time (if the hint is not taken).
*/ */
iterator iterator
#ifdef __GXX_EXPERIMENTAL_CXX0X__
insert(const_iterator __position, const value_type& __x) insert(const_iterator __position, const value_type& __x)
#else
insert(iterator __position, const value_type& __x)
#endif
{ return _M_t._M_insert_unique_(__position, __x); } { return _M_t._M_insert_unique_(__position, __x); }
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
......
...@@ -247,6 +247,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -247,6 +247,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Rb_tree_const_iterator(const iterator& __it) _Rb_tree_const_iterator(const iterator& __it)
: _M_node(__it._M_node) { } : _M_node(__it._M_node) { }
iterator
_M_const_cast() const
{ return iterator(static_cast<typename iterator::_Link_type>
(const_cast<typename iterator::_Base_ptr>(_M_node))); }
reference reference
operator*() const operator*() const
{ return static_cast<_Link_type>(_M_node)->_M_value_field; } { return static_cast<_Link_type>(_M_node)->_M_value_field; }
...@@ -556,11 +561,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -556,11 +561,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
typedef std::reverse_iterator<const_iterator> const_reverse_iterator; typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
private: private:
iterator
_M_const_cast_iter(const_iterator __cit)
{ return iterator(static_cast<_Link_type>
(const_cast<_Base_ptr>(__cit._M_node))); }
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
template<typename _Arg> template<typename _Arg>
iterator iterator
...@@ -756,7 +756,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -756,7 +756,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
const_iterator __result = __position; const_iterator __result = __position;
++__result; ++__result;
_M_erase_aux(__position); _M_erase_aux(__position);
return _M_const_cast_iter(__result); return __result._M_const_cast();
} }
#else #else
void void
...@@ -773,7 +773,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -773,7 +773,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
erase(const_iterator __first, const_iterator __last) erase(const_iterator __first, const_iterator __last)
{ {
_M_erase_aux(__first, __last); _M_erase_aux(__first, __last);
return _M_const_cast_iter(__last); return __last._M_const_cast();
} }
#else #else
void void
...@@ -1364,7 +1364,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -1364,7 +1364,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
} }
else else
// Equivalent keys. // Equivalent keys.
return _M_const_cast_iter(__position); return __position._M_const_cast();
} }
template<typename _Key, typename _Val, typename _KeyOfValue, template<typename _Key, typename _Val, typename _KeyOfValue,
......
...@@ -232,7 +232,11 @@ namespace __debug ...@@ -232,7 +232,11 @@ namespace __debug
#endif #endif
iterator iterator
#ifdef __GXX_EXPERIMENTAL_CXX0X__
insert(const_iterator __position, const value_type& __x)
#else
insert(iterator __position, const value_type& __x) insert(iterator __position, const value_type& __x)
#endif
{ {
__glibcxx_check_insert(__position); __glibcxx_check_insert(__position);
return iterator(_Base::insert(__position.base(), __x), this); return iterator(_Base::insert(__position.base(), __x), this);
...@@ -262,7 +266,7 @@ namespace __debug ...@@ -262,7 +266,7 @@ namespace __debug
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator iterator
erase(iterator __position) erase(const_iterator __position)
{ {
__glibcxx_check_erase(__position); __glibcxx_check_erase(__position);
__position._M_invalidate(); __position._M_invalidate();
...@@ -294,14 +298,14 @@ namespace __debug ...@@ -294,14 +298,14 @@ namespace __debug
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator iterator
erase(iterator __first, iterator __last) erase(const_iterator __first, const_iterator __last)
{ {
// _GLIBCXX_RESOLVE_LIB_DEFECTS // _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container // 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last); __glibcxx_check_erase_range(__first, __last);
while (__first != __last) while (__first != __last)
this->erase(__first++); this->erase(__first++);
return __last; return iterator(__last.base()._M_const_cast(), this);
} }
#else #else
void void
......
...@@ -213,7 +213,11 @@ namespace __debug ...@@ -213,7 +213,11 @@ namespace __debug
#endif #endif
iterator iterator
insert(iterator __position, const value_type& __x) #ifdef __GXX_EXPERIMENTAL_CXX0X__
insert(const_iterator __position, const value_type& __x)
#else
insert(iterator __position, const value_type& __x)
#endif
{ {
__glibcxx_check_insert(__position); __glibcxx_check_insert(__position);
return iterator(_Base::insert(__position.base(), __x), this); return iterator(_Base::insert(__position.base(), __x), this);
...@@ -243,7 +247,7 @@ namespace __debug ...@@ -243,7 +247,7 @@ namespace __debug
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator iterator
erase(iterator __position) erase(const_iterator __position)
{ {
__glibcxx_check_erase(__position); __glibcxx_check_erase(__position);
__position._M_invalidate(); __position._M_invalidate();
...@@ -276,14 +280,14 @@ namespace __debug ...@@ -276,14 +280,14 @@ namespace __debug
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator iterator
erase(iterator __first, iterator __last) erase(const_iterator __first, const_iterator __last)
{ {
// _GLIBCXX_RESOLVE_LIB_DEFECTS // _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container // 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last); __glibcxx_check_erase_range(__first, __last);
while (__first != __last) while (__first != __last)
this->erase(__first++); this->erase(__first++);
return __last; return iterator(__last.base()._M_const_cast(), this);
} }
#else #else
void void
......
...@@ -201,7 +201,7 @@ namespace __debug ...@@ -201,7 +201,7 @@ namespace __debug
#endif #endif
iterator iterator
insert(iterator __position, const value_type& __x) insert(const_iterator __position, const value_type& __x)
{ {
__glibcxx_check_insert(__position); __glibcxx_check_insert(__position);
return iterator(_Base::insert(__position.base(), __x), this); return iterator(_Base::insert(__position.base(), __x), this);
...@@ -234,7 +234,7 @@ namespace __debug ...@@ -234,7 +234,7 @@ namespace __debug
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator iterator
erase(iterator __position) erase(const_iterator __position)
{ {
__glibcxx_check_erase(__position); __glibcxx_check_erase(__position);
__position._M_invalidate(); __position._M_invalidate();
...@@ -267,14 +267,14 @@ namespace __debug ...@@ -267,14 +267,14 @@ namespace __debug
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator iterator
erase(iterator __first, iterator __last) erase(const_iterator __first, const_iterator __last)
{ {
// _GLIBCXX_RESOLVE_LIB_DEFECTS // _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container // 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last); __glibcxx_check_erase_range(__first, __last);
while (__first != __last) while (__first != __last)
this->erase(__first++); this->erase(__first++);
return __last; return __last; // iterator == const_iterator
} }
#else #else
void void
......
...@@ -212,7 +212,7 @@ namespace __debug ...@@ -212,7 +212,7 @@ namespace __debug
#endif #endif
iterator iterator
insert(iterator __position, const value_type& __x) insert(const_iterator __position, const value_type& __x)
{ {
__glibcxx_check_insert(__position); __glibcxx_check_insert(__position);
return iterator(_Base::insert(__position.base(), __x), this); return iterator(_Base::insert(__position.base(), __x), this);
...@@ -245,7 +245,7 @@ namespace __debug ...@@ -245,7 +245,7 @@ namespace __debug
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator iterator
erase(iterator __position) erase(const_iterator __position)
{ {
__glibcxx_check_erase(__position); __glibcxx_check_erase(__position);
__position._M_invalidate(); __position._M_invalidate();
...@@ -277,14 +277,14 @@ namespace __debug ...@@ -277,14 +277,14 @@ namespace __debug
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
iterator iterator
erase(iterator __first, iterator __last) erase(const_iterator __first, const_iterator __last)
{ {
// _GLIBCXX_RESOLVE_LIB_DEFECTS // _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container // 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last); __glibcxx_check_erase_range(__first, __last);
while (__first != __last) while (__first != __last)
this->erase(__first++); this->erase(__first++);
return __last; return __last; // iterator == const_iterator
} }
#else #else
void void
......
...@@ -190,11 +190,7 @@ namespace __profile ...@@ -190,11 +190,7 @@ namespace __profile
#endif #endif
iterator iterator
#ifdef __GXX_EXPERIMENTAL_CXX0X__
insert(const_iterator __position, const value_type& __x) insert(const_iterator __position, const value_type& __x)
#else
insert(iterator __position, const value_type& __x)
#endif
{ return iterator(_Base::insert(__position, __x)); } { return iterator(_Base::insert(__position, __x)); }
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
......
...@@ -201,11 +201,7 @@ namespace __profile ...@@ -201,11 +201,7 @@ namespace __profile
#endif #endif
iterator iterator
#ifdef __GXX_EXPERIMENTAL_CXX0X__
insert(const_iterator __position, const value_type& __x) insert(const_iterator __position, const value_type& __x)
#else
insert(iterator __position, const value_type& __x)
#endif
{ return iterator(_Base::insert(__position, __x)); } { return iterator(_Base::insert(__position, __x)); }
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment