aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8.1/libstdc++-v3/include/debug
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2016-02-24 13:48:45 -0800
committerDan Albert <danalbert@google.com>2016-02-24 13:51:18 -0800
commitb9de1157289455b0ca26daff519d4a0ddcd1fa13 (patch)
tree4c56cc0a34b91f17033a40a455f26652304f7b8d /gcc-4.8.1/libstdc++-v3/include/debug
parent098157a754787181cfa10e71325832448ddcea98 (diff)
downloadtoolchain_gcc-b9de1157289455b0ca26daff519d4a0ddcd1fa13.tar.gz
toolchain_gcc-b9de1157289455b0ca26daff519d4a0ddcd1fa13.tar.bz2
toolchain_gcc-b9de1157289455b0ca26daff519d4a0ddcd1fa13.zip
Update 4.8.1 to 4.8.3.
My previous drop was the wrong version. The platform mingw is currently using 4.8.3, not 4.8.1 (not sure how I got that wrong). From ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.3/gcc-4.8.3.tar.bz2. Bug: http://b/26523949 Change-Id: Id85f1bdcbbaf78c7d0b5a69e74c798a08f341c35
Diffstat (limited to 'gcc-4.8.1/libstdc++-v3/include/debug')
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/array305
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/bitset426
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/debug.h131
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/deque579
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/formatter.h462
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/forward_list801
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/functions.h550
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/list757
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/macros.h349
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/map36
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/map.h491
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/multimap.h474
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/multiset.h460
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/safe_base.h254
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/safe_iterator.h719
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/safe_iterator.tcc106
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/safe_local_iterator.h369
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/safe_local_iterator.tcc75
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/safe_sequence.h134
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/safe_sequence.tcc150
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/safe_unordered_base.h175
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/safe_unordered_container.h81
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/safe_unordered_container.tcc100
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/set36
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/set.h469
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/string1161
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/unordered_map903
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/unordered_set885
-rw-r--r--gcc-4.8.1/libstdc++-v3/include/debug/vector655
29 files changed, 0 insertions, 12093 deletions
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/array b/gcc-4.8.1/libstdc++-v3/include/debug/array
deleted file mode 100644
index bce10cf3f..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/array
+++ /dev/null
@@ -1,305 +0,0 @@
-// Debugging array implementation -*- C++ -*-
-
-// Copyright (C) 2012-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/array
- * This is a Standard C++ Library header.
- */
-
-#ifndef _GLIBCXX_DEBUG_ARRAY
-#define _GLIBCXX_DEBUG_ARRAY 1
-
-#pragma GCC system_header
-
-#include <debug/safe_sequence.h>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-namespace __debug
-{
- template<typename _Tp, std::size_t _Nm>
- struct array
- {
- typedef _Tp value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef value_type* iterator;
- typedef const value_type* const_iterator;
- typedef std::size_t size_type;
- typedef std::ptrdiff_t difference_type;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
- // Support for zero-sized arrays mandatory.
- typedef _GLIBCXX_STD_C::__array_traits<_Tp, _Nm> _AT_Type;
- typename _AT_Type::_Type _M_elems;
-
- template<std::size_t _Size>
- struct _Array_check_subscript
- {
- std::size_t size() { return _Size; }
-
- _Array_check_subscript(std::size_t __index)
- { __glibcxx_check_subscript(__index); }
- };
-
- template<std::size_t _Size>
- struct _Array_check_nonempty
- {
- bool empty() { return _Size == 0; }
-
- _Array_check_nonempty()
- { __glibcxx_check_nonempty(); }
- };
-
- // No explicit construct/copy/destroy for aggregate type.
-
- // DR 776.
- void
- fill(const value_type& __u)
- { std::fill_n(begin(), size(), __u); }
-
- void
- swap(array& __other)
- noexcept(noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())))
- { std::swap_ranges(begin(), end(), __other.begin()); }
-
- // Iterators.
- iterator
- begin() noexcept
- { return iterator(data()); }
-
- const_iterator
- begin() const noexcept
- { return const_iterator(data()); }
-
- iterator
- end() noexcept
- { return iterator(data() + _Nm); }
-
- const_iterator
- end() const noexcept
- { return const_iterator(data() + _Nm); }
-
- reverse_iterator
- rbegin() noexcept
- { return reverse_iterator(end()); }
-
- const_reverse_iterator
- rbegin() const noexcept
- { return const_reverse_iterator(end()); }
-
- reverse_iterator
- rend() noexcept
- { return reverse_iterator(begin()); }
-
- const_reverse_iterator
- rend() const noexcept
- { return const_reverse_iterator(begin()); }
-
- const_iterator
- cbegin() const noexcept
- { return const_iterator(data()); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(data() + _Nm); }
-
- const_reverse_iterator
- crbegin() const noexcept
- { return const_reverse_iterator(end()); }
-
- const_reverse_iterator
- crend() const noexcept
- { return const_reverse_iterator(begin()); }
-
- // Capacity.
- constexpr size_type
- size() const noexcept { return _Nm; }
-
- constexpr size_type
- max_size() const noexcept { return _Nm; }
-
- constexpr bool
- empty() const noexcept { return size() == 0; }
-
- // Element access.
- reference
- operator[](size_type __n)
- {
- __glibcxx_check_subscript(__n);
- return _AT_Type::_S_ref(_M_elems, __n);
- }
-
- constexpr const_reference
- operator[](size_type __n) const noexcept
- {
- return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n)
- : (_GLIBCXX_THROW_OR_ABORT(_Array_check_subscript<_Nm>(__n)),
- _AT_Type::_S_ref(_M_elems, 0));
- }
-
- reference
- at(size_type __n)
- {
- if (__n >= _Nm)
- std::__throw_out_of_range(__N("array::at"));
- return _AT_Type::_S_ref(_M_elems, __n);
- }
-
- constexpr const_reference
- at(size_type __n) const
- {
- // Result of conditional expression must be an lvalue so use
- // boolean ? lvalue : (throw-expr, lvalue)
- return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n)
- : (std::__throw_out_of_range(__N("array::at")),
- _AT_Type::_S_ref(_M_elems, 0));
- }
-
- reference
- front()
- {
- __glibcxx_check_nonempty();
- return *begin();
- }
-
- constexpr const_reference
- front() const
- {
- return _Nm ? _AT_Type::_S_ref(_M_elems, 0)
- : (_GLIBCXX_THROW_OR_ABORT(_Array_check_nonempty<_Nm>()),
- _AT_Type::_S_ref(_M_elems, 0));
- }
-
- reference
- back()
- {
- __glibcxx_check_nonempty();
- return _Nm ? *(end() - 1) : *end();
- }
-
- constexpr const_reference
- back() const
- {
- return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1)
- : (_GLIBCXX_THROW_OR_ABORT(_Array_check_nonempty<_Nm>()),
- _AT_Type::_S_ref(_M_elems, 0));
- }
-
- pointer
- data() noexcept
- { return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); }
-
- const_pointer
- data() const noexcept
- { return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); }
- };
-
- // Array comparisons.
- template<typename _Tp, std::size_t _Nm>
- inline bool
- operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
- { return std::equal(__one.begin(), __one.end(), __two.begin()); }
-
- template<typename _Tp, std::size_t _Nm>
- inline bool
- operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
- { return !(__one == __two); }
-
- template<typename _Tp, std::size_t _Nm>
- inline bool
- operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b)
- {
- return std::lexicographical_compare(__a.begin(), __a.end(),
- __b.begin(), __b.end());
- }
-
- template<typename _Tp, std::size_t _Nm>
- inline bool
- operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
- { return __two < __one; }
-
- template<typename _Tp, std::size_t _Nm>
- inline bool
- operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
- { return !(__one > __two); }
-
- template<typename _Tp, std::size_t _Nm>
- inline bool
- operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
- { return !(__one < __two); }
-
- // Specialized algorithms.
- template<typename _Tp, std::size_t _Nm>
- inline void
- swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two)
- noexcept(noexcept(__one.swap(__two)))
- { __one.swap(__two); }
-
- template<std::size_t _Int, typename _Tp, std::size_t _Nm>
- constexpr _Tp&
- get(array<_Tp, _Nm>& __arr) noexcept
- {
- static_assert(_Int < _Nm, "index is out of bounds");
- return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::
- _S_ref(__arr._M_elems, _Int);
- }
-
- template<std::size_t _Int, typename _Tp, std::size_t _Nm>
- constexpr _Tp&&
- get(array<_Tp, _Nm>&& __arr) noexcept
- {
- static_assert(_Int < _Nm, "index is out of bounds");
- return std::move(get<_Int>(__arr));
- }
-
- template<std::size_t _Int, typename _Tp, std::size_t _Nm>
- constexpr const _Tp&
- get(const array<_Tp, _Nm>& __arr) noexcept
- {
- static_assert(_Int < _Nm, "index is out of bounds");
- return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::
- _S_ref(__arr._M_elems, _Int);
- }
-} // namespace __debug
-
- // Tuple interface to class template array.
-
- /// tuple_size
- template<typename _Tp, std::size_t _Nm>
- struct tuple_size<__debug::array<_Tp, _Nm>>
- : public integral_constant<std::size_t, _Nm> { };
-
- /// tuple_element
- template<std::size_t _Int, typename _Tp, std::size_t _Nm>
- struct tuple_element<_Int, __debug::array<_Tp, _Nm>>
- {
- static_assert(_Int < _Nm, "index is out of bounds");
- typedef _Tp type;
- };
-} // namespace std
-
-#endif // _GLIBCXX_DEBUG_ARRAY
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/bitset b/gcc-4.8.1/libstdc++-v3/include/debug/bitset
deleted file mode 100644
index 28d918428..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/bitset
+++ /dev/null
@@ -1,426 +0,0 @@
-// Debugging bitset implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/bitset
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_BITSET
-#define _GLIBCXX_DEBUG_BITSET
-
-#include <bitset>
-#include <debug/safe_sequence.h>
-#include <debug/safe_iterator.h>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-namespace __debug
-{
- /// Class std::bitset with additional safety/checking/debug instrumentation.
- template<size_t _Nb>
- class bitset
- : public _GLIBCXX_STD_C::bitset<_Nb>
-#if __cplusplus < 201103L
- , public __gnu_debug::_Safe_sequence_base
-#endif
- {
- typedef _GLIBCXX_STD_C::bitset<_Nb> _Base;
-
- public:
- // In C++0x we rely on normal reference type to preserve the property
- // of bitset to be use as a literal.
- // TODO: Find another solution.
-#if __cplusplus >= 201103L
- typedef typename _Base::reference reference;
-#else
- // bit reference:
- class reference
- : private _Base::reference
- , public __gnu_debug::_Safe_iterator_base
- {
- typedef typename _Base::reference _Base_ref;
-
- friend class bitset;
- reference();
-
- reference(const _Base_ref& __base,
- bitset* __seq __attribute__((__unused__))) _GLIBCXX_NOEXCEPT
- : _Base_ref(__base)
- , _Safe_iterator_base(__seq, false)
- { }
-
- public:
- reference(const reference& __x) _GLIBCXX_NOEXCEPT
- : _Base_ref(__x)
- , _Safe_iterator_base(__x, false)
- { }
-
- reference&
- operator=(bool __x) _GLIBCXX_NOEXCEPT
- {
- _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
- _M_message(__gnu_debug::__msg_bad_bitset_write)
- ._M_iterator(*this));
- *static_cast<_Base_ref*>(this) = __x;
- return *this;
- }
-
- reference&
- operator=(const reference& __x) _GLIBCXX_NOEXCEPT
- {
- _GLIBCXX_DEBUG_VERIFY(! __x._M_singular(),
- _M_message(__gnu_debug::__msg_bad_bitset_read)
- ._M_iterator(__x));
- _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
- _M_message(__gnu_debug::__msg_bad_bitset_write)
- ._M_iterator(*this));
- *static_cast<_Base_ref*>(this) = __x;
- return *this;
- }
-
- bool
- operator~() const _GLIBCXX_NOEXCEPT
- {
- _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
- _M_message(__gnu_debug::__msg_bad_bitset_read)
- ._M_iterator(*this));
- return ~(*static_cast<const _Base_ref*>(this));
- }
-
- operator bool() const _GLIBCXX_NOEXCEPT
- {
- _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
- _M_message(__gnu_debug::__msg_bad_bitset_read)
- ._M_iterator(*this));
- return *static_cast<const _Base_ref*>(this);
- }
-
- reference&
- flip() _GLIBCXX_NOEXCEPT
- {
- _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
- _M_message(__gnu_debug::__msg_bad_bitset_flip)
- ._M_iterator(*this));
- _Base_ref::flip();
- return *this;
- }
- };
-#endif
-
- // 23.3.5.1 constructors:
- _GLIBCXX_CONSTEXPR bitset() _GLIBCXX_NOEXCEPT
- : _Base() { }
-
-#if __cplusplus >= 201103L
- constexpr bitset(unsigned long long __val) noexcept
-#else
- bitset(unsigned long __val)
-#endif
- : _Base(__val) { }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- explicit
- bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str,
- typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
- __pos = 0,
- typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
- __n = (std::basic_string<_CharT, _Traits, _Alloc>::npos))
- : _Base(__str, __pos, __n) { }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 396. what are characters zero and one.
- template<class _CharT, class _Traits, class _Alloc>
- bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str,
- typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
- __pos,
- typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
- __n,
- _CharT __zero, _CharT __one = _CharT('1'))
- : _Base(__str, __pos, __n, __zero, __one) { }
-
- bitset(const _Base& __x) : _Base(__x) { }
-
-#if __cplusplus >= 201103L
- template<typename _CharT>
- explicit
- bitset(const _CharT* __str,
- typename std::basic_string<_CharT>::size_type __n
- = std::basic_string<_CharT>::npos,
- _CharT __zero = _CharT('0'), _CharT __one = _CharT('1'))
- : _Base(__str, __n, __zero, __one) { }
-#endif
-
- // 23.3.5.2 bitset operations:
- bitset<_Nb>&
- operator&=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT
- {
- _M_base() &= __rhs;
- return *this;
- }
-
- bitset<_Nb>&
- operator|=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT
- {
- _M_base() |= __rhs;
- return *this;
- }
-
- bitset<_Nb>&
- operator^=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT
- {
- _M_base() ^= __rhs;
- return *this;
- }
-
- bitset<_Nb>&
- operator<<=(size_t __pos) _GLIBCXX_NOEXCEPT
- {
- _M_base() <<= __pos;
- return *this;
- }
-
- bitset<_Nb>&
- operator>>=(size_t __pos) _GLIBCXX_NOEXCEPT
- {
- _M_base() >>= __pos;
- return *this;
- }
-
- bitset<_Nb>&
- set() _GLIBCXX_NOEXCEPT
- {
- _Base::set();
- return *this;
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 186. bitset::set() second parameter should be bool
- bitset<_Nb>&
- set(size_t __pos, bool __val = true)
- {
- _Base::set(__pos, __val);
- return *this;
- }
-
- bitset<_Nb>&
- reset() _GLIBCXX_NOEXCEPT
- {
- _Base::reset();
- return *this;
- }
-
- bitset<_Nb>&
- reset(size_t __pos)
- {
- _Base::reset(__pos);
- return *this;
- }
-
- bitset<_Nb>
- operator~() const _GLIBCXX_NOEXCEPT
- { return bitset(~_M_base()); }
-
- bitset<_Nb>&
- flip() _GLIBCXX_NOEXCEPT
- {
- _Base::flip();
- return *this;
- }
-
- bitset<_Nb>&
- flip(size_t __pos)
- {
- _Base::flip(__pos);
- return *this;
- }
-
- // element access:
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 11. Bitset minor problems
- reference
- operator[](size_t __pos)
- {
- __glibcxx_check_subscript(__pos);
-#if __cplusplus >= 201103L
- return _M_base()[__pos];
-#else
- return reference(_M_base()[__pos], this);
-#endif
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 11. Bitset minor problems
- _GLIBCXX_CONSTEXPR bool
- operator[](size_t __pos) const
- {
-#if __cplusplus < 201103L
- // TODO: Check in debug-mode too.
- __glibcxx_check_subscript(__pos);
-#endif
- return _Base::operator[](__pos);
- }
-
- using _Base::to_ulong;
-#if __cplusplus >= 201103L
- using _Base::to_ullong;
-#endif
-
- template <typename _CharT, typename _Traits, typename _Alloc>
- std::basic_string<_CharT, _Traits, _Alloc>
- to_string() const
- { return _M_base().template to_string<_CharT, _Traits, _Alloc>(); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 396. what are characters zero and one.
- template<class _CharT, class _Traits, class _Alloc>
- std::basic_string<_CharT, _Traits, _Alloc>
- to_string(_CharT __zero, _CharT __one = _CharT('1')) const
- {
- return _M_base().template
- to_string<_CharT, _Traits, _Alloc>(__zero, __one);
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 434. bitset::to_string() hard to use.
- template<typename _CharT, typename _Traits>
- std::basic_string<_CharT, _Traits, std::allocator<_CharT> >
- to_string() const
- { return to_string<_CharT, _Traits, std::allocator<_CharT> >(); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 853. to_string needs updating with zero and one.
- template<class _CharT, class _Traits>
- std::basic_string<_CharT, _Traits, std::allocator<_CharT> >
- to_string(_CharT __zero, _CharT __one = _CharT('1')) const
- { return to_string<_CharT, _Traits,
- std::allocator<_CharT> >(__zero, __one); }
-
- template<typename _CharT>
- std::basic_string<_CharT, std::char_traits<_CharT>,
- std::allocator<_CharT> >
- to_string() const
- {
- return to_string<_CharT, std::char_traits<_CharT>,
- std::allocator<_CharT> >();
- }
-
- template<class _CharT>
- std::basic_string<_CharT, std::char_traits<_CharT>,
- std::allocator<_CharT> >
- to_string(_CharT __zero, _CharT __one = _CharT('1')) const
- {
- return to_string<_CharT, std::char_traits<_CharT>,
- std::allocator<_CharT> >(__zero, __one);
- }
-
- std::basic_string<char, std::char_traits<char>, std::allocator<char> >
- to_string() const
- {
- return to_string<char,std::char_traits<char>,std::allocator<char> >();
- }
-
- std::basic_string<char, std::char_traits<char>, std::allocator<char> >
- to_string(char __zero, char __one = '1') const
- {
- return to_string<char, std::char_traits<char>,
- std::allocator<char> >(__zero, __one);
- }
-
- using _Base::count;
- using _Base::size;
-
- bool
- operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT
- { return _M_base() == __rhs; }
-
- bool
- operator!=(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT
- { return _M_base() != __rhs; }
-
- using _Base::test;
- using _Base::all;
- using _Base::any;
- using _Base::none;
-
- bitset<_Nb>
- operator<<(size_t __pos) const _GLIBCXX_NOEXCEPT
- { return bitset<_Nb>(_M_base() << __pos); }
-
- bitset<_Nb>
- operator>>(size_t __pos) const _GLIBCXX_NOEXCEPT
- { return bitset<_Nb>(_M_base() >> __pos); }
-
- _Base&
- _M_base() _GLIBCXX_NOEXCEPT
- { return *this; }
-
- const _Base&
- _M_base() const _GLIBCXX_NOEXCEPT
- { return *this; }
- };
-
- template<size_t _Nb>
- bitset<_Nb>
- operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT
- { return bitset<_Nb>(__x) &= __y; }
-
- template<size_t _Nb>
- bitset<_Nb>
- operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT
- { return bitset<_Nb>(__x) |= __y; }
-
- template<size_t _Nb>
- bitset<_Nb>
- operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT
- { return bitset<_Nb>(__x) ^= __y; }
-
- template<typename _CharT, typename _Traits, size_t _Nb>
- std::basic_istream<_CharT, _Traits>&
- operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x)
- { return __is >> __x._M_base(); }
-
- template<typename _CharT, typename _Traits, size_t _Nb>
- std::basic_ostream<_CharT, _Traits>&
- operator<<(std::basic_ostream<_CharT, _Traits>& __os,
- const bitset<_Nb>& __x)
- { return __os << __x._M_base(); }
-
-} // namespace __debug
-
-#if __cplusplus >= 201103L
- // DR 1182.
- /// std::hash specialization for bitset.
- template<size_t _Nb>
- struct hash<__debug::bitset<_Nb>>
- : public __hash_base<size_t, __debug::bitset<_Nb>>
- {
- size_t
- operator()(const __debug::bitset<_Nb>& __b) const noexcept
- { return std::hash<_GLIBCXX_STD_C::bitset<_Nb>>()(__b._M_base()); }
- };
-#endif
-
-} // namespace std
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/debug.h b/gcc-4.8.1/libstdc++-v3/include/debug/debug.h
deleted file mode 100644
index 99af42e39..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/debug.h
+++ /dev/null
@@ -1,131 +0,0 @@
-// Debugging support implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/debug.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_MACRO_SWITCH_H
-#define _GLIBCXX_DEBUG_MACRO_SWITCH_H 1
-
-/** Macros and namespaces used by the implementation outside of debug
- * wrappers to verify certain properties. The __glibcxx_requires_xxx
- * macros are merely wrappers around the __glibcxx_check_xxx wrappers
- * when we are compiling with debug mode, but disappear when we are
- * in release mode so that there is no checking performed in, e.g.,
- * the standard library algorithms.
-*/
-
-// Debug mode namespaces.
-
-/**
- * @namespace std::__debug
- * @brief GNU debug code, replaces standard behavior with debug behavior.
- */
-namespace std
-{
- namespace __debug { }
-}
-
-/** @namespace __gnu_debug
- * @brief GNU debug classes for public use.
-*/
-namespace __gnu_debug
-{
- using namespace std::__debug;
-}
-
-#ifndef _GLIBCXX_DEBUG
-
-# define _GLIBCXX_DEBUG_ASSERT(_Condition)
-# define _GLIBCXX_DEBUG_PEDASSERT(_Condition)
-# define _GLIBCXX_DEBUG_ONLY(_Statement) ;
-# define __glibcxx_requires_cond(_Cond,_Msg)
-# define __glibcxx_requires_valid_range(_First,_Last)
-# define __glibcxx_requires_non_empty_range(_First,_Last)
-# define __glibcxx_requires_sorted(_First,_Last)
-# define __glibcxx_requires_sorted_pred(_First,_Last,_Pred)
-# define __glibcxx_requires_sorted_set(_First1,_Last1,_First2)
-# define __glibcxx_requires_sorted_set_pred(_First1,_Last1,_First2,_Pred)
-# define __glibcxx_requires_partitioned_lower(_First,_Last,_Value)
-# define __glibcxx_requires_partitioned_upper(_First,_Last,_Value)
-# define __glibcxx_requires_partitioned_lower_pred(_First,_Last,_Value,_Pred)
-# define __glibcxx_requires_partitioned_upper_pred(_First,_Last,_Value,_Pred)
-# define __glibcxx_requires_heap(_First,_Last)
-# define __glibcxx_requires_heap_pred(_First,_Last,_Pred)
-# define __glibcxx_requires_nonempty()
-# define __glibcxx_requires_string(_String)
-# define __glibcxx_requires_string_len(_String,_Len)
-# define __glibcxx_requires_subscript(_N)
-
-#else
-
-# include <debug/macros.h>
-
-#define _GLIBCXX_DEBUG_ASSERT(_Condition) __glibcxx_assert(_Condition)
-
-#ifdef _GLIBCXX_DEBUG_PEDANTIC
-# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) _GLIBCXX_DEBUG_ASSERT(_Condition)
-#else
-# define _GLIBCXX_DEBUG_PEDASSERT(_Condition)
-#endif
-
-# define _GLIBCXX_DEBUG_ONLY(_Statement) _Statement
-
-# define __glibcxx_requires_cond(_Cond,_Msg) _GLIBCXX_DEBUG_VERIFY(_Cond,_Msg)
-# define __glibcxx_requires_valid_range(_First,_Last) \
- __glibcxx_check_valid_range(_First,_Last)
-# define __glibcxx_requires_non_empty_range(_First,_Last) \
- __glibcxx_check_non_empty_range(_First,_Last)
-# define __glibcxx_requires_sorted(_First,_Last) \
- __glibcxx_check_sorted(_First,_Last)
-# define __glibcxx_requires_sorted_pred(_First,_Last,_Pred) \
- __glibcxx_check_sorted_pred(_First,_Last,_Pred)
-# define __glibcxx_requires_sorted_set(_First1,_Last1,_First2) \
- __glibcxx_check_sorted_set(_First1,_Last1,_First2)
-# define __glibcxx_requires_sorted_set_pred(_First1,_Last1,_First2,_Pred) \
- __glibcxx_check_sorted_set_pred(_First1,_Last1,_First2,_Pred)
-# define __glibcxx_requires_partitioned_lower(_First,_Last,_Value) \
- __glibcxx_check_partitioned_lower(_First,_Last,_Value)
-# define __glibcxx_requires_partitioned_upper(_First,_Last,_Value) \
- __glibcxx_check_partitioned_upper(_First,_Last,_Value)
-# define __glibcxx_requires_partitioned_lower_pred(_First,_Last,_Value,_Pred) \
- __glibcxx_check_partitioned_lower_pred(_First,_Last,_Value,_Pred)
-# define __glibcxx_requires_partitioned_upper_pred(_First,_Last,_Value,_Pred) \
- __glibcxx_check_partitioned_upper_pred(_First,_Last,_Value,_Pred)
-# define __glibcxx_requires_heap(_First,_Last) \
- __glibcxx_check_heap(_First,_Last)
-# define __glibcxx_requires_heap_pred(_First,_Last,_Pred) \
- __glibcxx_check_heap_pred(_First,_Last,_Pred)
-# define __glibcxx_requires_nonempty() __glibcxx_check_nonempty()
-# define __glibcxx_requires_string(_String) __glibcxx_check_string(_String)
-# define __glibcxx_requires_string_len(_String,_Len) \
- __glibcxx_check_string_len(_String,_Len)
-# define __glibcxx_requires_subscript(_N) __glibcxx_check_subscript(_N)
-
-# include <debug/functions.h>
-
-#endif
-
-#endif // _GLIBCXX_DEBUG_MACRO_SWITCH_H
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/deque b/gcc-4.8.1/libstdc++-v3/include/debug/deque
deleted file mode 100644
index 8442ec19b..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/deque
+++ /dev/null
@@ -1,579 +0,0 @@
-// Debugging deque implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/deque
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_DEQUE
-#define _GLIBCXX_DEBUG_DEQUE 1
-
-#include <deque>
-#include <debug/safe_sequence.h>
-#include <debug/safe_iterator.h>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-namespace __debug
-{
- /// Class std::deque with safety/checking/debug instrumentation.
- template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
- class deque
- : public _GLIBCXX_STD_C::deque<_Tp, _Allocator>,
- public __gnu_debug::_Safe_sequence<deque<_Tp, _Allocator> >
- {
- typedef _GLIBCXX_STD_C::deque<_Tp, _Allocator> _Base;
-
- typedef typename _Base::const_iterator _Base_const_iterator;
- typedef typename _Base::iterator _Base_iterator;
- typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
- public:
- typedef typename _Base::reference reference;
- typedef typename _Base::const_reference const_reference;
-
- typedef __gnu_debug::_Safe_iterator<_Base_iterator,deque>
- iterator;
- typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,deque>
- const_iterator;
-
- typedef typename _Base::size_type size_type;
- typedef typename _Base::difference_type difference_type;
-
- typedef _Tp value_type;
- typedef _Allocator allocator_type;
- typedef typename _Base::pointer pointer;
- typedef typename _Base::const_pointer const_pointer;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
- // 23.2.1.1 construct/copy/destroy:
- explicit
- deque(const _Allocator& __a = _Allocator())
- : _Base(__a) { }
-
-#if __cplusplus >= 201103L
- explicit
- deque(size_type __n)
- : _Base(__n) { }
-
- deque(size_type __n, const _Tp& __value,
- const _Allocator& __a = _Allocator())
- : _Base(__n, __value, __a) { }
-#else
- explicit
- deque(size_type __n, const _Tp& __value = _Tp(),
- const _Allocator& __a = _Allocator())
- : _Base(__n, __value, __a) { }
-#endif
-
-#if __cplusplus >= 201103L
- template<class _InputIterator,
- typename = std::_RequireInputIter<_InputIterator>>
-#else
- template<class _InputIterator>
-#endif
- deque(_InputIterator __first, _InputIterator __last,
- const _Allocator& __a = _Allocator())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
- __last)),
- __gnu_debug::__base(__last), __a)
- { }
-
- deque(const deque& __x)
- : _Base(__x) { }
-
- deque(const _Base& __x)
- : _Base(__x) { }
-
-#if __cplusplus >= 201103L
- deque(deque&& __x)
- : _Base(std::move(__x))
- { this->_M_swap(__x); }
-
- deque(initializer_list<value_type> __l,
- const allocator_type& __a = allocator_type())
- : _Base(__l, __a) { }
-#endif
-
- ~deque() _GLIBCXX_NOEXCEPT { }
-
- deque&
- operator=(const deque& __x)
- {
- *static_cast<_Base*>(this) = __x;
- this->_M_invalidate_all();
- return *this;
- }
-
-#if __cplusplus >= 201103L
- deque&
- operator=(deque&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- __glibcxx_check_self_move_assign(__x);
- clear();
- swap(__x);
- return *this;
- }
-
- deque&
- operator=(initializer_list<value_type> __l)
- {
- *static_cast<_Base*>(this) = __l;
- this->_M_invalidate_all();
- return *this;
- }
-#endif
-
-#if __cplusplus >= 201103L
- template<class _InputIterator,
- typename = std::_RequireInputIter<_InputIterator>>
-#else
- template<class _InputIterator>
-#endif
- void
- assign(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- _Base::assign(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- this->_M_invalidate_all();
- }
-
- void
- assign(size_type __n, const _Tp& __t)
- {
- _Base::assign(__n, __t);
- this->_M_invalidate_all();
- }
-
-#if __cplusplus >= 201103L
- void
- assign(initializer_list<value_type> __l)
- {
- _Base::assign(__l);
- this->_M_invalidate_all();
- }
-#endif
-
- using _Base::get_allocator;
-
- // iterators:
- iterator
- begin() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::end(), this); }
-
- reverse_iterator
- rbegin() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(end()); }
-
- const_reverse_iterator
- rbegin() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(end()); }
-
- reverse_iterator
- rend() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(begin()); }
-
- const_reverse_iterator
- rend() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(begin()); }
-
-#if __cplusplus >= 201103L
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_reverse_iterator
- crbegin() const noexcept
- { return const_reverse_iterator(end()); }
-
- const_reverse_iterator
- crend() const noexcept
- { return const_reverse_iterator(begin()); }
-#endif
-
- private:
- void
- _M_invalidate_after_nth(difference_type __n)
- {
- typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth;
- this->_M_invalidate_if(_After_nth(__n, _Base::begin()));
- }
-
- public:
- // 23.2.1.2 capacity:
- using _Base::size;
- using _Base::max_size;
-
-#if __cplusplus >= 201103L
- void
- resize(size_type __sz)
- {
- bool __invalidate_all = __sz > this->size();
- if (__sz < this->size())
- this->_M_invalidate_after_nth(__sz);
-
- _Base::resize(__sz);
-
- if (__invalidate_all)
- this->_M_invalidate_all();
- }
-
- void
- resize(size_type __sz, const _Tp& __c)
- {
- bool __invalidate_all = __sz > this->size();
- if (__sz < this->size())
- this->_M_invalidate_after_nth(__sz);
-
- _Base::resize(__sz, __c);
-
- if (__invalidate_all)
- this->_M_invalidate_all();
- }
-#else
- void
- resize(size_type __sz, _Tp __c = _Tp())
- {
- bool __invalidate_all = __sz > this->size();
- if (__sz < this->size())
- this->_M_invalidate_after_nth(__sz);
-
- _Base::resize(__sz, __c);
-
- if (__invalidate_all)
- this->_M_invalidate_all();
- }
-#endif
-
-#if __cplusplus >= 201103L
- void
- shrink_to_fit()
- {
- if (_Base::_M_shrink_to_fit())
- this->_M_invalidate_all();
- }
-#endif
-
- using _Base::empty;
-
- // element access:
- reference
- operator[](size_type __n)
- {
- __glibcxx_check_subscript(__n);
- return _M_base()[__n];
- }
-
- const_reference
- operator[](size_type __n) const
- {
- __glibcxx_check_subscript(__n);
- return _M_base()[__n];
- }
-
- using _Base::at;
-
- reference
- front()
- {
- __glibcxx_check_nonempty();
- return _Base::front();
- }
-
- const_reference
- front() const
- {
- __glibcxx_check_nonempty();
- return _Base::front();
- }
-
- reference
- back()
- {
- __glibcxx_check_nonempty();
- return _Base::back();
- }
-
- const_reference
- back() const
- {
- __glibcxx_check_nonempty();
- return _Base::back();
- }
-
- // 23.2.1.3 modifiers:
- void
- push_front(const _Tp& __x)
- {
- _Base::push_front(__x);
- this->_M_invalidate_all();
- }
-
- void
- push_back(const _Tp& __x)
- {
- _Base::push_back(__x);
- this->_M_invalidate_all();
- }
-
-#if __cplusplus >= 201103L
- void
- push_front(_Tp&& __x)
- { emplace_front(std::move(__x)); }
-
- void
- push_back(_Tp&& __x)
- { emplace_back(std::move(__x)); }
-
- template<typename... _Args>
- void
- emplace_front(_Args&&... __args)
- {
- _Base::emplace_front(std::forward<_Args>(__args)...);
- this->_M_invalidate_all();
- }
-
- template<typename... _Args>
- void
- emplace_back(_Args&&... __args)
- {
- _Base::emplace_back(std::forward<_Args>(__args)...);
- this->_M_invalidate_all();
- }
-
- template<typename... _Args>
- iterator
- emplace(iterator __position, _Args&&... __args)
- {
- __glibcxx_check_insert(__position);
- _Base_iterator __res = _Base::emplace(__position.base(),
- std::forward<_Args>(__args)...);
- this->_M_invalidate_all();
- return iterator(__res, this);
- }
-#endif
-
- iterator
- insert(iterator __position, const _Tp& __x)
- {
- __glibcxx_check_insert(__position);
- _Base_iterator __res = _Base::insert(__position.base(), __x);
- this->_M_invalidate_all();
- return iterator(__res, this);
- }
-
-#if __cplusplus >= 201103L
- iterator
- insert(iterator __position, _Tp&& __x)
- { return emplace(__position, std::move(__x)); }
-
- void
- insert(iterator __p, initializer_list<value_type> __l)
- {
- _Base::insert(__p, __l);
- this->_M_invalidate_all();
- }
-#endif
-
- void
- insert(iterator __position, size_type __n, const _Tp& __x)
- {
- __glibcxx_check_insert(__position);
- _Base::insert(__position.base(), __n, __x);
- this->_M_invalidate_all();
- }
-
-#if __cplusplus >= 201103L
- template<class _InputIterator,
- typename = std::_RequireInputIter<_InputIterator>>
-#else
- template<class _InputIterator>
-#endif
- void
- insert(iterator __position,
- _InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_insert_range(__position, __first, __last);
- _Base::insert(__position.base(), __gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- this->_M_invalidate_all();
- }
-
- void
- pop_front()
- {
- __glibcxx_check_nonempty();
- this->_M_invalidate_if(_Equal(_Base::begin()));
- _Base::pop_front();
- }
-
- void
- pop_back()
- {
- __glibcxx_check_nonempty();
- this->_M_invalidate_if(_Equal(--_Base::end()));
- _Base::pop_back();
- }
-
- iterator
- erase(iterator __position)
- {
- __glibcxx_check_erase(__position);
- _Base_iterator __victim = __position.base();
- if (__victim == _Base::begin() || __victim == _Base::end()-1)
- {
- this->_M_invalidate_if(_Equal(__victim));
- return iterator(_Base::erase(__victim), this);
- }
- else
- {
- _Base_iterator __res = _Base::erase(__victim);
- this->_M_invalidate_all();
- return iterator(__res, this);
- }
- }
-
- iterator
- erase(iterator __first, iterator __last)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 151. can't currently clear() empty container
- __glibcxx_check_erase_range(__first, __last);
-
- if (__first.base() == __last.base())
- return __first;
- else if (__first.base() == _Base::begin()
- || __last.base() == _Base::end())
- {
- this->_M_detach_singular();
- for (_Base_iterator __position = __first.base();
- __position != __last.base(); ++__position)
- {
- this->_M_invalidate_if(_Equal(__position));
- }
- __try
- {
- return iterator(_Base::erase(__first.base(), __last.base()),
- this);
- }
- __catch(...)
- {
- this->_M_revalidate_singular();
- __throw_exception_again;
- }
- }
- else
- {
- _Base_iterator __res = _Base::erase(__first.base(),
- __last.base());
- this->_M_invalidate_all();
- return iterator(__res, this);
- }
- }
-
- void
- swap(deque& __x)
- {
- _Base::swap(__x);
- this->_M_swap(__x);
- }
-
- void
- clear() _GLIBCXX_NOEXCEPT
- {
- _Base::clear();
- this->_M_invalidate_all();
- }
-
- _Base&
- _M_base() _GLIBCXX_NOEXCEPT { return *this; }
-
- const _Base&
- _M_base() const _GLIBCXX_NOEXCEPT { return *this; }
- };
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator==(const deque<_Tp, _Alloc>& __lhs,
- const deque<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() == __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator!=(const deque<_Tp, _Alloc>& __lhs,
- const deque<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() != __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator<(const deque<_Tp, _Alloc>& __lhs,
- const deque<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() < __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator<=(const deque<_Tp, _Alloc>& __lhs,
- const deque<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() <= __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator>=(const deque<_Tp, _Alloc>& __lhs,
- const deque<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() >= __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator>(const deque<_Tp, _Alloc>& __lhs,
- const deque<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() > __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline void
- swap(deque<_Tp, _Alloc>& __lhs, deque<_Tp, _Alloc>& __rhs)
- { __lhs.swap(__rhs); }
-
-} // namespace __debug
-} // namespace std
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/formatter.h b/gcc-4.8.1/libstdc++-v3/include/debug/formatter.h
deleted file mode 100644
index 4c65e1ac4..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/formatter.h
+++ /dev/null
@@ -1,462 +0,0 @@
-// Debug-mode error formatting implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/formatter.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_FORMATTER_H
-#define _GLIBCXX_DEBUG_FORMATTER_H 1
-
-#include <bits/c++config.h>
-#include <bits/cpp_type_traits.h>
-#include <typeinfo>
-
-namespace __gnu_debug
-{
- using std::type_info;
-
- template<typename _Iterator>
- bool __check_singular(_Iterator&);
-
- class _Safe_sequence_base;
-
- template<typename _Iterator, typename _Sequence>
- class _Safe_iterator;
-
- template<typename _Iterator, typename _Sequence>
- class _Safe_local_iterator;
-
- template<typename _Sequence>
- class _Safe_sequence;
-
- enum _Debug_msg_id
- {
- // General checks
- __msg_valid_range,
- __msg_insert_singular,
- __msg_insert_different,
- __msg_erase_bad,
- __msg_erase_different,
- __msg_subscript_oob,
- __msg_empty,
- __msg_unpartitioned,
- __msg_unpartitioned_pred,
- __msg_unsorted,
- __msg_unsorted_pred,
- __msg_not_heap,
- __msg_not_heap_pred,
- // std::bitset checks
- __msg_bad_bitset_write,
- __msg_bad_bitset_read,
- __msg_bad_bitset_flip,
- // std::list checks
- __msg_self_splice,
- __msg_splice_alloc,
- __msg_splice_bad,
- __msg_splice_other,
- __msg_splice_overlap,
- // iterator checks
- __msg_init_singular,
- __msg_init_copy_singular,
- __msg_init_const_singular,
- __msg_copy_singular,
- __msg_bad_deref,
- __msg_bad_inc,
- __msg_bad_dec,
- __msg_iter_subscript_oob,
- __msg_advance_oob,
- __msg_retreat_oob,
- __msg_iter_compare_bad,
- __msg_compare_different,
- __msg_iter_order_bad,
- __msg_order_different,
- __msg_distance_bad,
- __msg_distance_different,
- // istream_iterator
- __msg_deref_istream,
- __msg_inc_istream,
- // ostream_iterator
- __msg_output_ostream,
- // istreambuf_iterator
- __msg_deref_istreambuf,
- __msg_inc_istreambuf,
- // forward_list
- __msg_insert_after_end,
- __msg_erase_after_bad,
- __msg_valid_range2,
- // unordered container local iterators
- __msg_local_iter_compare_bad,
- __msg_non_empty_range,
- // self move assign
- __msg_self_move_assign,
- // unordered container buckets
- __msg_bucket_index_oob,
- __msg_valid_load_factor,
- __msg_equal_allocs
- };
-
- class _Error_formatter
- {
- /// Whether an iterator is constant, mutable, or unknown
- enum _Constness
- {
- __unknown_constness,
- __const_iterator,
- __mutable_iterator,
- __last_constness
- };
-
- // The state of the iterator (fine-grained), if we know it.
- enum _Iterator_state
- {
- __unknown_state,
- __singular, // singular, may still be attached to a sequence
- __begin, // dereferenceable, and at the beginning
- __middle, // dereferenceable, not at the beginning
- __end, // past-the-end, may be at beginning if sequence empty
- __before_begin, // before begin
- __last_state
- };
-
- // Tags denoting the type of parameter for construction
- struct _Is_iterator { };
- struct _Is_sequence { };
-
- // A parameter that may be referenced by an error message
- struct _Parameter
- {
- enum
- {
- __unused_param,
- __iterator,
- __sequence,
- __integer,
- __string
- } _M_kind;
-
- union
- {
- // When _M_kind == __iterator
- struct
- {
- const char* _M_name;
- const void* _M_address;
- const type_info* _M_type;
- _Constness _M_constness;
- _Iterator_state _M_state;
- const void* _M_sequence;
- const type_info* _M_seq_type;
- } _M_iterator;
-
- // When _M_kind == __sequence
- struct
- {
- const char* _M_name;
- const void* _M_address;
- const type_info* _M_type;
- } _M_sequence;
-
- // When _M_kind == __integer
- struct
- {
- const char* _M_name;
- long _M_value;
- } _M_integer;
-
- // When _M_kind == __string
- struct
- {
- const char* _M_name;
- const char* _M_value;
- } _M_string;
- } _M_variant;
-
- _Parameter() : _M_kind(__unused_param), _M_variant() { }
-
- _Parameter(long __value, const char* __name)
- : _M_kind(__integer), _M_variant()
- {
- _M_variant._M_integer._M_name = __name;
- _M_variant._M_integer._M_value = __value;
- }
-
- _Parameter(const char* __value, const char* __name)
- : _M_kind(__string), _M_variant()
- {
- _M_variant._M_string._M_name = __name;
- _M_variant._M_string._M_value = __value;
- }
-
- template<typename _Iterator, typename _Sequence>
- _Parameter(const _Safe_iterator<_Iterator, _Sequence>& __it,
- const char* __name, _Is_iterator)
- : _M_kind(__iterator), _M_variant()
- {
- _M_variant._M_iterator._M_name = __name;
- _M_variant._M_iterator._M_address = &__it;
-#ifdef __GXX_RTTI
- _M_variant._M_iterator._M_type = &typeid(__it);
-#else
- _M_variant._M_iterator._M_type = 0;
-#endif
- _M_variant._M_iterator._M_constness =
- std::__are_same<_Safe_iterator<_Iterator, _Sequence>,
- typename _Sequence::iterator>::
- __value ? __mutable_iterator : __const_iterator;
- _M_variant._M_iterator._M_sequence = __it._M_get_sequence();
-#ifdef __GXX_RTTI
- _M_variant._M_iterator._M_seq_type = &typeid(_Sequence);
-#else
- _M_variant._M_iterator._M_seq_type = 0;
-#endif
-
- if (__it._M_singular())
- _M_variant._M_iterator._M_state = __singular;
- else
- {
- if (__it._M_is_before_begin())
- _M_variant._M_iterator._M_state = __before_begin;
- else if (__it._M_is_end())
- _M_variant._M_iterator._M_state = __end;
- else if (__it._M_is_begin())
- _M_variant._M_iterator._M_state = __begin;
- else
- _M_variant._M_iterator._M_state = __middle;
- }
- }
-
- template<typename _Iterator, typename _Sequence>
- _Parameter(const _Safe_local_iterator<_Iterator, _Sequence>& __it,
- const char* __name, _Is_iterator)
- : _M_kind(__iterator), _M_variant()
- {
- _M_variant._M_iterator._M_name = __name;
- _M_variant._M_iterator._M_address = &__it;
-#ifdef __GXX_RTTI
- _M_variant._M_iterator._M_type = &typeid(__it);
-#else
- _M_variant._M_iterator._M_type = 0;
-#endif
- _M_variant._M_iterator._M_constness =
- std::__are_same<_Safe_local_iterator<_Iterator, _Sequence>,
- typename _Sequence::local_iterator>::
- __value ? __mutable_iterator : __const_iterator;
- _M_variant._M_iterator._M_sequence = __it._M_get_sequence();
-#ifdef __GXX_RTTI
- _M_variant._M_iterator._M_seq_type = &typeid(_Sequence);
-#else
- _M_variant._M_iterator._M_seq_type = 0;
-#endif
-
- if (__it._M_singular())
- _M_variant._M_iterator._M_state = __singular;
- else
- {
- if (__it._M_is_end())
- _M_variant._M_iterator._M_state = __end;
- else if (__it._M_is_begin())
- _M_variant._M_iterator._M_state = __begin;
- else
- _M_variant._M_iterator._M_state = __middle;
- }
- }
-
- template<typename _Type>
- _Parameter(const _Type*& __it, const char* __name, _Is_iterator)
- : _M_kind(__iterator), _M_variant()
- {
- _M_variant._M_iterator._M_name = __name;
- _M_variant._M_iterator._M_address = &__it;
-#ifdef __GXX_RTTI
- _M_variant._M_iterator._M_type = &typeid(__it);
-#else
- _M_variant._M_iterator._M_type = 0;
-#endif
- _M_variant._M_iterator._M_constness = __mutable_iterator;
- _M_variant._M_iterator._M_state = __it? __unknown_state : __singular;
- _M_variant._M_iterator._M_sequence = 0;
- _M_variant._M_iterator._M_seq_type = 0;
- }
-
- template<typename _Type>
- _Parameter(_Type*& __it, const char* __name, _Is_iterator)
- : _M_kind(__iterator), _M_variant()
- {
- _M_variant._M_iterator._M_name = __name;
- _M_variant._M_iterator._M_address = &__it;
-#ifdef __GXX_RTTI
- _M_variant._M_iterator._M_type = &typeid(__it);
-#else
- _M_variant._M_iterator._M_type = 0;
-#endif
- _M_variant._M_iterator._M_constness = __const_iterator;
- _M_variant._M_iterator._M_state = __it? __unknown_state : __singular;
- _M_variant._M_iterator._M_sequence = 0;
- _M_variant._M_iterator._M_seq_type = 0;
- }
-
- template<typename _Iterator>
- _Parameter(const _Iterator& __it, const char* __name, _Is_iterator)
- : _M_kind(__iterator), _M_variant()
- {
- _M_variant._M_iterator._M_name = __name;
- _M_variant._M_iterator._M_address = &__it;
-#ifdef __GXX_RTTI
- _M_variant._M_iterator._M_type = &typeid(__it);
-#else
- _M_variant._M_iterator._M_type = 0;
-#endif
- _M_variant._M_iterator._M_constness = __unknown_constness;
- _M_variant._M_iterator._M_state =
- __gnu_debug::__check_singular(__it)? __singular : __unknown_state;
- _M_variant._M_iterator._M_sequence = 0;
- _M_variant._M_iterator._M_seq_type = 0;
- }
-
- template<typename _Sequence>
- _Parameter(const _Safe_sequence<_Sequence>& __seq,
- const char* __name, _Is_sequence)
- : _M_kind(__sequence), _M_variant()
- {
- _M_variant._M_sequence._M_name = __name;
- _M_variant._M_sequence._M_address =
- static_cast<const _Sequence*>(&__seq);
-#ifdef __GXX_RTTI
- _M_variant._M_sequence._M_type = &typeid(_Sequence);
-#else
- _M_variant._M_sequence._M_type = 0;
-#endif
- }
-
- template<typename _Sequence>
- _Parameter(const _Sequence& __seq, const char* __name, _Is_sequence)
- : _M_kind(__sequence), _M_variant()
- {
- _M_variant._M_sequence._M_name = __name;
- _M_variant._M_sequence._M_address = &__seq;
-#ifdef __GXX_RTTI
- _M_variant._M_sequence._M_type = &typeid(_Sequence);
-#else
- _M_variant._M_sequence._M_type = 0;
-#endif
- }
-
- void
- _M_print_field(const _Error_formatter* __formatter,
- const char* __name) const;
-
- void
- _M_print_description(const _Error_formatter* __formatter) const;
- };
-
- friend struct _Parameter;
-
- public:
- template<typename _Iterator>
- const _Error_formatter&
- _M_iterator(const _Iterator& __it, const char* __name = 0) const
- {
- if (_M_num_parameters < std::size_t(__max_parameters))
- _M_parameters[_M_num_parameters++] = _Parameter(__it, __name,
- _Is_iterator());
- return *this;
- }
-
- const _Error_formatter&
- _M_integer(long __value, const char* __name = 0) const
- {
- if (_M_num_parameters < std::size_t(__max_parameters))
- _M_parameters[_M_num_parameters++] = _Parameter(__value, __name);
- return *this;
- }
-
- const _Error_formatter&
- _M_string(const char* __value, const char* __name = 0) const
- {
- if (_M_num_parameters < std::size_t(__max_parameters))
- _M_parameters[_M_num_parameters++] = _Parameter(__value, __name);
- return *this;
- }
-
- template<typename _Sequence>
- const _Error_formatter&
- _M_sequence(const _Sequence& __seq, const char* __name = 0) const
- {
- if (_M_num_parameters < std::size_t(__max_parameters))
- _M_parameters[_M_num_parameters++] = _Parameter(__seq, __name,
- _Is_sequence());
- return *this;
- }
-
- const _Error_formatter&
- _M_message(const char* __text) const
- { _M_text = __text; return *this; }
-
- const _Error_formatter&
- _M_message(_Debug_msg_id __id) const throw ();
-
- _GLIBCXX_NORETURN void
- _M_error() const;
-
- private:
- _Error_formatter(const char* __file, std::size_t __line)
- : _M_file(__file), _M_line(__line), _M_num_parameters(0), _M_text(0),
- _M_max_length(78), _M_column(1), _M_first_line(true), _M_wordwrap(false)
- { _M_get_max_length(); }
-
- template<typename _Tp>
- void
- _M_format_word(char*, int, const char*, _Tp) const throw ();
-
- void
- _M_print_word(const char* __word) const;
-
- void
- _M_print_string(const char* __string) const;
-
- void
- _M_get_max_length() const throw ();
-
- enum { __max_parameters = 9 };
-
- const char* _M_file;
- std::size_t _M_line;
- mutable _Parameter _M_parameters[__max_parameters];
- mutable std::size_t _M_num_parameters;
- mutable const char* _M_text;
- mutable std::size_t _M_max_length;
- enum { _M_indent = 4 } ;
- mutable std::size_t _M_column;
- mutable bool _M_first_line;
- mutable bool _M_wordwrap;
-
- public:
- static _Error_formatter
- _M_at(const char* __file, std::size_t __line)
- { return _Error_formatter(__file, __line); }
- };
-} // namespace __gnu_debug
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/forward_list b/gcc-4.8.1/libstdc++-v3/include/debug/forward_list
deleted file mode 100644
index 90a2e9c3e..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/forward_list
+++ /dev/null
@@ -1,801 +0,0 @@
-// <forward_list> -*- C++ -*-
-
-// Copyright (C) 2010-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/forward_list
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_FORWARD_LIST
-#define _GLIBCXX_DEBUG_FORWARD_LIST 1
-
-#pragma GCC system_header
-
-#include <forward_list>
-#include <debug/safe_sequence.h>
-#include <debug/safe_iterator.h>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-namespace __debug
-{
- /// Class std::forward_list with safety/checking/debug instrumentation.
- template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
- class forward_list
- : public _GLIBCXX_STD_C::forward_list<_Tp, _Alloc>,
- public __gnu_debug::_Safe_sequence<forward_list<_Tp, _Alloc> >
- {
- typedef _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> _Base;
-
- typedef typename _Base::iterator _Base_iterator;
- typedef typename _Base::const_iterator _Base_const_iterator;
-
- typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
- rebind<_GLIBCXX_STD_C::_Fwd_list_node<_Tp>>::other _Node_alloc_type;
-
- typedef __gnu_cxx::__alloc_traits<_Node_alloc_type> _Node_alloc_traits;
-
- public:
- typedef typename _Base::reference reference;
- typedef typename _Base::const_reference const_reference;
-
- typedef __gnu_debug::_Safe_iterator<_Base_iterator,
- forward_list> iterator;
- typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
- forward_list> const_iterator;
-
- typedef typename _Base::size_type size_type;
- typedef typename _Base::difference_type difference_type;
-
- typedef _Tp value_type;
- typedef _Alloc allocator_type;
- typedef typename _Base::pointer pointer;
- typedef typename _Base::const_pointer const_pointer;
-
- // 23.2.3.1 construct/copy/destroy:
- explicit
- forward_list(const _Alloc& __al = _Alloc())
- : _Base(__al) { }
-
- forward_list(const forward_list& __list, const _Alloc& __al)
- : _Base(__list, __al)
- { }
-
- forward_list(forward_list&& __list, const _Alloc& __al)
- : _Base(std::move(__list._M_base()), __al)
- {
- if (__list.get_allocator() == __al)
- this->_M_swap(__list);
- else
- __list._M_invalidate_all();
- }
-
- explicit
- forward_list(size_type __n, const _Alloc& __al = _Alloc())
- : _Base(__n, __al)
- { }
-
- forward_list(size_type __n, const _Tp& __value,
- const _Alloc& __al = _Alloc())
- : _Base(__n, __value, __al)
- { }
-
- template<typename _InputIterator,
- typename = std::_RequireInputIter<_InputIterator>>
- forward_list(_InputIterator __first, _InputIterator __last,
- const _Alloc& __al = _Alloc())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
- __last)),
- __gnu_debug::__base(__last), __al)
- { }
-
- forward_list(const forward_list& __list)
- : _Base(__list)
- { }
-
- forward_list(forward_list&& __list) noexcept
- : _Base(std::move(__list._M_base()))
- {
- this->_M_swap(__list);
- }
-
- forward_list(std::initializer_list<_Tp> __il,
- const _Alloc& __al = _Alloc())
- : _Base(__il, __al)
- { }
-
- ~forward_list() noexcept
- { }
-
- forward_list&
- operator=(const forward_list& __list)
- {
- static_cast<_Base&>(*this) = __list;
- this->_M_invalidate_all();
- return *this;
- }
-
- forward_list&
- operator=(forward_list&& __list)
- noexcept(_Node_alloc_traits::_S_nothrow_move())
- {
- __glibcxx_check_self_move_assign(__list);
- bool xfer_memory = _Node_alloc_traits::_S_propagate_on_move_assign()
- || __list.get_allocator() == this->get_allocator();
- static_cast<_Base&>(*this) = std::move(__list);
- if (xfer_memory)
- this->_M_swap(__list);
- else
- this->_M_invalidate_all();
- __list._M_invalidate_all();
- return *this;
- }
-
- forward_list&
- operator=(std::initializer_list<_Tp> __il)
- {
- static_cast<_Base&>(*this) = __il;
- this->_M_invalidate_all();
- return *this;
- }
-
- template<typename _InputIterator,
- typename = std::_RequireInputIter<_InputIterator>>
- void
- assign(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- _Base::assign(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- this->_M_invalidate_all();
- }
-
- void
- assign(size_type __n, const _Tp& __val)
- {
- _Base::assign(__n, __val);
- this->_M_invalidate_all();
- }
-
- void
- assign(std::initializer_list<_Tp> __il)
- {
- _Base::assign(__il);
- this->_M_invalidate_all();
- }
-
- using _Base::get_allocator;
-
- // iterators:
-
- iterator
- before_begin() noexcept
- { return iterator(_Base::before_begin(), this); }
-
- const_iterator
- before_begin() const noexcept
- { return const_iterator(_Base::before_begin(), this); }
-
- iterator
- begin() noexcept
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() noexcept
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::cbegin(), this); }
-
- const_iterator
- cbefore_begin() const noexcept
- { return const_iterator(_Base::cbefore_begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::cend(), this); }
-
- using _Base::empty;
- using _Base::max_size;
-
- // element access:
-
- reference
- front()
- {
- __glibcxx_check_nonempty();
- return _Base::front();
- }
-
- const_reference
- front() const
- {
- __glibcxx_check_nonempty();
- return _Base::front();
- }
-
- // modifiers:
-
- using _Base::emplace_front;
- using _Base::push_front;
-
- void
- pop_front()
- {
- __glibcxx_check_nonempty();
- this->_M_invalidate_if([this](_Base_const_iterator __it)
- { return __it == this->_M_base().cbegin(); });
- _Base::pop_front();
- }
-
- template<typename... _Args>
- iterator
- emplace_after(const_iterator __pos, _Args&&... __args)
- {
- __glibcxx_check_insert_after(__pos);
- return iterator(_Base::emplace_after(__pos.base(),
- std::forward<_Args>(__args)...),
- this);
- }
-
- iterator
- insert_after(const_iterator __pos, const _Tp& __val)
- {
- __glibcxx_check_insert_after(__pos);
- return iterator(_Base::insert_after(__pos.base(), __val), this);
- }
-
- iterator
- insert_after(const_iterator __pos, _Tp&& __val)
- {
- __glibcxx_check_insert_after(__pos);
- return iterator(_Base::insert_after(__pos.base(), std::move(__val)),
- this);
- }
-
- iterator
- insert_after(const_iterator __pos, size_type __n, const _Tp& __val)
- {
- __glibcxx_check_insert_after(__pos);
- return iterator(_Base::insert_after(__pos.base(), __n, __val),
- this);
- }
-
- template<typename _InputIterator,
- typename = std::_RequireInputIter<_InputIterator>>
- iterator
- insert_after(const_iterator __pos,
- _InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_insert_range_after(__pos, __first, __last);
- return iterator(_Base::insert_after(__pos.base(),
- __gnu_debug::__base(__first),
- __gnu_debug::__base(__last)),
- this);
- }
-
- iterator
- insert_after(const_iterator __pos, std::initializer_list<_Tp> __il)
- {
- __glibcxx_check_insert_after(__pos);
- return iterator(_Base::insert_after(__pos.base(), __il), this);
- }
-
- private:
- _Base_iterator
- _M_erase_after(_Base_const_iterator __pos)
- {
- _Base_const_iterator __next = std::next(__pos);
- this->_M_invalidate_if([__next](_Base_const_iterator __it)
- { return __it == __next; });
- return _Base::erase_after(__pos);
- }
- public:
- iterator
- erase_after(const_iterator __pos)
- {
- __glibcxx_check_erase_after(__pos);
- return iterator(_M_erase_after(__pos.base()), this);
- }
-
- iterator
- erase_after(const_iterator __pos, const_iterator __last)
- {
- __glibcxx_check_erase_range_after(__pos, __last);
- for (_Base_const_iterator __victim = std::next(__pos.base());
- __victim != __last.base(); ++__victim)
- {
- _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range2)
- ._M_sequence(*this, "this")
- ._M_iterator(__pos, "pos")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if([__victim](_Base_const_iterator __it)
- { return __it == __victim; });
- }
- return iterator(_Base::erase_after(__pos.base(), __last.base()), this);
- }
-
- void
- swap(forward_list& __list)
- noexcept(_Node_alloc_traits::_S_nothrow_swap())
- {
- if (!_Node_alloc_traits::_S_propagate_on_swap())
- __glibcxx_check_equal_allocs(__list);
- _Base::swap(__list);
- this->_M_swap(__list);
- }
-
- void
- resize(size_type __sz)
- {
- this->_M_detach_singular();
-
- // if __sz < size(), invalidate all iterators in [begin+__sz, end()
- _Base_iterator __victim = _Base::begin();
- _Base_iterator __end = _Base::end();
- for (size_type __i = __sz; __victim != __end && __i > 0; --__i)
- ++__victim;
-
- for (; __victim != __end; ++__victim)
- {
- this->_M_invalidate_if([__victim](_Base_const_iterator __it)
- { return __it == __victim; });
- }
-
- __try
- {
- _Base::resize(__sz);
- }
- __catch(...)
- {
- this->_M_revalidate_singular();
- __throw_exception_again;
- }
- }
-
- void
- resize(size_type __sz, const value_type& __val)
- {
- this->_M_detach_singular();
-
- // if __sz < size(), invalidate all iterators in [begin+__sz, end())
- _Base_iterator __victim = _Base::begin();
- _Base_iterator __end = _Base::end();
- for (size_type __i = __sz; __victim != __end && __i > 0; --__i)
- ++__victim;
-
- for (; __victim != __end; ++__victim)
- {
- this->_M_invalidate_if([__victim](_Base_const_iterator __it)
- { return __it == __victim; });
- }
-
- __try
- {
- _Base::resize(__sz, __val);
- }
- __catch(...)
- {
- this->_M_revalidate_singular();
- __throw_exception_again;
- }
- }
-
- void
- clear() noexcept
- {
- _Base::clear();
- this->_M_invalidate_all();
- }
-
- // 23.2.3.5 forward_list operations:
- void
- splice_after(const_iterator __pos, forward_list&& __list)
- {
- __glibcxx_check_insert_after(__pos);
- _GLIBCXX_DEBUG_VERIFY(&__list != this,
- _M_message(__gnu_debug::__msg_self_splice)
- ._M_sequence(*this, "this"));
- _GLIBCXX_DEBUG_VERIFY(__list.get_allocator() == this->get_allocator(),
- _M_message(__gnu_debug::__msg_splice_alloc)
- ._M_sequence(*this)
- ._M_sequence(__list, "__list"));
- this->_M_transfer_from_if(__list, [&__list](_Base_const_iterator __it)
- {
- return __it != __list._M_base().cbefore_begin()
- && __it != __list._M_base().end();
- });
- _Base::splice_after(__pos.base(), std::move(__list._M_base()));
- }
-
- void
- splice_after(const_iterator __pos, forward_list& __list)
- { splice_after(__pos, std::move(__list)); }
-
- void
- splice_after(const_iterator __pos, forward_list&& __list,
- const_iterator __i)
- {
- __glibcxx_check_insert_after(__pos);
- _GLIBCXX_DEBUG_VERIFY(__i._M_before_dereferenceable(),
- _M_message(__gnu_debug::__msg_splice_bad)
- ._M_iterator(__i, "__i"));
- _GLIBCXX_DEBUG_VERIFY(__i._M_attached_to(&__list),
- _M_message(__gnu_debug::__msg_splice_other)
- ._M_iterator(__i, "__i")
- ._M_sequence(__list, "__list"));
- _GLIBCXX_DEBUG_VERIFY(__list.get_allocator() == this->get_allocator(),
- _M_message(__gnu_debug::__msg_splice_alloc)
- ._M_sequence(*this)
- ._M_sequence(__list, "__list"));
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 250. splicing invalidates iterators
- _Base_const_iterator __next = std::next(__i.base());
- this->_M_transfer_from_if(__list, [__next](_Base_const_iterator __it)
- { return __it == __next; });
- _Base::splice_after(__pos.base(), std::move(__list._M_base()),
- __i.base());
- }
-
- void
- splice_after(const_iterator __pos, forward_list& __list,
- const_iterator __i)
- { splice_after(__pos, std::move(__list), __i); }
-
- void
- splice_after(const_iterator __pos, forward_list&& __list,
- const_iterator __before, const_iterator __last)
- {
- __glibcxx_check_insert_after(__pos);
- __glibcxx_check_valid_range(__before, __last);
- _GLIBCXX_DEBUG_VERIFY(__before._M_attached_to(&__list),
- _M_message(__gnu_debug::__msg_splice_other)
- ._M_sequence(__list, "list")
- ._M_iterator(__before, "before"));
- _GLIBCXX_DEBUG_VERIFY(__before._M_dereferenceable()
- || __before._M_is_before_begin(),
- _M_message(__gnu_debug::__msg_valid_range2)
- ._M_sequence(__list, "list")
- ._M_iterator(__before, "before")
- ._M_iterator(__last, "last"));
- _GLIBCXX_DEBUG_VERIFY(__before != __last,
- _M_message(__gnu_debug::__msg_valid_range2)
- ._M_sequence(__list, "list")
- ._M_iterator(__before, "before")
- ._M_iterator(__last, "last"));
- _GLIBCXX_DEBUG_VERIFY(__list.get_allocator() == this->get_allocator(),
- _M_message(__gnu_debug::__msg_splice_alloc)
- ._M_sequence(*this)
- ._M_sequence(__list, "__list"));
-
- for (_Base_const_iterator __tmp = std::next(__before.base());
- __tmp != __last.base(); ++__tmp)
- {
- _GLIBCXX_DEBUG_VERIFY(__tmp != __list._M_base().end(),
- _M_message(__gnu_debug::__msg_valid_range2)
- ._M_sequence(__list, "list")
- ._M_iterator(__before, "before")
- ._M_iterator(__last, "last"));
- _GLIBCXX_DEBUG_VERIFY(&__list != this || __tmp != __pos.base(),
- _M_message(__gnu_debug::__msg_splice_overlap)
- ._M_iterator(__tmp, "position")
- ._M_iterator(__before, "before")
- ._M_iterator(__last, "last"));
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 250. splicing invalidates iterators
- this->_M_transfer_from_if(__list, [__tmp](_Base_const_iterator __it)
- { return __it == __tmp; });
- }
-
- _Base::splice_after(__pos.base(), std::move(__list._M_base()),
- __before.base(), __last.base());
- }
-
- void
- splice_after(const_iterator __pos, forward_list& __list,
- const_iterator __before, const_iterator __last)
- { splice_after(__pos, std::move(__list), __before, __last); }
-
- void
- remove(const _Tp& __val)
- {
- _Base_iterator __x = _Base::before_begin();
- _Base_iterator __old = __x++;
- while (__x != _Base::end())
- {
- if (*__x == __val)
- __x = _M_erase_after(__old);
- else
- __old = __x++;
- }
- }
-
- template<typename _Pred>
- void
- remove_if(_Pred __pred)
- {
- _Base_iterator __x = _Base::before_begin();
- _Base_iterator __old = __x++;
- while (__x != _Base::end())
- {
- if (__pred(*__x))
- __x = _M_erase_after(__old);
- else
- __old = __x++;
- }
- }
-
- void
- unique()
- {
- _Base_iterator __first = _Base::begin();
- _Base_iterator __last = _Base::end();
- if (__first == __last)
- return;
- _Base_iterator __next = std::next(__first);
- while (__next != __last)
- {
- if (*__first == *__next)
- __next = _M_erase_after(__first);
- else
- __first = __next++;
- }
- }
-
- template<typename _BinPred>
- void
- unique(_BinPred __binary_pred)
- {
- _Base_iterator __first = _Base::begin();
- _Base_iterator __last = _Base::end();
- if (__first == __last)
- return;
- _Base_iterator __next = std::next(__first);
- while (__next != __last)
- {
- if (__binary_pred(*__first, *__next))
- __next = _M_erase_after(__first);
- else
- __first = __next++;
- }
- }
-
- void
- merge(forward_list&& __list)
- {
- if (this != &__list)
- {
- __glibcxx_check_sorted(_Base::begin(), _Base::end());
- __glibcxx_check_sorted(__list._M_base().begin(),
- __list._M_base().end());
- this->_M_transfer_from_if(__list, [&__list](_Base_const_iterator __it)
- {
- return __it != __list._M_base().cbefore_begin()
- && __it != __list._M_base().cend();
- });
- _Base::merge(std::move(__list._M_base()));
- }
- }
-
- void
- merge(forward_list& __list)
- { merge(std::move(__list)); }
-
- template<typename _Comp>
- void
- merge(forward_list&& __list, _Comp __comp)
- {
- if (this != &__list)
- {
- __glibcxx_check_sorted_pred(_Base::begin(), _Base::end(), __comp);
- __glibcxx_check_sorted_pred(__list._M_base().begin(),
- __list._M_base().end(), __comp);
- this->_M_transfer_from_if(__list,
- [&__list](_Base_const_iterator __it)
- {
- return __it != __list._M_base().cbefore_begin()
- && __it != __list._M_base().cend();
- });
- _Base::merge(std::move(__list._M_base()), __comp);
- }
- }
-
- template<typename _Comp>
- void
- merge(forward_list& __list, _Comp __comp)
- { merge(std::move(__list), __comp); }
-
- using _Base::sort;
- using _Base::reverse;
-
- _Base&
- _M_base() noexcept { return *this; }
-
- const _Base&
- _M_base() const noexcept { return *this; }
-
- private:
- void
- _M_invalidate_all()
- {
- this->_M_invalidate_if([this](_Base_const_iterator __it)
- {
- return __it != this->_M_base().cbefore_begin()
- && __it != this->_M_base().cend();
- });
- }
- typedef __gnu_debug::_Safe_iterator_base _Safe_iterator_base;
- static void
- _M_swap_aux(forward_list& __lhs,
- _Safe_iterator_base*& __lhs_iterators,
- forward_list& __rhs,
- _Safe_iterator_base*& __rhs_iterators);
- void _M_swap(forward_list& __list);
- };
-
- template<typename _Tp, typename _Alloc>
- void
- forward_list<_Tp, _Alloc>::
- _M_swap_aux(forward_list<_Tp, _Alloc>& __lhs,
- __gnu_debug::_Safe_iterator_base*& __lhs_iterators,
- forward_list<_Tp, _Alloc>& __rhs,
- __gnu_debug::_Safe_iterator_base*& __rhs_iterators)
- {
- using __gnu_debug::_Safe_iterator_base;
- _Safe_iterator_base* __bbegin_its = 0;
- _Safe_iterator_base* __last_bbegin = 0;
- for (_Safe_iterator_base* __iter = __lhs_iterators; __iter;)
- {
- // Even iterator are casted to const_iterator, not a problem.
- const_iterator* __victim = static_cast<const_iterator*>(__iter);
- __iter = __iter->_M_next;
- if (__victim->base() == __rhs._M_base().cbefore_begin())
- {
- __victim->_M_unlink();
- if (__lhs_iterators == __victim)
- __lhs_iterators = __victim->_M_next;
- if (__bbegin_its)
- {
- __victim->_M_next = __bbegin_its;
- __bbegin_its->_M_prior = __victim;
- }
- else
- __last_bbegin = __victim;
- __bbegin_its = __victim;
- }
- else
- __victim->_M_sequence = &__lhs;
- }
-
- if (__bbegin_its)
- {
- if (__rhs_iterators)
- {
- __rhs_iterators->_M_prior = __last_bbegin;
- __last_bbegin->_M_next = __rhs_iterators;
- }
- __rhs_iterators = __bbegin_its;
- }
- }
-
- /* Special forward_list _M_swap version that do not swap the
- * before-begin ownership.*/
- template<typename _Tp, typename _Alloc>
- void
- forward_list<_Tp, _Alloc>::
- _M_swap(forward_list<_Tp, _Alloc>& __list)
- {
- __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex());
- std::swap(this->_M_iterators, __list._M_iterators);
- std::swap(this->_M_const_iterators, __list._M_const_iterators);
- // Useless, always 1 on forward_list
- //std::swap(this->_M_version, __list._M_version);
- _Safe_iterator_base* __this_its = this->_M_iterators;
- _M_swap_aux(__list, __list._M_iterators, *this, this->_M_iterators);
- _Safe_iterator_base* __this_const_its = this->_M_const_iterators;
- _M_swap_aux(__list, __list._M_const_iterators, *this,
- this->_M_const_iterators);
- _M_swap_aux(*this, __this_its, __list, __list._M_iterators);
- _M_swap_aux(*this, __this_const_its, __list, __list._M_const_iterators);
- }
-
- template<typename _Tp, typename _Alloc>
- bool
- operator==(const forward_list<_Tp, _Alloc>& __lx,
- const forward_list<_Tp, _Alloc>& __ly)
- { return __lx._M_base() == __ly._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator<(const forward_list<_Tp, _Alloc>& __lx,
- const forward_list<_Tp, _Alloc>& __ly)
- { return __lx._M_base() < __ly._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator!=(const forward_list<_Tp, _Alloc>& __lx,
- const forward_list<_Tp, _Alloc>& __ly)
- { return !(__lx == __ly); }
-
- /// Based on operator<
- template<typename _Tp, typename _Alloc>
- inline bool
- operator>(const forward_list<_Tp, _Alloc>& __lx,
- const forward_list<_Tp, _Alloc>& __ly)
- { return (__ly < __lx); }
-
- /// Based on operator<
- template<typename _Tp, typename _Alloc>
- inline bool
- operator>=(const forward_list<_Tp, _Alloc>& __lx,
- const forward_list<_Tp, _Alloc>& __ly)
- { return !(__lx < __ly); }
-
- /// Based on operator<
- template<typename _Tp, typename _Alloc>
- inline bool
- operator<=(const forward_list<_Tp, _Alloc>& __lx,
- const forward_list<_Tp, _Alloc>& __ly)
- { return !(__ly < __lx); }
-
- /// See std::forward_list::swap().
- template<typename _Tp, typename _Alloc>
- inline void
- swap(forward_list<_Tp, _Alloc>& __lx,
- forward_list<_Tp, _Alloc>& __ly)
- { __lx.swap(__ly); }
-
-} // namespace __debug
-} // namespace std
-
-namespace __gnu_debug
-{
- template<class _Tp, class _Alloc>
- struct _BeforeBeginHelper<std::__debug::forward_list<_Tp, _Alloc> >
- {
- typedef std::__debug::forward_list<_Tp, _Alloc> _Sequence;
- typedef typename _Sequence::const_iterator _It;
- typedef typename _It::iterator_type _BaseIt;
-
- static bool
- _S_Is(_BaseIt __it, const _Sequence* __seq)
- { return __it == __seq->_M_base().cbefore_begin(); }
-
- static bool
- _S_Is_Beginnest(_BaseIt __it, const _Sequence* __seq)
- { return _S_Is(__it, __seq); }
- };
-}
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/functions.h b/gcc-4.8.1/libstdc++-v3/include/debug/functions.h
deleted file mode 100644
index 3f1609818..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/functions.h
+++ /dev/null
@@ -1,550 +0,0 @@
-// Debugging support implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/functions.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_FUNCTIONS_H
-#define _GLIBCXX_DEBUG_FUNCTIONS_H 1
-
-#include <bits/c++config.h>
-#include <bits/stl_iterator_base_types.h> // for iterator_traits, categories and
- // _Iter_base
-#include <bits/cpp_type_traits.h> // for __is_integer
-#include <debug/formatter.h>
-
-namespace __gnu_debug
-{
- template<typename _Iterator, typename _Sequence>
- class _Safe_iterator;
-
- // An arbitrary iterator pointer is not singular.
- inline bool
- __check_singular_aux(const void*) { return false; }
-
- // We may have an iterator that derives from _Safe_iterator_base but isn't
- // a _Safe_iterator.
- template<typename _Iterator>
- inline bool
- __check_singular(_Iterator& __x)
- { return __check_singular_aux(&__x); }
-
- /** Non-NULL pointers are nonsingular. */
- template<typename _Tp>
- inline bool
- __check_singular(const _Tp* __ptr)
- { return __ptr == 0; }
-
- /** Safe iterators know if they are singular. */
- template<typename _Iterator, typename _Sequence>
- inline bool
- __check_singular(const _Safe_iterator<_Iterator, _Sequence>& __x)
- { return __x._M_singular(); }
-
- /** Assume that some arbitrary iterator is dereferenceable, because we
- can't prove that it isn't. */
- template<typename _Iterator>
- inline bool
- __check_dereferenceable(_Iterator&)
- { return true; }
-
- /** Non-NULL pointers are dereferenceable. */
- template<typename _Tp>
- inline bool
- __check_dereferenceable(const _Tp* __ptr)
- { return __ptr; }
-
- /** Safe iterators know if they are singular. */
- template<typename _Iterator, typename _Sequence>
- inline bool
- __check_dereferenceable(const _Safe_iterator<_Iterator, _Sequence>& __x)
- { return __x._M_dereferenceable(); }
-
- /** If the distance between two random access iterators is
- * nonnegative, assume the range is valid.
- */
- template<typename _RandomAccessIterator>
- inline bool
- __valid_range_aux2(const _RandomAccessIterator& __first,
- const _RandomAccessIterator& __last,
- std::random_access_iterator_tag)
- { return __last - __first >= 0; }
-
- /** Can't test for a valid range with input iterators, because
- * iteration may be destructive. So we just assume that the range
- * is valid.
- */
- template<typename _InputIterator>
- inline bool
- __valid_range_aux2(const _InputIterator&, const _InputIterator&,
- std::input_iterator_tag)
- { return true; }
-
- /** We say that integral types for a valid range, and defer to other
- * routines to realize what to do with integral types instead of
- * iterators.
- */
- template<typename _Integral>
- inline bool
- __valid_range_aux(const _Integral&, const _Integral&, std::__true_type)
- { return true; }
-
- /** We have iterators, so figure out what kind of iterators that are
- * to see if we can check the range ahead of time.
- */
- template<typename _InputIterator>
- inline bool
- __valid_range_aux(const _InputIterator& __first,
- const _InputIterator& __last, std::__false_type)
- { return __valid_range_aux2(__first, __last,
- std::__iterator_category(__first)); }
-
- /** Don't know what these iterators are, or if they are even
- * iterators (we may get an integral type for InputIterator), so
- * see if they are integral and pass them on to the next phase
- * otherwise.
- */
- template<typename _InputIterator>
- inline bool
- __valid_range(const _InputIterator& __first, const _InputIterator& __last)
- {
- typedef typename std::__is_integer<_InputIterator>::__type _Integral;
- return __valid_range_aux(__first, __last, _Integral());
- }
-
- /** Safe iterators know how to check if they form a valid range. */
- template<typename _Iterator, typename _Sequence>
- inline bool
- __valid_range(const _Safe_iterator<_Iterator, _Sequence>& __first,
- const _Safe_iterator<_Iterator, _Sequence>& __last)
- { return __first._M_valid_range(__last); }
-
- /** Safe local iterators know how to check if they form a valid range. */
- template<typename _Iterator, typename _Sequence>
- inline bool
- __valid_range(const _Safe_local_iterator<_Iterator, _Sequence>& __first,
- const _Safe_local_iterator<_Iterator, _Sequence>& __last)
- { return __first._M_valid_range(__last); }
-
- /* Checks that [first, last) is a valid range, and then returns
- * __first. This routine is useful when we can't use a separate
- * assertion statement because, e.g., we are in a constructor.
- */
- template<typename _InputIterator>
- inline _InputIterator
- __check_valid_range(const _InputIterator& __first,
- const _InputIterator& __last
- __attribute__((__unused__)))
- {
- __glibcxx_check_valid_range(__first, __last);
- return __first;
- }
-
- /** Checks that __s is non-NULL or __n == 0, and then returns __s. */
- template<typename _CharT, typename _Integer>
- inline const _CharT*
- __check_string(const _CharT* __s,
- const _Integer& __n __attribute__((__unused__)))
- {
-#ifdef _GLIBCXX_DEBUG_PEDANTIC
- __glibcxx_assert(__s != 0 || __n == 0);
-#endif
- return __s;
- }
-
- /** Checks that __s is non-NULL and then returns __s. */
- template<typename _CharT>
- inline const _CharT*
- __check_string(const _CharT* __s)
- {
-#ifdef _GLIBCXX_DEBUG_PEDANTIC
- __glibcxx_assert(__s != 0);
-#endif
- return __s;
- }
-
- // Can't check if an input iterator sequence is sorted, because we
- // can't step through the sequence.
- template<typename _InputIterator>
- inline bool
- __check_sorted_aux(const _InputIterator&, const _InputIterator&,
- std::input_iterator_tag)
- { return true; }
-
- // Can verify if a forward iterator sequence is in fact sorted using
- // std::__is_sorted
- template<typename _ForwardIterator>
- inline bool
- __check_sorted_aux(_ForwardIterator __first, _ForwardIterator __last,
- std::forward_iterator_tag)
- {
- if (__first == __last)
- return true;
-
- _ForwardIterator __next = __first;
- for (++__next; __next != __last; __first = __next, ++__next)
- if (*__next < *__first)
- return false;
-
- return true;
- }
-
- // 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>
- inline bool
- __check_sorted_aux(const _Safe_iterator<_Iterator, _Sequence>& __first,
- const _Safe_iterator<_Iterator, _Sequence>& __last,
- std::random_access_iterator_tag __tag)
- { return __check_sorted_aux(__first.base(), __last.base(), __tag); }
-
- // Can't check if an input iterator sequence is sorted, because we can't step
- // through the sequence.
- template<typename _InputIterator, typename _Predicate>
- inline bool
- __check_sorted_aux(const _InputIterator&, const _InputIterator&,
- _Predicate, std::input_iterator_tag)
- { return true; }
-
- // Can verify if a forward iterator sequence is in fact sorted using
- // std::__is_sorted
- template<typename _ForwardIterator, typename _Predicate>
- inline bool
- __check_sorted_aux(_ForwardIterator __first, _ForwardIterator __last,
- _Predicate __pred, std::forward_iterator_tag)
- {
- if (__first == __last)
- return true;
-
- _ForwardIterator __next = __first;
- for (++__next; __next != __last; __first = __next, ++__next)
- if (__pred(*__next, *__first))
- return false;
-
- return true;
- }
-
- // 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 _Predicate>
- inline bool
- __check_sorted_aux(const _Safe_iterator<_Iterator, _Sequence>& __first,
- const _Safe_iterator<_Iterator, _Sequence>& __last,
- _Predicate __pred,
- std::random_access_iterator_tag __tag)
- { return __check_sorted_aux(__first.base(), __last.base(), __pred, __tag); }
-
- // Determine if a sequence is sorted.
- template<typename _InputIterator>
- inline bool
- __check_sorted(const _InputIterator& __first, const _InputIterator& __last)
- {
- // Verify that the < operator for elements in the sequence is a
- // StrictWeakOrdering by checking that it is irreflexive.
- __glibcxx_assert(__first == __last || !(*__first < *__first));
-
- return __check_sorted_aux(__first, __last,
- std::__iterator_category(__first));
- }
-
- template<typename _InputIterator, typename _Predicate>
- inline bool
- __check_sorted(const _InputIterator& __first, const _InputIterator& __last,
- _Predicate __pred)
- {
- // Verify that the predicate is StrictWeakOrdering by checking that it
- // is irreflexive.
- __glibcxx_assert(__first == __last || !__pred(*__first, *__first));
-
- return __check_sorted_aux(__first, __last, __pred,
- std::__iterator_category(__first));
- }
-
- template<typename _InputIterator>
- inline bool
- __check_sorted_set_aux(const _InputIterator& __first,
- const _InputIterator& __last,
- std::__true_type)
- { return __check_sorted(__first, __last); }
-
- template<typename _InputIterator>
- inline bool
- __check_sorted_set_aux(const _InputIterator&,
- const _InputIterator&,
- std::__false_type)
- { return true; }
-
- template<typename _InputIterator, typename _Predicate>
- inline bool
- __check_sorted_set_aux(const _InputIterator& __first,
- const _InputIterator& __last,
- _Predicate __pred, std::__true_type)
- { return __check_sorted(__first, __last, __pred); }
-
- template<typename _InputIterator, typename _Predicate>
- inline bool
- __check_sorted_set_aux(const _InputIterator&,
- const _InputIterator&, _Predicate,
- std::__false_type)
- { return true; }
-
- // ... special variant used in std::merge, std::includes, std::set_*.
- template<typename _InputIterator1, typename _InputIterator2>
- inline bool
- __check_sorted_set(const _InputIterator1& __first,
- const _InputIterator1& __last,
- const _InputIterator2&)
- {
- typedef typename std::iterator_traits<_InputIterator1>::value_type
- _ValueType1;
- typedef typename std::iterator_traits<_InputIterator2>::value_type
- _ValueType2;
-
- typedef typename std::__are_same<_ValueType1, _ValueType2>::__type
- _SameType;
- return __check_sorted_set_aux(__first, __last, _SameType());
- }
-
- template<typename _InputIterator1, typename _InputIterator2,
- typename _Predicate>
- inline bool
- __check_sorted_set(const _InputIterator1& __first,
- const _InputIterator1& __last,
- const _InputIterator2&, _Predicate __pred)
- {
- typedef typename std::iterator_traits<_InputIterator1>::value_type
- _ValueType1;
- typedef typename std::iterator_traits<_InputIterator2>::value_type
- _ValueType2;
-
- typedef typename std::__are_same<_ValueType1, _ValueType2>::__type
- _SameType;
- return __check_sorted_set_aux(__first, __last, __pred, _SameType());
- }
-
- template<typename _ForwardIterator, typename _Tp>
- inline bool
- __check_partitioned_lower_aux(_ForwardIterator __first,
- _ForwardIterator __last, const _Tp& __value,
- std::forward_iterator_tag)
- {
- while (__first != __last && *__first < __value)
- ++__first;
- if (__first != __last)
- {
- ++__first;
- while (__first != __last && !(*__first < __value))
- ++__first;
- }
- 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,
- _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;
- if (__first != __last)
- {
- ++__first;
- while (__first != __last && __value < *__first)
- ++__first;
- }
- 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));
- }
-
- 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)
- {
- while (__first != __last && bool(__pred(*__first, __value)))
- ++__first;
- if (__first != __last)
- {
- ++__first;
- while (__first != __last && !bool(__pred(*__first, __value)))
- ++__first;
- }
- 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,
- _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;
- if (__first != __last)
- {
- ++__first;
- while (__first != __last && bool(__pred(__value, *__first)))
- ++__first;
- }
- 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
- {
- enum { __value = 0 };
- typedef std::__false_type __type;
- };
-
- template<typename _Iterator, typename _Sequence>
- struct __is_safe_random_iterator<_Safe_iterator<_Iterator, _Sequence> >
- : std::__are_same<std::random_access_iterator_tag,
- typename std::iterator_traits<_Iterator>::
- iterator_category>
- { };
-
- template<typename _Iterator>
- struct _Siter_base
- : std::_Iter_base<_Iterator, __is_safe_random_iterator<_Iterator>::__value>
- { };
-
- /** Helper function to extract base iterator of random access safe iterator
- in order to reduce performance impact of debug mode. Limited to random
- access iterator because it is the only category for which it is possible
- to check for correct iterators order in the __valid_range function
- thanks to the < operator.
- */
- template<typename _Iterator>
- inline typename _Siter_base<_Iterator>::iterator_type
- __base(_Iterator __it)
- { return _Siter_base<_Iterator>::_S_base(__it); }
-} // namespace __gnu_debug
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/list b/gcc-4.8.1/libstdc++-v3/include/debug/list
deleted file mode 100644
index 8fcc5bfe8..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/list
+++ /dev/null
@@ -1,757 +0,0 @@
-// Debugging list implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/list
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_LIST
-#define _GLIBCXX_DEBUG_LIST 1
-
-#include <list>
-#include <debug/safe_sequence.h>
-#include <debug/safe_iterator.h>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-namespace __debug
-{
- /// Class std::list with safety/checking/debug instrumentation.
- template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
- class list
- : public _GLIBCXX_STD_C::list<_Tp, _Allocator>,
- public __gnu_debug::_Safe_sequence<list<_Tp, _Allocator> >
- {
- typedef _GLIBCXX_STD_C::list<_Tp, _Allocator> _Base;
-
- typedef typename _Base::iterator _Base_iterator;
- typedef typename _Base::const_iterator _Base_const_iterator;
- typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
- typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
- public:
- typedef typename _Base::reference reference;
- typedef typename _Base::const_reference const_reference;
-
- typedef __gnu_debug::_Safe_iterator<_Base_iterator, list>
- iterator;
- typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, list>
- const_iterator;
-
- typedef typename _Base::size_type size_type;
- typedef typename _Base::difference_type difference_type;
-
- typedef _Tp value_type;
- typedef _Allocator allocator_type;
- typedef typename _Base::pointer pointer;
- typedef typename _Base::const_pointer const_pointer;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
- // 23.2.2.1 construct/copy/destroy:
- explicit
- list(const _Allocator& __a = _Allocator())
- : _Base(__a) { }
-
-#if __cplusplus >= 201103L
- explicit
- list(size_type __n)
- : _Base(__n) { }
-
- list(size_type __n, const _Tp& __value,
- const _Allocator& __a = _Allocator())
- : _Base(__n, __value, __a) { }
-#else
- explicit
- list(size_type __n, const _Tp& __value = _Tp(),
- const _Allocator& __a = _Allocator())
- : _Base(__n, __value, __a) { }
-#endif
-
-#if __cplusplus >= 201103L
- template<class _InputIterator,
- typename = std::_RequireInputIter<_InputIterator>>
-#else
- template<class _InputIterator>
-#endif
- list(_InputIterator __first, _InputIterator __last,
- const _Allocator& __a = _Allocator())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
- __last)),
- __gnu_debug::__base(__last), __a)
- { }
-
- list(const list& __x)
- : _Base(__x) { }
-
- list(const _Base& __x)
- : _Base(__x) { }
-
-#if __cplusplus >= 201103L
- list(list&& __x) noexcept
- : _Base(std::move(__x))
- { this->_M_swap(__x); }
-
- list(initializer_list<value_type> __l,
- const allocator_type& __a = allocator_type())
- : _Base(__l, __a) { }
-#endif
-
- ~list() _GLIBCXX_NOEXCEPT { }
-
- list&
- operator=(const list& __x)
- {
- static_cast<_Base&>(*this) = __x;
- this->_M_invalidate_all();
- return *this;
- }
-
-#if __cplusplus >= 201103L
- list&
- operator=(list&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- __glibcxx_check_self_move_assign(__x);
- clear();
- swap(__x);
- return *this;
- }
-
- list&
- operator=(initializer_list<value_type> __l)
- {
- static_cast<_Base&>(*this) = __l;
- this->_M_invalidate_all();
- return *this;
- }
-
- void
- assign(initializer_list<value_type> __l)
- {
- _Base::assign(__l);
- this->_M_invalidate_all();
- }
-#endif
-
-#if __cplusplus >= 201103L
- template<class _InputIterator,
- typename = std::_RequireInputIter<_InputIterator>>
-#else
- template<class _InputIterator>
-#endif
- void
- assign(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- _Base::assign(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- this->_M_invalidate_all();
- }
-
- void
- assign(size_type __n, const _Tp& __t)
- {
- _Base::assign(__n, __t);
- this->_M_invalidate_all();
- }
-
- using _Base::get_allocator;
-
- // iterators:
- iterator
- begin() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::end(), this); }
-
- reverse_iterator
- rbegin() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(end()); }
-
- const_reverse_iterator
- rbegin() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(end()); }
-
- reverse_iterator
- rend() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(begin()); }
-
- const_reverse_iterator
- rend() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(begin()); }
-
-#if __cplusplus >= 201103L
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_reverse_iterator
- crbegin() const noexcept
- { return const_reverse_iterator(end()); }
-
- const_reverse_iterator
- crend() const noexcept
- { return const_reverse_iterator(begin()); }
-#endif
-
- // 23.2.2.2 capacity:
- using _Base::empty;
- using _Base::size;
- using _Base::max_size;
-
-#if __cplusplus >= 201103L
- void
- resize(size_type __sz)
- {
- this->_M_detach_singular();
-
- // if __sz < size(), invalidate all iterators in [begin+__sz, end())
- _Base_iterator __victim = _Base::begin();
- _Base_iterator __end = _Base::end();
- for (size_type __i = __sz; __victim != __end && __i > 0; --__i)
- ++__victim;
-
- for (; __victim != __end; ++__victim)
- {
- this->_M_invalidate_if(_Equal(__victim));
- }
-
- __try
- {
- _Base::resize(__sz);
- }
- __catch(...)
- {
- this->_M_revalidate_singular();
- __throw_exception_again;
- }
- }
-
- void
- resize(size_type __sz, const _Tp& __c)
- {
- this->_M_detach_singular();
-
- // if __sz < size(), invalidate all iterators in [begin+__sz, end())
- _Base_iterator __victim = _Base::begin();
- _Base_iterator __end = _Base::end();
- for (size_type __i = __sz; __victim != __end && __i > 0; --__i)
- ++__victim;
-
- for (; __victim != __end; ++__victim)
- {
- this->_M_invalidate_if(_Equal(__victim));
- }
-
- __try
- {
- _Base::resize(__sz, __c);
- }
- __catch(...)
- {
- this->_M_revalidate_singular();
- __throw_exception_again;
- }
- }
-#else
- void
- resize(size_type __sz, _Tp __c = _Tp())
- {
- this->_M_detach_singular();
-
- // if __sz < size(), invalidate all iterators in [begin+__sz, end())
- _Base_iterator __victim = _Base::begin();
- _Base_iterator __end = _Base::end();
- for (size_type __i = __sz; __victim != __end && __i > 0; --__i)
- ++__victim;
-
- for (; __victim != __end; ++__victim)
- {
- this->_M_invalidate_if(_Equal(__victim));
- }
-
- __try
- {
- _Base::resize(__sz, __c);
- }
- __catch(...)
- {
- this->_M_revalidate_singular();
- __throw_exception_again;
- }
- }
-#endif
-
- // element access:
- reference
- front()
- {
- __glibcxx_check_nonempty();
- return _Base::front();
- }
-
- const_reference
- front() const
- {
- __glibcxx_check_nonempty();
- return _Base::front();
- }
-
- reference
- back()
- {
- __glibcxx_check_nonempty();
- return _Base::back();
- }
-
- const_reference
- back() const
- {
- __glibcxx_check_nonempty();
- return _Base::back();
- }
-
- // 23.2.2.3 modifiers:
- using _Base::push_front;
-
-#if __cplusplus >= 201103L
- using _Base::emplace_front;
-#endif
-
- void
- pop_front()
- {
- __glibcxx_check_nonempty();
- this->_M_invalidate_if(_Equal(_Base::begin()));
- _Base::pop_front();
- }
-
- using _Base::push_back;
-
-#if __cplusplus >= 201103L
- using _Base::emplace_back;
-#endif
-
- void
- pop_back()
- {
- __glibcxx_check_nonempty();
- this->_M_invalidate_if(_Equal(--_Base::end()));
- _Base::pop_back();
- }
-
-#if __cplusplus >= 201103L
- template<typename... _Args>
- iterator
- emplace(iterator __position, _Args&&... __args)
- {
- __glibcxx_check_insert(__position);
- return iterator(_Base::emplace(__position.base(),
- std::forward<_Args>(__args)...), this);
- }
-#endif
-
- iterator
- insert(iterator __position, const _Tp& __x)
- {
- __glibcxx_check_insert(__position);
- return iterator(_Base::insert(__position.base(), __x), this);
- }
-
-#if __cplusplus >= 201103L
- iterator
- insert(iterator __position, _Tp&& __x)
- { return emplace(__position, std::move(__x)); }
-
- void
- insert(iterator __p, initializer_list<value_type> __l)
- {
- __glibcxx_check_insert(__p);
- _Base::insert(__p.base(), __l);
- }
-#endif
-
- void
- insert(iterator __position, size_type __n, const _Tp& __x)
- {
- __glibcxx_check_insert(__position);
- _Base::insert(__position.base(), __n, __x);
- }
-
-#if __cplusplus >= 201103L
- template<class _InputIterator,
- typename = std::_RequireInputIter<_InputIterator>>
-#else
- template<class _InputIterator>
-#endif
- void
- insert(iterator __position, _InputIterator __first,
- _InputIterator __last)
- {
- __glibcxx_check_insert_range(__position, __first, __last);
- _Base::insert(__position.base(), __gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- }
-
- private:
- _Base_iterator
- _M_erase(_Base_iterator __position)
- {
- this->_M_invalidate_if(_Equal(__position));
- return _Base::erase(__position);
- }
- public:
- iterator
- erase(iterator __position)
- {
- __glibcxx_check_erase(__position);
- return iterator(_M_erase(__position.base()), this);
- }
-
- iterator
- erase(iterator __position, iterator __last)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 151. can't currently clear() empty container
- __glibcxx_check_erase_range(__position, __last);
- for (_Base_iterator __victim = __position.base();
- __victim != __last.base(); ++__victim)
- {
- _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__position, "position")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if(_Equal(__victim));
- }
- return iterator(_Base::erase(__position.base(), __last.base()), this);
- }
-
- void
- swap(list& __x)
- {
- _Base::swap(__x);
- this->_M_swap(__x);
- }
-
- void
- clear() _GLIBCXX_NOEXCEPT
- {
- _Base::clear();
- this->_M_invalidate_all();
- }
-
- // 23.2.2.4 list operations:
- void
-#if __cplusplus >= 201103L
- splice(iterator __position, list&& __x)
-#else
- splice(iterator __position, list& __x)
-#endif
- {
- _GLIBCXX_DEBUG_VERIFY(&__x != this,
- _M_message(__gnu_debug::__msg_self_splice)
- ._M_sequence(*this, "this"));
- this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end()));
- _Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()));
- }
-
-#if __cplusplus >= 201103L
- void
- splice(iterator __position, list& __x)
- { splice(__position, std::move(__x)); }
-#endif
-
- void
-#if __cplusplus >= 201103L
- splice(iterator __position, list&& __x, iterator __i)
-#else
- splice(iterator __position, list& __x, iterator __i)
-#endif
- {
- __glibcxx_check_insert(__position);
-
- // We used to perform the splice_alloc check: not anymore, redundant
- // after implementing the relevant bits of N1599.
-
- _GLIBCXX_DEBUG_VERIFY(__i._M_dereferenceable(),
- _M_message(__gnu_debug::__msg_splice_bad)
- ._M_iterator(__i, "__i"));
- _GLIBCXX_DEBUG_VERIFY(__i._M_attached_to(&__x),
- _M_message(__gnu_debug::__msg_splice_other)
- ._M_iterator(__i, "__i")._M_sequence(__x, "__x"));
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 250. splicing invalidates iterators
- this->_M_transfer_from_if(__x, _Equal(__i.base()));
- _Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()),
- __i.base());
- }
-
-#if __cplusplus >= 201103L
- void
- splice(iterator __position, list& __x, iterator __i)
- { splice(__position, std::move(__x), __i); }
-#endif
-
- void
-#if __cplusplus >= 201103L
- splice(iterator __position, list&& __x, iterator __first,
- iterator __last)
-#else
- splice(iterator __position, list& __x, iterator __first,
- iterator __last)
-#endif
- {
- __glibcxx_check_insert(__position);
- __glibcxx_check_valid_range(__first, __last);
- _GLIBCXX_DEBUG_VERIFY(__first._M_attached_to(&__x),
- _M_message(__gnu_debug::__msg_splice_other)
- ._M_sequence(__x, "x")
- ._M_iterator(__first, "first"));
-
- // We used to perform the splice_alloc check: not anymore, redundant
- // after implementing the relevant bits of N1599.
-
- for (_Base_iterator __tmp = __first.base();
- __tmp != __last.base(); ++__tmp)
- {
- _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- _GLIBCXX_DEBUG_VERIFY(&__x != this || __tmp != __position,
- _M_message(__gnu_debug::__msg_splice_overlap)
- ._M_iterator(__tmp, "position")
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 250. splicing invalidates iterators
- this->_M_transfer_from_if(__x, _Equal(__tmp));
- }
-
- _Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()),
- __first.base(), __last.base());
- }
-
-#if __cplusplus >= 201103L
- void
- splice(iterator __position, list& __x, iterator __first, iterator __last)
- { splice(__position, std::move(__x), __first, __last); }
-#endif
-
- void
- remove(const _Tp& __value)
- {
- for (_Base_iterator __x = _Base::begin(); __x != _Base::end(); )
- {
- if (*__x == __value)
- __x = _M_erase(__x);
- else
- ++__x;
- }
- }
-
- template<class _Predicate>
- void
- remove_if(_Predicate __pred)
- {
- for (_Base_iterator __x = _Base::begin(); __x != _Base::end(); )
- {
- if (__pred(*__x))
- __x = _M_erase(__x);
- else
- ++__x;
- }
- }
-
- void
- unique()
- {
- _Base_iterator __first = _Base::begin();
- _Base_iterator __last = _Base::end();
- if (__first == __last)
- return;
- _Base_iterator __next = __first; ++__next;
- while (__next != __last)
- {
- if (*__first == *__next)
- __next = _M_erase(__next);
- else
- __first = __next++;
- }
- }
-
- template<class _BinaryPredicate>
- void
- unique(_BinaryPredicate __binary_pred)
- {
- _Base_iterator __first = _Base::begin();
- _Base_iterator __last = _Base::end();
- if (__first == __last)
- return;
- _Base_iterator __next = __first; ++__next;
- while (__next != __last)
- {
- if (__binary_pred(*__first, *__next))
- __next = _M_erase(__next);
- else
- __first = __next++;
- }
- }
-
- void
-#if __cplusplus >= 201103L
- merge(list&& __x)
-#else
- merge(list& __x)
-#endif
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 300. list::merge() specification incomplete
- if (this != &__x)
- {
- __glibcxx_check_sorted(_Base::begin(), _Base::end());
- __glibcxx_check_sorted(__x.begin().base(), __x.end().base());
- this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end()));
- _Base::merge(_GLIBCXX_MOVE(__x._M_base()));
- }
- }
-
-#if __cplusplus >= 201103L
- void
- merge(list& __x)
- { merge(std::move(__x)); }
-#endif
-
- template<class _Compare>
- void
-#if __cplusplus >= 201103L
- merge(list&& __x, _Compare __comp)
-#else
- merge(list& __x, _Compare __comp)
-#endif
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 300. list::merge() specification incomplete
- if (this != &__x)
- {
- __glibcxx_check_sorted_pred(_Base::begin(), _Base::end(),
- __comp);
- __glibcxx_check_sorted_pred(__x.begin().base(), __x.end().base(),
- __comp);
- this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end()));
- _Base::merge(_GLIBCXX_MOVE(__x._M_base()), __comp);
- }
- }
-
-#if __cplusplus >= 201103L
- template<typename _Compare>
- void
- merge(list& __x, _Compare __comp)
- { merge(std::move(__x), __comp); }
-#endif
-
- void
- sort() { _Base::sort(); }
-
- template<typename _StrictWeakOrdering>
- void
- sort(_StrictWeakOrdering __pred) { _Base::sort(__pred); }
-
- using _Base::reverse;
-
- _Base&
- _M_base() _GLIBCXX_NOEXCEPT { return *this; }
-
- const _Base&
- _M_base() const _GLIBCXX_NOEXCEPT { return *this; }
-
- private:
- void
- _M_invalidate_all()
- {
- this->_M_invalidate_if(_Not_equal(_Base::end()));
- }
- };
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator==(const list<_Tp, _Alloc>& __lhs,
- const list<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() == __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator!=(const list<_Tp, _Alloc>& __lhs,
- const list<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() != __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator<(const list<_Tp, _Alloc>& __lhs,
- const list<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() < __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator<=(const list<_Tp, _Alloc>& __lhs,
- const list<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() <= __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator>=(const list<_Tp, _Alloc>& __lhs,
- const list<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() >= __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator>(const list<_Tp, _Alloc>& __lhs,
- const list<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() > __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline void
- swap(list<_Tp, _Alloc>& __lhs, list<_Tp, _Alloc>& __rhs)
- { __lhs.swap(__rhs); }
-
-} // namespace __debug
-} // namespace std
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/macros.h b/gcc-4.8.1/libstdc++-v3/include/debug/macros.h
deleted file mode 100644
index 26732c9e3..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/macros.h
+++ /dev/null
@@ -1,349 +0,0 @@
-// Debugging support implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/macros.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_MACROS_H
-#define _GLIBCXX_DEBUG_MACROS_H 1
-
-/**
- * Macros used by the implementation to verify certain
- * properties. These macros may only be used directly by the debug
- * wrappers. Note that these are macros (instead of the more obviously
- * @a correct choice of making them functions) because we need line and
- * file information at the call site, to minimize the distance between
- * the user error and where the error is reported.
- *
- */
-#define _GLIBCXX_DEBUG_VERIFY_AT(_Condition,_ErrorMessage,_File,_Line) \
- do \
- { \
- if (! (_Condition)) \
- __gnu_debug::_Error_formatter::_M_at(_File, _Line) \
- ._ErrorMessage._M_error(); \
- } while (false)
-
-#define _GLIBCXX_DEBUG_VERIFY(_Condition,_ErrorMessage) \
- _GLIBCXX_DEBUG_VERIFY_AT(_Condition,_ErrorMessage,__FILE__,__LINE__)
-
-// Verify that [_First, _Last) forms a valid iterator range.
-#define __glibcxx_check_valid_range(_First,_Last) \
-_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__valid_range(_First, _Last), \
- _M_message(__gnu_debug::__msg_valid_range) \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last))
-
-// Verify that [_First, _Last) forms a non-empty iterator range.
-#define __glibcxx_check_non_empty_range(_First,_Last) \
-_GLIBCXX_DEBUG_VERIFY(_First != _Last, \
- _M_message(__gnu_debug::__msg_non_empty_range) \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last))
-
-/** Verify that we can insert into *this with the iterator _Position.
- * Insertion into a container at a specific position requires that
- * the iterator be nonsingular, either dereferenceable or past-the-end,
- * and that it reference the sequence we are inserting into. Note that
- * this macro is only valid when the container is a_Safe_sequence and
- * the iterator is a _Safe_iterator.
-*/
-#define __glibcxx_check_insert(_Position) \
-_GLIBCXX_DEBUG_VERIFY(!_Position._M_singular(), \
- _M_message(__gnu_debug::__msg_insert_singular) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_Position, #_Position)); \
-_GLIBCXX_DEBUG_VERIFY(_Position._M_attached_to(this), \
- _M_message(__gnu_debug::__msg_insert_different) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_Position, #_Position))
-
-/** Verify that we can insert into *this after the iterator _Position.
- * Insertion into a container after a specific position requires that
- * the iterator be nonsingular, either dereferenceable or before-begin,
- * and that it reference the sequence we are inserting into. Note that
- * this macro is only valid when the container is a_Safe_sequence and
- * the iterator is a _Safe_iterator.
-*/
-#define __glibcxx_check_insert_after(_Position) \
-__glibcxx_check_insert(_Position); \
-_GLIBCXX_DEBUG_VERIFY(!_Position._M_is_end(), \
- _M_message(__gnu_debug::__msg_insert_after_end) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_Position, #_Position))
-
-/** Verify that we can insert the values in the iterator range
- * [_First, _Last) into *this with the iterator _Position. Insertion
- * into a container at a specific position requires that the iterator
- * be nonsingular (i.e., either dereferenceable or past-the-end),
- * that it reference the sequence we are inserting into, and that the
- * iterator range [_First, Last) is a valid (possibly empty)
- * range. Note that this macro is only valid when the container is a
- * _Safe_sequence and the iterator is a _Safe_iterator.
- *
- * @todo We would like to be able to check for noninterference of
- * _Position and the range [_First, _Last), but that can't (in
- * general) be done.
-*/
-#define __glibcxx_check_insert_range(_Position,_First,_Last) \
-__glibcxx_check_valid_range(_First,_Last); \
-__glibcxx_check_insert(_Position)
-
-/** Verify that we can insert the values in the iterator range
- * [_First, _Last) into *this after the iterator _Position. Insertion
- * into a container after a specific position requires that the iterator
- * be nonsingular (i.e., either dereferenceable or past-the-end),
- * that it reference the sequence we are inserting into, and that the
- * iterator range [_First, Last) is a valid (possibly empty)
- * range. Note that this macro is only valid when the container is a
- * _Safe_sequence and the iterator is a _Safe_iterator.
- *
- * @todo We would like to be able to check for noninterference of
- * _Position and the range [_First, _Last), but that can't (in
- * general) be done.
-*/
-#define __glibcxx_check_insert_range_after(_Position,_First,_Last) \
-__glibcxx_check_valid_range(_First,_Last); \
-__glibcxx_check_insert_after(_Position)
-
-/** Verify that we can erase the element referenced by the iterator
- * _Position. We can erase the element if the _Position iterator is
- * dereferenceable and references this sequence.
-*/
-#define __glibcxx_check_erase(_Position) \
-_GLIBCXX_DEBUG_VERIFY(_Position._M_dereferenceable(), \
- _M_message(__gnu_debug::__msg_erase_bad) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_Position, #_Position)); \
-_GLIBCXX_DEBUG_VERIFY(_Position._M_attached_to(this), \
- _M_message(__gnu_debug::__msg_erase_different) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_Position, #_Position))
-
-/** Verify that we can erase the element after the iterator
- * _Position. We can erase the element if the _Position iterator is
- * before a dereferenceable one and references this sequence.
-*/
-#define __glibcxx_check_erase_after(_Position) \
-_GLIBCXX_DEBUG_VERIFY(_Position._M_before_dereferenceable(), \
- _M_message(__gnu_debug::__msg_erase_after_bad) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_Position, #_Position)); \
-_GLIBCXX_DEBUG_VERIFY(_Position._M_attached_to(this), \
- _M_message(__gnu_debug::__msg_erase_different) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_Position, #_Position))
-
-/** Verify that we can erase the elements in the iterator range
- * [_First, _Last). We can erase the elements if [_First, _Last) is a
- * valid iterator range within this sequence.
-*/
-#define __glibcxx_check_erase_range(_First,_Last) \
-__glibcxx_check_valid_range(_First,_Last); \
-_GLIBCXX_DEBUG_VERIFY(_First._M_attached_to(this), \
- _M_message(__gnu_debug::__msg_erase_different) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last))
-
-/** Verify that we can erase the elements in the iterator range
- * (_First, _Last). We can erase the elements if (_First, _Last) is a
- * valid iterator range within this sequence.
-*/
-#define __glibcxx_check_erase_range_after(_First,_Last) \
-_GLIBCXX_DEBUG_VERIFY(_First._M_can_compare(_Last), \
- _M_message(__gnu_debug::__msg_erase_different) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last)); \
-_GLIBCXX_DEBUG_VERIFY(_First._M_attached_to(this), \
- _M_message(__gnu_debug::__msg_erase_different) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_First, #_First)); \
-_GLIBCXX_DEBUG_VERIFY(_First != _Last, \
- _M_message(__gnu_debug::__msg_valid_range2) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last)); \
-_GLIBCXX_DEBUG_VERIFY(_First._M_incrementable(), \
- _M_message(__gnu_debug::__msg_valid_range2) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last)); \
-_GLIBCXX_DEBUG_VERIFY(!_Last._M_is_before_begin(), \
- _M_message(__gnu_debug::__msg_valid_range2) \
- ._M_sequence(*this, "this") \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last)) \
-
-// Verify that the subscript _N is less than the container's size.
-#define __glibcxx_check_subscript(_N) \
-_GLIBCXX_DEBUG_VERIFY(_N < this->size(), \
- _M_message(__gnu_debug::__msg_subscript_oob) \
- ._M_sequence(*this, "this") \
- ._M_integer(_N, #_N) \
- ._M_integer(this->size(), "size"))
-
-// Verify that the bucket _N is less than the container's buckets count.
-#define __glibcxx_check_bucket_index(_N) \
-_GLIBCXX_DEBUG_VERIFY(_N < this->bucket_count(), \
- _M_message(__gnu_debug::__msg_bucket_index_oob) \
- ._M_sequence(*this, "this") \
- ._M_integer(_N, #_N) \
- ._M_integer(this->bucket_count(), "size"))
-
-// Verify that the container is nonempty
-#define __glibcxx_check_nonempty() \
-_GLIBCXX_DEBUG_VERIFY(! this->empty(), \
- _M_message(__gnu_debug::__msg_empty) \
- ._M_sequence(*this, "this"))
-
-// Verify that the iterator range [_First, _Last) is sorted
-#define __glibcxx_check_sorted(_First,_Last) \
-__glibcxx_check_valid_range(_First,_Last); \
-_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_sorted(_First, _Last), \
- _M_message(__gnu_debug::__msg_unsorted) \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last))
-
-/** Verify that the iterator range [_First, _Last) is sorted by the
- predicate _Pred. */
-#define __glibcxx_check_sorted_pred(_First,_Last,_Pred) \
-__glibcxx_check_valid_range(_First,_Last); \
-_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_sorted(_First, _Last, _Pred), \
- _M_message(__gnu_debug::__msg_unsorted_pred) \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last) \
- ._M_string(#_Pred))
-
-// Special variant for std::merge, std::includes, std::set_*
-#define __glibcxx_check_sorted_set(_First1,_Last1,_First2) \
-__glibcxx_check_valid_range(_First1,_Last1); \
-_GLIBCXX_DEBUG_VERIFY( \
- __gnu_debug::__check_sorted_set(_First1, _Last1, _First2), \
- _M_message(__gnu_debug::__msg_unsorted) \
- ._M_iterator(_First1, #_First1) \
- ._M_iterator(_Last1, #_Last1))
-
-// Likewise with a _Pred.
-#define __glibcxx_check_sorted_set_pred(_First1,_Last1,_First2,_Pred) \
-__glibcxx_check_valid_range(_First1,_Last1); \
-_GLIBCXX_DEBUG_VERIFY( \
- __gnu_debug::__check_sorted_set(_First1, _Last1, _First2, _Pred), \
- _M_message(__gnu_debug::__msg_unsorted_pred) \
- ._M_iterator(_First1, #_First1) \
- ._M_iterator(_Last1, #_Last1) \
- ._M_string(#_Pred))
-
-/** Verify that the iterator range [_First, _Last) is partitioned
- 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), \
- _M_message(__gnu_debug::__msg_unpartitioned) \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last) \
- ._M_string(#_Value))
-
-#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), \
- _M_message(__gnu_debug::__msg_unpartitioned) \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last) \
- ._M_string(#_Value))
-
-/** Verify that the iterator range [_First, _Last) is partitioned
- 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), \
- _M_message(__gnu_debug::__msg_unpartitioned_pred) \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last) \
- ._M_string(#_Pred) \
- ._M_string(#_Value))
-
-/** Verify that the iterator range [_First, _Last) is partitioned
- 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), \
- _M_message(__gnu_debug::__msg_unpartitioned_pred) \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last) \
- ._M_string(#_Pred) \
- ._M_string(#_Value))
-
-// Verify that the iterator range [_First, _Last) is a heap
-#define __glibcxx_check_heap(_First,_Last) \
- _GLIBCXX_DEBUG_VERIFY(std::__is_heap(__gnu_debug::__base(_First), \
- __gnu_debug::__base(_Last)), \
- _M_message(__gnu_debug::__msg_not_heap) \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last))
-
-/** Verify that the iterator range [_First, _Last) is a heap
- w.r.t. the predicate _Pred. */
-#define __glibcxx_check_heap_pred(_First,_Last,_Pred) \
- _GLIBCXX_DEBUG_VERIFY(std::__is_heap(__gnu_debug::__base(_First), \
- __gnu_debug::__base(_Last), \
- _Pred), \
- _M_message(__gnu_debug::__msg_not_heap_pred) \
- ._M_iterator(_First, #_First) \
- ._M_iterator(_Last, #_Last) \
- ._M_string(#_Pred))
-
-// Verify that the container is not self move assigned
-#define __glibcxx_check_self_move_assign(_Other) \
-_GLIBCXX_DEBUG_VERIFY(this != &_Other, \
- _M_message(__gnu_debug::__msg_self_move_assign) \
- ._M_sequence(*this, "this"))
-
-// Verify that load factor is position
-#define __glibcxx_check_max_load_factor(_F) \
-_GLIBCXX_DEBUG_VERIFY(_F > 0.0f, \
- _M_message(__gnu_debug::__msg_valid_load_factor) \
- ._M_sequence(*this, "this"))
-
-#define __glibcxx_check_equal_allocs(_Other) \
-_GLIBCXX_DEBUG_VERIFY(this->get_allocator() == _Other.get_allocator(), \
- _M_message(__gnu_debug::__msg_equal_allocs) \
- ._M_sequence(*this, "this"))
-
-#ifdef _GLIBCXX_DEBUG_PEDANTIC
-# define __glibcxx_check_string(_String) _GLIBCXX_DEBUG_ASSERT(_String != 0)
-# define __glibcxx_check_string_len(_String,_Len) \
- _GLIBCXX_DEBUG_ASSERT(_String != 0 || _Len == 0)
-#else
-# define __glibcxx_check_string(_String)
-# define __glibcxx_check_string_len(_String,_Len)
-#endif
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/map b/gcc-4.8.1/libstdc++-v3/include/debug/map
deleted file mode 100644
index 365a82ea9..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/map
+++ /dev/null
@@ -1,36 +0,0 @@
-// Debugging map/multimap implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/map
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_MAP
-#define _GLIBCXX_DEBUG_MAP 1
-
-#include <map>
-#include <debug/map.h>
-#include <debug/multimap.h>
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/map.h b/gcc-4.8.1/libstdc++-v3/include/debug/map.h
deleted file mode 100644
index 23ac5382d..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/map.h
+++ /dev/null
@@ -1,491 +0,0 @@
-// Debugging map implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/map.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_MAP_H
-#define _GLIBCXX_DEBUG_MAP_H 1
-
-#include <debug/safe_sequence.h>
-#include <debug/safe_iterator.h>
-#include <utility>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-namespace __debug
-{
- /// Class std::map with safety/checking/debug instrumentation.
- template<typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
- typename _Allocator = std::allocator<std::pair<const _Key, _Tp> > >
- class map
- : public _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator>,
- public __gnu_debug::_Safe_sequence<map<_Key, _Tp, _Compare, _Allocator> >
- {
- typedef _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator> _Base;
-
- typedef typename _Base::const_iterator _Base_const_iterator;
- typedef typename _Base::iterator _Base_iterator;
- typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
- public:
- // types:
- typedef _Key key_type;
- typedef _Tp mapped_type;
- typedef std::pair<const _Key, _Tp> value_type;
- typedef _Compare key_compare;
- typedef _Allocator allocator_type;
- typedef typename _Base::reference reference;
- typedef typename _Base::const_reference const_reference;
-
- typedef __gnu_debug::_Safe_iterator<_Base_iterator, map>
- iterator;
- typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, map>
- const_iterator;
-
- typedef typename _Base::size_type size_type;
- typedef typename _Base::difference_type difference_type;
- typedef typename _Base::pointer pointer;
- typedef typename _Base::const_pointer const_pointer;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
- // 23.3.1.1 construct/copy/destroy:
- explicit map(const _Compare& __comp = _Compare(),
- const _Allocator& __a = _Allocator())
- : _Base(__comp, __a) { }
-
- template<typename _InputIterator>
- map(_InputIterator __first, _InputIterator __last,
- const _Compare& __comp = _Compare(),
- const _Allocator& __a = _Allocator())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
- __last)),
- __gnu_debug::__base(__last),
- __comp, __a) { }
-
- map(const map& __x)
- : _Base(__x) { }
-
- map(const _Base& __x)
- : _Base(__x) { }
-
-#if __cplusplus >= 201103L
- map(map&& __x)
- noexcept(is_nothrow_copy_constructible<_Compare>::value)
- : _Base(std::move(__x))
- { this->_M_swap(__x); }
-
- map(initializer_list<value_type> __l,
- const _Compare& __c = _Compare(),
- const allocator_type& __a = allocator_type())
- : _Base(__l, __c, __a) { }
-#endif
-
- ~map() _GLIBCXX_NOEXCEPT { }
-
- map&
- operator=(const map& __x)
- {
- *static_cast<_Base*>(this) = __x;
- this->_M_invalidate_all();
- return *this;
- }
-
-#if __cplusplus >= 201103L
- map&
- operator=(map&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- __glibcxx_check_self_move_assign(__x);
- clear();
- swap(__x);
- return *this;
- }
-
- map&
- operator=(initializer_list<value_type> __l)
- {
- this->clear();
- this->insert(__l);
- return *this;
- }
-#endif
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 133. map missing get_allocator()
- using _Base::get_allocator;
-
- // iterators:
- iterator
- begin() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::end(), this); }
-
- reverse_iterator
- rbegin() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(end()); }
-
- const_reverse_iterator
- rbegin() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(end()); }
-
- reverse_iterator
- rend() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(begin()); }
-
- const_reverse_iterator
- rend() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(begin()); }
-
-#if __cplusplus >= 201103L
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_reverse_iterator
- crbegin() const noexcept
- { return const_reverse_iterator(end()); }
-
- const_reverse_iterator
- crend() const noexcept
- { return const_reverse_iterator(begin()); }
-#endif
-
- // capacity:
- using _Base::empty;
- using _Base::size;
- using _Base::max_size;
-
- // 23.3.1.2 element access:
- using _Base::operator[];
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // DR 464. Suggestion for new member functions in standard containers.
- using _Base::at;
-
- // modifiers:
-#if __cplusplus >= 201103L
- template<typename... _Args>
- std::pair<iterator, bool>
- emplace(_Args&&... __args)
- {
- auto __res = _Base::emplace(std::forward<_Args>(__args)...);
- return std::pair<iterator, bool>(iterator(__res.first, this),
- __res.second);
- }
-
- template<typename... _Args>
- iterator
- emplace_hint(const_iterator __pos, _Args&&... __args)
- {
- __glibcxx_check_insert(__pos);
- return iterator(_Base::emplace_hint(__pos.base(),
- std::forward<_Args>(__args)...),
- this);
- }
-#endif
-
- std::pair<iterator, bool>
- insert(const value_type& __x)
- {
- std::pair<_Base_iterator, bool> __res = _Base::insert(__x);
- return std::pair<iterator, bool>(iterator(__res.first, this),
- __res.second);
- }
-
-#if __cplusplus >= 201103L
- template<typename _Pair, typename = typename
- std::enable_if<std::is_constructible<value_type,
- _Pair&&>::value>::type>
- std::pair<iterator, bool>
- insert(_Pair&& __x)
- {
- std::pair<_Base_iterator, bool> __res
- = _Base::insert(std::forward<_Pair>(__x));
- return std::pair<iterator, bool>(iterator(__res.first, this),
- __res.second);
- }
-#endif
-
-#if __cplusplus >= 201103L
- void
- insert(std::initializer_list<value_type> __list)
- { _Base::insert(__list); }
-#endif
-
- iterator
-#if __cplusplus >= 201103L
- insert(const_iterator __position, const value_type& __x)
-#else
- insert(iterator __position, const value_type& __x)
-#endif
- {
- __glibcxx_check_insert(__position);
- return iterator(_Base::insert(__position.base(), __x), this);
- }
-
-#if __cplusplus >= 201103L
- template<typename _Pair, typename = typename
- std::enable_if<std::is_constructible<value_type,
- _Pair&&>::value>::type>
- iterator
- insert(const_iterator __position, _Pair&& __x)
- {
- __glibcxx_check_insert(__position);
- return iterator(_Base::insert(__position.base(),
- std::forward<_Pair>(__x)), this);
- }
-#endif
-
- template<typename _InputIterator>
- void
- insert(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- _Base::insert(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- }
-
-#if __cplusplus >= 201103L
- iterator
- erase(const_iterator __position)
- {
- __glibcxx_check_erase(__position);
- this->_M_invalidate_if(_Equal(__position.base()));
- return iterator(_Base::erase(__position.base()), this);
- }
-
- iterator
- erase(iterator __position)
- { return erase(const_iterator(__position)); }
-#else
- void
- erase(iterator __position)
- {
- __glibcxx_check_erase(__position);
- this->_M_invalidate_if(_Equal(__position.base()));
- _Base::erase(__position.base());
- }
-#endif
-
- size_type
- erase(const key_type& __x)
- {
- _Base_iterator __victim = _Base::find(__x);
- if (__victim == _Base::end())
- return 0;
- else
- {
- this->_M_invalidate_if(_Equal(__victim));
- _Base::erase(__victim);
- return 1;
- }
- }
-
-#if __cplusplus >= 201103L
- iterator
- erase(const_iterator __first, const_iterator __last)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 151. can't currently clear() empty container
- __glibcxx_check_erase_range(__first, __last);
- for (_Base_const_iterator __victim = __first.base();
- __victim != __last.base(); ++__victim)
- {
- _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if(_Equal(__victim));
- }
- return iterator(_Base::erase(__first.base(), __last.base()), this);
- }
-#else
- void
- erase(iterator __first, iterator __last)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 151. can't currently clear() empty container
- __glibcxx_check_erase_range(__first, __last);
- for (_Base_iterator __victim = __first.base();
- __victim != __last.base(); ++__victim)
- {
- _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if(_Equal(__victim));
- }
- _Base::erase(__first.base(), __last.base());
- }
-#endif
-
- void
- swap(map& __x)
- {
- _Base::swap(__x);
- this->_M_swap(__x);
- }
-
- void
- clear() _GLIBCXX_NOEXCEPT
- {
- this->_M_invalidate_all();
- _Base::clear();
- }
-
- // observers:
- using _Base::key_comp;
- using _Base::value_comp;
-
- // 23.3.1.3 map operations:
- iterator
- find(const key_type& __x)
- { return iterator(_Base::find(__x), this); }
-
- const_iterator
- find(const key_type& __x) const
- { return const_iterator(_Base::find(__x), this); }
-
- using _Base::count;
-
- iterator
- lower_bound(const key_type& __x)
- { return iterator(_Base::lower_bound(__x), this); }
-
- const_iterator
- lower_bound(const key_type& __x) const
- { return const_iterator(_Base::lower_bound(__x), this); }
-
- iterator
- upper_bound(const key_type& __x)
- { return iterator(_Base::upper_bound(__x), this); }
-
- const_iterator
- upper_bound(const key_type& __x) const
- { return const_iterator(_Base::upper_bound(__x), this); }
-
- std::pair<iterator,iterator>
- equal_range(const key_type& __x)
- {
- std::pair<_Base_iterator, _Base_iterator> __res =
- _Base::equal_range(__x);
- return std::make_pair(iterator(__res.first, this),
- iterator(__res.second, this));
- }
-
- std::pair<const_iterator,const_iterator>
- equal_range(const key_type& __x) const
- {
- std::pair<_Base_const_iterator, _Base_const_iterator> __res =
- _Base::equal_range(__x);
- return std::make_pair(const_iterator(__res.first, this),
- const_iterator(__res.second, this));
- }
-
- _Base&
- _M_base() _GLIBCXX_NOEXCEPT { return *this; }
-
- const _Base&
- _M_base() const _GLIBCXX_NOEXCEPT { return *this; }
-
- private:
- void
- _M_invalidate_all()
- {
- typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
- this->_M_invalidate_if(_Not_equal(_M_base().end()));
- }
- };
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline bool
- operator==(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
- const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() == __rhs._M_base(); }
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline bool
- operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
- const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() != __rhs._M_base(); }
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline bool
- operator<(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
- const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() < __rhs._M_base(); }
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline bool
- operator<=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
- const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() <= __rhs._M_base(); }
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline bool
- operator>=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
- const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() >= __rhs._M_base(); }
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline bool
- operator>(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
- const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() > __rhs._M_base(); }
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline void
- swap(map<_Key, _Tp, _Compare, _Allocator>& __lhs,
- map<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { __lhs.swap(__rhs); }
-
-} // namespace __debug
-} // namespace std
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/multimap.h b/gcc-4.8.1/libstdc++-v3/include/debug/multimap.h
deleted file mode 100644
index 903198ff8..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/multimap.h
+++ /dev/null
@@ -1,474 +0,0 @@
-// Debugging multimap implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/multimap.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_MULTIMAP_H
-#define _GLIBCXX_DEBUG_MULTIMAP_H 1
-
-#include <debug/safe_sequence.h>
-#include <debug/safe_iterator.h>
-#include <utility>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-namespace __debug
-{
- /// Class std::multimap with safety/checking/debug instrumentation.
- template<typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
- typename _Allocator = std::allocator<std::pair<const _Key, _Tp> > >
- class multimap
- : public _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator>,
- public __gnu_debug::_Safe_sequence<multimap<_Key, _Tp,
- _Compare, _Allocator> >
- {
- typedef _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator> _Base;
-
- typedef typename _Base::const_iterator _Base_const_iterator;
- typedef typename _Base::iterator _Base_iterator;
- typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
- public:
- // types:
- typedef _Key key_type;
- typedef _Tp mapped_type;
- typedef std::pair<const _Key, _Tp> value_type;
- typedef _Compare key_compare;
- typedef _Allocator allocator_type;
- typedef typename _Base::reference reference;
- typedef typename _Base::const_reference const_reference;
-
- typedef __gnu_debug::_Safe_iterator<_Base_iterator, multimap>
- iterator;
- typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
- multimap> const_iterator;
-
- typedef typename _Base::size_type size_type;
- typedef typename _Base::difference_type difference_type;
- typedef typename _Base::pointer pointer;
- typedef typename _Base::const_pointer const_pointer;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
- // 23.3.1.1 construct/copy/destroy:
- explicit multimap(const _Compare& __comp = _Compare(),
- const _Allocator& __a = _Allocator())
- : _Base(__comp, __a) { }
-
- template<typename _InputIterator>
- multimap(_InputIterator __first, _InputIterator __last,
- const _Compare& __comp = _Compare(),
- const _Allocator& __a = _Allocator())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
- __last)),
- __gnu_debug::__base(__last),
- __comp, __a) { }
-
- multimap(const multimap& __x)
- : _Base(__x) { }
-
- multimap(const _Base& __x)
- : _Base(__x) { }
-
-#if __cplusplus >= 201103L
- multimap(multimap&& __x)
- noexcept(is_nothrow_copy_constructible<_Compare>::value)
- : _Base(std::move(__x))
- { this->_M_swap(__x); }
-
- multimap(initializer_list<value_type> __l,
- const _Compare& __c = _Compare(),
- const allocator_type& __a = allocator_type())
- : _Base(__l, __c, __a) { }
-#endif
-
- ~multimap() _GLIBCXX_NOEXCEPT { }
-
- multimap&
- operator=(const multimap& __x)
- {
- *static_cast<_Base*>(this) = __x;
- this->_M_invalidate_all();
- return *this;
- }
-
-#if __cplusplus >= 201103L
- multimap&
- operator=(multimap&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- __glibcxx_check_self_move_assign(__x);
- clear();
- swap(__x);
- return *this;
- }
-
- multimap&
- operator=(initializer_list<value_type> __l)
- {
- this->clear();
- this->insert(__l);
- return *this;
- }
-#endif
-
- using _Base::get_allocator;
-
- // iterators:
- iterator
- begin() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::end(), this); }
-
- reverse_iterator
- rbegin() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(end()); }
-
- const_reverse_iterator
- rbegin() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(end()); }
-
- reverse_iterator
- rend() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(begin()); }
-
- const_reverse_iterator
- rend() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(begin()); }
-
-#if __cplusplus >= 201103L
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_reverse_iterator
- crbegin() const noexcept
- { return const_reverse_iterator(end()); }
-
- const_reverse_iterator
- crend() const noexcept
- { return const_reverse_iterator(begin()); }
-#endif
-
- // capacity:
- using _Base::empty;
- using _Base::size;
- using _Base::max_size;
-
- // modifiers:
-#if __cplusplus >= 201103L
- template<typename... _Args>
- iterator
- emplace(_Args&&... __args)
- {
- return iterator(_Base::emplace(std::forward<_Args>(__args)...), this);
- }
-
- template<typename... _Args>
- iterator
- emplace_hint(const_iterator __pos, _Args&&... __args)
- {
- __glibcxx_check_insert(__pos);
- return iterator(_Base::emplace_hint(__pos.base(),
- std::forward<_Args>(__args)...),
- this);
- }
-#endif
-
- iterator
- insert(const value_type& __x)
- { return iterator(_Base::insert(__x), this); }
-
-#if __cplusplus >= 201103L
- template<typename _Pair, typename = typename
- std::enable_if<std::is_constructible<value_type,
- _Pair&&>::value>::type>
- iterator
- insert(_Pair&& __x)
- { return iterator(_Base::insert(std::forward<_Pair>(__x)), this); }
-#endif
-
-#if __cplusplus >= 201103L
- void
- insert(std::initializer_list<value_type> __list)
- { _Base::insert(__list); }
-#endif
-
- iterator
-#if __cplusplus >= 201103L
- insert(const_iterator __position, const value_type& __x)
-#else
- insert(iterator __position, const value_type& __x)
-#endif
- {
- __glibcxx_check_insert(__position);
- return iterator(_Base::insert(__position.base(), __x), this);
- }
-
-#if __cplusplus >= 201103L
- template<typename _Pair, typename = typename
- std::enable_if<std::is_constructible<value_type,
- _Pair&&>::value>::type>
- iterator
- insert(const_iterator __position, _Pair&& __x)
- {
- __glibcxx_check_insert(__position);
- return iterator(_Base::insert(__position.base(),
- std::forward<_Pair>(__x)), this);
- }
-#endif
-
- template<typename _InputIterator>
- void
- insert(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- _Base::insert(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- }
-
-#if __cplusplus >= 201103L
- iterator
- erase(const_iterator __position)
- {
- __glibcxx_check_erase(__position);
- this->_M_invalidate_if(_Equal(__position.base()));
- return iterator(_Base::erase(__position.base()), this);
- }
-
- iterator
- erase(iterator __position)
- { return erase(const_iterator(__position)); }
-#else
- void
- erase(iterator __position)
- {
- __glibcxx_check_erase(__position);
- this->_M_invalidate_if(_Equal(__position.base()));
- _Base::erase(__position.base());
- }
-#endif
-
- size_type
- erase(const key_type& __x)
- {
- std::pair<_Base_iterator, _Base_iterator> __victims =
- _Base::equal_range(__x);
- size_type __count = 0;
- _Base_iterator __victim = __victims.first;
- while (__victim != __victims.second)
- {
- this->_M_invalidate_if(_Equal(__victim));
- _Base::erase(__victim++);
- ++__count;
- }
- return __count;
- }
-
-#if __cplusplus >= 201103L
- iterator
- erase(const_iterator __first, const_iterator __last)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 151. can't currently clear() empty container
- __glibcxx_check_erase_range(__first, __last);
- for (_Base_const_iterator __victim = __first.base();
- __victim != __last.base(); ++__victim)
- {
- _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if(_Equal(__victim));
- }
- return iterator(_Base::erase(__first.base(), __last.base()), this);
- }
-#else
- void
- erase(iterator __first, iterator __last)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 151. can't currently clear() empty container
- __glibcxx_check_erase_range(__first, __last);
- for (_Base_iterator __victim = __first.base();
- __victim != __last.base(); ++__victim)
- {
- _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if(_Equal(__victim));
- }
- _Base::erase(__first.base(), __last.base());
- }
-#endif
-
- void
- swap(multimap& __x)
- {
- _Base::swap(__x);
- this->_M_swap(__x);
- }
-
- void
- clear() _GLIBCXX_NOEXCEPT
- {
- this->_M_invalidate_all();
- _Base::clear();
- }
-
- // observers:
- using _Base::key_comp;
- using _Base::value_comp;
-
- // 23.3.1.3 multimap operations:
- iterator
- find(const key_type& __x)
- { return iterator(_Base::find(__x), this); }
-
- const_iterator
- find(const key_type& __x) const
- { return const_iterator(_Base::find(__x), this); }
-
- using _Base::count;
-
- iterator
- lower_bound(const key_type& __x)
- { return iterator(_Base::lower_bound(__x), this); }
-
- const_iterator
- lower_bound(const key_type& __x) const
- { return const_iterator(_Base::lower_bound(__x), this); }
-
- iterator
- upper_bound(const key_type& __x)
- { return iterator(_Base::upper_bound(__x), this); }
-
- const_iterator
- upper_bound(const key_type& __x) const
- { return const_iterator(_Base::upper_bound(__x), this); }
-
- std::pair<iterator,iterator>
- equal_range(const key_type& __x)
- {
- std::pair<_Base_iterator, _Base_iterator> __res =
- _Base::equal_range(__x);
- return std::make_pair(iterator(__res.first, this),
- iterator(__res.second, this));
- }
-
- std::pair<const_iterator,const_iterator>
- equal_range(const key_type& __x) const
- {
- std::pair<_Base_const_iterator, _Base_const_iterator> __res =
- _Base::equal_range(__x);
- return std::make_pair(const_iterator(__res.first, this),
- const_iterator(__res.second, this));
- }
-
- _Base&
- _M_base() _GLIBCXX_NOEXCEPT { return *this; }
-
- const _Base&
- _M_base() const _GLIBCXX_NOEXCEPT { return *this; }
-
- private:
- void
- _M_invalidate_all()
- {
- typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
- this->_M_invalidate_if(_Not_equal(_Base::end()));
- }
- };
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline bool
- operator==(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
- const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() == __rhs._M_base(); }
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline bool
- operator!=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
- const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() != __rhs._M_base(); }
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline bool
- operator<(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
- const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() < __rhs._M_base(); }
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline bool
- operator<=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
- const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() <= __rhs._M_base(); }
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline bool
- operator>=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
- const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() >= __rhs._M_base(); }
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline bool
- operator>(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
- const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() > __rhs._M_base(); }
-
- template<typename _Key, typename _Tp,
- typename _Compare, typename _Allocator>
- inline void
- swap(multimap<_Key, _Tp, _Compare, _Allocator>& __lhs,
- multimap<_Key, _Tp, _Compare, _Allocator>& __rhs)
- { __lhs.swap(__rhs); }
-
-} // namespace __debug
-} // namespace std
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/multiset.h b/gcc-4.8.1/libstdc++-v3/include/debug/multiset.h
deleted file mode 100644
index 3cc761ee9..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/multiset.h
+++ /dev/null
@@ -1,460 +0,0 @@
-// Debugging multiset implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/multiset.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_MULTISET_H
-#define _GLIBCXX_DEBUG_MULTISET_H 1
-
-#include <debug/safe_sequence.h>
-#include <debug/safe_iterator.h>
-#include <utility>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-namespace __debug
-{
- /// Class std::multiset with safety/checking/debug instrumentation.
- template<typename _Key, typename _Compare = std::less<_Key>,
- typename _Allocator = std::allocator<_Key> >
- class multiset
- : public _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator>,
- public __gnu_debug::_Safe_sequence<multiset<_Key, _Compare, _Allocator> >
- {
- typedef _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator> _Base;
-
- typedef typename _Base::const_iterator _Base_const_iterator;
- typedef typename _Base::iterator _Base_iterator;
- typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
- public:
- // types:
- typedef _Key key_type;
- typedef _Key value_type;
- typedef _Compare key_compare;
- typedef _Compare value_compare;
- typedef _Allocator allocator_type;
- typedef typename _Base::reference reference;
- typedef typename _Base::const_reference const_reference;
-
- typedef __gnu_debug::_Safe_iterator<_Base_iterator, multiset>
- iterator;
- typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
- multiset> const_iterator;
-
- typedef typename _Base::size_type size_type;
- typedef typename _Base::difference_type difference_type;
- typedef typename _Base::pointer pointer;
- typedef typename _Base::const_pointer const_pointer;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
- // 23.3.3.1 construct/copy/destroy:
- explicit multiset(const _Compare& __comp = _Compare(),
- const _Allocator& __a = _Allocator())
- : _Base(__comp, __a) { }
-
- template<typename _InputIterator>
- multiset(_InputIterator __first, _InputIterator __last,
- const _Compare& __comp = _Compare(),
- const _Allocator& __a = _Allocator())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
- __last)),
- __gnu_debug::__base(__last),
- __comp, __a) { }
-
- multiset(const multiset& __x)
- : _Base(__x) { }
-
- multiset(const _Base& __x)
- : _Base(__x) { }
-
-#if __cplusplus >= 201103L
- multiset(multiset&& __x)
- noexcept(is_nothrow_copy_constructible<_Compare>::value)
- : _Base(std::move(__x))
- { this->_M_swap(__x); }
-
- multiset(initializer_list<value_type> __l,
- const _Compare& __comp = _Compare(),
- const allocator_type& __a = allocator_type())
- : _Base(__l, __comp, __a) { }
-#endif
-
- ~multiset() _GLIBCXX_NOEXCEPT { }
-
- multiset&
- operator=(const multiset& __x)
- {
- *static_cast<_Base*>(this) = __x;
- this->_M_invalidate_all();
- return *this;
- }
-
-#if __cplusplus >= 201103L
- multiset&
- operator=(multiset&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- __glibcxx_check_self_move_assign(__x);
- clear();
- swap(__x);
- return *this;
- }
-
- multiset&
- operator=(initializer_list<value_type> __l)
- {
- this->clear();
- this->insert(__l);
- return *this;
- }
-#endif
-
- using _Base::get_allocator;
-
- // iterators:
- iterator
- begin() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::end(), this); }
-
- reverse_iterator
- rbegin() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(end()); }
-
- const_reverse_iterator
- rbegin() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(end()); }
-
- reverse_iterator
- rend() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(begin()); }
-
- const_reverse_iterator
- rend() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(begin()); }
-
-#if __cplusplus >= 201103L
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_reverse_iterator
- crbegin() const noexcept
- { return const_reverse_iterator(end()); }
-
- const_reverse_iterator
- crend() const noexcept
- { return const_reverse_iterator(begin()); }
-#endif
-
- // capacity:
- using _Base::empty;
- using _Base::size;
- using _Base::max_size;
-
- // modifiers:
-#if __cplusplus >= 201103L
- template<typename... _Args>
- iterator
- emplace(_Args&&... __args)
- {
- return iterator(_Base::emplace(std::forward<_Args>(__args)...), this);
- }
-
- template<typename... _Args>
- iterator
- emplace_hint(const_iterator __pos, _Args&&... __args)
- {
- __glibcxx_check_insert(__pos);
- return iterator(_Base::emplace_hint(__pos.base(),
- std::forward<_Args>(__args)...),
- this);
- }
-#endif
-
- iterator
- insert(const value_type& __x)
- { return iterator(_Base::insert(__x), this); }
-
-#if __cplusplus >= 201103L
- iterator
- insert(value_type&& __x)
- { return iterator(_Base::insert(std::move(__x)), this); }
-#endif
-
- iterator
- insert(const_iterator __position, const value_type& __x)
- {
- __glibcxx_check_insert(__position);
- return iterator(_Base::insert(__position.base(), __x), this);
- }
-
-#if __cplusplus >= 201103L
- iterator
- insert(const_iterator __position, value_type&& __x)
- {
- __glibcxx_check_insert(__position);
- return iterator(_Base::insert(__position.base(), std::move(__x)),
- this);
- }
-#endif
-
- template<typename _InputIterator>
- void
- insert(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- _Base::insert(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- }
-
-#if __cplusplus >= 201103L
- void
- insert(initializer_list<value_type> __l)
- { _Base::insert(__l); }
-#endif
-
-#if __cplusplus >= 201103L
- iterator
- erase(const_iterator __position)
- {
- __glibcxx_check_erase(__position);
- this->_M_invalidate_if(_Equal(__position.base()));
- return iterator(_Base::erase(__position.base()), this);
- }
-#else
- void
- erase(iterator __position)
- {
- __glibcxx_check_erase(__position);
- this->_M_invalidate_if(_Equal(__position.base()));
- _Base::erase(__position.base());
- }
-#endif
-
- size_type
- erase(const key_type& __x)
- {
- std::pair<_Base_iterator, _Base_iterator> __victims =
- _Base::equal_range(__x);
- size_type __count = 0;
- _Base_iterator __victim = __victims.first;
- while (__victim != __victims.second)
- {
- this->_M_invalidate_if(_Equal(__victim));
- _Base::erase(__victim++);
- ++__count;
- }
- return __count;
- }
-
-#if __cplusplus >= 201103L
- iterator
- erase(const_iterator __first, const_iterator __last)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 151. can't currently clear() empty container
- __glibcxx_check_erase_range(__first, __last);
- for (_Base_const_iterator __victim = __first.base();
- __victim != __last.base(); ++__victim)
- {
- _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if(_Equal(__victim));
- }
- return iterator(_Base::erase(__first.base(), __last.base()), this);
- }
-#else
- void
- erase(iterator __first, iterator __last)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 151. can't currently clear() empty container
- __glibcxx_check_erase_range(__first, __last);
- for (_Base_iterator __victim = __first.base();
- __victim != __last.base(); ++__victim)
- {
- _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if(_Equal(__victim));
- }
- _Base::erase(__first.base(), __last.base());
- }
-#endif
-
- void
- swap(multiset& __x)
- {
- _Base::swap(__x);
- this->_M_swap(__x);
- }
-
- void
- clear() _GLIBCXX_NOEXCEPT
- {
- this->_M_invalidate_all();
- _Base::clear();
- }
-
- // observers:
- using _Base::key_comp;
- using _Base::value_comp;
-
- // multiset operations:
- iterator
- find(const key_type& __x)
- { return iterator(_Base::find(__x), this); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 214. set::find() missing const overload
- const_iterator
- find(const key_type& __x) const
- { return const_iterator(_Base::find(__x), this); }
-
- using _Base::count;
-
- iterator
- lower_bound(const key_type& __x)
- { return iterator(_Base::lower_bound(__x), this); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 214. set::find() missing const overload
- const_iterator
- lower_bound(const key_type& __x) const
- { return const_iterator(_Base::lower_bound(__x), this); }
-
- iterator
- upper_bound(const key_type& __x)
- { return iterator(_Base::upper_bound(__x), this); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 214. set::find() missing const overload
- const_iterator
- upper_bound(const key_type& __x) const
- { return const_iterator(_Base::upper_bound(__x), this); }
-
- std::pair<iterator,iterator>
- equal_range(const key_type& __x)
- {
- std::pair<_Base_iterator, _Base_iterator> __res =
- _Base::equal_range(__x);
- return std::make_pair(iterator(__res.first, this),
- iterator(__res.second, this));
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 214. set::find() missing const overload
- std::pair<const_iterator,const_iterator>
- equal_range(const key_type& __x) const
- {
- std::pair<_Base_const_iterator, _Base_const_iterator> __res =
- _Base::equal_range(__x);
- return std::make_pair(const_iterator(__res.first, this),
- const_iterator(__res.second, this));
- }
-
- _Base&
- _M_base() _GLIBCXX_NOEXCEPT { return *this; }
-
- const _Base&
- _M_base() const _GLIBCXX_NOEXCEPT { return *this; }
-
- private:
- void
- _M_invalidate_all()
- {
- typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
- this->_M_invalidate_if(_Not_equal(_Base::end()));
- }
- };
-
- template<typename _Key, typename _Compare, typename _Allocator>
- inline bool
- operator==(const multiset<_Key, _Compare, _Allocator>& __lhs,
- const multiset<_Key, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() == __rhs._M_base(); }
-
- template<typename _Key, typename _Compare, typename _Allocator>
- inline bool
- operator!=(const multiset<_Key, _Compare, _Allocator>& __lhs,
- const multiset<_Key, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() != __rhs._M_base(); }
-
- template<typename _Key, typename _Compare, typename _Allocator>
- inline bool
- operator<(const multiset<_Key, _Compare, _Allocator>& __lhs,
- const multiset<_Key, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() < __rhs._M_base(); }
-
- template<typename _Key, typename _Compare, typename _Allocator>
- inline bool
- operator<=(const multiset<_Key, _Compare, _Allocator>& __lhs,
- const multiset<_Key, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() <= __rhs._M_base(); }
-
- template<typename _Key, typename _Compare, typename _Allocator>
- inline bool
- operator>=(const multiset<_Key, _Compare, _Allocator>& __lhs,
- const multiset<_Key, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() >= __rhs._M_base(); }
-
- template<typename _Key, typename _Compare, typename _Allocator>
- inline bool
- operator>(const multiset<_Key, _Compare, _Allocator>& __lhs,
- const multiset<_Key, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() > __rhs._M_base(); }
-
- template<typename _Key, typename _Compare, typename _Allocator>
- void
- swap(multiset<_Key, _Compare, _Allocator>& __x,
- multiset<_Key, _Compare, _Allocator>& __y)
- { return __x.swap(__y); }
-
-} // namespace __debug
-} // namespace std
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/safe_base.h b/gcc-4.8.1/libstdc++-v3/include/debug/safe_base.h
deleted file mode 100644
index 31af747af..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/safe_base.h
+++ /dev/null
@@ -1,254 +0,0 @@
-// Safe sequence/iterator base implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/safe_base.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_SAFE_BASE_H
-#define _GLIBCXX_DEBUG_SAFE_BASE_H 1
-
-#include <ext/concurrence.h>
-
-namespace __gnu_debug
-{
- class _Safe_sequence_base;
-
- /** \brief Basic functionality for a @a safe iterator.
- *
- * The %_Safe_iterator_base base class implements the functionality
- * of a safe iterator that is not specific to a particular iterator
- * type. It contains a pointer back to the sequence it references
- * along with iterator version information and pointers to form a
- * doubly-linked list of iterators referenced by the container.
- *
- * This class must not perform any operations that can throw an
- * exception, or the exception guarantees of derived iterators will
- * be broken.
- */
- class _Safe_iterator_base
- {
- public:
- /** The sequence this iterator references; may be NULL to indicate
- a singular iterator. */
- _Safe_sequence_base* _M_sequence;
-
- /** The version number of this iterator. The sentinel value 0 is
- * used to indicate an invalidated iterator (i.e., one that is
- * singular because of an operation on the container). This
- * version number must equal the version number in the sequence
- * referenced by _M_sequence for the iterator to be
- * non-singular.
- */
- unsigned int _M_version;
-
- /** Pointer to the previous iterator in the sequence's list of
- iterators. Only valid when _M_sequence != NULL. */
- _Safe_iterator_base* _M_prior;
-
- /** Pointer to the next iterator in the sequence's list of
- iterators. Only valid when _M_sequence != NULL. */
- _Safe_iterator_base* _M_next;
-
- protected:
- /** Initializes the iterator and makes it singular. */
- _Safe_iterator_base()
- : _M_sequence(0), _M_version(0), _M_prior(0), _M_next(0)
- { }
-
- /** Initialize the iterator to reference the sequence pointed to
- * by @p __seq. @p __constant is true when we are initializing a
- * constant iterator, and false if it is a mutable iterator. Note
- * that @p __seq may be NULL, in which case the iterator will be
- * singular. Otherwise, the iterator will reference @p __seq and
- * be nonsingular.
- */
- _Safe_iterator_base(const _Safe_sequence_base* __seq, bool __constant)
- : _M_sequence(0), _M_version(0), _M_prior(0), _M_next(0)
- { this->_M_attach(const_cast<_Safe_sequence_base*>(__seq), __constant); }
-
- /** Initializes the iterator to reference the same sequence that
- @p __x does. @p __constant is true if this is a constant
- iterator, and false if it is mutable. */
- _Safe_iterator_base(const _Safe_iterator_base& __x, bool __constant)
- : _M_sequence(0), _M_version(0), _M_prior(0), _M_next(0)
- { this->_M_attach(__x._M_sequence, __constant); }
-
- _Safe_iterator_base&
- operator=(const _Safe_iterator_base&);
-
- explicit
- _Safe_iterator_base(const _Safe_iterator_base&);
-
- ~_Safe_iterator_base() { this->_M_detach(); }
-
- /** For use in _Safe_iterator. */
- __gnu_cxx::__mutex& _M_get_mutex() throw ();
-
- public:
- /** Attaches this iterator to the given sequence, detaching it
- * from whatever sequence it was attached to originally. If the
- * new sequence is the NULL pointer, the iterator is left
- * unattached.
- */
- void _M_attach(_Safe_sequence_base* __seq, bool __constant);
-
- /** Likewise, but not thread-safe. */
- void _M_attach_single(_Safe_sequence_base* __seq, bool __constant) throw ();
-
- /** Detach the iterator for whatever sequence it is attached to,
- * if any.
- */
- void _M_detach();
-
- /** Likewise, but not thread-safe. */
- void _M_detach_single() throw ();
-
- /** Determines if we are attached to the given sequence. */
- bool _M_attached_to(const _Safe_sequence_base* __seq) const
- { return _M_sequence == __seq; }
-
- /** Is this iterator singular? */
- _GLIBCXX_PURE bool _M_singular() const throw ();
-
- /** Can we compare this iterator to the given iterator @p __x?
- Returns true if both iterators are nonsingular and reference
- the same sequence. */
- _GLIBCXX_PURE bool _M_can_compare(const _Safe_iterator_base& __x) const throw ();
-
- /** Invalidate the iterator, making it singular. */
- void
- _M_invalidate()
- { _M_version = 0; }
-
- /** Reset all member variables */
- void
- _M_reset() throw ();
-
- /** Unlink itself */
- void
- _M_unlink() throw ()
- {
- if (_M_prior)
- _M_prior->_M_next = _M_next;
- if (_M_next)
- _M_next->_M_prior = _M_prior;
- }
- };
-
- /**
- * @brief Base class that supports tracking of iterators that
- * reference a sequence.
- *
- * The %_Safe_sequence_base class provides basic support for
- * tracking iterators into a sequence. Sequences that track
- * iterators must derived from %_Safe_sequence_base publicly, so
- * that safe iterators (which inherit _Safe_iterator_base) can
- * attach to them. This class contains two linked lists of
- * iterators, one for constant iterators and one for mutable
- * iterators, and a version number that allows very fast
- * invalidation of all iterators that reference the container.
- *
- * This class must ensure that no operation on it may throw an
- * exception, otherwise @a safe sequences may fail to provide the
- * exception-safety guarantees required by the C++ standard.
- */
- class _Safe_sequence_base
- {
- public:
- /// The list of mutable iterators that reference this container
- _Safe_iterator_base* _M_iterators;
-
- /// The list of constant iterators that reference this container
- _Safe_iterator_base* _M_const_iterators;
-
- /// The container version number. This number may never be 0.
- mutable unsigned int _M_version;
-
- protected:
- // Initialize with a version number of 1 and no iterators
- _Safe_sequence_base()
- : _M_iterators(0), _M_const_iterators(0), _M_version(1)
- { }
-
- /** Notify all iterators that reference this sequence that the
- sequence is being destroyed. */
- ~_Safe_sequence_base()
- { this->_M_detach_all(); }
-
- /** Detach all iterators, leaving them singular. */
- void
- _M_detach_all();
-
- /** Detach all singular iterators.
- * @post for all iterators i attached to this sequence,
- * i->_M_version == _M_version.
- */
- void
- _M_detach_singular();
-
- /** Revalidates all attached singular iterators. This method may
- * be used to validate iterators that were invalidated before
- * (but for some reason, such as an exception, need to become
- * valid again).
- */
- void
- _M_revalidate_singular();
-
- /** Swap this sequence with the given sequence. This operation
- * also swaps ownership of the iterators, so that when the
- * operation is complete all iterators that originally referenced
- * one container now reference the other container.
- */
- void
- _M_swap(_Safe_sequence_base& __x);
-
- /** For use in _Safe_sequence. */
- __gnu_cxx::__mutex& _M_get_mutex() throw ();
-
- public:
- /** Invalidates all iterators. */
- void
- _M_invalidate_all() const
- { if (++_M_version == 0) _M_version = 1; }
-
- /** Attach an iterator to this sequence. */
- void
- _M_attach(_Safe_iterator_base* __it, bool __constant);
-
- /** Likewise but not thread safe. */
- void
- _M_attach_single(_Safe_iterator_base* __it, bool __constant) throw ();
-
- /** Detach an iterator from this sequence */
- void
- _M_detach(_Safe_iterator_base* __it);
-
- /** Likewise but not thread safe. */
- void
- _M_detach_single(_Safe_iterator_base* __it) throw ();
- };
-} // namespace __gnu_debug
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/safe_iterator.h b/gcc-4.8.1/libstdc++-v3/include/debug/safe_iterator.h
deleted file mode 100644
index b8a971b80..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/safe_iterator.h
+++ /dev/null
@@ -1,719 +0,0 @@
-// Safe iterator implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/safe_iterator.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_SAFE_ITERATOR_H
-#define _GLIBCXX_DEBUG_SAFE_ITERATOR_H 1
-
-#include <debug/debug.h>
-#include <debug/macros.h>
-#include <debug/functions.h>
-#include <debug/safe_base.h>
-#include <bits/stl_pair.h>
-#include <ext/type_traits.h>
-
-namespace __gnu_debug
-{
- /** Helper struct to deal with sequence offering a before_begin
- * iterator.
- **/
- template <typename _Sequence>
- struct _BeforeBeginHelper
- {
- typedef typename _Sequence::const_iterator _It;
- typedef typename _It::iterator_type _BaseIt;
-
- static bool
- _S_Is(_BaseIt, const _Sequence*)
- { return false; }
-
- static bool
- _S_Is_Beginnest(_BaseIt __it, const _Sequence* __seq)
- { return __it == __seq->_M_base().begin(); }
- };
-
- /** Iterators that derive from _Safe_iterator_base but that aren't
- * _Safe_iterators can be determined singular or non-singular via
- * _Safe_iterator_base.
- */
- inline bool
- __check_singular_aux(const _Safe_iterator_base* __x)
- { return __x->_M_singular(); }
-
- /** The precision to which we can calculate the distance between
- * two iterators.
- */
- enum _Distance_precision
- {
- __dp_equality, //< Can compare iterator equality, only
- __dp_sign, //< Can determine equality and ordering
- __dp_exact //< Can determine distance precisely
- };
-
- /** Determine the distance between two iterators with some known
- * precision.
- */
- template<typename _Iterator1, typename _Iterator2>
- inline std::pair<typename std::iterator_traits<_Iterator1>::difference_type,
- _Distance_precision>
- __get_distance(const _Iterator1& __lhs, const _Iterator2& __rhs,
- std::random_access_iterator_tag)
- { return std::make_pair(__rhs - __lhs, __dp_exact); }
-
- template<typename _Iterator1, typename _Iterator2>
- inline std::pair<typename std::iterator_traits<_Iterator1>::difference_type,
- _Distance_precision>
- __get_distance(const _Iterator1& __lhs, const _Iterator2& __rhs,
- std::forward_iterator_tag)
- { return std::make_pair(__lhs == __rhs? 0 : 1, __dp_equality); }
-
- template<typename _Iterator1, typename _Iterator2>
- inline std::pair<typename std::iterator_traits<_Iterator1>::difference_type,
- _Distance_precision>
- __get_distance(const _Iterator1& __lhs, const _Iterator2& __rhs)
- {
- typedef typename std::iterator_traits<_Iterator1>::iterator_category
- _Category;
- return __get_distance(__lhs, __rhs, _Category());
- }
-
- /** \brief Safe iterator wrapper.
- *
- * The class template %_Safe_iterator is a wrapper around an
- * iterator that tracks the iterator's movement among sequences and
- * checks that operations performed on the "safe" iterator are
- * legal. In additional to the basic iterator operations (which are
- * validated, and then passed to the underlying iterator),
- * %_Safe_iterator has member functions for iterator invalidation,
- * attaching/detaching the iterator from sequences, and querying
- * the iterator's state.
- */
- template<typename _Iterator, typename _Sequence>
- class _Safe_iterator : public _Safe_iterator_base
- {
- typedef _Safe_iterator _Self;
-
- /// The underlying iterator
- _Iterator _M_current;
-
- /// Determine if this is a constant iterator.
- bool
- _M_constant() const
- {
- typedef typename _Sequence::const_iterator const_iterator;
- return std::__are_same<const_iterator, _Safe_iterator>::__value;
- }
-
- typedef std::iterator_traits<_Iterator> _Traits;
-
- public:
- typedef _Iterator iterator_type;
- typedef typename _Traits::iterator_category iterator_category;
- typedef typename _Traits::value_type value_type;
- typedef typename _Traits::difference_type difference_type;
- typedef typename _Traits::reference reference;
- typedef typename _Traits::pointer pointer;
-
- /// @post the iterator is singular and unattached
- _Safe_iterator() : _M_current() { }
-
- /**
- * @brief Safe iterator construction from an unsafe iterator and
- * its sequence.
- *
- * @pre @p seq is not NULL
- * @post this is not singular
- */
- _Safe_iterator(const _Iterator& __i, const _Sequence* __seq)
- : _Safe_iterator_base(__seq, _M_constant()), _M_current(__i)
- {
- _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
- _M_message(__msg_init_singular)
- ._M_iterator(*this, "this"));
- }
-
- /**
- * @brief Copy construction.
- */
- _Safe_iterator(const _Safe_iterator& __x)
- : _Safe_iterator_base(__x, _M_constant()), _M_current(__x._M_current)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // DR 408. Is vector<reverse_iterator<char*> > forbidden?
- _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
- || __x._M_current == _Iterator(),
- _M_message(__msg_init_copy_singular)
- ._M_iterator(*this, "this")
- ._M_iterator(__x, "other"));
- }
-
-#if __cplusplus >= 201103L
- /**
- * @brief Move construction.
- * @post __x is singular and unattached
- */
- _Safe_iterator(_Safe_iterator&& __x) : _M_current()
- {
- _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
- || __x._M_current == _Iterator(),
- _M_message(__msg_init_copy_singular)
- ._M_iterator(*this, "this")
- ._M_iterator(__x, "other"));
- std::swap(_M_current, __x._M_current);
- this->_M_attach(__x._M_sequence);
- __x._M_detach();
- }
-#endif
-
- /**
- * @brief Converting constructor from a mutable iterator to a
- * constant iterator.
- */
- template<typename _MutableIterator>
- _Safe_iterator(
- const _Safe_iterator<_MutableIterator,
- typename __gnu_cxx::__enable_if<(std::__are_same<_MutableIterator,
- typename _Sequence::iterator::iterator_type>::__value),
- _Sequence>::__type>& __x)
- : _Safe_iterator_base(__x, _M_constant()), _M_current(__x.base())
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // DR 408. Is vector<reverse_iterator<char*> > forbidden?
- _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
- || __x.base() == _Iterator(),
- _M_message(__msg_init_const_singular)
- ._M_iterator(*this, "this")
- ._M_iterator(__x, "other"));
- }
-
- /**
- * @brief Copy assignment.
- */
- _Safe_iterator&
- operator=(const _Safe_iterator& __x)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // DR 408. Is vector<reverse_iterator<char*> > forbidden?
- _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
- || __x._M_current == _Iterator(),
- _M_message(__msg_copy_singular)
- ._M_iterator(*this, "this")
- ._M_iterator(__x, "other"));
- _M_current = __x._M_current;
- this->_M_attach(__x._M_sequence);
- return *this;
- }
-
-#if __cplusplus >= 201103L
- /**
- * @brief Move assignment.
- * @post __x is singular and unattached
- */
- _Safe_iterator&
- operator=(_Safe_iterator&& __x)
- {
- _GLIBCXX_DEBUG_VERIFY(this != &__x,
- _M_message(__msg_self_move_assign)
- ._M_iterator(*this, "this"));
- _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
- || __x._M_current == _Iterator(),
- _M_message(__msg_copy_singular)
- ._M_iterator(*this, "this")
- ._M_iterator(__x, "other"));
- _M_current = __x._M_current;
- _M_attach(__x._M_sequence);
- __x._M_detach();
- __x._M_current = _Iterator();
- return *this;
- }
-#endif
-
- /**
- * @brief Iterator dereference.
- * @pre iterator is dereferenceable
- */
- reference
- operator*() const
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_dereferenceable(),
- _M_message(__msg_bad_deref)
- ._M_iterator(*this, "this"));
- return *_M_current;
- }
-
- /**
- * @brief Iterator dereference.
- * @pre iterator is dereferenceable
- * @todo Make this correct w.r.t. iterators that return proxies
- * @todo Use addressof() instead of & operator
- */
- pointer
- operator->() const
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_dereferenceable(),
- _M_message(__msg_bad_deref)
- ._M_iterator(*this, "this"));
- return &*_M_current;
- }
-
- // ------ Input iterator requirements ------
- /**
- * @brief Iterator preincrement
- * @pre iterator is incrementable
- */
- _Safe_iterator&
- operator++()
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(),
- _M_message(__msg_bad_inc)
- ._M_iterator(*this, "this"));
- ++_M_current;
- return *this;
- }
-
- /**
- * @brief Iterator postincrement
- * @pre iterator is incrementable
- */
- _Safe_iterator
- operator++(int)
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(),
- _M_message(__msg_bad_inc)
- ._M_iterator(*this, "this"));
- _Safe_iterator __tmp(*this);
- ++_M_current;
- return __tmp;
- }
-
- // ------ Bidirectional iterator requirements ------
- /**
- * @brief Iterator predecrement
- * @pre iterator is decrementable
- */
- _Safe_iterator&
- operator--()
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_decrementable(),
- _M_message(__msg_bad_dec)
- ._M_iterator(*this, "this"));
- --_M_current;
- return *this;
- }
-
- /**
- * @brief Iterator postdecrement
- * @pre iterator is decrementable
- */
- _Safe_iterator
- operator--(int)
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_decrementable(),
- _M_message(__msg_bad_dec)
- ._M_iterator(*this, "this"));
- _Safe_iterator __tmp(*this);
- --_M_current;
- return __tmp;
- }
-
- // ------ Random access iterator requirements ------
- reference
- operator[](const difference_type& __n) const
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_can_advance(__n)
- && this->_M_can_advance(__n+1),
- _M_message(__msg_iter_subscript_oob)
- ._M_iterator(*this)._M_integer(__n));
-
- return _M_current[__n];
- }
-
- _Safe_iterator&
- operator+=(const difference_type& __n)
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_can_advance(__n),
- _M_message(__msg_advance_oob)
- ._M_iterator(*this)._M_integer(__n));
- _M_current += __n;
- return *this;
- }
-
- _Safe_iterator
- operator+(const difference_type& __n) const
- {
- _Safe_iterator __tmp(*this);
- __tmp += __n;
- return __tmp;
- }
-
- _Safe_iterator&
- operator-=(const difference_type& __n)
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_can_advance(-__n),
- _M_message(__msg_retreat_oob)
- ._M_iterator(*this)._M_integer(__n));
- _M_current += -__n;
- return *this;
- }
-
- _Safe_iterator
- operator-(const difference_type& __n) const
- {
- _Safe_iterator __tmp(*this);
- __tmp -= __n;
- return __tmp;
- }
-
- // ------ Utilities ------
- /**
- * @brief Return the underlying iterator
- */
- _Iterator
- base() const { return _M_current; }
-
- /**
- * @brief Conversion to underlying non-debug iterator to allow
- * better interaction with non-debug containers.
- */
- operator _Iterator() const { return _M_current; }
-
- /** Attach iterator to the given sequence. */
- void
- _M_attach(_Safe_sequence_base* __seq)
- {
- _Safe_iterator_base::_M_attach(__seq, _M_constant());
- }
-
- /** Likewise, but not thread-safe. */
- void
- _M_attach_single(_Safe_sequence_base* __seq)
- {
- _Safe_iterator_base::_M_attach_single(__seq, _M_constant());
- }
-
- /// Is the iterator dereferenceable?
- bool
- _M_dereferenceable() const
- { return !this->_M_singular() && !_M_is_end() && !_M_is_before_begin(); }
-
- /// Is the iterator before a dereferenceable one?
- bool
- _M_before_dereferenceable() const
- {
- if (this->_M_incrementable())
- {
- _Iterator __base = base();
- return ++__base != _M_get_sequence()->_M_base().end();
- }
- return false;
- }
-
- /// Is the iterator incrementable?
- bool
- _M_incrementable() const
- { return !this->_M_singular() && !_M_is_end(); }
-
- // Is the iterator decrementable?
- bool
- _M_decrementable() const { return !_M_singular() && !_M_is_begin(); }
-
- // Can we advance the iterator @p __n steps (@p __n may be negative)
- bool
- _M_can_advance(const difference_type& __n) const;
-
- // Is the iterator range [*this, __rhs) valid?
- template<typename _Other>
- bool
- _M_valid_range(const _Safe_iterator<_Other, _Sequence>& __rhs) const;
-
- // The sequence this iterator references.
- const _Sequence*
- _M_get_sequence() const
- { return static_cast<const _Sequence*>(_M_sequence); }
-
- /// Is this iterator equal to the sequence's begin() iterator?
- bool _M_is_begin() const
- { return base() == _M_get_sequence()->_M_base().begin(); }
-
- /// Is this iterator equal to the sequence's end() iterator?
- bool _M_is_end() const
- { return base() == _M_get_sequence()->_M_base().end(); }
-
- /// Is this iterator equal to the sequence's before_begin() iterator if
- /// any?
- bool _M_is_before_begin() const
- {
- return _BeforeBeginHelper<_Sequence>::_S_Is(base(), _M_get_sequence());
- }
-
- /// Is this iterator equal to the sequence's before_begin() iterator if
- /// any or begin() otherwise?
- bool _M_is_beginnest() const
- {
- return _BeforeBeginHelper<_Sequence>::_S_Is_Beginnest(base(),
- _M_get_sequence());
- }
- };
-
- template<typename _IteratorL, typename _IteratorR, typename _Sequence>
- inline bool
- operator==(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
- const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_compare_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_compare_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() == __rhs.base();
- }
-
- template<typename _Iterator, typename _Sequence>
- inline bool
- operator==(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
- const _Safe_iterator<_Iterator, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_compare_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_compare_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() == __rhs.base();
- }
-
- template<typename _IteratorL, typename _IteratorR, typename _Sequence>
- inline bool
- operator!=(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
- const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_compare_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_compare_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() != __rhs.base();
- }
-
- template<typename _Iterator, typename _Sequence>
- inline bool
- operator!=(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
- const _Safe_iterator<_Iterator, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_compare_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_compare_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() != __rhs.base();
- }
-
- template<typename _IteratorL, typename _IteratorR, typename _Sequence>
- inline bool
- operator<(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
- const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_order_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_order_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() < __rhs.base();
- }
-
- template<typename _Iterator, typename _Sequence>
- inline bool
- operator<(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
- const _Safe_iterator<_Iterator, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_order_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_order_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() < __rhs.base();
- }
-
- template<typename _IteratorL, typename _IteratorR, typename _Sequence>
- inline bool
- operator<=(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
- const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_order_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_order_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() <= __rhs.base();
- }
-
- template<typename _Iterator, typename _Sequence>
- inline bool
- operator<=(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
- const _Safe_iterator<_Iterator, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_order_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_order_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() <= __rhs.base();
- }
-
- template<typename _IteratorL, typename _IteratorR, typename _Sequence>
- inline bool
- operator>(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
- const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_order_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_order_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() > __rhs.base();
- }
-
- template<typename _Iterator, typename _Sequence>
- inline bool
- operator>(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
- const _Safe_iterator<_Iterator, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_order_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_order_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() > __rhs.base();
- }
-
- template<typename _IteratorL, typename _IteratorR, typename _Sequence>
- inline bool
- operator>=(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
- const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_order_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_order_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() >= __rhs.base();
- }
-
- template<typename _Iterator, typename _Sequence>
- inline bool
- operator>=(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
- const _Safe_iterator<_Iterator, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_order_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_order_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() >= __rhs.base();
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // According to the resolution of DR179 not only the various comparison
- // operators but also operator- must accept mixed iterator/const_iterator
- // parameters.
- template<typename _IteratorL, typename _IteratorR, typename _Sequence>
- inline typename _Safe_iterator<_IteratorL, _Sequence>::difference_type
- operator-(const _Safe_iterator<_IteratorL, _Sequence>& __lhs,
- const _Safe_iterator<_IteratorR, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_distance_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_distance_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() - __rhs.base();
- }
-
- template<typename _Iterator, typename _Sequence>
- inline typename _Safe_iterator<_Iterator, _Sequence>::difference_type
- operator-(const _Safe_iterator<_Iterator, _Sequence>& __lhs,
- const _Safe_iterator<_Iterator, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_distance_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_distance_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() - __rhs.base();
- }
-
- template<typename _Iterator, typename _Sequence>
- inline _Safe_iterator<_Iterator, _Sequence>
- operator+(typename _Safe_iterator<_Iterator,_Sequence>::difference_type __n,
- const _Safe_iterator<_Iterator, _Sequence>& __i)
- { return __i + __n; }
-} // namespace __gnu_debug
-
-#include <debug/safe_iterator.tcc>
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/safe_iterator.tcc b/gcc-4.8.1/libstdc++-v3/include/debug/safe_iterator.tcc
deleted file mode 100644
index daa9c6bfa..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/safe_iterator.tcc
+++ /dev/null
@@ -1,106 +0,0 @@
-// Debugging iterator implementation (out of line) -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/safe_iterator.tcc
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_SAFE_ITERATOR_TCC
-#define _GLIBCXX_DEBUG_SAFE_ITERATOR_TCC 1
-
-namespace __gnu_debug
-{
- template<typename _Iterator, typename _Sequence>
- bool
- _Safe_iterator<_Iterator, _Sequence>::
- _M_can_advance(const difference_type& __n) const
- {
- typedef typename _Sequence::const_iterator const_debug_iterator;
- typedef typename const_debug_iterator::iterator_type const_iterator;
-
- if (this->_M_singular())
- return false;
- if (__n == 0)
- return true;
- if (__n < 0)
- {
- const_iterator __begin = _M_get_sequence()->_M_base().begin();
- std::pair<difference_type, _Distance_precision> __dist =
- __get_distance(__begin, base());
- bool __ok = ((__dist.second == __dp_exact && __dist.first >= -__n)
- || (__dist.second != __dp_exact && __dist.first > 0));
- return __ok;
- }
- else
- {
- const_iterator __end = _M_get_sequence()->_M_base().end();
- std::pair<difference_type, _Distance_precision> __dist =
- __get_distance(base(), __end);
- bool __ok = ((__dist.second == __dp_exact && __dist.first >= __n)
- || (__dist.second != __dp_exact && __dist.first > 0));
- return __ok;
- }
- }
-
- template<typename _Iterator, typename _Sequence>
- template<typename _Other>
- bool
- _Safe_iterator<_Iterator, _Sequence>::
- _M_valid_range(const _Safe_iterator<_Other, _Sequence>& __rhs) const
- {
- if (!_M_can_compare(__rhs))
- return false;
-
- /* Determine if we can order the iterators without the help of
- the container */
- std::pair<difference_type, _Distance_precision> __dist =
- __get_distance(base(), __rhs.base());
- switch (__dist.second) {
- case __dp_equality:
- if (__dist.first == 0)
- return true;
- break;
-
- case __dp_sign:
- case __dp_exact:
- return __dist.first >= 0;
- }
-
- /* We can only test for equality, but check if one of the
- iterators is at an extreme. */
- /* Optim for classic [begin, it) or [it, end) ranges, limit checks
- * when code is valid. Note, for the special case of forward_list,
- * before_begin replaces the role of begin. */
- if (_M_is_beginnest() || __rhs._M_is_end())
- return true;
- if (_M_is_end() || __rhs._M_is_beginnest())
- return false;
-
- // Assume that this is a valid range; we can't check anything else
- return true;
- }
-} // namespace __gnu_debug
-
-#endif
-
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/safe_local_iterator.h b/gcc-4.8.1/libstdc++-v3/include/debug/safe_local_iterator.h
deleted file mode 100644
index 6426ed82a..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/safe_local_iterator.h
+++ /dev/null
@@ -1,369 +0,0 @@
-// Safe iterator implementation -*- C++ -*-
-
-// Copyright (C) 2011-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/safe_local_iterator.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_SAFE_LOCAL_ITERATOR_H
-#define _GLIBCXX_DEBUG_SAFE_LOCAL_ITERATOR_H 1
-
-#include <debug/debug.h>
-#include <debug/macros.h>
-#include <debug/functions.h>
-#include <debug/safe_unordered_base.h>
-#include <ext/type_traits.h>
-
-namespace __gnu_debug
-{
- /** \brief Safe iterator wrapper.
- *
- * The class template %_Safe_local_iterator is a wrapper around an
- * iterator that tracks the iterator's movement among sequences and
- * checks that operations performed on the "safe" iterator are
- * legal. In additional to the basic iterator operations (which are
- * validated, and then passed to the underlying iterator),
- * %_Safe_local_iterator has member functions for iterator invalidation,
- * attaching/detaching the iterator from sequences, and querying
- * the iterator's state.
- */
- template<typename _Iterator, typename _Sequence>
- class _Safe_local_iterator : public _Safe_local_iterator_base
- {
- typedef _Safe_local_iterator _Self;
- typedef typename _Sequence::size_type size_type;
-
- /// The underlying iterator
- _Iterator _M_current;
-
- /// The bucket this local iterator belongs to
- size_type _M_bucket;
-
- /// Determine if this is a constant iterator.
- bool
- _M_constant() const
- {
- typedef typename _Sequence::const_local_iterator const_iterator;
- return std::__are_same<const_iterator, _Safe_local_iterator>::__value;
- }
-
- typedef std::iterator_traits<_Iterator> _Traits;
-
- public:
- typedef _Iterator iterator_type;
- typedef typename _Traits::iterator_category iterator_category;
- typedef typename _Traits::value_type value_type;
- typedef typename _Traits::difference_type difference_type;
- typedef typename _Traits::reference reference;
- typedef typename _Traits::pointer pointer;
-
- /// @post the iterator is singular and unattached
- _Safe_local_iterator() : _M_current() { }
-
- /**
- * @brief Safe iterator construction from an unsafe iterator and
- * its sequence.
- *
- * @pre @p seq is not NULL
- * @post this is not singular
- */
- _Safe_local_iterator(const _Iterator& __i, size_type __bucket,
- const _Sequence* __seq)
- : _Safe_local_iterator_base(__seq, _M_constant()), _M_current(__i),
- _M_bucket(__bucket)
- {
- _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(),
- _M_message(__msg_init_singular)
- ._M_iterator(*this, "this"));
- }
-
- /**
- * @brief Copy construction.
- */
- _Safe_local_iterator(const _Safe_local_iterator& __x)
- : _Safe_local_iterator_base(__x, _M_constant()),
- _M_current(__x._M_current), _M_bucket(__x._M_bucket)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // DR 408. Is vector<reverse_iterator<char*> > forbidden?
- _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
- || __x._M_current == _Iterator(),
- _M_message(__msg_init_copy_singular)
- ._M_iterator(*this, "this")
- ._M_iterator(__x, "other"));
- }
-
- /**
- * @brief Converting constructor from a mutable iterator to a
- * constant iterator.
- */
- template<typename _MutableIterator>
- _Safe_local_iterator(
- const _Safe_local_iterator<_MutableIterator,
- typename __gnu_cxx::__enable_if<std::__are_same<
- _MutableIterator,
- typename _Sequence::local_iterator::iterator_type>::__value,
- _Sequence>::__type>& __x)
- : _Safe_local_iterator_base(__x, _M_constant()),
- _M_current(__x.base()), _M_bucket(__x._M_bucket)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // DR 408. Is vector<reverse_iterator<char*> > forbidden?
- _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
- || __x.base() == _Iterator(),
- _M_message(__msg_init_const_singular)
- ._M_iterator(*this, "this")
- ._M_iterator(__x, "other"));
- }
-
- /**
- * @brief Copy assignment.
- */
- _Safe_local_iterator&
- operator=(const _Safe_local_iterator& __x)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // DR 408. Is vector<reverse_iterator<char*> > forbidden?
- _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
- || __x._M_current == _Iterator(),
- _M_message(__msg_copy_singular)
- ._M_iterator(*this, "this")
- ._M_iterator(__x, "other"));
- _M_current = __x._M_current;
- _M_bucket = __x._M_bucket;
- this->_M_attach(__x._M_sequence);
- return *this;
- }
-
- /**
- * @brief Iterator dereference.
- * @pre iterator is dereferenceable
- */
- reference
- operator*() const
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_dereferenceable(),
- _M_message(__msg_bad_deref)
- ._M_iterator(*this, "this"));
- return *_M_current;
- }
-
- /**
- * @brief Iterator dereference.
- * @pre iterator is dereferenceable
- * @todo Make this correct w.r.t. iterators that return proxies
- * @todo Use addressof() instead of & operator
- */
- pointer
- operator->() const
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_dereferenceable(),
- _M_message(__msg_bad_deref)
- ._M_iterator(*this, "this"));
- return &*_M_current;
- }
-
- // ------ Input iterator requirements ------
- /**
- * @brief Iterator preincrement
- * @pre iterator is incrementable
- */
- _Safe_local_iterator&
- operator++()
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(),
- _M_message(__msg_bad_inc)
- ._M_iterator(*this, "this"));
- ++_M_current;
- return *this;
- }
-
- /**
- * @brief Iterator postincrement
- * @pre iterator is incrementable
- */
- _Safe_local_iterator
- operator++(int)
- {
- _GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(),
- _M_message(__msg_bad_inc)
- ._M_iterator(*this, "this"));
- _Safe_local_iterator __tmp(*this);
- ++_M_current;
- return __tmp;
- }
-
- // ------ Utilities ------
- /**
- * @brief Return the underlying iterator
- */
- _Iterator
- base() const { return _M_current; }
-
- /**
- * @brief Return the bucket
- */
- size_type
- bucket() const { return _M_bucket; }
-
- /**
- * @brief Conversion to underlying non-debug iterator to allow
- * better interaction with non-debug containers.
- */
- operator _Iterator() const { return _M_current; }
-
- /** Attach iterator to the given sequence. */
- void
- _M_attach(_Safe_sequence_base* __seq)
- { _Safe_iterator_base::_M_attach(__seq, _M_constant()); }
-
- /** Likewise, but not thread-safe. */
- void
- _M_attach_single(_Safe_sequence_base* __seq)
- { _Safe_iterator_base::_M_attach_single(__seq, _M_constant()); }
-
- /// Is the iterator dereferenceable?
- bool
- _M_dereferenceable() const
- { return !this->_M_singular() && !_M_is_end(); }
-
- /// Is the iterator incrementable?
- bool
- _M_incrementable() const
- { return !this->_M_singular() && !_M_is_end(); }
-
- // Is the iterator range [*this, __rhs) valid?
- template<typename _Other>
- bool
- _M_valid_range(const _Safe_local_iterator<_Other,
- _Sequence>& __rhs) const;
-
- // The sequence this iterator references.
- const _Sequence*
- _M_get_sequence() const
- { return static_cast<const _Sequence*>(_M_sequence); }
-
- /// Is this iterator equal to the sequence's begin() iterator?
- bool _M_is_begin() const
- { return base() == _M_get_sequence()->_M_base().begin(_M_bucket); }
-
- /// Is this iterator equal to the sequence's end() iterator?
- bool _M_is_end() const
- { return base() == _M_get_sequence()->_M_base().end(_M_bucket); }
-
- /// Is this iterator part of the same bucket as the other one?
- template <typename _Other>
- bool _M_in_same_bucket(const _Safe_local_iterator<_Other,
- _Sequence>& __other) const
- { return _M_bucket == __other.bucket(); }
- };
-
- template<typename _IteratorL, typename _IteratorR, typename _Sequence>
- inline bool
- operator==(const _Safe_local_iterator<_IteratorL, _Sequence>& __lhs,
- const _Safe_local_iterator<_IteratorR, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_compare_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_compare_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_compare_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_in_same_bucket(__rhs),
- _M_message(__msg_local_iter_compare_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() == __rhs.base();
- }
-
- template<typename _Iterator, typename _Sequence>
- inline bool
- operator==(const _Safe_local_iterator<_Iterator, _Sequence>& __lhs,
- const _Safe_local_iterator<_Iterator, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_compare_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_compare_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_in_same_bucket(__rhs),
- _M_message(__msg_local_iter_compare_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() == __rhs.base();
- }
-
- template<typename _IteratorL, typename _IteratorR, typename _Sequence>
- inline bool
- operator!=(const _Safe_local_iterator<_IteratorL, _Sequence>& __lhs,
- const _Safe_local_iterator<_IteratorR, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_compare_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_compare_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_in_same_bucket(__rhs),
- _M_message(__msg_local_iter_compare_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() != __rhs.base();
- }
-
- template<typename _Iterator, typename _Sequence>
- inline bool
- operator!=(const _Safe_local_iterator<_Iterator, _Sequence>& __lhs,
- const _Safe_local_iterator<_Iterator, _Sequence>& __rhs)
- {
- _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
- _M_message(__msg_iter_compare_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs),
- _M_message(__msg_compare_different)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- _GLIBCXX_DEBUG_VERIFY(__lhs._M_in_same_bucket(__rhs),
- _M_message(__msg_local_iter_compare_bad)
- ._M_iterator(__lhs, "lhs")
- ._M_iterator(__rhs, "rhs"));
- return __lhs.base() != __rhs.base();
- }
-} // namespace __gnu_debug
-
-#include <debug/safe_local_iterator.tcc>
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/safe_local_iterator.tcc b/gcc-4.8.1/libstdc++-v3/include/debug/safe_local_iterator.tcc
deleted file mode 100644
index fac971ec8..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/safe_local_iterator.tcc
+++ /dev/null
@@ -1,75 +0,0 @@
-// Debugging iterator implementation (out of line) -*- C++ -*-
-
-// Copyright (C) 2011-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/safe_local_iterator.tcc
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_SAFE_LOCAL_ITERATOR_TCC
-#define _GLIBCXX_DEBUG_SAFE_LOCAL_ITERATOR_TCC 1
-
-namespace __gnu_debug
-{
- template<typename _Iterator, typename _Sequence>
- template<typename _Other>
- bool
- _Safe_local_iterator<_Iterator, _Sequence>::
- _M_valid_range(const _Safe_local_iterator<_Other, _Sequence>& __rhs) const
- {
- if (!_M_can_compare(__rhs))
- return false;
- if (_M_bucket != __rhs._M_bucket)
- return false;
-
- /* Determine if we can order the iterators without the help of
- the container */
- std::pair<difference_type, _Distance_precision> __dist =
- __get_distance(base(), __rhs.base());
- switch (__dist.second)
- {
- case __dp_equality:
- if (__dist.first == 0)
- return true;
- break;
-
- case __dp_sign:
- case __dp_exact:
- return __dist.first >= 0;
- }
-
- /* We can only test for equality, but check if one of the
- iterators is at an extreme. */
- /* Optim for classic [begin, it) or [it, end) ranges, limit checks
- * when code is valid. */
- if (_M_is_begin() || __rhs._M_is_end())
- return true;
- if (_M_is_end() || __rhs._M_is_begin())
- return false;
-
- // Assume that this is a valid range; we can't check anything else
- return true;
- }
-} // namespace __gnu_debug
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/safe_sequence.h b/gcc-4.8.1/libstdc++-v3/include/debug/safe_sequence.h
deleted file mode 100644
index b457ede43..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/safe_sequence.h
+++ /dev/null
@@ -1,134 +0,0 @@
-// Safe sequence implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/safe_sequence.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_SAFE_SEQUENCE_H
-#define _GLIBCXX_DEBUG_SAFE_SEQUENCE_H 1
-
-#include <debug/debug.h>
-#include <debug/macros.h>
-#include <debug/functions.h>
-#include <debug/safe_base.h>
-
-namespace __gnu_debug
-{
- template<typename _Iterator, typename _Sequence>
- class _Safe_iterator;
-
- /** A simple function object that returns true if the passed-in
- * value is not equal to the stored value. It saves typing over
- * using both bind1st and not_equal.
- */
- template<typename _Type>
- class _Not_equal_to
- {
- _Type __value;
-
- public:
- explicit _Not_equal_to(const _Type& __v) : __value(__v) { }
-
- bool
- operator()(const _Type& __x) const
- { return __value != __x; }
- };
-
- /** A simple function object that returns true if the passed-in
- * value is equal to the stored value. */
- template <typename _Type>
- class _Equal_to
- {
- _Type __value;
-
- public:
- explicit _Equal_to(const _Type& __v) : __value(__v) { }
-
- bool
- operator()(const _Type& __x) const
- { return __value == __x; }
- };
-
- /** A function object that returns true when the given random access
- iterator is at least @c n steps away from the given iterator. */
- template<typename _Iterator>
- class _After_nth_from
- {
- typedef typename std::iterator_traits<_Iterator>::difference_type
- difference_type;
-
- _Iterator _M_base;
- difference_type _M_n;
-
- public:
- _After_nth_from(const difference_type& __n, const _Iterator& __base)
- : _M_base(__base), _M_n(__n) { }
-
- bool
- operator()(const _Iterator& __x) const
- { return __x - _M_base >= _M_n; }
- };
-
- /**
- * @brief Base class for constructing a @a safe sequence type that
- * tracks iterators that reference it.
- *
- * The class template %_Safe_sequence simplifies the construction of
- * @a safe sequences that track the iterators that reference the
- * sequence, so that the iterators are notified of changes in the
- * sequence that may affect their operation, e.g., if the container
- * invalidates its iterators or is destructed. This class template
- * may only be used by deriving from it and passing the name of the
- * derived class as its template parameter via the curiously
- * recurring template pattern. The derived class must have @c
- * iterator and @c const_iterator types that are instantiations of
- * class template _Safe_iterator for this sequence. Iterators will
- * then be tracked automatically.
- */
- template<typename _Sequence>
- class _Safe_sequence : public _Safe_sequence_base
- {
- public:
- /** Invalidates all iterators @c x that reference this sequence,
- are not singular, and for which @c __pred(x) returns @c
- true. @c __pred will be invoked with the normal iterators nested
- in the safe ones. */
- template<typename _Predicate>
- void
- _M_invalidate_if(_Predicate __pred);
-
- /** Transfers all iterators @c x that reference @c from sequence,
- are not singular, and for which @c __pred(x) returns @c
- true. @c __pred will be invoked with the normal iterators nested
- in the safe ones. */
- template<typename _Predicate>
- void
- _M_transfer_from_if(_Safe_sequence& __from, _Predicate __pred);
- };
-} // namespace __gnu_debug
-
-#include <debug/safe_sequence.tcc>
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/safe_sequence.tcc b/gcc-4.8.1/libstdc++-v3/include/debug/safe_sequence.tcc
deleted file mode 100644
index d6f874002..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/safe_sequence.tcc
+++ /dev/null
@@ -1,150 +0,0 @@
-// Safe sequence implementation -*- C++ -*-
-
-// Copyright (C) 2010-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/safe_sequence.tcc
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_SAFE_SEQUENCE_TCC
-#define _GLIBCXX_DEBUG_SAFE_SEQUENCE_TCC 1
-
-namespace __gnu_debug
-{
- template<typename _Sequence>
- template<typename _Predicate>
- void
- _Safe_sequence<_Sequence>::
- _M_invalidate_if(_Predicate __pred)
- {
- typedef typename _Sequence::iterator iterator;
- typedef typename _Sequence::const_iterator const_iterator;
-
- __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex());
- for (_Safe_iterator_base* __iter = _M_iterators; __iter;)
- {
- iterator* __victim = static_cast<iterator*>(__iter);
- __iter = __iter->_M_next;
- if (!__victim->_M_singular() && __pred(__victim->base()))
- {
- __victim->_M_invalidate();
- }
- }
-
- for (_Safe_iterator_base* __iter2 = _M_const_iterators; __iter2;)
- {
- const_iterator* __victim = static_cast<const_iterator*>(__iter2);
- __iter2 = __iter2->_M_next;
- if (!__victim->_M_singular() && __pred(__victim->base()))
- {
- __victim->_M_invalidate();
- }
- }
- }
-
- template<typename _Sequence>
- template<typename _Predicate>
- void
- _Safe_sequence<_Sequence>::
- _M_transfer_from_if(_Safe_sequence& __from, _Predicate __pred)
- {
- typedef typename _Sequence::iterator iterator;
- typedef typename _Sequence::const_iterator const_iterator;
-
- _Safe_iterator_base* __transfered_iterators = 0;
- _Safe_iterator_base* __transfered_const_iterators = 0;
- _Safe_iterator_base* __last_iterator = 0;
- _Safe_iterator_base* __last_const_iterator = 0;
- {
- // We lock __from first and detach iterator(s) to transfer
- __gnu_cxx::__scoped_lock sentry(__from._M_get_mutex());
-
- for (_Safe_iterator_base* __iter = __from._M_iterators; __iter;)
- {
- iterator* __victim = static_cast<iterator*>(__iter);
- __iter = __iter->_M_next;
- if (!__victim->_M_singular() && __pred(__victim->base()))
- {
- __victim->_M_detach_single();
- if (__transfered_iterators)
- {
- __victim->_M_next = __transfered_iterators;
- __transfered_iterators->_M_prior = __victim;
- }
- else
- __last_iterator = __victim;
- __victim->_M_sequence = this;
- __victim->_M_version = this->_M_version;
- __transfered_iterators = __victim;
- }
- }
-
- for (_Safe_iterator_base* __iter2 = __from._M_const_iterators;
- __iter2;)
- {
- const_iterator* __victim = static_cast<const_iterator*>(__iter2);
- __iter2 = __iter2->_M_next;
- if (!__victim->_M_singular() && __pred(__victim->base()))
- {
- __victim->_M_detach_single();
- if (__transfered_const_iterators)
- {
- __victim->_M_next = __transfered_const_iterators;
- __transfered_const_iterators->_M_prior = __victim;
- }
- else
- __last_const_iterator = __victim;
- __victim->_M_sequence = this;
- __victim->_M_version = this->_M_version;
- __transfered_const_iterators = __victim;
- }
- }
- }
-
- // Now we can lock *this and add the transfered iterators if any
- if (__last_iterator || __last_const_iterator)
- {
- __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex());
- if (__last_iterator)
- {
- if (this->_M_iterators)
- {
- this->_M_iterators->_M_prior = __last_iterator;
- __last_iterator->_M_next = this->_M_iterators;
- }
- this->_M_iterators = __transfered_iterators;
- }
- if (__last_const_iterator)
- {
- if (this->_M_const_iterators)
- {
- this->_M_const_iterators->_M_prior = __last_const_iterator;
- __last_const_iterator->_M_next = this->_M_const_iterators;
- }
- this->_M_const_iterators = __transfered_const_iterators;
- }
- }
- }
-} // namespace __gnu_debug
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/safe_unordered_base.h b/gcc-4.8.1/libstdc++-v3/include/debug/safe_unordered_base.h
deleted file mode 100644
index 23026cb43..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/safe_unordered_base.h
+++ /dev/null
@@ -1,175 +0,0 @@
-// Safe container/iterator base implementation -*- C++ -*-
-
-// Copyright (C) 2011-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/safe_unordered_base.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_SAFE_UNORDERED_BASE_H
-#define _GLIBCXX_DEBUG_SAFE_UNORDERED_BASE_H 1
-
-#include <debug/safe_base.h>
-
-namespace __gnu_debug
-{
- class _Safe_unordered_container_base;
-
- /** \brief Basic functionality for a @a safe iterator.
- *
- * The %_Safe_local_iterator_base base class implements the functionality
- * of a safe local iterator that is not specific to a particular iterator
- * type. It contains a pointer back to the container it references
- * along with iterator version information and pointers to form a
- * doubly-linked list of local iterators referenced by the container.
- *
- * This class must not perform any operations that can throw an
- * exception, or the exception guarantees of derived iterators will
- * be broken.
- */
- class _Safe_local_iterator_base : public _Safe_iterator_base
- {
- protected:
- /** Initializes the iterator and makes it singular. */
- _Safe_local_iterator_base()
- { }
-
- /** Initialize the iterator to reference the container pointed to
- * by @p __seq. @p __constant is true when we are initializing a
- * constant local iterator, and false if it is a mutable local iterator.
- * Note that @p __seq may be NULL, in which case the iterator will be
- * singular. Otherwise, the iterator will reference @p __seq and
- * be nonsingular.
- */
- _Safe_local_iterator_base(const _Safe_sequence_base* __seq, bool __constant)
- { this->_M_attach(const_cast<_Safe_sequence_base*>(__seq), __constant); }
-
- /** Initializes the iterator to reference the same container that
- @p __x does. @p __constant is true if this is a constant
- iterator, and false if it is mutable. */
- _Safe_local_iterator_base(const _Safe_local_iterator_base& __x,
- bool __constant)
- { this->_M_attach(__x._M_sequence, __constant); }
-
- _Safe_local_iterator_base&
- operator=(const _Safe_local_iterator_base&);
-
- explicit
- _Safe_local_iterator_base(const _Safe_local_iterator_base&);
-
- ~_Safe_local_iterator_base() { this->_M_detach(); }
-
- _Safe_unordered_container_base*
- _M_get_container() const _GLIBCXX_NOEXCEPT;
-
- public:
- /** Attaches this iterator to the given container, detaching it
- * from whatever container it was attached to originally. If the
- * new container is the NULL pointer, the iterator is left
- * unattached.
- */
- void _M_attach(_Safe_sequence_base* __seq, bool __constant);
-
- /** Likewise, but not thread-safe. */
- void _M_attach_single(_Safe_sequence_base* __seq, bool __constant) throw ();
-
- /** Detach the iterator for whatever container it is attached to,
- * if any.
- */
- void _M_detach();
-
- /** Likewise, but not thread-safe. */
- void _M_detach_single() throw ();
- };
-
- /**
- * @brief Base class that supports tracking of local iterators that
- * reference an unordered container.
- *
- * The %_Safe_unordered_container_base class provides basic support for
- * tracking iterators into an unordered container. Containers that track
- * iterators must derived from %_Safe_unordered_container_base publicly, so
- * that safe iterators (which inherit _Safe_iterator_base) can
- * attach to them. This class contains four linked lists of
- * iterators, one for constant iterators, one for mutable
- * iterators, one for constant local iterators, one for mutable local
- * iterators and a version number that allows very fast
- * invalidation of all iterators that reference the container.
- *
- * This class must ensure that no operation on it may throw an
- * exception, otherwise @a safe containers may fail to provide the
- * exception-safety guarantees required by the C++ standard.
- */
- class _Safe_unordered_container_base : public _Safe_sequence_base
- {
- typedef _Safe_sequence_base _Base;
- public:
- /// The list of mutable local iterators that reference this container
- _Safe_iterator_base* _M_local_iterators;
-
- /// The list of constant local iterators that reference this container
- _Safe_iterator_base* _M_const_local_iterators;
-
- protected:
- // Initialize with a version number of 1 and no iterators
- _Safe_unordered_container_base()
- : _M_local_iterators(0), _M_const_local_iterators(0)
- { }
-
- /** Notify all iterators that reference this container that the
- container is being destroyed. */
- ~_Safe_unordered_container_base()
- { this->_M_detach_all(); }
-
- /** Detach all iterators, leaving them singular. */
- void
- _M_detach_all();
-
- /** Swap this container with the given container. This operation
- * also swaps ownership of the iterators, so that when the
- * operation is complete all iterators that originally referenced
- * one container now reference the other container.
- */
- void
- _M_swap(_Safe_unordered_container_base& __x);
-
- public:
- /** Attach an iterator to this container. */
- void
- _M_attach_local(_Safe_iterator_base* __it, bool __constant);
-
- /** Likewise but not thread safe. */
- void
- _M_attach_local_single(_Safe_iterator_base* __it, bool __constant) throw ();
-
- /** Detach an iterator from this container */
- void
- _M_detach_local(_Safe_iterator_base* __it);
-
- /** Likewise but not thread safe. */
- void
- _M_detach_local_single(_Safe_iterator_base* __it) throw ();
- };
-} // namespace __gnu_debug
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/safe_unordered_container.h b/gcc-4.8.1/libstdc++-v3/include/debug/safe_unordered_container.h
deleted file mode 100644
index 3934542ce..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/safe_unordered_container.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// Safe container implementation -*- C++ -*-
-
-// Copyright (C) 2011-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/safe_unordered_container.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_SAFE_UNORDERED_CONTAINER_H
-#define _GLIBCXX_DEBUG_SAFE_UNORDERED_CONTAINER_H 1
-
-#include <debug/debug.h>
-#include <debug/macros.h>
-#include <debug/functions.h>
-#include <debug/safe_unordered_base.h>
-
-namespace __gnu_debug
-{
- /**
- * @brief Base class for constructing a @a safe unordered container type
- * that tracks iterators that reference it.
- *
- * The class template %_Safe_unordered_container simplifies the
- * construction of @a safe unordered containers that track the iterators
- * that reference the container, so that the iterators are notified of
- * changes in the container that may affect their operation, e.g., if
- * the container invalidates its iterators or is destructed. This class
- * template may only be used by deriving from it and passing the name
- * of the derived class as its template parameter via the curiously
- * recurring template pattern. The derived class must have @c
- * iterator and @c const_iterator types that are instantiations of
- * class template _Safe_iterator for this container and @c local_iterator
- * and @c const_local_iterator types that are instantiations of class
- * template _Safe_local_iterator for this container. Iterators will
- * then be tracked automatically.
- */
- template<typename _Container>
- class _Safe_unordered_container : public _Safe_unordered_container_base
- {
- public:
- /** Invalidates all iterators @c x that reference this container,
- are not singular, and for which @c __pred(x) returns @c
- true. @c __pred will be invoked with the normal iterators nested
- in the safe ones. */
- template<typename _Predicate>
- void
- _M_invalidate_if(_Predicate __pred);
-
- /** Invalidates all local iterators @c x that reference this container,
- are not singular, and for which @c __pred(x) returns @c
- true. @c __pred will be invoked with the normal ilocal iterators
- nested in the safe ones. */
- template<typename _Predicate>
- void
- _M_invalidate_local_if(_Predicate __pred);
- };
-} // namespace __gnu_debug
-
-#include <debug/safe_unordered_container.tcc>
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/safe_unordered_container.tcc b/gcc-4.8.1/libstdc++-v3/include/debug/safe_unordered_container.tcc
deleted file mode 100644
index df3bcab4e..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/safe_unordered_container.tcc
+++ /dev/null
@@ -1,100 +0,0 @@
-// Safe container implementation -*- C++ -*-
-
-// Copyright (C) 2011-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/safe_unordered_container.tcc
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_SAFE_UNORDERED_CONTAINER_TCC
-#define _GLIBCXX_DEBUG_SAFE_UNORDERED_CONTAINER_TCC 1
-
-namespace __gnu_debug
-{
- template<typename _Container>
- template<typename _Predicate>
- void
- _Safe_unordered_container<_Container>::
- _M_invalidate_if(_Predicate __pred)
- {
- typedef typename _Container::iterator iterator;
- typedef typename _Container::const_iterator const_iterator;
-
- __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex());
- for (_Safe_iterator_base* __iter = _M_iterators; __iter;)
- {
- iterator* __victim = static_cast<iterator*>(__iter);
- __iter = __iter->_M_next;
- if (!__victim->_M_singular() && __pred(__victim->base()))
- {
- __victim->_M_invalidate();
- }
- }
-
- for (_Safe_iterator_base* __iter2 = _M_const_iterators; __iter2;)
- {
- const_iterator* __victim = static_cast<const_iterator*>(__iter2);
- __iter2 = __iter2->_M_next;
- if (!__victim->_M_singular() && __pred(__victim->base()))
- {
- __victim->_M_invalidate();
- }
- }
- }
-
-
- template<typename _Container>
- template<typename _Predicate>
- void
- _Safe_unordered_container<_Container>::
- _M_invalidate_local_if(_Predicate __pred)
- {
- typedef typename _Container::local_iterator local_iterator;
- typedef typename _Container::const_local_iterator const_local_iterator;
-
- __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex());
- for (_Safe_iterator_base* __iter = _M_local_iterators; __iter;)
- {
- local_iterator* __victim = static_cast<local_iterator*>(__iter);
- __iter = __iter->_M_next;
- if (!__victim->_M_singular() && __pred(__victim->base()))
- {
- __victim->_M_invalidate();
- }
- }
-
- for (_Safe_iterator_base* __iter2 = _M_const_local_iterators; __iter2;)
- {
- const_local_iterator* __victim =
- static_cast<const_local_iterator*>(__iter2);
- __iter2 = __iter2->_M_next;
- if (!__victim->_M_singular() && __pred(__victim->base()))
- {
- __victim->_M_invalidate();
- }
- }
- }
-
-} // namespace __gnu_debug
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/set b/gcc-4.8.1/libstdc++-v3/include/debug/set
deleted file mode 100644
index 597b13ce4..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/set
+++ /dev/null
@@ -1,36 +0,0 @@
-// Debugging set/multiset implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/set
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_SET
-#define _GLIBCXX_DEBUG_SET 1
-
-#include <set>
-#include <debug/set.h>
-#include <debug/multiset.h>
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/set.h b/gcc-4.8.1/libstdc++-v3/include/debug/set.h
deleted file mode 100644
index 9ae3f3f13..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/set.h
+++ /dev/null
@@ -1,469 +0,0 @@
-// Debugging set implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/set.h
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_SET_H
-#define _GLIBCXX_DEBUG_SET_H 1
-
-#include <debug/safe_sequence.h>
-#include <debug/safe_iterator.h>
-#include <utility>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-namespace __debug
-{
- /// Class std::set with safety/checking/debug instrumentation.
- template<typename _Key, typename _Compare = std::less<_Key>,
- typename _Allocator = std::allocator<_Key> >
- class set
- : public _GLIBCXX_STD_C::set<_Key,_Compare,_Allocator>,
- public __gnu_debug::_Safe_sequence<set<_Key, _Compare, _Allocator> >
- {
- typedef _GLIBCXX_STD_C::set<_Key, _Compare, _Allocator> _Base;
-
- typedef typename _Base::const_iterator _Base_const_iterator;
- typedef typename _Base::iterator _Base_iterator;
- typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
- public:
- // types:
- typedef _Key key_type;
- typedef _Key value_type;
- typedef _Compare key_compare;
- typedef _Compare value_compare;
- typedef _Allocator allocator_type;
- typedef typename _Base::reference reference;
- typedef typename _Base::const_reference const_reference;
-
- typedef __gnu_debug::_Safe_iterator<_Base_iterator, set>
- iterator;
- typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, set>
- const_iterator;
-
- typedef typename _Base::size_type size_type;
- typedef typename _Base::difference_type difference_type;
- typedef typename _Base::pointer pointer;
- typedef typename _Base::const_pointer const_pointer;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
- // 23.3.3.1 construct/copy/destroy:
- explicit set(const _Compare& __comp = _Compare(),
- const _Allocator& __a = _Allocator())
- : _Base(__comp, __a) { }
-
- template<typename _InputIterator>
- set(_InputIterator __first, _InputIterator __last,
- const _Compare& __comp = _Compare(),
- const _Allocator& __a = _Allocator())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
- __last)),
- __gnu_debug::__base(__last),
- __comp, __a) { }
-
- set(const set& __x)
- : _Base(__x) { }
-
- set(const _Base& __x)
- : _Base(__x) { }
-
-#if __cplusplus >= 201103L
- set(set&& __x)
- noexcept(is_nothrow_copy_constructible<_Compare>::value)
- : _Base(std::move(__x))
- { this->_M_swap(__x); }
-
- set(initializer_list<value_type> __l,
- const _Compare& __comp = _Compare(),
- const allocator_type& __a = allocator_type())
- : _Base(__l, __comp, __a) { }
-#endif
-
- ~set() _GLIBCXX_NOEXCEPT { }
-
- set&
- operator=(const set& __x)
- {
- *static_cast<_Base*>(this) = __x;
- this->_M_invalidate_all();
- return *this;
- }
-
-#if __cplusplus >= 201103L
- set&
- operator=(set&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- __glibcxx_check_self_move_assign(__x);
- clear();
- swap(__x);
- return *this;
- }
-
- set&
- operator=(initializer_list<value_type> __l)
- {
- this->clear();
- this->insert(__l);
- return *this;
- }
-#endif
-
- using _Base::get_allocator;
-
- // iterators:
- iterator
- begin() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::end(), this); }
-
- reverse_iterator
- rbegin() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(end()); }
-
- const_reverse_iterator
- rbegin() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(end()); }
-
- reverse_iterator
- rend() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(begin()); }
-
- const_reverse_iterator
- rend() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(begin()); }
-
-#if __cplusplus >= 201103L
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_reverse_iterator
- crbegin() const noexcept
- { return const_reverse_iterator(end()); }
-
- const_reverse_iterator
- crend() const noexcept
- { return const_reverse_iterator(begin()); }
-#endif
-
- // capacity:
- using _Base::empty;
- using _Base::size;
- using _Base::max_size;
-
- // modifiers:
-#if __cplusplus >= 201103L
- template<typename... _Args>
- std::pair<iterator, bool>
- emplace(_Args&&... __args)
- {
- auto __res = _Base::emplace(std::forward<_Args>(__args)...);
- return std::pair<iterator, bool>(iterator(__res.first, this),
- __res.second);
- }
-
- template<typename... _Args>
- iterator
- emplace_hint(const_iterator __pos, _Args&&... __args)
- {
- __glibcxx_check_insert(__pos);
- return iterator(_Base::emplace_hint(__pos.base(),
- std::forward<_Args>(__args)...),
- this);
- }
-#endif
-
- std::pair<iterator, bool>
- insert(const value_type& __x)
- {
- std::pair<_Base_iterator, bool> __res = _Base::insert(__x);
- return std::pair<iterator, bool>(iterator(__res.first, this),
- __res.second);
- }
-
-#if __cplusplus >= 201103L
- std::pair<iterator, bool>
- insert(value_type&& __x)
- {
- std::pair<_Base_iterator, bool> __res
- = _Base::insert(std::move(__x));
- return std::pair<iterator, bool>(iterator(__res.first, this),
- __res.second);
- }
-#endif
-
- iterator
- insert(const_iterator __position, const value_type& __x)
- {
- __glibcxx_check_insert(__position);
- return iterator(_Base::insert(__position.base(), __x), this);
- }
-
-#if __cplusplus >= 201103L
- iterator
- insert(const_iterator __position, value_type&& __x)
- {
- __glibcxx_check_insert(__position);
- return iterator(_Base::insert(__position.base(), std::move(__x)),
- this);
- }
-#endif
-
- template <typename _InputIterator>
- void
- insert(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- _Base::insert(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- }
-
-#if __cplusplus >= 201103L
- void
- insert(initializer_list<value_type> __l)
- { _Base::insert(__l); }
-#endif
-
-#if __cplusplus >= 201103L
- iterator
- erase(const_iterator __position)
- {
- __glibcxx_check_erase(__position);
- this->_M_invalidate_if(_Equal(__position.base()));
- return iterator(_Base::erase(__position.base()), this);
- }
-#else
- void
- erase(iterator __position)
- {
- __glibcxx_check_erase(__position);
- this->_M_invalidate_if(_Equal(__position.base()));
- _Base::erase(__position.base());
- }
-#endif
-
- size_type
- erase(const key_type& __x)
- {
- _Base_iterator __victim = _Base::find(__x);
- if (__victim == _Base::end())
- return 0;
- else
- {
- this->_M_invalidate_if(_Equal(__victim));
- _Base::erase(__victim);
- return 1;
- }
- }
-
-#if __cplusplus >= 201103L
- iterator
- erase(const_iterator __first, const_iterator __last)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 151. can't currently clear() empty container
- __glibcxx_check_erase_range(__first, __last);
- for (_Base_const_iterator __victim = __first.base();
- __victim != __last.base(); ++__victim)
- {
- _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if(_Equal(__victim));
- }
- return iterator(_Base::erase(__first.base(), __last.base()), this);
- }
-#else
- void
- erase(iterator __first, iterator __last)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 151. can't currently clear() empty container
- __glibcxx_check_erase_range(__first, __last);
- for (_Base_iterator __victim = __first.base();
- __victim != __last.base(); ++__victim)
- {
- _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if(_Equal(__victim));
- }
- _Base::erase(__first.base(), __last.base());
- }
-#endif
-
- void
- swap(set& __x)
- {
- _Base::swap(__x);
- this->_M_swap(__x);
- }
-
- void
- clear() _GLIBCXX_NOEXCEPT
- {
- this->_M_invalidate_all();
- _Base::clear();
- }
-
- // observers:
- using _Base::key_comp;
- using _Base::value_comp;
-
- // set operations:
- iterator
- find(const key_type& __x)
- { return iterator(_Base::find(__x), this); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 214. set::find() missing const overload
- const_iterator
- find(const key_type& __x) const
- { return const_iterator(_Base::find(__x), this); }
-
- using _Base::count;
-
- iterator
- lower_bound(const key_type& __x)
- { return iterator(_Base::lower_bound(__x), this); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 214. set::find() missing const overload
- const_iterator
- lower_bound(const key_type& __x) const
- { return const_iterator(_Base::lower_bound(__x), this); }
-
- iterator
- upper_bound(const key_type& __x)
- { return iterator(_Base::upper_bound(__x), this); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 214. set::find() missing const overload
- const_iterator
- upper_bound(const key_type& __x) const
- { return const_iterator(_Base::upper_bound(__x), this); }
-
- std::pair<iterator,iterator>
- equal_range(const key_type& __x)
- {
- std::pair<_Base_iterator, _Base_iterator> __res =
- _Base::equal_range(__x);
- return std::make_pair(iterator(__res.first, this),
- iterator(__res.second, this));
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 214. set::find() missing const overload
- std::pair<const_iterator,const_iterator>
- equal_range(const key_type& __x) const
- {
- std::pair<_Base_iterator, _Base_iterator> __res =
- _Base::equal_range(__x);
- return std::make_pair(const_iterator(__res.first, this),
- const_iterator(__res.second, this));
- }
-
- _Base&
- _M_base() _GLIBCXX_NOEXCEPT { return *this; }
-
- const _Base&
- _M_base() const _GLIBCXX_NOEXCEPT { return *this; }
-
- private:
- void
- _M_invalidate_all()
- {
- typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
- this->_M_invalidate_if(_Not_equal(_M_base().end()));
- }
- };
-
- template<typename _Key, typename _Compare, typename _Allocator>
- inline bool
- operator==(const set<_Key, _Compare, _Allocator>& __lhs,
- const set<_Key, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() == __rhs._M_base(); }
-
- template<typename _Key, typename _Compare, typename _Allocator>
- inline bool
- operator!=(const set<_Key, _Compare, _Allocator>& __lhs,
- const set<_Key, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() != __rhs._M_base(); }
-
- template<typename _Key, typename _Compare, typename _Allocator>
- inline bool
- operator<(const set<_Key, _Compare, _Allocator>& __lhs,
- const set<_Key, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() < __rhs._M_base(); }
-
- template<typename _Key, typename _Compare, typename _Allocator>
- inline bool
- operator<=(const set<_Key, _Compare, _Allocator>& __lhs,
- const set<_Key, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() <= __rhs._M_base(); }
-
- template<typename _Key, typename _Compare, typename _Allocator>
- inline bool
- operator>=(const set<_Key, _Compare, _Allocator>& __lhs,
- const set<_Key, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() >= __rhs._M_base(); }
-
- template<typename _Key, typename _Compare, typename _Allocator>
- inline bool
- operator>(const set<_Key, _Compare, _Allocator>& __lhs,
- const set<_Key, _Compare, _Allocator>& __rhs)
- { return __lhs._M_base() > __rhs._M_base(); }
-
- template<typename _Key, typename _Compare, typename _Allocator>
- void
- swap(set<_Key, _Compare, _Allocator>& __x,
- set<_Key, _Compare, _Allocator>& __y)
- { return __x.swap(__y); }
-
-} // namespace __debug
-} // namespace std
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/string b/gcc-4.8.1/libstdc++-v3/include/debug/string
deleted file mode 100644
index 8a5bf9b03..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/string
+++ /dev/null
@@ -1,1161 +0,0 @@
-// Debugging string implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/string
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_STRING
-#define _GLIBCXX_DEBUG_STRING 1
-
-#include <string>
-#include <debug/safe_sequence.h>
-#include <debug/safe_iterator.h>
-
-namespace __gnu_debug
-{
- /// Class std::basic_string with safety/checking/debug instrumentation.
- template<typename _CharT, typename _Traits = std::char_traits<_CharT>,
- typename _Allocator = std::allocator<_CharT> >
- class basic_string
- : public std::basic_string<_CharT, _Traits, _Allocator>,
- public __gnu_debug::_Safe_sequence<basic_string<_CharT, _Traits,
- _Allocator> >
- {
- typedef std::basic_string<_CharT, _Traits, _Allocator> _Base;
- typedef __gnu_debug::_Safe_sequence<basic_string> _Safe_base;
-
- public:
- // types:
- typedef _Traits traits_type;
- typedef typename _Traits::char_type value_type;
- typedef _Allocator allocator_type;
- typedef typename _Base::size_type size_type;
- typedef typename _Base::difference_type difference_type;
- typedef typename _Base::reference reference;
- typedef typename _Base::const_reference const_reference;
- typedef typename _Base::pointer pointer;
- typedef typename _Base::const_pointer const_pointer;
-
- typedef __gnu_debug::_Safe_iterator<typename _Base::iterator, basic_string>
- iterator;
- typedef __gnu_debug::_Safe_iterator<typename _Base::const_iterator,
- basic_string> const_iterator;
-
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
- using _Base::npos;
-
- // 21.3.1 construct/copy/destroy:
- explicit basic_string(const _Allocator& __a = _Allocator())
- : _Base(__a)
- { }
-
- // Provides conversion from a release-mode string to a debug-mode string
- basic_string(const _Base& __base) : _Base(__base) { }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 42. string ctors specify wrong default allocator
- basic_string(const basic_string& __str)
- : _Base(__str, 0, _Base::npos, __str.get_allocator())
- { }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 42. string ctors specify wrong default allocator
- basic_string(const basic_string& __str, size_type __pos,
- size_type __n = _Base::npos,
- const _Allocator& __a = _Allocator())
- : _Base(__str, __pos, __n, __a)
- { }
-
- basic_string(const _CharT* __s, size_type __n,
- const _Allocator& __a = _Allocator())
- : _Base(__gnu_debug::__check_string(__s, __n), __n, __a)
- { }
-
- basic_string(const _CharT* __s, const _Allocator& __a = _Allocator())
- : _Base(__gnu_debug::__check_string(__s), __a)
- { this->assign(__s); }
-
- basic_string(size_type __n, _CharT __c,
- const _Allocator& __a = _Allocator())
- : _Base(__n, __c, __a)
- { }
-
- template<typename _InputIterator>
- basic_string(_InputIterator __begin, _InputIterator __end,
- const _Allocator& __a = _Allocator())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__begin,
- __end)),
- __gnu_debug::__base(__end), __a)
- { }
-
-#if __cplusplus >= 201103L
- basic_string(basic_string&& __str) noexcept
- : _Base(std::move(__str))
- { }
-
- basic_string(std::initializer_list<_CharT> __l,
- const _Allocator& __a = _Allocator())
- : _Base(__l, __a)
- { }
-#endif // C++11
-
- ~basic_string() _GLIBCXX_NOEXCEPT { }
-
- basic_string&
- operator=(const basic_string& __str)
- {
- *static_cast<_Base*>(this) = __str;
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- operator=(const _CharT* __s)
- {
- __glibcxx_check_string(__s);
- *static_cast<_Base*>(this) = __s;
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- operator=(_CharT __c)
- {
- *static_cast<_Base*>(this) = __c;
- this->_M_invalidate_all();
- return *this;
- }
-
-#if __cplusplus >= 201103L
- basic_string&
- operator=(basic_string&& __str)
- {
- __glibcxx_check_self_move_assign(__str);
- *static_cast<_Base*>(this) = std::move(__str);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- operator=(std::initializer_list<_CharT> __l)
- {
- *static_cast<_Base*>(this) = __l;
- this->_M_invalidate_all();
- return *this;
- }
-#endif // C++11
-
- // 21.3.2 iterators:
- iterator
- begin() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::end(), this); }
-
- reverse_iterator
- rbegin() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(end()); }
-
- const_reverse_iterator
- rbegin() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(end()); }
-
- reverse_iterator
- rend() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(begin()); }
-
- const_reverse_iterator
- rend() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(begin()); }
-
-#if __cplusplus >= 201103L
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_reverse_iterator
- crbegin() const noexcept
- { return const_reverse_iterator(end()); }
-
- const_reverse_iterator
- crend() const noexcept
- { return const_reverse_iterator(begin()); }
-#endif
-
- // 21.3.3 capacity:
- using _Base::size;
- using _Base::length;
- using _Base::max_size;
-
- void
- resize(size_type __n, _CharT __c)
- {
- _Base::resize(__n, __c);
- this->_M_invalidate_all();
- }
-
- void
- resize(size_type __n)
- { this->resize(__n, _CharT()); }
-
-#if __cplusplus >= 201103L
- void
- shrink_to_fit()
- {
- if (capacity() > size())
- {
- __try
- {
- reserve(0);
- this->_M_invalidate_all();
- }
- __catch(...)
- { }
- }
- }
-#endif
-
- using _Base::capacity;
- using _Base::reserve;
-
- void
- clear() _GLIBCXX_NOEXCEPT
- {
- _Base::clear();
- this->_M_invalidate_all();
- }
-
- using _Base::empty;
-
- // 21.3.4 element access:
- const_reference
- operator[](size_type __pos) const
- {
- _GLIBCXX_DEBUG_VERIFY(__pos <= this->size(),
- _M_message(__gnu_debug::__msg_subscript_oob)
- ._M_sequence(*this, "this")
- ._M_integer(__pos, "__pos")
- ._M_integer(this->size(), "size"));
- return _M_base()[__pos];
- }
-
- reference
- operator[](size_type __pos)
- {
-#ifdef _GLIBCXX_DEBUG_PEDANTIC
- __glibcxx_check_subscript(__pos);
-#else
- // as an extension v3 allows s[s.size()] when s is non-const.
- _GLIBCXX_DEBUG_VERIFY(__pos <= this->size(),
- _M_message(__gnu_debug::__msg_subscript_oob)
- ._M_sequence(*this, "this")
- ._M_integer(__pos, "__pos")
- ._M_integer(this->size(), "size"));
-#endif
- return _M_base()[__pos];
- }
-
- using _Base::at;
-
-#if __cplusplus >= 201103L
- using _Base::front;
- using _Base::back;
-#endif
-
- // 21.3.5 modifiers:
- basic_string&
- operator+=(const basic_string& __str)
- {
- _M_base() += __str;
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- operator+=(const _CharT* __s)
- {
- __glibcxx_check_string(__s);
- _M_base() += __s;
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- operator+=(_CharT __c)
- {
- _M_base() += __c;
- this->_M_invalidate_all();
- return *this;
- }
-
-#if __cplusplus >= 201103L
- basic_string&
- operator+=(std::initializer_list<_CharT> __l)
- {
- _M_base() += __l;
- this->_M_invalidate_all();
- return *this;
- }
-#endif // C++11
-
- basic_string&
- append(const basic_string& __str)
- {
- _Base::append(__str);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- append(const basic_string& __str, size_type __pos, size_type __n)
- {
- _Base::append(__str, __pos, __n);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- append(const _CharT* __s, size_type __n)
- {
- __glibcxx_check_string_len(__s, __n);
- _Base::append(__s, __n);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- append(const _CharT* __s)
- {
- __glibcxx_check_string(__s);
- _Base::append(__s);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- append(size_type __n, _CharT __c)
- {
- _Base::append(__n, __c);
- this->_M_invalidate_all();
- return *this;
- }
-
- template<typename _InputIterator>
- basic_string&
- append(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- _Base::append(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- this->_M_invalidate_all();
- return *this;
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 7. string clause minor problems
- void
- push_back(_CharT __c)
- {
- _Base::push_back(__c);
- this->_M_invalidate_all();
- }
-
- basic_string&
- assign(const basic_string& __x)
- {
- _Base::assign(__x);
- this->_M_invalidate_all();
- return *this;
- }
-
-#if __cplusplus >= 201103L
- basic_string&
- assign(basic_string&& __x)
- {
- _Base::assign(std::move(__x));
- this->_M_invalidate_all();
- return *this;
- }
-#endif // C++11
-
- basic_string&
- assign(const basic_string& __str, size_type __pos, size_type __n)
- {
- _Base::assign(__str, __pos, __n);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- assign(const _CharT* __s, size_type __n)
- {
- __glibcxx_check_string_len(__s, __n);
- _Base::assign(__s, __n);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- assign(const _CharT* __s)
- {
- __glibcxx_check_string(__s);
- _Base::assign(__s);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- assign(size_type __n, _CharT __c)
- {
- _Base::assign(__n, __c);
- this->_M_invalidate_all();
- return *this;
- }
-
- template<typename _InputIterator>
- basic_string&
- assign(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- _Base::assign(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- this->_M_invalidate_all();
- return *this;
- }
-
-#if __cplusplus >= 201103L
- basic_string&
- assign(std::initializer_list<_CharT> __l)
- {
- _Base::assign(__l);
- this->_M_invalidate_all();
- return *this;
- }
-#endif // C++11
-
- basic_string&
- insert(size_type __pos1, const basic_string& __str)
- {
- _Base::insert(__pos1, __str);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- insert(size_type __pos1, const basic_string& __str,
- size_type __pos2, size_type __n)
- {
- _Base::insert(__pos1, __str, __pos2, __n);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- insert(size_type __pos, const _CharT* __s, size_type __n)
- {
- __glibcxx_check_string(__s);
- _Base::insert(__pos, __s, __n);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- insert(size_type __pos, const _CharT* __s)
- {
- __glibcxx_check_string(__s);
- _Base::insert(__pos, __s);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- insert(size_type __pos, size_type __n, _CharT __c)
- {
- _Base::insert(__pos, __n, __c);
- this->_M_invalidate_all();
- return *this;
- }
-
- iterator
- insert(iterator __p, _CharT __c)
- {
- __glibcxx_check_insert(__p);
- typename _Base::iterator __res = _Base::insert(__p.base(), __c);
- this->_M_invalidate_all();
- return iterator(__res, this);
- }
-
- void
- insert(iterator __p, size_type __n, _CharT __c)
- {
- __glibcxx_check_insert(__p);
- _Base::insert(__p.base(), __n, __c);
- this->_M_invalidate_all();
- }
-
- template<typename _InputIterator>
- void
- insert(iterator __p, _InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_insert_range(__p, __first, __last);
- _Base::insert(__p.base(), __gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- this->_M_invalidate_all();
- }
-
-#if __cplusplus >= 201103L
- void
- insert(iterator __p, std::initializer_list<_CharT> __l)
- {
- __glibcxx_check_insert(__p);
- _Base::insert(__p.base(), __l);
- this->_M_invalidate_all();
- }
-#endif // C++11
-
- basic_string&
- erase(size_type __pos = 0, size_type __n = _Base::npos)
- {
- _Base::erase(__pos, __n);
- this->_M_invalidate_all();
- return *this;
- }
-
- iterator
- erase(iterator __position)
- {
- __glibcxx_check_erase(__position);
- typename _Base::iterator __res = _Base::erase(__position.base());
- this->_M_invalidate_all();
- return iterator(__res, this);
- }
-
- iterator
- erase(iterator __first, iterator __last)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 151. can't currently clear() empty container
- __glibcxx_check_erase_range(__first, __last);
- typename _Base::iterator __res = _Base::erase(__first.base(),
- __last.base());
- this->_M_invalidate_all();
- return iterator(__res, this);
- }
-
-#if __cplusplus >= 201103L
- void
- pop_back()
- {
- __glibcxx_check_nonempty();
- _Base::pop_back();
- this->_M_invalidate_all();
- }
-#endif // C++11
-
- basic_string&
- replace(size_type __pos1, size_type __n1, const basic_string& __str)
- {
- _Base::replace(__pos1, __n1, __str);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- replace(size_type __pos1, size_type __n1, const basic_string& __str,
- size_type __pos2, size_type __n2)
- {
- _Base::replace(__pos1, __n1, __str, __pos2, __n2);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- replace(size_type __pos, size_type __n1, const _CharT* __s,
- size_type __n2)
- {
- __glibcxx_check_string_len(__s, __n2);
- _Base::replace(__pos, __n1, __s, __n2);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- replace(size_type __pos, size_type __n1, const _CharT* __s)
- {
- __glibcxx_check_string(__s);
- _Base::replace(__pos, __n1, __s);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
- {
- _Base::replace(__pos, __n1, __n2, __c);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- replace(iterator __i1, iterator __i2, const basic_string& __str)
- {
- __glibcxx_check_erase_range(__i1, __i2);
- _Base::replace(__i1.base(), __i2.base(), __str);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
- {
- __glibcxx_check_erase_range(__i1, __i2);
- __glibcxx_check_string_len(__s, __n);
- _Base::replace(__i1.base(), __i2.base(), __s, __n);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- replace(iterator __i1, iterator __i2, const _CharT* __s)
- {
- __glibcxx_check_erase_range(__i1, __i2);
- __glibcxx_check_string(__s);
- _Base::replace(__i1.base(), __i2.base(), __s);
- this->_M_invalidate_all();
- return *this;
- }
-
- basic_string&
- replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
- {
- __glibcxx_check_erase_range(__i1, __i2);
- _Base::replace(__i1.base(), __i2.base(), __n, __c);
- this->_M_invalidate_all();
- return *this;
- }
-
- template<typename _InputIterator>
- basic_string&
- replace(iterator __i1, iterator __i2,
- _InputIterator __j1, _InputIterator __j2)
- {
- __glibcxx_check_erase_range(__i1, __i2);
- __glibcxx_check_valid_range(__j1, __j2);
- _Base::replace(__i1.base(), __i2.base(), __j1, __j2);
- this->_M_invalidate_all();
- return *this;
- }
-
-#if __cplusplus >= 201103L
- basic_string& replace(iterator __i1, iterator __i2,
- std::initializer_list<_CharT> __l)
- {
- __glibcxx_check_erase_range(__i1, __i2);
- _Base::replace(__i1.base(), __i2.base(), __l);
- this->_M_invalidate_all();
- return *this;
- }
-#endif // C++11
-
- size_type
- copy(_CharT* __s, size_type __n, size_type __pos = 0) const
- {
- __glibcxx_check_string_len(__s, __n);
- return _Base::copy(__s, __n, __pos);
- }
-
- void
- swap(basic_string<_CharT,_Traits,_Allocator>& __x)
- {
- _Base::swap(__x);
- this->_M_swap(__x);
- this->_M_invalidate_all();
- __x._M_invalidate_all();
- }
-
- // 21.3.6 string operations:
- const _CharT*
- c_str() const _GLIBCXX_NOEXCEPT
- {
- const _CharT* __res = _Base::c_str();
- this->_M_invalidate_all();
- return __res;
- }
-
- const _CharT*
- data() const _GLIBCXX_NOEXCEPT
- {
- const _CharT* __res = _Base::data();
- this->_M_invalidate_all();
- return __res;
- }
-
- using _Base::get_allocator;
-
- size_type
- find(const basic_string& __str, size_type __pos = 0) const
- _GLIBCXX_NOEXCEPT
- { return _Base::find(__str, __pos); }
-
- size_type
- find(const _CharT* __s, size_type __pos, size_type __n) const
- {
- __glibcxx_check_string(__s);
- return _Base::find(__s, __pos, __n);
- }
-
- size_type
- find(const _CharT* __s, size_type __pos = 0) const
- {
- __glibcxx_check_string(__s);
- return _Base::find(__s, __pos);
- }
-
- size_type
- find(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT
- { return _Base::find(__c, __pos); }
-
- size_type
- rfind(const basic_string& __str, size_type __pos = _Base::npos) const
- _GLIBCXX_NOEXCEPT
- { return _Base::rfind(__str, __pos); }
-
- size_type
- rfind(const _CharT* __s, size_type __pos, size_type __n) const
- {
- __glibcxx_check_string_len(__s, __n);
- return _Base::rfind(__s, __pos, __n);
- }
-
- size_type
- rfind(const _CharT* __s, size_type __pos = _Base::npos) const
- {
- __glibcxx_check_string(__s);
- return _Base::rfind(__s, __pos);
- }
-
- size_type
- rfind(_CharT __c, size_type __pos = _Base::npos) const _GLIBCXX_NOEXCEPT
- { return _Base::rfind(__c, __pos); }
-
- size_type
- find_first_of(const basic_string& __str, size_type __pos = 0) const
- _GLIBCXX_NOEXCEPT
- { return _Base::find_first_of(__str, __pos); }
-
- size_type
- find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
- {
- __glibcxx_check_string(__s);
- return _Base::find_first_of(__s, __pos, __n);
- }
-
- size_type
- find_first_of(const _CharT* __s, size_type __pos = 0) const
- {
- __glibcxx_check_string(__s);
- return _Base::find_first_of(__s, __pos);
- }
-
- size_type
- find_first_of(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT
- { return _Base::find_first_of(__c, __pos); }
-
- size_type
- find_last_of(const basic_string& __str,
- size_type __pos = _Base::npos) const _GLIBCXX_NOEXCEPT
- { return _Base::find_last_of(__str, __pos); }
-
- size_type
- find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
- {
- __glibcxx_check_string(__s);
- return _Base::find_last_of(__s, __pos, __n);
- }
-
- size_type
- find_last_of(const _CharT* __s, size_type __pos = _Base::npos) const
- {
- __glibcxx_check_string(__s);
- return _Base::find_last_of(__s, __pos);
- }
-
- size_type
- find_last_of(_CharT __c, size_type __pos = _Base::npos) const
- _GLIBCXX_NOEXCEPT
- { return _Base::find_last_of(__c, __pos); }
-
- size_type
- find_first_not_of(const basic_string& __str, size_type __pos = 0) const
- _GLIBCXX_NOEXCEPT
- { return _Base::find_first_not_of(__str, __pos); }
-
- size_type
- find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
- {
- __glibcxx_check_string_len(__s, __n);
- return _Base::find_first_not_of(__s, __pos, __n);
- }
-
- size_type
- find_first_not_of(const _CharT* __s, size_type __pos = 0) const
- {
- __glibcxx_check_string(__s);
- return _Base::find_first_not_of(__s, __pos);
- }
-
- size_type
- find_first_not_of(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT
- { return _Base::find_first_not_of(__c, __pos); }
-
- size_type
- find_last_not_of(const basic_string& __str,
- size_type __pos = _Base::npos) const
- _GLIBCXX_NOEXCEPT
- { return _Base::find_last_not_of(__str, __pos); }
-
- size_type
- find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
- {
- __glibcxx_check_string(__s);
- return _Base::find_last_not_of(__s, __pos, __n);
- }
-
- size_type
- find_last_not_of(const _CharT* __s, size_type __pos = _Base::npos) const
- {
- __glibcxx_check_string(__s);
- return _Base::find_last_not_of(__s, __pos);
- }
-
- size_type
- find_last_not_of(_CharT __c, size_type __pos = _Base::npos) const
- _GLIBCXX_NOEXCEPT
- { return _Base::find_last_not_of(__c, __pos); }
-
- basic_string
- substr(size_type __pos = 0, size_type __n = _Base::npos) const
- { return basic_string(_Base::substr(__pos, __n)); }
-
- int
- compare(const basic_string& __str) const
- { return _Base::compare(__str); }
-
- int
- compare(size_type __pos1, size_type __n1,
- const basic_string& __str) const
- { return _Base::compare(__pos1, __n1, __str); }
-
- int
- compare(size_type __pos1, size_type __n1, const basic_string& __str,
- size_type __pos2, size_type __n2) const
- { return _Base::compare(__pos1, __n1, __str, __pos2, __n2); }
-
- int
- compare(const _CharT* __s) const
- {
- __glibcxx_check_string(__s);
- return _Base::compare(__s);
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 5. string::compare specification questionable
- int
- compare(size_type __pos1, size_type __n1, const _CharT* __s) const
- {
- __glibcxx_check_string(__s);
- return _Base::compare(__pos1, __n1, __s);
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 5. string::compare specification questionable
- int
- compare(size_type __pos1, size_type __n1,const _CharT* __s,
- size_type __n2) const
- {
- __glibcxx_check_string_len(__s, __n2);
- return _Base::compare(__pos1, __n1, __s, __n2);
- }
-
- _Base&
- _M_base() _GLIBCXX_NOEXCEPT { return *this; }
-
- const _Base&
- _M_base() const _GLIBCXX_NOEXCEPT { return *this; }
-
- using _Safe_base::_M_invalidate_all;
- };
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline basic_string<_CharT,_Traits,_Allocator>
- operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- { return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline basic_string<_CharT,_Traits,_Allocator>
- operator+(const _CharT* __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- {
- __glibcxx_check_string(__lhs);
- return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs;
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline basic_string<_CharT,_Traits,_Allocator>
- operator+(_CharT __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- { return basic_string<_CharT,_Traits,_Allocator>(1, __lhs) += __rhs; }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline basic_string<_CharT,_Traits,_Allocator>
- operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const _CharT* __rhs)
- {
- __glibcxx_check_string(__rhs);
- return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs;
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline basic_string<_CharT,_Traits,_Allocator>
- operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- _CharT __rhs)
- { return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator==(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- { return __lhs._M_base() == __rhs._M_base(); }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator==(const _CharT* __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- {
- __glibcxx_check_string(__lhs);
- return __lhs == __rhs._M_base();
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator==(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const _CharT* __rhs)
- {
- __glibcxx_check_string(__rhs);
- return __lhs._M_base() == __rhs;
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- { return __lhs._M_base() != __rhs._M_base(); }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator!=(const _CharT* __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- {
- __glibcxx_check_string(__lhs);
- return __lhs != __rhs._M_base();
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const _CharT* __rhs)
- {
- __glibcxx_check_string(__rhs);
- return __lhs._M_base() != __rhs;
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator<(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- { return __lhs._M_base() < __rhs._M_base(); }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator<(const _CharT* __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- {
- __glibcxx_check_string(__lhs);
- return __lhs < __rhs._M_base();
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator<(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const _CharT* __rhs)
- {
- __glibcxx_check_string(__rhs);
- return __lhs._M_base() < __rhs;
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator<=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- { return __lhs._M_base() <= __rhs._M_base(); }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator<=(const _CharT* __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- {
- __glibcxx_check_string(__lhs);
- return __lhs <= __rhs._M_base();
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator<=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const _CharT* __rhs)
- {
- __glibcxx_check_string(__rhs);
- return __lhs._M_base() <= __rhs;
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator>=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- { return __lhs._M_base() >= __rhs._M_base(); }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator>=(const _CharT* __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- {
- __glibcxx_check_string(__lhs);
- return __lhs >= __rhs._M_base();
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator>=(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const _CharT* __rhs)
- {
- __glibcxx_check_string(__rhs);
- return __lhs._M_base() >= __rhs;
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator>(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- { return __lhs._M_base() > __rhs._M_base(); }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator>(const _CharT* __lhs,
- const basic_string<_CharT,_Traits,_Allocator>& __rhs)
- {
- __glibcxx_check_string(__lhs);
- return __lhs > __rhs._M_base();
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline bool
- operator>(const basic_string<_CharT,_Traits,_Allocator>& __lhs,
- const _CharT* __rhs)
- {
- __glibcxx_check_string(__rhs);
- return __lhs._M_base() > __rhs;
- }
-
- // 21.3.7.8:
- template<typename _CharT, typename _Traits, typename _Allocator>
- inline void
- swap(basic_string<_CharT,_Traits,_Allocator>& __lhs,
- basic_string<_CharT,_Traits,_Allocator>& __rhs)
- { __lhs.swap(__rhs); }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- std::basic_ostream<_CharT, _Traits>&
- operator<<(std::basic_ostream<_CharT, _Traits>& __os,
- const basic_string<_CharT, _Traits, _Allocator>& __str)
- { return __os << __str._M_base(); }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- std::basic_istream<_CharT,_Traits>&
- operator>>(std::basic_istream<_CharT,_Traits>& __is,
- basic_string<_CharT,_Traits,_Allocator>& __str)
- {
- std::basic_istream<_CharT,_Traits>& __res = __is >> __str._M_base();
- __str._M_invalidate_all();
- return __res;
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- std::basic_istream<_CharT,_Traits>&
- getline(std::basic_istream<_CharT,_Traits>& __is,
- basic_string<_CharT,_Traits,_Allocator>& __str, _CharT __delim)
- {
- std::basic_istream<_CharT,_Traits>& __res = getline(__is,
- __str._M_base(),
- __delim);
- __str._M_invalidate_all();
- return __res;
- }
-
- template<typename _CharT, typename _Traits, typename _Allocator>
- std::basic_istream<_CharT,_Traits>&
- getline(std::basic_istream<_CharT,_Traits>& __is,
- basic_string<_CharT,_Traits,_Allocator>& __str)
- {
- std::basic_istream<_CharT,_Traits>& __res = getline(__is,
- __str._M_base());
- __str._M_invalidate_all();
- return __res;
- }
-
- typedef basic_string<char> string;
-
-#ifdef _GLIBCXX_USE_WCHAR_T
- typedef basic_string<wchar_t> wstring;
-#endif
-
-} // namespace __gnu_debug
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/unordered_map b/gcc-4.8.1/libstdc++-v3/include/debug/unordered_map
deleted file mode 100644
index a826b0190..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/unordered_map
+++ /dev/null
@@ -1,903 +0,0 @@
-// Debugging unordered_map/unordered_multimap implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/unordered_map
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_UNORDERED_MAP
-#define _GLIBCXX_DEBUG_UNORDERED_MAP 1
-
-#if __cplusplus < 201103L
-# include <bits/c++0x_warning.h>
-#else
-# include <unordered_map>
-
-#include <debug/safe_unordered_container.h>
-#include <debug/safe_iterator.h>
-#include <debug/safe_local_iterator.h>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-namespace __debug
-{
- /// Class std::unordered_map with safety/checking/debug instrumentation.
- template<typename _Key, typename _Tp,
- typename _Hash = std::hash<_Key>,
- typename _Pred = std::equal_to<_Key>,
- typename _Alloc = std::allocator<_Key> >
- class unordered_map
- : public _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>,
- public __gnu_debug::_Safe_unordered_container<unordered_map<_Key, _Tp,
- _Hash, _Pred, _Alloc> >
- {
- typedef _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash,
- _Pred, _Alloc> _Base;
- typedef __gnu_debug::_Safe_unordered_container<unordered_map> _Safe_base;
- typedef typename _Base::const_iterator _Base_const_iterator;
- typedef typename _Base::iterator _Base_iterator;
- typedef typename _Base::const_local_iterator _Base_const_local_iterator;
- typedef typename _Base::local_iterator _Base_local_iterator;
-
- public:
- typedef typename _Base::size_type size_type;
- typedef typename _Base::hasher hasher;
- typedef typename _Base::key_equal key_equal;
- typedef typename _Base::allocator_type allocator_type;
-
- typedef typename _Base::key_type key_type;
- typedef typename _Base::value_type value_type;
-
- typedef __gnu_debug::_Safe_iterator<_Base_iterator,
- unordered_map> iterator;
- typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
- unordered_map> const_iterator;
- typedef __gnu_debug::_Safe_local_iterator<_Base_local_iterator,
- unordered_map> local_iterator;
- typedef __gnu_debug::_Safe_local_iterator<_Base_const_local_iterator,
- unordered_map> const_local_iterator;
-
- explicit
- unordered_map(size_type __n = 10,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
- : _Base(__n, __hf, __eql, __a) { }
-
- template<typename _InputIterator>
- unordered_map(_InputIterator __first, _InputIterator __last,
- size_type __n = 0,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
- __last)),
- __gnu_debug::__base(__last), __n,
- __hf, __eql, __a) { }
-
- unordered_map(const unordered_map& __x) = default;
-
- unordered_map(const _Base& __x)
- : _Base(__x) { }
-
- unordered_map(unordered_map&& __x) = default;
-
- unordered_map(initializer_list<value_type> __l,
- size_type __n = 0,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
- : _Base(__l, __n, __hf, __eql, __a) { }
-
- ~unordered_map() noexcept { }
-
- unordered_map&
- operator=(const unordered_map& __x)
- {
- *static_cast<_Base*>(this) = __x;
- this->_M_invalidate_all();
- return *this;
- }
-
- unordered_map&
- operator=(unordered_map&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- __glibcxx_check_self_move_assign(__x);
- clear();
- swap(__x);
- return *this;
- }
-
- unordered_map&
- operator=(initializer_list<value_type> __l)
- {
- this->clear();
- this->insert(__l);
- return *this;
- }
-
- void
- swap(unordered_map& __x)
- {
- _Base::swap(__x);
- _Safe_base::_M_swap(__x);
- }
-
- void
- clear() noexcept
- {
- _Base::clear();
- this->_M_invalidate_all();
- }
-
- iterator
- begin() noexcept
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() noexcept
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- // local versions
- local_iterator
- begin(size_type __b)
- {
- __glibcxx_check_bucket_index(__b);
- return local_iterator(_Base::begin(__b), __b, this);
- }
-
- local_iterator
- end(size_type __b)
- {
- __glibcxx_check_bucket_index(__b);
- return local_iterator(_Base::end(__b), __b, this);
- }
-
- const_local_iterator
- begin(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::begin(__b), __b, this);
- }
-
- const_local_iterator
- end(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::end(__b), __b, this);
- }
-
- const_local_iterator
- cbegin(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::cbegin(__b), __b, this);
- }
-
- const_local_iterator
- cend(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::cend(__b), __b, this);
- }
-
- size_type
- bucket_size(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return _Base::bucket_size(__b);
- }
-
- float
- max_load_factor() const noexcept
- { return _Base::max_load_factor(); }
-
- void
- max_load_factor(float __f)
- {
- __glibcxx_check_max_load_factor(__f);
- _Base::max_load_factor(__f);
- }
-
- template<typename... _Args>
- std::pair<iterator, bool>
- emplace(_Args&&... __args)
- {
- size_type __bucket_count = this->bucket_count();
- std::pair<_Base_iterator, bool> __res
- = _Base::emplace(std::forward<_Args>(__args)...);
- _M_check_rehashed(__bucket_count);
- return std::make_pair(iterator(__res.first, this), __res.second);
- }
-
- template<typename... _Args>
- iterator
- emplace_hint(const_iterator __hint, _Args&&... __args)
- {
- __glibcxx_check_insert(__hint);
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::emplace_hint(__hint.base(),
- std::forward<_Args>(__args)...);
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- std::pair<iterator, bool>
- insert(const value_type& __obj)
- {
- size_type __bucket_count = this->bucket_count();
- std::pair<_Base_iterator, bool> __res = _Base::insert(__obj);
- _M_check_rehashed(__bucket_count);
- return std::make_pair(iterator(__res.first, this), __res.second);
- }
-
- iterator
- insert(const_iterator __hint, const value_type& __obj)
- {
- __glibcxx_check_insert(__hint);
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::insert(__hint.base(), __obj);
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- template<typename _Pair, typename = typename
- std::enable_if<std::is_constructible<value_type,
- _Pair&&>::value>::type>
- std::pair<iterator, bool>
- insert(_Pair&& __obj)
- {
- size_type __bucket_count = this->bucket_count();
- std::pair<_Base_iterator, bool> __res =
- _Base::insert(std::forward<_Pair>(__obj));
- _M_check_rehashed(__bucket_count);
- return std::make_pair(iterator(__res.first, this), __res.second);
- }
-
- template<typename _Pair, typename = typename
- std::enable_if<std::is_constructible<value_type,
- _Pair&&>::value>::type>
- iterator
- insert(const_iterator __hint, _Pair&& __obj)
- {
- __glibcxx_check_insert(__hint);
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it =
- _Base::insert(__hint.base(), std::forward<_Pair>(__obj));
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- void
- insert(std::initializer_list<value_type> __l)
- {
- size_type __bucket_count = this->bucket_count();
- _Base::insert(__l);
- _M_check_rehashed(__bucket_count);
- }
-
- template<typename _InputIterator>
- void
- insert(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- size_type __bucket_count = this->bucket_count();
- _Base::insert(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- _M_check_rehashed(__bucket_count);
- }
-
- iterator
- find(const key_type& __key)
- { return iterator(_Base::find(__key), this); }
-
- const_iterator
- find(const key_type& __key) const
- { return const_iterator(_Base::find(__key), this); }
-
- std::pair<iterator, iterator>
- equal_range(const key_type& __key)
- {
- std::pair<_Base_iterator, _Base_iterator> __res =
- _Base::equal_range(__key);
- return std::make_pair(iterator(__res.first, this),
- iterator(__res.second, this));
- }
-
- std::pair<const_iterator, const_iterator>
- equal_range(const key_type& __key) const
- {
- std::pair<_Base_const_iterator, _Base_const_iterator> __res =
- _Base::equal_range(__key);
- return std::make_pair(const_iterator(__res.first, this),
- const_iterator(__res.second, this));
- }
-
- size_type
- erase(const key_type& __key)
- {
- size_type __ret(0);
- _Base_iterator __victim(_Base::find(__key));
- if (__victim != _Base::end())
- {
- this->_M_invalidate_if([__victim](_Base_const_iterator __it)
- { return __it == __victim; });
- this->_M_invalidate_local_if(
- [__victim](_Base_const_local_iterator __it)
- { return __it._M_cur == __victim._M_cur; });
- size_type __bucket_count = this->bucket_count();
- _Base::erase(__victim);
- _M_check_rehashed(__bucket_count);
- __ret = 1;
- }
- return __ret;
- }
-
- iterator
- erase(const_iterator __it)
- {
- __glibcxx_check_erase(__it);
- _Base_const_iterator __victim = __it.base();
- this->_M_invalidate_if([__victim](_Base_const_iterator __it)
- { return __it == __victim; });
- this->_M_invalidate_local_if(
- [__victim](_Base_const_local_iterator __it)
- { return __it._M_cur == __victim._M_cur; });
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __next = _Base::erase(__it.base());
- _M_check_rehashed(__bucket_count);
- return iterator(__next, this);
- }
-
- iterator
- erase(iterator __it)
- { return erase(const_iterator(__it)); }
-
- iterator
- erase(const_iterator __first, const_iterator __last)
- {
- __glibcxx_check_erase_range(__first, __last);
- for (_Base_const_iterator __tmp = __first.base();
- __tmp != __last.base(); ++__tmp)
- {
- _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if([__tmp](_Base_const_iterator __it)
- { return __it == __tmp; });
- this->_M_invalidate_local_if(
- [__tmp](_Base_const_local_iterator __it)
- { return __it._M_cur == __tmp._M_cur; });
- }
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __next = _Base::erase(__first.base(), __last.base());
- _M_check_rehashed(__bucket_count);
- return iterator(__next, this);
- }
-
- _Base&
- _M_base() noexcept { return *this; }
-
- const _Base&
- _M_base() const noexcept { return *this; }
-
- private:
- void
- _M_invalidate_locals()
- {
- _Base_local_iterator __local_end = _Base::end(0);
- this->_M_invalidate_local_if(
- [__local_end](_Base_const_local_iterator __it)
- { return __it != __local_end; });
- }
-
- void
- _M_invalidate_all()
- {
- _Base_iterator __end = _Base::end();
- this->_M_invalidate_if([__end](_Base_const_iterator __it)
- { return __it != __end; });
- _M_invalidate_locals();
- }
-
- void
- _M_check_rehashed(size_type __prev_count)
- {
- if (__prev_count != this->bucket_count())
- _M_invalidate_locals();
- }
- };
-
- template<typename _Key, typename _Tp, typename _Hash,
- typename _Pred, typename _Alloc>
- inline void
- swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
- unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
- { __x.swap(__y); }
-
- template<typename _Key, typename _Tp, typename _Hash,
- typename _Pred, typename _Alloc>
- inline bool
- operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
- const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
- { return __x._M_base() == __y._M_base(); }
-
- template<typename _Key, typename _Tp, typename _Hash,
- typename _Pred, typename _Alloc>
- inline bool
- operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
- const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
- { return !(__x == __y); }
-
-
- /// Class std::unordered_multimap with safety/checking/debug instrumentation.
- template<typename _Key, typename _Tp,
- typename _Hash = std::hash<_Key>,
- typename _Pred = std::equal_to<_Key>,
- typename _Alloc = std::allocator<_Key> >
- class unordered_multimap
- : public _GLIBCXX_STD_C::unordered_multimap<_Key, _Tp, _Hash,
- _Pred, _Alloc>,
- public __gnu_debug::_Safe_unordered_container<unordered_multimap<_Key,
- _Tp, _Hash, _Pred, _Alloc> >
- {
- typedef _GLIBCXX_STD_C::unordered_multimap<_Key, _Tp, _Hash,
- _Pred, _Alloc> _Base;
- typedef __gnu_debug::_Safe_unordered_container<unordered_multimap>
- _Safe_base;
- typedef typename _Base::const_iterator _Base_const_iterator;
- typedef typename _Base::iterator _Base_iterator;
- typedef typename _Base::const_local_iterator _Base_const_local_iterator;
- typedef typename _Base::local_iterator _Base_local_iterator;
-
- public:
- typedef typename _Base::size_type size_type;
- typedef typename _Base::hasher hasher;
- typedef typename _Base::key_equal key_equal;
- typedef typename _Base::allocator_type allocator_type;
-
- typedef typename _Base::key_type key_type;
- typedef typename _Base::value_type value_type;
-
- typedef __gnu_debug::_Safe_iterator<_Base_iterator,
- unordered_multimap> iterator;
- typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
- unordered_multimap> const_iterator;
- typedef __gnu_debug::_Safe_local_iterator<
- _Base_local_iterator, unordered_multimap> local_iterator;
- typedef __gnu_debug::_Safe_local_iterator<
- _Base_const_local_iterator, unordered_multimap> const_local_iterator;
-
- explicit
- unordered_multimap(size_type __n = 10,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
- : _Base(__n, __hf, __eql, __a) { }
-
- template<typename _InputIterator>
- unordered_multimap(_InputIterator __first, _InputIterator __last,
- size_type __n = 0,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
- __last)),
- __gnu_debug::__base(__last), __n,
- __hf, __eql, __a) { }
-
- unordered_multimap(const unordered_multimap& __x) = default;
-
- unordered_multimap(const _Base& __x)
- : _Base(__x) { }
-
- unordered_multimap(unordered_multimap&& __x) = default;
-
- unordered_multimap(initializer_list<value_type> __l,
- size_type __n = 0,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
- : _Base(__l, __n, __hf, __eql, __a) { }
-
- ~unordered_multimap() noexcept { }
-
- unordered_multimap&
- operator=(const unordered_multimap& __x)
- {
- *static_cast<_Base*>(this) = __x;
- this->_M_invalidate_all();
- return *this;
- }
-
- unordered_multimap&
- operator=(unordered_multimap&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- __glibcxx_check_self_move_assign(__x);
- clear();
- swap(__x);
- return *this;
- }
-
- unordered_multimap&
- operator=(initializer_list<value_type> __l)
- {
- this->clear();
- this->insert(__l);
- return *this;
- }
-
- void
- swap(unordered_multimap& __x)
- {
- _Base::swap(__x);
- _Safe_base::_M_swap(__x);
- }
-
- void
- clear() noexcept
- {
- _Base::clear();
- this->_M_invalidate_all();
- }
-
- iterator
- begin() noexcept
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() noexcept
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- // local versions
- local_iterator
- begin(size_type __b)
- {
- __glibcxx_check_bucket_index(__b);
- return local_iterator(_Base::begin(__b), __b, this);
- }
-
- local_iterator
- end(size_type __b)
- {
- __glibcxx_check_bucket_index(__b);
- return local_iterator(_Base::end(__b), __b, this);
- }
-
- const_local_iterator
- begin(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::begin(__b), __b, this);
- }
-
- const_local_iterator
- end(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::end(__b), __b, this);
- }
-
- const_local_iterator
- cbegin(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::cbegin(__b), __b, this);
- }
-
- const_local_iterator
- cend(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::cend(__b), __b, this);
- }
-
- size_type
- bucket_size(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return _Base::bucket_size(__b);
- }
-
- float
- max_load_factor() const noexcept
- { return _Base::max_load_factor(); }
-
- void
- max_load_factor(float __f)
- {
- __glibcxx_check_max_load_factor(__f);
- _Base::max_load_factor(__f);
- }
-
- template<typename... _Args>
- iterator
- emplace(_Args&&... __args)
- {
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it
- = _Base::emplace(std::forward<_Args>(__args)...);
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- template<typename... _Args>
- iterator
- emplace_hint(const_iterator __hint, _Args&&... __args)
- {
- __glibcxx_check_insert(__hint);
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::emplace_hint(__hint.base(),
- std::forward<_Args>(__args)...);
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- iterator
- insert(const value_type& __obj)
- {
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::insert(__obj);
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- iterator
- insert(const_iterator __hint, const value_type& __obj)
- {
- __glibcxx_check_insert(__hint);
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::insert(__hint.base(), __obj);
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- template<typename _Pair, typename = typename
- std::enable_if<std::is_constructible<value_type,
- _Pair&&>::value>::type>
- iterator
- insert(_Pair&& __obj)
- {
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::insert(std::forward<_Pair>(__obj));
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- template<typename _Pair, typename = typename
- std::enable_if<std::is_constructible<value_type,
- _Pair&&>::value>::type>
- iterator
- insert(const_iterator __hint, _Pair&& __obj)
- {
- __glibcxx_check_insert(__hint);
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it =
- _Base::insert(__hint.base(), std::forward<_Pair>(__obj));
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- void
- insert(std::initializer_list<value_type> __l)
- { _Base::insert(__l); }
-
- template<typename _InputIterator>
- void
- insert(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- size_type __bucket_count = this->bucket_count();
- _Base::insert(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- _M_check_rehashed(__bucket_count);
- }
-
- iterator
- find(const key_type& __key)
- { return iterator(_Base::find(__key), this); }
-
- const_iterator
- find(const key_type& __key) const
- { return const_iterator(_Base::find(__key), this); }
-
- std::pair<iterator, iterator>
- equal_range(const key_type& __key)
- {
- std::pair<_Base_iterator, _Base_iterator> __res =
- _Base::equal_range(__key);
- return std::make_pair(iterator(__res.first, this),
- iterator(__res.second, this));
- }
-
- std::pair<const_iterator, const_iterator>
- equal_range(const key_type& __key) const
- {
- std::pair<_Base_const_iterator, _Base_const_iterator> __res =
- _Base::equal_range(__key);
- return std::make_pair(const_iterator(__res.first, this),
- const_iterator(__res.second, this));
- }
-
- size_type
- erase(const key_type& __key)
- {
- size_type __ret(0);
- size_type __bucket_count = this->bucket_count();
- std::pair<_Base_iterator, _Base_iterator> __pair =
- _Base::equal_range(__key);
- for (_Base_iterator __victim = __pair.first; __victim != __pair.second;)
- {
- this->_M_invalidate_if([__victim](_Base_const_iterator __it)
- { return __it == __victim; });
- this->_M_invalidate_local_if(
- [__victim](_Base_const_local_iterator __it)
- { return __it._M_cur == __victim._M_cur; });
- _Base::erase(__victim++);
- ++__ret;
- }
- _M_check_rehashed(__bucket_count);
- return __ret;
- }
-
- iterator
- erase(const_iterator __it)
- {
- __glibcxx_check_erase(__it);
- _Base_const_iterator __victim = __it.base();
- this->_M_invalidate_if([__victim](_Base_const_iterator __it)
- { return __it == __victim; });
- this->_M_invalidate_local_if(
- [__victim](_Base_const_local_iterator __it)
- { return __it._M_cur == __victim._M_cur; });
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __next = _Base::erase(__it.base());
- _M_check_rehashed(__bucket_count);
- return iterator(__next, this);
- }
-
- iterator
- erase(iterator __it)
- { return erase(const_iterator(__it)); }
-
- iterator
- erase(const_iterator __first, const_iterator __last)
- {
- __glibcxx_check_erase_range(__first, __last);
- for (_Base_const_iterator __tmp = __first.base();
- __tmp != __last.base(); ++__tmp)
- {
- _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if([__tmp](_Base_const_iterator __it)
- { return __it == __tmp; });
- this->_M_invalidate_local_if(
- [__tmp](_Base_const_local_iterator __it)
- { return __it._M_cur == __tmp._M_cur; });
- }
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __next = _Base::erase(__first.base(), __last.base());
- _M_check_rehashed(__bucket_count);
- return iterator(__next, this);
- }
-
- _Base&
- _M_base() noexcept { return *this; }
-
- const _Base&
- _M_base() const noexcept { return *this; }
-
- private:
- void
- _M_invalidate_locals()
- {
- _Base_local_iterator __local_end = _Base::end(0);
- this->_M_invalidate_local_if(
- [__local_end](_Base_const_local_iterator __it)
- { return __it != __local_end; });
- }
-
- void
- _M_invalidate_all()
- {
- _Base_iterator __end = _Base::end();
- this->_M_invalidate_if([__end](_Base_const_iterator __it)
- { return __it != __end; });
- _M_invalidate_locals();
- }
-
- void
- _M_check_rehashed(size_type __prev_count)
- {
- if (__prev_count != this->bucket_count())
- _M_invalidate_locals();
- }
- };
-
- template<typename _Key, typename _Tp, typename _Hash,
- typename _Pred, typename _Alloc>
- inline void
- swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
- unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
- { __x.swap(__y); }
-
- template<typename _Key, typename _Tp, typename _Hash,
- typename _Pred, typename _Alloc>
- inline bool
- operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
- const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
- { return __x._M_base() == __y._M_base(); }
-
- template<typename _Key, typename _Tp, typename _Hash,
- typename _Pred, typename _Alloc>
- inline bool
- operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
- const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
- { return !(__x == __y); }
-
-} // namespace __debug
-} // namespace std
-
-#endif // C++11
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/unordered_set b/gcc-4.8.1/libstdc++-v3/include/debug/unordered_set
deleted file mode 100644
index 8e88addd8..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/unordered_set
+++ /dev/null
@@ -1,885 +0,0 @@
-// Debugging unordered_set/unordered_multiset implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/unordered_set
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_UNORDERED_SET
-#define _GLIBCXX_DEBUG_UNORDERED_SET 1
-
-#if __cplusplus < 201103L
-# include <bits/c++0x_warning.h>
-#else
-# include <unordered_set>
-
-#include <debug/safe_unordered_container.h>
-#include <debug/safe_iterator.h>
-#include <debug/safe_local_iterator.h>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-namespace __debug
-{
- /// Class std::unordered_set with safety/checking/debug instrumentation.
- template<typename _Value,
- typename _Hash = std::hash<_Value>,
- typename _Pred = std::equal_to<_Value>,
- typename _Alloc = std::allocator<_Value> >
- class unordered_set
- : public _GLIBCXX_STD_C::unordered_set<_Value, _Hash, _Pred, _Alloc>,
- public __gnu_debug::_Safe_unordered_container<unordered_set<_Value, _Hash,
- _Pred, _Alloc> >
- {
- typedef _GLIBCXX_STD_C::unordered_set<_Value, _Hash,
- _Pred, _Alloc> _Base;
- typedef __gnu_debug::_Safe_unordered_container<unordered_set> _Safe_base;
- typedef typename _Base::const_iterator _Base_const_iterator;
- typedef typename _Base::iterator _Base_iterator;
- typedef typename _Base::const_local_iterator _Base_const_local_iterator;
- typedef typename _Base::local_iterator _Base_local_iterator;
-
- public:
- typedef typename _Base::size_type size_type;
- typedef typename _Base::hasher hasher;
- typedef typename _Base::key_equal key_equal;
- typedef typename _Base::allocator_type allocator_type;
-
- typedef typename _Base::key_type key_type;
- typedef typename _Base::value_type value_type;
-
- typedef __gnu_debug::_Safe_iterator<_Base_iterator,
- unordered_set> iterator;
- typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
- unordered_set> const_iterator;
- typedef __gnu_debug::_Safe_local_iterator<_Base_local_iterator,
- unordered_set> local_iterator;
- typedef __gnu_debug::_Safe_local_iterator<_Base_const_local_iterator,
- unordered_set> const_local_iterator;
-
- explicit
- unordered_set(size_type __n = 10,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
- : _Base(__n, __hf, __eql, __a) { }
-
- template<typename _InputIterator>
- unordered_set(_InputIterator __first, _InputIterator __last,
- size_type __n = 0,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
- __last)),
- __gnu_debug::__base(__last), __n,
- __hf, __eql, __a) { }
-
- unordered_set(const unordered_set& __x) = default;
-
- unordered_set(const _Base& __x)
- : _Base(__x) { }
-
- unordered_set(unordered_set&& __x) = default;
-
- unordered_set(initializer_list<value_type> __l,
- size_type __n = 0,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
- : _Base(__l, __n, __hf, __eql, __a) { }
-
- ~unordered_set() noexcept { }
-
- unordered_set&
- operator=(const unordered_set& __x)
- {
- *static_cast<_Base*>(this) = __x;
- this->_M_invalidate_all();
- return *this;
- }
-
- unordered_set&
- operator=(unordered_set&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- __glibcxx_check_self_move_assign(__x);
- clear();
- swap(__x);
- return *this;
- }
-
- unordered_set&
- operator=(initializer_list<value_type> __l)
- {
- this->clear();
- this->insert(__l);
- return *this;
- }
-
- void
- swap(unordered_set& __x)
- {
- _Base::swap(__x);
- _Safe_base::_M_swap(__x);
- }
-
- void
- clear() noexcept
- {
- _Base::clear();
- this->_M_invalidate_all();
- }
-
- iterator
- begin() noexcept
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() noexcept
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- // local versions
- local_iterator
- begin(size_type __b)
- {
- __glibcxx_check_bucket_index(__b);
- return local_iterator(_Base::begin(__b), __b, this);
- }
-
- local_iterator
- end(size_type __b)
- {
- __glibcxx_check_bucket_index(__b);
- return local_iterator(_Base::end(__b), __b, this);
- }
-
- const_local_iterator
- begin(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::begin(__b), __b, this);
- }
-
- const_local_iterator
- end(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::end(__b), __b, this);
- }
-
- const_local_iterator
- cbegin(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::cbegin(__b), __b, this);
- }
-
- const_local_iterator
- cend(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::cend(__b), __b, this);
- }
-
- size_type
- bucket_size(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return _Base::bucket_size(__b);
- }
-
- float
- max_load_factor() const noexcept
- { return _Base::max_load_factor(); }
-
- void
- max_load_factor(float __f)
- {
- __glibcxx_check_max_load_factor(__f);
- _Base::max_load_factor(__f);
- }
-
- template<typename... _Args>
- std::pair<iterator, bool>
- emplace(_Args&&... __args)
- {
- size_type __bucket_count = this->bucket_count();
- std::pair<_Base_iterator, bool> __res
- = _Base::emplace(std::forward<_Args>(__args)...);
- _M_check_rehashed(__bucket_count);
- return std::make_pair(iterator(__res.first, this), __res.second);
- }
-
- template<typename... _Args>
- iterator
- emplace_hint(const_iterator __hint, _Args&&... __args)
- {
- __glibcxx_check_insert(__hint);
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::emplace_hint(__hint.base(),
- std::forward<_Args>(__args)...);
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- std::pair<iterator, bool>
- insert(const value_type& __obj)
- {
- size_type __bucket_count = this->bucket_count();
- typedef std::pair<_Base_iterator, bool> __pair_type;
- __pair_type __res = _Base::insert(__obj);
- _M_check_rehashed(__bucket_count);
- return std::make_pair(iterator(__res.first, this), __res.second);
- }
-
- iterator
- insert(const_iterator __hint, const value_type& __obj)
- {
- __glibcxx_check_insert(__hint);
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::insert(__hint.base(), __obj);
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- std::pair<iterator, bool>
- insert(value_type&& __obj)
- {
- size_type __bucket_count = this->bucket_count();
- typedef std::pair<typename _Base::iterator, bool> __pair_type;
- __pair_type __res = _Base::insert(std::move(__obj));
- _M_check_rehashed(__bucket_count);
- return std::make_pair(iterator(__res.first, this), __res.second);
- }
-
- iterator
- insert(const_iterator __hint, value_type&& __obj)
- {
- __glibcxx_check_insert(__hint);
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::insert(__hint.base(), std::move(__obj));
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- void
- insert(std::initializer_list<value_type> __l)
- {
- size_type __bucket_count = this->bucket_count();
- _Base::insert(__l);
- _M_check_rehashed(__bucket_count);
- }
-
- template<typename _InputIterator>
- void
- insert(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- size_type __bucket_count = this->bucket_count();
- _Base::insert(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- _M_check_rehashed(__bucket_count);
- }
-
- iterator
- find(const key_type& __key)
- { return iterator(_Base::find(__key), this); }
-
- const_iterator
- find(const key_type& __key) const
- { return const_iterator(_Base::find(__key), this); }
-
- std::pair<iterator, iterator>
- equal_range(const key_type& __key)
- {
- typedef std::pair<_Base_iterator, _Base_iterator> __pair_type;
- __pair_type __res = _Base::equal_range(__key);
- return std::make_pair(iterator(__res.first, this),
- iterator(__res.second, this));
- }
-
- std::pair<const_iterator, const_iterator>
- equal_range(const key_type& __key) const
- {
- std::pair<_Base_const_iterator, _Base_const_iterator>
- __res = _Base::equal_range(__key);
- return std::make_pair(const_iterator(__res.first, this),
- const_iterator(__res.second, this));
- }
-
- size_type
- erase(const key_type& __key)
- {
- size_type __ret(0);
- _Base_iterator __victim(_Base::find(__key));
- if (__victim != _Base::end())
- {
- this->_M_invalidate_if(
- [__victim](_Base_const_iterator __it)
- { return __it == __victim; });
- this->_M_invalidate_local_if(
- [__victim](_Base_const_local_iterator __it)
- { return __it._M_cur == __victim._M_cur; });
- size_type __bucket_count = this->bucket_count();
- _Base::erase(__victim);
- _M_check_rehashed(__bucket_count);
- __ret = 1;
- }
- return __ret;
- }
-
- iterator
- erase(const_iterator __it)
- {
- __glibcxx_check_erase(__it);
- _Base_const_iterator __victim = __it.base();
- this->_M_invalidate_if(
- [__victim](_Base_const_iterator __it)
- { return __it == __victim; });
- this->_M_invalidate_local_if(
- [__victim](_Base_const_local_iterator __it)
- { return __it._M_cur == __victim._M_cur; });
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __next = _Base::erase(__it.base());
- _M_check_rehashed(__bucket_count);
- return iterator(__next, this);
- }
-
- iterator
- erase(iterator __it)
- { return erase(const_iterator(__it)); }
-
- iterator
- erase(const_iterator __first, const_iterator __last)
- {
- __glibcxx_check_erase_range(__first, __last);
- for (_Base_const_iterator __tmp = __first.base();
- __tmp != __last.base(); ++__tmp)
- {
- _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if(
- [__tmp](_Base_const_iterator __it)
- { return __it == __tmp; });
- this->_M_invalidate_local_if(
- [__tmp](_Base_const_local_iterator __it)
- { return __it._M_cur == __tmp._M_cur; });
- }
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __next = _Base::erase(__first.base(),
- __last.base());
- _M_check_rehashed(__bucket_count);
- return iterator(__next, this);
- }
-
- _Base&
- _M_base() noexcept { return *this; }
-
- const _Base&
- _M_base() const noexcept { return *this; }
-
- private:
- void
- _M_invalidate_locals()
- {
- _Base_local_iterator __local_end = _Base::end(0);
- this->_M_invalidate_local_if(
- [__local_end](_Base_const_local_iterator __it)
- { return __it != __local_end; });
- }
-
- void
- _M_invalidate_all()
- {
- _Base_iterator __end = _Base::end();
- this->_M_invalidate_if(
- [__end](_Base_const_iterator __it)
- { return __it != __end; });
- _M_invalidate_locals();
- }
-
- void
- _M_check_rehashed(size_type __prev_count)
- {
- if (__prev_count != this->bucket_count())
- _M_invalidate_locals();
- }
- };
-
- template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
- inline void
- swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
- unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
- { __x.swap(__y); }
-
- template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
- inline bool
- operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
- const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
- { return __x._M_base() == __y._M_base(); }
-
- template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
- inline bool
- operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
- const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
- { return !(__x == __y); }
-
-
- /// Class std::unordered_multiset with safety/checking/debug instrumentation.
- template<typename _Value,
- typename _Hash = std::hash<_Value>,
- typename _Pred = std::equal_to<_Value>,
- typename _Alloc = std::allocator<_Value> >
- class unordered_multiset
- : public _GLIBCXX_STD_C::unordered_multiset<_Value, _Hash, _Pred, _Alloc>,
- public __gnu_debug::_Safe_unordered_container<
- unordered_multiset<_Value, _Hash, _Pred, _Alloc> >
- {
- typedef _GLIBCXX_STD_C::unordered_multiset<_Value, _Hash,
- _Pred, _Alloc> _Base;
- typedef __gnu_debug::_Safe_unordered_container<unordered_multiset>
- _Safe_base;
- typedef typename _Base::const_iterator _Base_const_iterator;
- typedef typename _Base::iterator _Base_iterator;
- typedef typename _Base::const_local_iterator _Base_const_local_iterator;
- typedef typename _Base::local_iterator _Base_local_iterator;
-
- public:
- typedef typename _Base::size_type size_type;
- typedef typename _Base::hasher hasher;
- typedef typename _Base::key_equal key_equal;
- typedef typename _Base::allocator_type allocator_type;
-
- typedef typename _Base::key_type key_type;
- typedef typename _Base::value_type value_type;
-
- typedef __gnu_debug::_Safe_iterator<_Base_iterator,
- unordered_multiset> iterator;
- typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,
- unordered_multiset> const_iterator;
- typedef __gnu_debug::_Safe_local_iterator<
- _Base_local_iterator, unordered_multiset> local_iterator;
- typedef __gnu_debug::_Safe_local_iterator<
- _Base_const_local_iterator, unordered_multiset> const_local_iterator;
-
- explicit
- unordered_multiset(size_type __n = 10,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
- : _Base(__n, __hf, __eql, __a) { }
-
- template<typename _InputIterator>
- unordered_multiset(_InputIterator __first, _InputIterator __last,
- size_type __n = 0,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
- __last)),
- __gnu_debug::__base(__last), __n,
- __hf, __eql, __a) { }
-
- unordered_multiset(const unordered_multiset& __x) = default;
-
- unordered_multiset(const _Base& __x)
- : _Base(__x) { }
-
- unordered_multiset(unordered_multiset&& __x) = default;
-
- unordered_multiset(initializer_list<value_type> __l,
- size_type __n = 0,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
- : _Base(__l, __n, __hf, __eql, __a) { }
-
- ~unordered_multiset() noexcept { }
-
- unordered_multiset&
- operator=(const unordered_multiset& __x)
- {
- *static_cast<_Base*>(this) = __x;
- this->_M_invalidate_all();
- return *this;
- }
-
- unordered_multiset&
- operator=(unordered_multiset&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- __glibcxx_check_self_move_assign(__x);
- clear();
- swap(__x);
- return *this;
- }
-
- unordered_multiset&
- operator=(initializer_list<value_type> __l)
- {
- this->clear();
- this->insert(__l);
- return *this;
- }
-
- void
- swap(unordered_multiset& __x)
- {
- _Base::swap(__x);
- _Safe_base::_M_swap(__x);
- }
-
- void
- clear() noexcept
- {
- _Base::clear();
- this->_M_invalidate_all();
- }
-
- iterator
- begin() noexcept
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() noexcept
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- // local versions
- local_iterator
- begin(size_type __b)
- {
- __glibcxx_check_bucket_index(__b);
- return local_iterator(_Base::begin(__b), __b, this);
- }
-
- local_iterator
- end(size_type __b)
- {
- __glibcxx_check_bucket_index(__b);
- return local_iterator(_Base::end(__b), __b, this);
- }
-
- const_local_iterator
- begin(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::begin(__b), __b, this);
- }
-
- const_local_iterator
- end(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::end(__b), __b, this);
- }
-
- const_local_iterator
- cbegin(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::cbegin(__b), __b, this);
- }
-
- const_local_iterator
- cend(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return const_local_iterator(_Base::cend(__b), __b, this);
- }
-
- size_type
- bucket_size(size_type __b) const
- {
- __glibcxx_check_bucket_index(__b);
- return _Base::bucket_size(__b);
- }
-
- float
- max_load_factor() const noexcept
- { return _Base::max_load_factor(); }
-
- void
- max_load_factor(float __f)
- {
- __glibcxx_check_max_load_factor(__f);
- _Base::max_load_factor(__f);
- }
-
- template<typename... _Args>
- iterator
- emplace(_Args&&... __args)
- {
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it
- = _Base::emplace(std::forward<_Args>(__args)...);
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- template<typename... _Args>
- iterator
- emplace_hint(const_iterator __hint, _Args&&... __args)
- {
- __glibcxx_check_insert(__hint);
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::emplace_hint(__hint.base(),
- std::forward<_Args>(__args)...);
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- iterator
- insert(const value_type& __obj)
- {
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::insert(__obj);
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- iterator
- insert(const_iterator __hint, const value_type& __obj)
- {
- __glibcxx_check_insert(__hint);
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::insert(__hint.base(), __obj);
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- iterator
- insert(value_type&& __obj)
- {
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::insert(std::move(__obj));
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- iterator
- insert(const_iterator __hint, value_type&& __obj)
- {
- __glibcxx_check_insert(__hint);
- size_type __bucket_count = this->bucket_count();
- _Base_iterator __it = _Base::insert(__hint.base(), std::move(__obj));
- _M_check_rehashed(__bucket_count);
- return iterator(__it, this);
- }
-
- void
- insert(std::initializer_list<value_type> __l)
- {
- size_type __bucket_count = this->bucket_count();
- _Base::insert(__l);
- _M_check_rehashed(__bucket_count);
- }
-
- template<typename _InputIterator>
- void
- insert(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- size_type __bucket_count = this->bucket_count();
- _Base::insert(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- _M_check_rehashed(__bucket_count);
- }
-
- iterator
- find(const key_type& __key)
- { return iterator(_Base::find(__key), this); }
-
- const_iterator
- find(const key_type& __key) const
- { return const_iterator(_Base::find(__key), this); }
-
- std::pair<iterator, iterator>
- equal_range(const key_type& __key)
- {
- typedef std::pair<_Base_iterator, _Base_iterator> __pair_type;
- __pair_type __res = _Base::equal_range(__key);
- return std::make_pair(iterator(__res.first, this),
- iterator(__res.second, this));
- }
-
- std::pair<const_iterator, const_iterator>
- equal_range(const key_type& __key) const
- {
- std::pair<_Base_const_iterator, _Base_const_iterator>
- __res = _Base::equal_range(__key);
- return std::make_pair(const_iterator(__res.first, this),
- const_iterator(__res.second, this));
- }
-
- size_type
- erase(const key_type& __key)
- {
- size_type __ret(0);
- std::pair<_Base_iterator, _Base_iterator> __pair =
- _Base::equal_range(__key);
- for (_Base_iterator __victim = __pair.first; __victim != __pair.second;)
- {
- this->_M_invalidate_if([__victim](_Base_const_iterator __it)
- { return __it == __victim; });
- this->_M_invalidate_local_if(
- [__victim](_Base_const_local_iterator __it)
- { return __it._M_cur == __victim._M_cur; });
- _Base::erase(__victim++);
- ++__ret;
- }
- return __ret;
- }
-
- iterator
- erase(const_iterator __it)
- {
- __glibcxx_check_erase(__it);
- _Base_const_iterator __victim = __it.base();
- this->_M_invalidate_if([__victim](_Base_const_iterator __it)
- { return __it == __victim; });
- this->_M_invalidate_local_if(
- [__victim](_Base_const_local_iterator __it)
- { return __it._M_cur == __victim._M_cur; });
- return iterator(_Base::erase(__it.base()), this);
- }
-
- iterator
- erase(iterator __it)
- { return erase(const_iterator(__it)); }
-
- iterator
- erase(const_iterator __first, const_iterator __last)
- {
- __glibcxx_check_erase_range(__first, __last);
- for (_Base_const_iterator __tmp = __first.base();
- __tmp != __last.base(); ++__tmp)
- {
- _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(),
- _M_message(__gnu_debug::__msg_valid_range)
- ._M_iterator(__first, "first")
- ._M_iterator(__last, "last"));
- this->_M_invalidate_if([__tmp](_Base_const_iterator __it)
- { return __it == __tmp; });
- this->_M_invalidate_local_if(
- [__tmp](_Base_const_local_iterator __it)
- { return __it._M_cur == __tmp._M_cur; });
- }
- return iterator(_Base::erase(__first.base(),
- __last.base()), this);
- }
-
- _Base&
- _M_base() noexcept { return *this; }
-
- const _Base&
- _M_base() const noexcept { return *this; }
-
- private:
- void
- _M_invalidate_locals()
- {
- _Base_local_iterator __local_end = _Base::end(0);
- this->_M_invalidate_local_if(
- [__local_end](_Base_const_local_iterator __it)
- { return __it != __local_end; });
- }
-
- void
- _M_invalidate_all()
- {
- _Base_iterator __end = _Base::end();
- this->_M_invalidate_if([__end](_Base_const_iterator __it)
- { return __it != __end; });
- _M_invalidate_locals();
- }
-
- void
- _M_check_rehashed(size_type __prev_count)
- {
- if (__prev_count != this->bucket_count())
- _M_invalidate_locals();
- }
- };
-
- template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
- inline void
- swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
- unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
- { __x.swap(__y); }
-
- template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
- inline bool
- operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
- const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
- { return __x._M_base() == __y._M_base(); }
-
- template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
- inline bool
- operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
- const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
- { return !(__x == __y); }
-
-} // namespace __debug
-} // namespace std
-
-#endif // C++11
-
-#endif
diff --git a/gcc-4.8.1/libstdc++-v3/include/debug/vector b/gcc-4.8.1/libstdc++-v3/include/debug/vector
deleted file mode 100644
index 8473686f7..000000000
--- a/gcc-4.8.1/libstdc++-v3/include/debug/vector
+++ /dev/null
@@ -1,655 +0,0 @@
-// Debugging vector implementation -*- C++ -*-
-
-// Copyright (C) 2003-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file debug/vector
- * This file is a GNU debug extension to the Standard C++ Library.
- */
-
-#ifndef _GLIBCXX_DEBUG_VECTOR
-#define _GLIBCXX_DEBUG_VECTOR 1
-
-#include <vector>
-#include <utility>
-#include <debug/safe_sequence.h>
-#include <debug/safe_iterator.h>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-namespace __debug
-{
- /// Class std::vector with safety/checking/debug instrumentation.
- template<typename _Tp,
- typename _Allocator = std::allocator<_Tp> >
- class vector
- : public _GLIBCXX_STD_C::vector<_Tp, _Allocator>,
- public __gnu_debug::_Safe_sequence<vector<_Tp, _Allocator> >
- {
- typedef _GLIBCXX_STD_C::vector<_Tp, _Allocator> _Base;
-
- typedef typename _Base::iterator _Base_iterator;
- typedef typename _Base::const_iterator _Base_const_iterator;
- typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal;
-
-#if __cplusplus >= 201103L
- typedef __gnu_cxx::__alloc_traits<_Allocator> _Alloc_traits;
-#endif
-
- public:
- typedef typename _Base::reference reference;
- typedef typename _Base::const_reference const_reference;
-
- typedef __gnu_debug::_Safe_iterator<_Base_iterator,vector>
- iterator;
- typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,vector>
- const_iterator;
-
- typedef typename _Base::size_type size_type;
- typedef typename _Base::difference_type difference_type;
-
- typedef _Tp value_type;
- typedef _Allocator allocator_type;
- typedef typename _Base::pointer pointer;
- typedef typename _Base::const_pointer const_pointer;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
- // 23.2.4.1 construct/copy/destroy:
- explicit
- vector(const _Allocator& __a = _Allocator())
- : _Base(__a), _M_guaranteed_capacity(0) { }
-
-#if __cplusplus >= 201103L
- explicit
- vector(size_type __n, const _Allocator& __a = _Allocator())
- : _Base(__n, __a), _M_guaranteed_capacity(__n) { }
-
- vector(size_type __n, const _Tp& __value,
- const _Allocator& __a = _Allocator())
- : _Base(__n, __value, __a), _M_guaranteed_capacity(__n) { }
-#else
- explicit
- vector(size_type __n, const _Tp& __value = _Tp(),
- const _Allocator& __a = _Allocator())
- : _Base(__n, __value, __a), _M_guaranteed_capacity(__n) { }
-#endif
-
-#if __cplusplus >= 201103L
- template<class _InputIterator,
- typename = std::_RequireInputIter<_InputIterator>>
-#else
- template<class _InputIterator>
-#endif
- vector(_InputIterator __first, _InputIterator __last,
- const _Allocator& __a = _Allocator())
- : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first,
- __last)),
- __gnu_debug::__base(__last), __a),
- _M_guaranteed_capacity(0)
- { _M_update_guaranteed_capacity(); }
-
- vector(const vector& __x)
- : _Base(__x), _M_guaranteed_capacity(__x.size()) { }
-
- /// Construction from a release-mode vector
- vector(const _Base& __x)
- : _Base(__x), _M_guaranteed_capacity(__x.size()) { }
-
-#if __cplusplus >= 201103L
- vector(vector&& __x) noexcept
- : _Base(std::move(__x)),
- _M_guaranteed_capacity(this->size())
- {
- this->_M_swap(__x);
- __x._M_guaranteed_capacity = 0;
- }
-
- vector(const vector& __x, const allocator_type& __a)
- : _Base(__x, __a), _M_guaranteed_capacity(__x.size()) { }
-
- vector(vector&& __x, const allocator_type& __a)
- : _Base(std::move(__x), __a),
- _M_guaranteed_capacity(this->size())
- {
- __x._M_invalidate_all();
- __x._M_guaranteed_capacity = 0;
- }
-
- vector(initializer_list<value_type> __l,
- const allocator_type& __a = allocator_type())
- : _Base(__l, __a),
- _M_guaranteed_capacity(__l.size()) { }
-#endif
-
- ~vector() _GLIBCXX_NOEXCEPT { }
-
- vector&
- operator=(const vector& __x)
- {
- static_cast<_Base&>(*this) = __x;
- this->_M_invalidate_all();
- _M_update_guaranteed_capacity();
- return *this;
- }
-
-#if __cplusplus >= 201103L
- vector&
- operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move())
- {
- __glibcxx_check_self_move_assign(__x);
- _Base::operator=(std::move(__x));
- this->_M_invalidate_all();
- _M_update_guaranteed_capacity();
- __x._M_invalidate_all();
- __x._M_guaranteed_capacity = 0;
- return *this;
- }
-
- vector&
- operator=(initializer_list<value_type> __l)
- {
- static_cast<_Base&>(*this) = __l;
- this->_M_invalidate_all();
- _M_update_guaranteed_capacity();
- return *this;
- }
-#endif
-
-#if __cplusplus >= 201103L
- template<typename _InputIterator,
- typename = std::_RequireInputIter<_InputIterator>>
-#else
- template<typename _InputIterator>
-#endif
- void
- assign(_InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_valid_range(__first, __last);
- _Base::assign(__gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
- this->_M_invalidate_all();
- _M_update_guaranteed_capacity();
- }
-
- void
- assign(size_type __n, const _Tp& __u)
- {
- _Base::assign(__n, __u);
- this->_M_invalidate_all();
- _M_update_guaranteed_capacity();
- }
-
-#if __cplusplus >= 201103L
- void
- assign(initializer_list<value_type> __l)
- {
- _Base::assign(__l);
- this->_M_invalidate_all();
- _M_update_guaranteed_capacity();
- }
-#endif
-
- using _Base::get_allocator;
-
- // iterators:
- iterator
- begin() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::begin(), this); }
-
- const_iterator
- begin() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::begin(), this); }
-
- iterator
- end() _GLIBCXX_NOEXCEPT
- { return iterator(_Base::end(), this); }
-
- const_iterator
- end() const _GLIBCXX_NOEXCEPT
- { return const_iterator(_Base::end(), this); }
-
- reverse_iterator
- rbegin() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(end()); }
-
- const_reverse_iterator
- rbegin() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(end()); }
-
- reverse_iterator
- rend() _GLIBCXX_NOEXCEPT
- { return reverse_iterator(begin()); }
-
- const_reverse_iterator
- rend() const _GLIBCXX_NOEXCEPT
- { return const_reverse_iterator(begin()); }
-
-#if __cplusplus >= 201103L
- const_iterator
- cbegin() const noexcept
- { return const_iterator(_Base::begin(), this); }
-
- const_iterator
- cend() const noexcept
- { return const_iterator(_Base::end(), this); }
-
- const_reverse_iterator
- crbegin() const noexcept
- { return const_reverse_iterator(end()); }
-
- const_reverse_iterator
- crend() const noexcept
- { return const_reverse_iterator(begin()); }
-#endif
-
- // 23.2.4.2 capacity:
- using _Base::size;
- using _Base::max_size;
-
-#if __cplusplus >= 201103L
- void
- resize(size_type __sz)
- {
- bool __realloc = _M_requires_reallocation(__sz);
- if (__sz < this->size())
- this->_M_invalidate_after_nth(__sz);
- _Base::resize(__sz);
- if (__realloc)
- this->_M_invalidate_all();
- _M_update_guaranteed_capacity();
- }
-
- void
- resize(size_type __sz, const _Tp& __c)
- {
- bool __realloc = _M_requires_reallocation(__sz);
- if (__sz < this->size())
- this->_M_invalidate_after_nth(__sz);
- _Base::resize(__sz, __c);
- if (__realloc)
- this->_M_invalidate_all();
- _M_update_guaranteed_capacity();
- }
-#else
- void
- resize(size_type __sz, _Tp __c = _Tp())
- {
- bool __realloc = _M_requires_reallocation(__sz);
- if (__sz < this->size())
- this->_M_invalidate_after_nth(__sz);
- _Base::resize(__sz, __c);
- if (__realloc)
- this->_M_invalidate_all();
- _M_update_guaranteed_capacity();
- }
-#endif
-
-#if __cplusplus >= 201103L
- void
- shrink_to_fit()
- {
- if (_Base::_M_shrink_to_fit())
- {
- _M_guaranteed_capacity = _Base::capacity();
- this->_M_invalidate_all();
- }
- }
-#endif
-
- size_type
- capacity() const _GLIBCXX_NOEXCEPT
- {
-#ifdef _GLIBCXX_DEBUG_PEDANTIC
- return _M_guaranteed_capacity;
-#else
- return _Base::capacity();
-#endif
- }
-
- using _Base::empty;
-
- void
- reserve(size_type __n)
- {
- bool __realloc = _M_requires_reallocation(__n);
- _Base::reserve(__n);
- if (__n > _M_guaranteed_capacity)
- _M_guaranteed_capacity = __n;
- if (__realloc)
- this->_M_invalidate_all();
- }
-
- // element access:
- reference
- operator[](size_type __n)
- {
- __glibcxx_check_subscript(__n);
- return _M_base()[__n];
- }
-
- const_reference
- operator[](size_type __n) const
- {
- __glibcxx_check_subscript(__n);
- return _M_base()[__n];
- }
-
- using _Base::at;
-
- reference
- front()
- {
- __glibcxx_check_nonempty();
- return _Base::front();
- }
-
- const_reference
- front() const
- {
- __glibcxx_check_nonempty();
- return _Base::front();
- }
-
- reference
- back()
- {
- __glibcxx_check_nonempty();
- return _Base::back();
- }
-
- const_reference
- back() const
- {
- __glibcxx_check_nonempty();
- return _Base::back();
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // DR 464. Suggestion for new member functions in standard containers.
- using _Base::data;
-
- // 23.2.4.3 modifiers:
- void
- push_back(const _Tp& __x)
- {
- bool __realloc = _M_requires_reallocation(this->size() + 1);
- _Base::push_back(__x);
- if (__realloc)
- this->_M_invalidate_all();
- _M_update_guaranteed_capacity();
- }
-
-#if __cplusplus >= 201103L
- template<typename _Up = _Tp>
- typename __gnu_cxx::__enable_if<!std::__are_same<_Up, bool>::__value,
- void>::__type
- push_back(_Tp&& __x)
- { emplace_back(std::move(__x)); }
-
- template<typename... _Args>
- void
- emplace_back(_Args&&... __args)
- {
- bool __realloc = _M_requires_reallocation(this->size() + 1);
- _Base::emplace_back(std::forward<_Args>(__args)...);
- if (__realloc)
- this->_M_invalidate_all();
- _M_update_guaranteed_capacity();
- }
-#endif
-
- void
- pop_back()
- {
- __glibcxx_check_nonempty();
- this->_M_invalidate_if(_Equal(--_Base::end()));
- _Base::pop_back();
- }
-
-#if __cplusplus >= 201103L
- template<typename... _Args>
- iterator
- emplace(iterator __position, _Args&&... __args)
- {
- __glibcxx_check_insert(__position);
- bool __realloc = _M_requires_reallocation(this->size() + 1);
- difference_type __offset = __position.base() - _Base::begin();
- _Base_iterator __res = _Base::emplace(__position.base(),
- std::forward<_Args>(__args)...);
- if (__realloc)
- this->_M_invalidate_all();
- else
- this->_M_invalidate_after_nth(__offset);
- _M_update_guaranteed_capacity();
- return iterator(__res, this);
- }
-#endif
-
- iterator
- insert(iterator __position, const _Tp& __x)
- {
- __glibcxx_check_insert(__position);
- bool __realloc = _M_requires_reallocation(this->size() + 1);
- difference_type __offset = __position.base() - _Base::begin();
- _Base_iterator __res = _Base::insert(__position.base(), __x);
- if (__realloc)
- this->_M_invalidate_all();
- else
- this->_M_invalidate_after_nth(__offset);
- _M_update_guaranteed_capacity();
- return iterator(__res, this);
- }
-
-#if __cplusplus >= 201103L
- template<typename _Up = _Tp>
- typename __gnu_cxx::__enable_if<!std::__are_same<_Up, bool>::__value,
- iterator>::__type
- insert(iterator __position, _Tp&& __x)
- { return emplace(__position, std::move(__x)); }
-
- void
- insert(iterator __position, initializer_list<value_type> __l)
- { this->insert(__position, __l.begin(), __l.end()); }
-#endif
-
- void
- insert(iterator __position, size_type __n, const _Tp& __x)
- {
- __glibcxx_check_insert(__position);
- bool __realloc = _M_requires_reallocation(this->size() + __n);
- difference_type __offset = __position.base() - _Base::begin();
- _Base::insert(__position.base(), __n, __x);
- if (__realloc)
- this->_M_invalidate_all();
- else
- this->_M_invalidate_after_nth(__offset);
- _M_update_guaranteed_capacity();
- }
-
-#if __cplusplus >= 201103L
- template<class _InputIterator,
- typename = std::_RequireInputIter<_InputIterator>>
-#else
- template<class _InputIterator>
-#endif
- void
- insert(iterator __position,
- _InputIterator __first, _InputIterator __last)
- {
- __glibcxx_check_insert_range(__position, __first, __last);
-
- /* Hard to guess if invalidation will occur, because __last
- - __first can't be calculated in all cases, so we just
- punt here by checking if it did occur. */
- _Base_iterator __old_begin = _M_base().begin();
- difference_type __offset = __position.base() - _Base::begin();
- _Base::insert(__position.base(), __gnu_debug::__base(__first),
- __gnu_debug::__base(__last));
-
- if (_M_base().begin() != __old_begin)
- this->_M_invalidate_all();
- else
- this->_M_invalidate_after_nth(__offset);
- _M_update_guaranteed_capacity();
- }
-
- iterator
- erase(iterator __position)
- {
- __glibcxx_check_erase(__position);
- difference_type __offset = __position.base() - _Base::begin();
- _Base_iterator __res = _Base::erase(__position.base());
- this->_M_invalidate_after_nth(__offset);
- return iterator(__res, this);
- }
-
- iterator
- erase(iterator __first, iterator __last)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 151. can't currently clear() empty container
- __glibcxx_check_erase_range(__first, __last);
-
- if (__first.base() != __last.base())
- {
- difference_type __offset = __first.base() - _Base::begin();
- _Base_iterator __res = _Base::erase(__first.base(),
- __last.base());
- this->_M_invalidate_after_nth(__offset);
- return iterator(__res, this);
- }
- else
- return __first;
- }
-
- void
- swap(vector& __x)
-#if __cplusplus >= 201103L
- noexcept(_Alloc_traits::_S_nothrow_swap())
-#endif
- {
-#if __cplusplus >= 201103L
- if (!_Alloc_traits::_S_propagate_on_swap())
- __glibcxx_check_equal_allocs(__x);
-#endif
- _Base::swap(__x);
- this->_M_swap(__x);
- std::swap(_M_guaranteed_capacity, __x._M_guaranteed_capacity);
- }
-
- void
- clear() _GLIBCXX_NOEXCEPT
- {
- _Base::clear();
- this->_M_invalidate_all();
- _M_guaranteed_capacity = 0;
- }
-
- _Base&
- _M_base() _GLIBCXX_NOEXCEPT { return *this; }
-
- const _Base&
- _M_base() const _GLIBCXX_NOEXCEPT { return *this; }
-
- private:
- size_type _M_guaranteed_capacity;
-
- bool
- _M_requires_reallocation(size_type __elements)
- { return __elements > this->capacity(); }
-
- void
- _M_update_guaranteed_capacity()
- {
- if (this->size() > _M_guaranteed_capacity)
- _M_guaranteed_capacity = this->size();
- }
-
- void
- _M_invalidate_after_nth(difference_type __n)
- {
- typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth;
- this->_M_invalidate_if(_After_nth(__n, _Base::begin()));
- }
- };
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator==(const vector<_Tp, _Alloc>& __lhs,
- const vector<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() == __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator!=(const vector<_Tp, _Alloc>& __lhs,
- const vector<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() != __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator<(const vector<_Tp, _Alloc>& __lhs,
- const vector<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() < __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator<=(const vector<_Tp, _Alloc>& __lhs,
- const vector<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() <= __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator>=(const vector<_Tp, _Alloc>& __lhs,
- const vector<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() >= __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator>(const vector<_Tp, _Alloc>& __lhs,
- const vector<_Tp, _Alloc>& __rhs)
- { return __lhs._M_base() > __rhs._M_base(); }
-
- template<typename _Tp, typename _Alloc>
- inline void
- swap(vector<_Tp, _Alloc>& __lhs, vector<_Tp, _Alloc>& __rhs)
- { __lhs.swap(__rhs); }
-
-} // namespace __debug
-
-#if __cplusplus >= 201103L
- // DR 1182.
- /// std::hash specialization for vector<bool>.
- template<typename _Alloc>
- struct hash<__debug::vector<bool, _Alloc>>
- : public __hash_base<size_t, __debug::vector<bool, _Alloc>>
- {
- size_t
- operator()(const __debug::vector<bool, _Alloc>& __b) const noexcept
- { return std::hash<_GLIBCXX_STD_C::vector<bool, _Alloc>>()
- (__b._M_base()); }
- };
-#endif
-
-} // namespace std
-
-#endif