forked from KolibriOS/kolibrios
libstdc++-v3-gcc-4.8.5
git-svn-id: svn://kolibrios.org@6325 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -345,11 +345,13 @@ namespace __gnu_debug
|
||||
return __check_sorted_set_aux(__first, __last, __pred, _SameType());
|
||||
}
|
||||
|
||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||
// 270. Binary search requirements overly strict
|
||||
// Determine if a sequence is partitioned w.r.t. this element.
|
||||
template<typename _ForwardIterator, typename _Tp>
|
||||
inline bool
|
||||
__check_partitioned_lower_aux(_ForwardIterator __first,
|
||||
_ForwardIterator __last, const _Tp& __value,
|
||||
std::forward_iterator_tag)
|
||||
__check_partitioned_lower(_ForwardIterator __first,
|
||||
_ForwardIterator __last, const _Tp& __value)
|
||||
{
|
||||
while (__first != __last && *__first < __value)
|
||||
++__first;
|
||||
@@ -362,37 +364,10 @@ namespace __gnu_debug
|
||||
return __first == __last;
|
||||
}
|
||||
|
||||
// For performance reason, as the iterator range has been validated, check on
|
||||
// random access safe iterators is done using the base iterator.
|
||||
template<typename _Iterator, typename _Sequence, typename _Tp>
|
||||
inline bool
|
||||
__check_partitioned_lower_aux(
|
||||
const _Safe_iterator<_Iterator, _Sequence>& __first,
|
||||
const _Safe_iterator<_Iterator, _Sequence>& __last,
|
||||
const _Tp& __value,
|
||||
std::random_access_iterator_tag __tag)
|
||||
{
|
||||
return __check_partitioned_lower_aux(__first.base(), __last.base(),
|
||||
__value, __tag);
|
||||
}
|
||||
|
||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||
// 270. Binary search requirements overly strict
|
||||
// Determine if a sequence is partitioned w.r.t. this element.
|
||||
template<typename _ForwardIterator, typename _Tp>
|
||||
inline bool
|
||||
__check_partitioned_lower(_ForwardIterator __first,
|
||||
__check_partitioned_upper(_ForwardIterator __first,
|
||||
_ForwardIterator __last, const _Tp& __value)
|
||||
{
|
||||
return __check_partitioned_lower_aux(__first, __last, __value,
|
||||
std::__iterator_category(__first));
|
||||
}
|
||||
|
||||
template<typename _ForwardIterator, typename _Tp>
|
||||
inline bool
|
||||
__check_partitioned_upper_aux(_ForwardIterator __first,
|
||||
_ForwardIterator __last, const _Tp& __value,
|
||||
std::forward_iterator_tag)
|
||||
{
|
||||
while (__first != __last && !(__value < *__first))
|
||||
++__first;
|
||||
@@ -405,35 +380,12 @@ namespace __gnu_debug
|
||||
return __first == __last;
|
||||
}
|
||||
|
||||
// For performance reason, as the iterator range has been validated, check on
|
||||
// random access safe iterators is done using the base iterator.
|
||||
template<typename _Iterator, typename _Sequence, typename _Tp>
|
||||
inline bool
|
||||
__check_partitioned_upper_aux(
|
||||
const _Safe_iterator<_Iterator, _Sequence>& __first,
|
||||
const _Safe_iterator<_Iterator, _Sequence>& __last,
|
||||
const _Tp& __value,
|
||||
std::random_access_iterator_tag __tag)
|
||||
{
|
||||
return __check_partitioned_upper_aux(__first.base(), __last.base(),
|
||||
__value, __tag);
|
||||
}
|
||||
|
||||
template<typename _ForwardIterator, typename _Tp>
|
||||
inline bool
|
||||
__check_partitioned_upper(_ForwardIterator __first,
|
||||
_ForwardIterator __last, const _Tp& __value)
|
||||
{
|
||||
return __check_partitioned_upper_aux(__first, __last, __value,
|
||||
std::__iterator_category(__first));
|
||||
}
|
||||
|
||||
// Determine if a sequence is partitioned w.r.t. this element.
|
||||
template<typename _ForwardIterator, typename _Tp, typename _Pred>
|
||||
inline bool
|
||||
__check_partitioned_lower_aux(_ForwardIterator __first,
|
||||
_ForwardIterator __last, const _Tp& __value,
|
||||
_Pred __pred,
|
||||
std::forward_iterator_tag)
|
||||
__check_partitioned_lower(_ForwardIterator __first,
|
||||
_ForwardIterator __last, const _Tp& __value,
|
||||
_Pred __pred)
|
||||
{
|
||||
while (__first != __last && bool(__pred(*__first, __value)))
|
||||
++__first;
|
||||
@@ -446,38 +398,11 @@ namespace __gnu_debug
|
||||
return __first == __last;
|
||||
}
|
||||
|
||||
// For performance reason, as the iterator range has been validated, check on
|
||||
// random access safe iterators is done using the base iterator.
|
||||
template<typename _Iterator, typename _Sequence,
|
||||
typename _Tp, typename _Pred>
|
||||
inline bool
|
||||
__check_partitioned_lower_aux(
|
||||
const _Safe_iterator<_Iterator, _Sequence>& __first,
|
||||
const _Safe_iterator<_Iterator, _Sequence>& __last,
|
||||
const _Tp& __value, _Pred __pred,
|
||||
std::random_access_iterator_tag __tag)
|
||||
{
|
||||
return __check_partitioned_lower_aux(__first.base(), __last.base(),
|
||||
__value, __pred, __tag);
|
||||
}
|
||||
|
||||
// Determine if a sequence is partitioned w.r.t. this element.
|
||||
template<typename _ForwardIterator, typename _Tp, typename _Pred>
|
||||
inline bool
|
||||
__check_partitioned_lower(_ForwardIterator __first,
|
||||
__check_partitioned_upper(_ForwardIterator __first,
|
||||
_ForwardIterator __last, const _Tp& __value,
|
||||
_Pred __pred)
|
||||
{
|
||||
return __check_partitioned_lower_aux(__first, __last, __value, __pred,
|
||||
std::__iterator_category(__first));
|
||||
}
|
||||
|
||||
template<typename _ForwardIterator, typename _Tp, typename _Pred>
|
||||
inline bool
|
||||
__check_partitioned_upper_aux(_ForwardIterator __first,
|
||||
_ForwardIterator __last, const _Tp& __value,
|
||||
_Pred __pred,
|
||||
std::forward_iterator_tag)
|
||||
{
|
||||
while (__first != __last && !bool(__pred(__value, *__first)))
|
||||
++__first;
|
||||
@@ -490,31 +415,6 @@ namespace __gnu_debug
|
||||
return __first == __last;
|
||||
}
|
||||
|
||||
// For performance reason, as the iterator range has been validated, check on
|
||||
// random access safe iterators is done using the base iterator.
|
||||
template<typename _Iterator, typename _Sequence,
|
||||
typename _Tp, typename _Pred>
|
||||
inline bool
|
||||
__check_partitioned_upper_aux(
|
||||
const _Safe_iterator<_Iterator, _Sequence>& __first,
|
||||
const _Safe_iterator<_Iterator, _Sequence>& __last,
|
||||
const _Tp& __value, _Pred __pred,
|
||||
std::random_access_iterator_tag __tag)
|
||||
{
|
||||
return __check_partitioned_upper_aux(__first.base(), __last.base(),
|
||||
__value, __pred, __tag);
|
||||
}
|
||||
|
||||
template<typename _ForwardIterator, typename _Tp, typename _Pred>
|
||||
inline bool
|
||||
__check_partitioned_upper(_ForwardIterator __first,
|
||||
_ForwardIterator __last, const _Tp& __value,
|
||||
_Pred __pred)
|
||||
{
|
||||
return __check_partitioned_upper_aux(__first, __last, __value, __pred,
|
||||
std::__iterator_category(__first));
|
||||
}
|
||||
|
||||
// Helper struct to detect random access safe iterators.
|
||||
template<typename _Iterator>
|
||||
struct __is_safe_random_iterator
|
||||
|
@@ -261,8 +261,9 @@ _GLIBCXX_DEBUG_VERIFY( \
|
||||
w.r.t. the value _Value. */
|
||||
#define __glibcxx_check_partitioned_lower(_First,_Last,_Value) \
|
||||
__glibcxx_check_valid_range(_First,_Last); \
|
||||
_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower(_First, _Last, \
|
||||
_Value), \
|
||||
_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower( \
|
||||
__gnu_debug::__base(_First), \
|
||||
__gnu_debug::__base(_Last), _Value), \
|
||||
_M_message(__gnu_debug::__msg_unpartitioned) \
|
||||
._M_iterator(_First, #_First) \
|
||||
._M_iterator(_Last, #_Last) \
|
||||
@@ -270,8 +271,9 @@ _GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower(_First, _Last, \
|
||||
|
||||
#define __glibcxx_check_partitioned_upper(_First,_Last,_Value) \
|
||||
__glibcxx_check_valid_range(_First,_Last); \
|
||||
_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper(_First, _Last, \
|
||||
_Value), \
|
||||
_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper( \
|
||||
__gnu_debug::__base(_First), \
|
||||
__gnu_debug::__base(_Last), _Value), \
|
||||
_M_message(__gnu_debug::__msg_unpartitioned) \
|
||||
._M_iterator(_First, #_First) \
|
||||
._M_iterator(_Last, #_Last) \
|
||||
@@ -281,8 +283,9 @@ _GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper(_First, _Last, \
|
||||
w.r.t. the value _Value and predicate _Pred. */
|
||||
#define __glibcxx_check_partitioned_lower_pred(_First,_Last,_Value,_Pred) \
|
||||
__glibcxx_check_valid_range(_First,_Last); \
|
||||
_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower(_First, _Last, \
|
||||
_Value, _Pred), \
|
||||
_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower( \
|
||||
__gnu_debug::__base(_First), \
|
||||
__gnu_debug::__base(_Last), _Value, _Pred), \
|
||||
_M_message(__gnu_debug::__msg_unpartitioned_pred) \
|
||||
._M_iterator(_First, #_First) \
|
||||
._M_iterator(_Last, #_Last) \
|
||||
@@ -293,8 +296,9 @@ _GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower(_First, _Last, \
|
||||
w.r.t. the value _Value and predicate _Pred. */
|
||||
#define __glibcxx_check_partitioned_upper_pred(_First,_Last,_Value,_Pred) \
|
||||
__glibcxx_check_valid_range(_First,_Last); \
|
||||
_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper(_First, _Last, \
|
||||
_Value, _Pred), \
|
||||
_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper( \
|
||||
__gnu_debug::__base(_First), \
|
||||
__gnu_debug::__base(_Last), _Value, _Pred), \
|
||||
_M_message(__gnu_debug::__msg_unpartitioned_pred) \
|
||||
._M_iterator(_First, #_First) \
|
||||
._M_iterator(_Last, #_Last) \
|
||||
|
@@ -133,9 +133,19 @@ namespace __gnu_debug
|
||||
protected:
|
||||
// Initialize with a version number of 1 and no iterators
|
||||
_Safe_unordered_container_base()
|
||||
: _M_local_iterators(0), _M_const_local_iterators(0)
|
||||
: _M_local_iterators(nullptr), _M_const_local_iterators(nullptr)
|
||||
{ }
|
||||
|
||||
// Initialize with a version number of 1 and no iterators
|
||||
_Safe_unordered_container_base(const _Safe_unordered_container_base&)
|
||||
noexcept
|
||||
: _Safe_unordered_container_base() { }
|
||||
|
||||
_Safe_unordered_container_base(_Safe_unordered_container_base&& __x)
|
||||
noexcept
|
||||
: _Safe_unordered_container_base()
|
||||
{ this->_M_swap(__x); }
|
||||
|
||||
/** Notify all iterators that reference this container that the
|
||||
container is being destroyed. */
|
||||
~_Safe_unordered_container_base()
|
||||
|
Reference in New Issue
Block a user