aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_')
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp74
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp273
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp84
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp193
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp60
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp63
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp103
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp292
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp522
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp51
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp137
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp183
12 files changed, 0 insertions, 2035 deletions
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp
deleted file mode 100644
index e2c4b9ae9..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 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/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file cond_dtor.hpp
- * Contains a conditional destructor
- */
-
-template<typename Size_Type>
-class cond_dtor
-{
-public:
- cond_dtor(value_vector a_vec, iterator& r_last_it, Size_Type total_size)
- : m_a_vec(a_vec), m_r_last_it(r_last_it), m_max_size(total_size),
- m_no_action(false)
- { }
-
- ~cond_dtor()
- {
- if (m_no_action)
- return;
- iterator it = m_a_vec;
- while (it != m_r_last_it)
- {
- it->~value_type();
- ++it;
- }
-
- if (m_max_size > 0)
- value_allocator().deallocate(m_a_vec, m_max_size);
- }
-
- inline void
- set_no_action()
- { m_no_action = true; }
-
-protected:
- value_vector m_a_vec;
- iterator& m_r_last_it;
- const Size_Type m_max_size;
- bool m_no_action;
-};
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index 545b98162..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,273 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 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/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::value_allocator
-PB_DS_CLASS_C_DEC::s_value_alloc;
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::metadata_allocator
-PB_DS_CLASS_C_DEC::s_metadata_alloc;
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_OV_TREE_CLASS_NAME() :
- m_a_values(NULL),
- m_a_metadata(NULL),
- m_end_it(NULL),
- m_size(0)
-{ _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_OV_TREE_CLASS_NAME(const Cmp_Fn& r_cmp_fn) :
- cmp_fn_base(r_cmp_fn),
- m_a_values(NULL),
- m_a_metadata(NULL),
- m_end_it(NULL),
- m_size(0)
-{ _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_OV_TREE_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) :
- cmp_fn_base(r_cmp_fn),
- node_update(r_node_update),
- m_a_values(NULL),
- m_a_metadata(NULL),
- m_end_it(NULL),
- m_size(0)
-{ _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_OV_TREE_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
-#ifdef _GLIBCXX_DEBUG
- debug_base(other),
-#endif
-#ifdef PB_DS_TREE_TRACE
- PB_DS_TREE_TRACE_BASE_C_DEC(other),
-#endif
- cmp_fn_base(other),
- node_update(other),
- m_a_values(NULL),
- m_a_metadata(NULL),
- m_end_it(NULL),
- m_size(0)
-{
- copy_from_ordered_range(other.begin(), other.end());
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-inline void
-PB_DS_CLASS_C_DEC::
-copy_from_range(It first_it, It last_it)
-{
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- typedef
- std::map<
- key_type,
- mapped_type,
- Cmp_Fn,
- typename Allocator::template rebind<
- value_type>::other>
- map_type;
-#else
- typedef
- std::set<
- key_type,
- Cmp_Fn,
- typename Allocator::template rebind<
- Key>::other>
- map_type;
-#endif
-
- map_type m(first_it, last_it);
- copy_from_ordered_range(m.begin(), m.end());
-}
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_ordered_range(It first_it, It last_it)
-{
- const size_type len = std::distance(first_it, last_it);
- if (len == 0)
- return;
-
- value_vector a_values = s_value_alloc.allocate(len);
- iterator target_it = a_values;
- It source_it = first_it;
- It source_end_it = last_it;
-
- cond_dtor<size_type> cd(a_values, target_it, len);
- while (source_it != source_end_it)
- {
- new (const_cast<void* >(static_cast<const void* >(target_it)))
- value_type(*source_it++);
-
- ++target_it;
- }
-
- reallocate_metadata((node_update* )this, len);
- cd.set_no_action();
- m_a_values = a_values;
- m_size = len;
- m_end_it = m_a_values + m_size;
- update(PB_DS_node_begin_imp(), (node_update* )this);
-
-#ifdef _GLIBCXX_DEBUG
- const_iterator dbg_it = m_a_values;
- while (dbg_it != m_end_it)
- {
- debug_base::insert_new(PB_DS_V2F(*dbg_it));
- dbg_it++;
- }
- PB_DS_CLASS_C_DEC::assert_valid();
-#endif
-}
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_ordered_range(It first_it, It last_it, It other_first_it,
- It other_last_it)
-{
- clear();
- const size_type len = std::distance(first_it, last_it)
- + std::distance(other_first_it, other_last_it);
-
- value_vector a_values = s_value_alloc.allocate(len);
-
- iterator target_it = a_values;
- It source_it = first_it;
- It source_end_it = last_it;
-
- cond_dtor<size_type> cd(a_values, target_it, len);
- while (source_it != source_end_it)
- {
- new (const_cast<void* >(static_cast<const void* >(target_it)))
- value_type(*source_it++);
- ++target_it;
- }
-
- source_it = other_first_it;
- source_end_it = other_last_it;
-
- while (source_it != source_end_it)
- {
- new (const_cast<void* >(static_cast<const void* >(target_it)))
- value_type(*source_it++);
- ++target_it;
- }
-
- reallocate_metadata((node_update* )this, len);
- cd.set_no_action();
- m_a_values = a_values;
- m_size = len;
- m_end_it = m_a_values + m_size;
- update(PB_DS_node_begin_imp(), (node_update* )this);
-
-#ifdef _GLIBCXX_DEBUG
- const_iterator dbg_it = m_a_values;
- while (dbg_it != m_end_it)
- {
- debug_base::insert_new(PB_DS_V2F(*dbg_it));
- dbg_it++;
- }
- PB_DS_CLASS_C_DEC::assert_valid();
-#endif
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- value_swap(other);
- std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-value_swap(PB_DS_CLASS_C_DEC& other)
-{
- std::swap(m_a_values, other.m_a_values);
- std::swap(m_a_metadata, other.m_a_metadata);
- std::swap(m_size, other.m_size);
- std::swap(m_end_it, other.m_end_it);
- _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~PB_DS_OV_TREE_CLASS_NAME()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- cond_dtor<size_type> cd(m_a_values, m_end_it, m_size);
- reallocate_metadata((node_update* )this, 0);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-update(node_iterator /*it*/, null_node_update_pointer)
-{ }
-
-PB_DS_CLASS_T_DEC
-template<typename Node_Update>
-void
-PB_DS_CLASS_C_DEC::
-update(node_iterator nd_it, Node_Update* p_update)
-{
- const_node_iterator end_it = PB_DS_node_end_imp();
- if (nd_it == end_it)
- return;
- update(nd_it.get_l_child(), p_update);
- update(nd_it.get_r_child(), p_update);
- node_update::operator()(nd_it, end_it);
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
deleted file mode 100644
index c32a8af48..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 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/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- std::cout << "av1" << std::endl;
-
- if (m_a_values == NULL || m_end_it == NULL || m_size == 0)
- _GLIBCXX_DEBUG_ASSERT(m_a_values == NULL && m_end_it == NULL && m_size == 0);
-
- std::cout << "av2" << std::endl;
- assert_iterators();
- std::cout << "av3" << std::endl;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_iterators() const
-{
- debug_base::check_size(m_size);
- size_type iterated_num = 0;
- const_iterator prev_it = end();
- _GLIBCXX_DEBUG_ASSERT( m_end_it == m_a_values + m_size);
- for (const_iterator it = begin(); it != end(); ++it)
- {
- ++iterated_num;
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(PB_DS_V2F(*it));)
- _GLIBCXX_DEBUG_ASSERT(lower_bound(PB_DS_V2F(*it)) == it);
- const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*it));
- --upper_bound_it;
- _GLIBCXX_DEBUG_ASSERT(upper_bound_it == it);
- if (prev_it != end())
- _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(*prev_it),
- PB_DS_V2F(*it)));
- prev_it = it;
- }
- _GLIBCXX_DEBUG_ASSERT(iterated_num == m_size);
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
deleted file mode 100644
index 618306dce..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,193 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 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/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- if (m_size == 0)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return;
- }
- else
- {
- reallocate_metadata((node_update* )this, 0);
- cond_dtor<size_type> cd(m_a_values, m_end_it, m_size);
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
- m_a_values = NULL;
- m_size = 0;
- m_end_it = m_a_values;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
-#ifdef PB_DS_REGRESSION
- typename Allocator::group_throw_prob_adjustor adjust(m_size);
-#endif
-
- size_type new_size = 0;
- size_type num_val_ersd = 0;
- iterator source_it = m_a_values;
- for (source_it = begin(); source_it != m_end_it; ++source_it)
- if (!pred(*source_it))
- ++new_size;
- else
- ++num_val_ersd;
-
- if (new_size == 0)
- {
- clear();
- return num_val_ersd;
- }
-
- value_vector a_new_values = s_value_alloc.allocate(new_size);
- iterator target_it = a_new_values;
- cond_dtor<size_type> cd(a_new_values, target_it, new_size);
- _GLIBCXX_DEBUG_ONLY(debug_base::clear());
- for (source_it = begin(); source_it != m_end_it; ++source_it)
- {
- if (!pred(*source_it))
- {
- new (const_cast<void*>(static_cast<const void* >(target_it)))
- value_type(*source_it);
-
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(*source_it)));
- ++target_it;
- }
- }
-
- reallocate_metadata((node_update* )this, new_size);
- cd.set_no_action();
-
- {
- cond_dtor<size_type> cd1(m_a_values, m_end_it, m_size);
- }
-
- m_a_values = a_new_values;
- m_size = new_size;
- m_end_it = target_it;
- update(node_begin(), (node_update* )this);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return num_val_ersd;
-}
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-It
-PB_DS_CLASS_C_DEC::
-erase_imp(It it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- if (it == end())
- return end();
-
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::check_key_exists(PB_DS_V2F(*it));)
-
-#ifdef PB_DS_REGRESSION
- typename Allocator::group_throw_prob_adjustor adjust(m_size);
-#endif
-
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- value_vector a_values = s_value_alloc.allocate(m_size - 1);
- iterator source_it = begin();
- iterator source_end_it = end();
- iterator target_it = a_values;
- iterator ret_it = end();
-
- cond_dtor<size_type> cd(a_values, target_it, m_size - 1);
-
- _GLIBCXX_DEBUG_ONLY(size_type cnt = 0;)
-
- while (source_it != source_end_it)
- {
- if (source_it != it)
- {
- _GLIBCXX_DEBUG_ONLY(++cnt;)
- _GLIBCXX_DEBUG_ASSERT(cnt != m_size);
- new (const_cast<void* >(static_cast<const void* >(target_it)))
- value_type(*source_it);
-
- ++target_it;
- }
- else
- ret_it = target_it;
- ++source_it;
- }
-
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- reallocate_metadata((node_update* )this, m_size - 1);
- cd.set_no_action();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::erase_existing(PB_DS_V2F(*it));)
- {
- cond_dtor<size_type> cd1(m_a_values, m_end_it, m_size);
- }
-
- m_a_values = a_values;
- --m_size;
- m_end_it = m_a_values + m_size;
- update(node_begin(), (node_update* )this);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return It(ret_it);
-}
-
-PB_DS_CLASS_T_DEC
-bool
-PB_DS_CLASS_C_DEC::
-erase(const_key_reference r_key)
-{
- point_iterator it = find(r_key);
- if (it == end())
- return false;
- erase(it);
- return true;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
deleted file mode 100644
index c9421af39..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 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/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file info_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-size() const
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return m_size;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-max_size() const
-{ return s_value_alloc.max_size(); }
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-empty() const
-{ return size() == 0; }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
deleted file mode 100644
index 91d277b0c..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 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/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-reallocate_metadata(null_node_update_pointer, size_type)
-{ }
-
-PB_DS_CLASS_T_DEC
-template<typename Node_Update_>
-void
-PB_DS_CLASS_C_DEC::
-reallocate_metadata(Node_Update_* , size_type new_size)
-{
- metadata_pointer a_new_metadata_vec =(new_size == 0) ? NULL : s_metadata_alloc.allocate(new_size);
-
- if (m_a_metadata != NULL)
- {
- for (size_type i = 0; i < m_size; ++i)
- m_a_metadata[i].~metadata_type();
- s_metadata_alloc.deallocate(m_a_metadata, m_size);
- }
- std::swap(m_a_metadata, a_new_metadata_vec);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
deleted file mode 100644
index 7652c4c2e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
+++ /dev/null
@@ -1,103 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 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/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file iterators_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_node_iterator
-PB_DS_CLASS_C_DEC::
-node_begin() const
-{ return PB_DS_node_begin_imp(); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_node_iterator
-PB_DS_CLASS_C_DEC::
-node_end() const
-{ return PB_DS_node_end_imp(); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-node_begin()
-{ return PB_DS_node_begin_imp(); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-node_end()
-{ return PB_DS_node_end_imp(); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_node_iterator
-PB_DS_CLASS_C_DEC::
-PB_DS_node_begin_imp() const
-{
- return const_node_iterator(const_cast<pointer>(mid_pointer(begin(), end())),
- const_cast<pointer>(begin()),
- const_cast<pointer>(end()),(m_a_metadata == NULL)?
- NULL :
- mid_pointer(m_a_metadata, m_a_metadata + m_size));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_node_iterator
-PB_DS_CLASS_C_DEC::
-PB_DS_node_end_imp() const
-{
- return const_node_iterator(end(), end(), end(),
- (m_a_metadata == NULL) ? NULL : m_a_metadata + m_size);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-PB_DS_node_begin_imp()
-{
- return node_iterator(mid_pointer(begin(), end()), begin(), end(),
- (m_a_metadata == NULL) ? NULL : mid_pointer(m_a_metadata, m_a_metadata + m_size));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-PB_DS_node_end_imp()
-{
- return node_iterator(end(), end(),
- end(),(m_a_metadata == NULL) ? NULL : m_a_metadata + m_size);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
deleted file mode 100644
index 68fedc0eb..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
+++ /dev/null
@@ -1,292 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 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/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file node_iterators.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-#ifndef PB_DS_OV_TREE_NODE_ITERATORS_HPP
-#define PB_DS_OV_TREE_NODE_ITERATORS_HPP
-
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC \
- ov_tree_node_const_it_<Value_Type, Metadata_Type, Allocator>
-
- // Const node reference.
- template<typename Value_Type, typename Metadata_Type, class Allocator>
- class ov_tree_node_const_it_
- {
-
- protected:
- typedef
- typename Allocator::template rebind<
- Value_Type>::other::pointer
- pointer;
-
- typedef
- typename Allocator::template rebind<
- Value_Type>::other::const_pointer
- const_pointer;
-
- typedef
- typename Allocator::template rebind<
- Metadata_Type>::other::const_pointer
- const_metadata_pointer;
-
- typedef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC this_type;
-
- protected:
-
- template<typename Ptr>
- inline static Ptr
- mid_pointer(Ptr p_begin, Ptr p_end)
- {
- _GLIBCXX_DEBUG_ASSERT(p_end >= p_begin);
- return (p_begin + (p_end - p_begin) / 2);
- }
-
- public:
-
- typedef trivial_iterator_tag iterator_category;
-
- typedef trivial_iterator_difference_type difference_type;
-
- typedef
- typename Allocator::template rebind<
- Value_Type>::other::const_pointer
- value_type;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- Value_Type>::type>::other::const_pointer
- reference;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- Value_Type>::type>::other::const_pointer
- const_reference;
-
- typedef Metadata_Type metadata_type;
-
- typedef
- typename Allocator::template rebind<
- metadata_type>::other::const_reference
- const_metadata_reference;
-
- public:
- inline
- ov_tree_node_const_it_(const_pointer p_nd = NULL, const_pointer p_begin_nd = NULL, const_pointer p_end_nd = NULL, const_metadata_pointer p_metadata = NULL) : m_p_value(const_cast<pointer>(p_nd)), m_p_begin_value(const_cast<pointer>(p_begin_nd)), m_p_end_value(const_cast<pointer>(p_end_nd)), m_p_metadata(p_metadata)
- { }
-
- inline const_reference
- operator*() const
- { return m_p_value; }
-
- inline const_metadata_reference
- get_metadata() const
- {
- enum
- {
- has_metadata = !is_same<Metadata_Type, null_node_metadata>::value
- };
-
- PB_DS_STATIC_ASSERT(should_have_metadata, has_metadata);
- _GLIBCXX_DEBUG_ASSERT(m_p_metadata != NULL);
- return *m_p_metadata;
- }
-
- inline this_type
- get_l_child() const
- {
- if (m_p_begin_value == m_p_value)
- return (this_type(m_p_begin_value, m_p_begin_value, m_p_begin_value));
-
- const_metadata_pointer p_begin_metadata =
- m_p_metadata - (m_p_value - m_p_begin_value);
-
- return (this_type(mid_pointer(m_p_begin_value, m_p_value),
- m_p_begin_value,
- m_p_value,
- mid_pointer(p_begin_metadata, m_p_metadata)));
- }
-
- inline this_type
- get_r_child() const
- {
- if (m_p_value == m_p_end_value)
- return (this_type(m_p_end_value, m_p_end_value, m_p_end_value));
-
- const_metadata_pointer p_end_metadata =
- m_p_metadata + (m_p_end_value - m_p_value);
-
- return (this_type(mid_pointer(m_p_value + 1, m_p_end_value),
- m_p_value + 1,
- m_p_end_value,(m_p_metadata == NULL) ?
- NULL : mid_pointer(m_p_metadata + 1, p_end_metadata)));
- }
-
- inline bool
- operator==(const this_type& other) const
- {
- const bool is_end = m_p_begin_value == m_p_end_value;
- const bool is_other_end = other.m_p_begin_value == other.m_p_end_value;
-
- if (is_end)
- return (is_other_end);
-
- if (is_other_end)
- return (is_end);
-
- return m_p_value == other.m_p_value;
- }
-
- inline bool
- operator!=(const this_type& other) const
- { return !operator==(other); }
-
- public:
- pointer m_p_value;
- pointer m_p_begin_value;
- pointer m_p_end_value;
-
- const_metadata_pointer m_p_metadata;
- };
-
-#define PB_DS_OV_TREE_NODE_ITERATOR_C_DEC \
- ov_tree_node_it_<Value_Type, Metadata_Type, Allocator>
-
- // Node reference.
- template<typename Value_Type, typename Metadata_Type, class Allocator>
- class ov_tree_node_it_ : public PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC
- {
-
- private:
- typedef PB_DS_OV_TREE_NODE_ITERATOR_C_DEC this_type;
-
- typedef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC base_type;
-
- typedef typename base_type::pointer pointer;
-
- typedef typename base_type::const_pointer const_pointer;
-
- typedef
- typename base_type::const_metadata_pointer
- const_metadata_pointer;
-
- public:
-
- typedef trivial_iterator_tag iterator_category;
-
- typedef trivial_iterator_difference_type difference_type;
-
- typedef
- typename Allocator::template rebind<
- Value_Type>::other::pointer
- value_type;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- Value_Type>::type>::other::pointer
- reference;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- Value_Type>::type>::other::pointer
- const_reference;
-
- public:
- inline
- ov_tree_node_it_(const_pointer p_nd = NULL, const_pointer p_begin_nd = NULL, const_pointer p_end_nd = NULL, const_metadata_pointer p_metadata = NULL) : base_type(p_nd, p_begin_nd, p_end_nd, p_metadata)
- { }
-
- // Access.
- inline reference
- operator*() const
- { return reference(base_type::m_p_value); }
-
- // Returns the node reference associated with the left node.
- inline ov_tree_node_it_
- get_l_child() const
- {
- if (base_type::m_p_begin_value == base_type::m_p_value)
- return (this_type(base_type::m_p_begin_value, base_type::m_p_begin_value, base_type::m_p_begin_value));
-
- const_metadata_pointer p_begin_metadata =
- base_type::m_p_metadata - (base_type::m_p_value - base_type::m_p_begin_value);
-
- return (this_type(base_type::mid_pointer(base_type::m_p_begin_value, base_type::m_p_value),
- base_type::m_p_begin_value,
- base_type::m_p_value,
- base_type::mid_pointer(p_begin_metadata, base_type::m_p_metadata)));
- }
-
- // Returns the node reference associated with the right node.
- inline ov_tree_node_it_
- get_r_child() const
- {
- if (base_type::m_p_value == base_type::m_p_end_value)
- return (this_type(base_type::m_p_end_value, base_type::m_p_end_value, base_type::m_p_end_value));
-
- const_metadata_pointer p_end_metadata =
- base_type::m_p_metadata + (base_type::m_p_end_value - base_type::m_p_value);
-
- return (this_type(base_type::mid_pointer(base_type::m_p_value + 1, base_type::m_p_end_value),
- base_type::m_p_value + 1,
- base_type::m_p_end_value,(base_type::m_p_metadata == NULL)?
- NULL : base_type::mid_pointer(base_type::m_p_metadata + 1, p_end_metadata)));
- }
-
- };
-
-#undef PB_DS_OV_TREE_NODE_ITERATOR_C_DEC
-#undef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC
-
-} // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
deleted file mode 100644
index f331f0fb1..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
+++ /dev/null
@@ -1,522 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 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/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file ov_tree_map_.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-#include <map>
-#include <set>
-#include <ext/pb_ds/tree_policy.hpp>
-#include <ext/pb_ds/detail/eq_fn/eq_by_less.hpp>
-#include <ext/pb_ds/detail/types_traits.hpp>
-#include <ext/pb_ds/detail/debug_map_base.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/exception.hpp>
-#include <ext/pb_ds/detail/tree_trace_base.hpp>
-#include <utility>
-#include <functional>
-#include <algorithm>
-#include <vector>
-#include <assert.h>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Mapped, class Cmp_Fn, \
- class Node_And_It_Traits, class Allocator>
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_OV_TREE_CLASS_NAME ov_tree_data_
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_OV_TREE_CLASS_NAME ov_tree_no_data_
-#endif
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_CONST_NODE_ITERATOR_NAME ov_tree_const_node_iterator_data_
-#else
-#define PB_DS_CONST_NODE_ITERATOR_NAME ov_tree_const_node_iterator_no_data_
-#endif
-
-#define PB_DS_CLASS_C_DEC \
- PB_DS_OV_TREE_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator>
-
-#define PB_DS_TYPES_TRAITS_C_DEC \
- types_traits<Key, Mapped, Allocator, false>
-
-#ifdef _GLIBCXX_DEBUG
-#define PB_DS_DEBUG_MAP_BASE_C_DEC \
- debug_map_base<Key, eq_by_less<Key, Cmp_Fn>, \
- typename Allocator::template rebind<Key>::other::const_reference>
-#endif
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_V2F(X) (X).first
-#define PB_DS_V2S(X) (X).second
-#define PB_DS_EP2VP(X)& ((X)->m_value)
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_V2F(X) (X)
-#define PB_DS_V2S(X) Mapped_Data()
-#define PB_DS_EP2VP(X)& ((X)->m_value.first)
-#endif
-
-#ifdef PB_DS_TREE_TRACE
-#define PB_DS_TREE_TRACE_BASE_C_DEC \
- tree_trace_base<typename Node_And_It_Traits::const_node_iterator, \
- typename Node_And_It_Traits::node_iterator, \
- Cmp_Fn, false, Allocator>
-#endif
-
- // Ordered-vector tree associative-container.
- template<typename Key, typename Mapped, class Cmp_Fn,
- class Node_And_It_Traits, class Allocator>
- class PB_DS_OV_TREE_CLASS_NAME :
-#ifdef _GLIBCXX_DEBUG
- protected PB_DS_DEBUG_MAP_BASE_C_DEC,
-#endif
-#ifdef PB_DS_TREE_TRACE
- public PB_DS_TREE_TRACE_BASE_C_DEC,
-#endif
- public Cmp_Fn,
- public Node_And_It_Traits::node_update,
- public PB_DS_TYPES_TRAITS_C_DEC
- {
- private:
- typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
-
- typedef typename remove_const<typename traits_base::value_type>::type non_const_value_type;
-
- typedef typename Allocator::template rebind<non_const_value_type>::other value_allocator;
- typedef typename value_allocator::pointer value_vector;
-
-
- typedef Cmp_Fn cmp_fn_base;
-
-#ifdef _GLIBCXX_DEBUG
- typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
-#endif
-
- typedef typename traits_base::pointer mapped_pointer_;
- typedef typename traits_base::const_pointer const_mapped_pointer_;
-
- typedef typename Node_And_It_Traits::metadata_type metadata_type;
-
- typedef typename Allocator::template rebind<metadata_type>::other metadata_allocator;
- typedef typename metadata_allocator::pointer metadata_pointer;
- typedef typename metadata_allocator::const_reference const_metadata_reference;
- typedef typename metadata_allocator::reference metadata_reference;
-
- typedef
- typename Node_And_It_Traits::null_node_update_pointer
- null_node_update_pointer;
-
- public:
-
- typedef Allocator allocator_type;
- typedef typename Allocator::size_type size_type;
- typedef typename Allocator::difference_type difference_type;
-
- typedef Cmp_Fn cmp_fn;
-
- typedef typename Node_And_It_Traits::node_update node_update;
-
- typedef typename traits_base::key_type key_type;
- typedef typename traits_base::key_pointer key_pointer;
- typedef typename traits_base::const_key_pointer const_key_pointer;
- typedef typename traits_base::key_reference key_reference;
- typedef typename traits_base::const_key_reference const_key_reference;
- typedef typename traits_base::mapped_type mapped_type;
- typedef typename traits_base::mapped_pointer mapped_pointer;
- typedef typename traits_base::const_mapped_pointer const_mapped_pointer;
- typedef typename traits_base::mapped_reference mapped_reference;
- typedef typename traits_base::const_mapped_reference const_mapped_reference;
- typedef typename traits_base::value_type value_type;
- typedef typename traits_base::pointer pointer;
- typedef typename traits_base::const_pointer const_pointer;
- typedef typename traits_base::reference reference;
- typedef typename traits_base::const_reference const_reference;
-
- typedef const_pointer const_point_iterator;
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- typedef pointer point_iterator;
-#else
- typedef const_point_iterator point_iterator;
-#endif
-
- typedef const_point_iterator const_iterator;
-
- typedef point_iterator iterator;
-
-#include <ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp>
-
- typedef
- typename Node_And_It_Traits::const_node_iterator
- const_node_iterator;
-
- typedef typename Node_And_It_Traits::node_iterator node_iterator;
-
- public:
-
- PB_DS_OV_TREE_CLASS_NAME();
-
- PB_DS_OV_TREE_CLASS_NAME(const Cmp_Fn&);
-
- PB_DS_OV_TREE_CLASS_NAME(const Cmp_Fn&, const node_update&);
-
- PB_DS_OV_TREE_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
-
- ~PB_DS_OV_TREE_CLASS_NAME();
-
- void
- swap(PB_DS_CLASS_C_DEC&);
-
- template<typename It>
- void
- copy_from_range(It, It);
-
- inline size_type
- max_size() const;
-
- inline bool
- empty() const;
-
- inline size_type
- size() const;
-
- Cmp_Fn&
- get_cmp_fn();
-
- const Cmp_Fn&
- get_cmp_fn() const;
-
- inline mapped_reference
- operator[](const_key_reference r_key)
- {
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- point_iterator it = lower_bound(r_key);
- if (it != end() && !Cmp_Fn::operator()(r_key, PB_DS_V2F(*it)))
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return it->second;
- }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return (insert_new_val(it, std::make_pair(r_key, mapped_type()))->second);
-#else
- insert(r_key);
- return traits_base::s_null_mapped;
-#endif
- }
-
- inline std::pair<point_iterator, bool>
- insert(const_reference r_value)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- const_key_reference r_key = PB_DS_V2F(r_value);
- point_iterator it = lower_bound(r_key);
-
- if (it != end()&& !Cmp_Fn::operator()(r_key, PB_DS_V2F(*it)))
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
- return std::make_pair(it, false);
- }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return std::make_pair(insert_new_val(it, r_value), true);
- }
-
- inline point_iterator
- lower_bound(const_key_reference r_key)
- {
- pointer it = m_a_values;
- pointer e_it = m_a_values + m_size;
- while (it != e_it)
- {
- pointer mid_it = it + ((e_it - it) >> 1);
- if (cmp_fn_base::operator()(PB_DS_V2F(*mid_it), r_key))
- it = ++mid_it;
- else
- e_it = mid_it;
- }
- return it;
- }
-
- inline const_point_iterator
- lower_bound(const_key_reference r_key) const
- { return const_cast<PB_DS_CLASS_C_DEC& >(*this).lower_bound(r_key); }
-
- inline point_iterator
- upper_bound(const_key_reference r_key)
- {
- iterator pot_it = lower_bound(r_key);
- if (pot_it != end()&& !Cmp_Fn::operator()(r_key, PB_DS_V2F(*pot_it)))
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
- return ++pot_it;
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
- return pot_it;
- }
-
- inline const_point_iterator
- upper_bound(const_key_reference r_key) const
- { return const_cast<PB_DS_CLASS_C_DEC&>(*this).upper_bound(r_key); }
-
- inline point_iterator
- find(const_key_reference r_key)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- iterator pot_it = lower_bound(r_key);
- if (pot_it != end() && !Cmp_Fn::operator()(r_key, PB_DS_V2F(*pot_it)))
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
- return pot_it;
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
- return end();
- }
-
- inline const_point_iterator
- find(const_key_reference r_key) const
- { return (const_cast<PB_DS_CLASS_C_DEC& >(*this).find(r_key)); }
-
- bool
- erase(const_key_reference);
-
- template<typename Pred>
- inline size_type
- erase_if(Pred);
-
- inline iterator
- erase(iterator it)
- { return erase_imp<iterator>(it); }
-
- void
- clear();
-
- void
- join(PB_DS_CLASS_C_DEC&);
-
- void
- split(const_key_reference, PB_DS_CLASS_C_DEC&);
-
- inline iterator
- begin()
- { return m_a_values; }
-
- inline const_iterator
- begin() const
- { return m_a_values; }
-
- inline iterator
- end()
- { return m_end_it; }
-
- inline const_iterator
- end() const
- { return m_end_it; }
-
- inline const_node_iterator
- node_begin() const;
-
- inline const_node_iterator
- node_end() const;
-
- inline node_iterator
- node_begin();
-
- inline node_iterator
- node_end();
-
- private:
-
- inline void
- update(node_iterator /*it*/, null_node_update_pointer);
-
- template<typename Node_Update>
- void
- update(node_iterator, Node_Update*);
-
- void
- reallocate_metadata(null_node_update_pointer, size_type);
-
- template<typename Node_Update_>
- void
- reallocate_metadata(Node_Update_*, size_type);
-
- template<typename It>
- void
- copy_from_ordered_range(It, It);
-
- void
- value_swap(PB_DS_CLASS_C_DEC&);
-
- template<typename It>
- void
- copy_from_ordered_range(It, It, It, It);
-
- template<typename Ptr>
- inline static Ptr
- mid_pointer(Ptr p_begin, Ptr p_end)
- {
- _GLIBCXX_DEBUG_ASSERT(p_end >= p_begin);
- return (p_begin + (p_end - p_begin) / 2);
- }
-
- inline iterator
- insert_new_val(iterator it, const_reference r_value)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-#ifdef PB_DS_REGRESSION
- typename Allocator::group_throw_prob_adjustor adjust(m_size);
-#endif
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(PB_DS_V2F(r_value)));
-
- value_vector a_values = s_value_alloc.allocate(m_size + 1);
-
- iterator source_it = begin();
- iterator source_end_it = end();
- iterator target_it = a_values;
- iterator ret_it;
-
- cond_dtor<size_type> cd(a_values, target_it, m_size + 1);
- while (source_it != it)
- {
- new (const_cast<void* >(static_cast<const void* >(target_it)))
- value_type(*source_it++);
- ++target_it;
- }
-
- new (const_cast<void* >(static_cast<const void* >(ret_it = target_it)))
- value_type(r_value);
- ++target_it;
-
- while (source_it != source_end_it)
- {
- new (const_cast<void* >(static_cast<const void* >(target_it)))
- value_type(*source_it++);
- ++target_it;
- }
-
- reallocate_metadata((node_update* )this, m_size + 1);
- cd.set_no_action();
- if (m_size != 0)
- {
- cond_dtor<size_type> cd1(m_a_values, m_end_it, m_size);
- }
-
- ++m_size;
- m_a_values = a_values;
- m_end_it = m_a_values + m_size;
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_value)));
- update(node_begin(), (node_update* )this);
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- return ret_it;
- }
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-
- void
- assert_iterators() const;
-#endif
-
- template<typename It>
- It
- erase_imp(It it);
-
- inline const_node_iterator
- PB_DS_node_begin_imp() const;
-
- inline const_node_iterator
- PB_DS_node_end_imp() const;
-
- inline node_iterator
- PB_DS_node_begin_imp();
-
- inline node_iterator
- PB_DS_node_end_imp();
-
- private:
- static value_allocator s_value_alloc;
- static metadata_allocator s_metadata_alloc;
-
- value_vector m_a_values;
- metadata_pointer m_a_metadata;
- iterator m_end_it;
- size_type m_size;
- };
-
-#include <ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp>
-
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_OV_TREE_CLASS_NAME
-#undef PB_DS_TYPES_TRAITS_C_DEC
-#undef PB_DS_DEBUG_MAP_BASE_C_DEC
-#ifdef PB_DS_TREE_TRACE
-#undef PB_DS_TREE_TRACE_BASE_C_DEC
-#endif
-
-#undef PB_DS_V2F
-#undef PB_DS_EP2VP
-#undef PB_DS_V2S
-#undef PB_DS_CONST_NODE_ITERATOR_NAME
-
- } // namespace detail
-} // namespace __gnu_pbds
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
deleted file mode 100644
index c06d6f851..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 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/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file policy_access_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-Cmp_Fn&
-PB_DS_CLASS_C_DEC::
-get_cmp_fn()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Cmp_Fn&
-PB_DS_CLASS_C_DEC::
-get_cmp_fn() const
-{ return *this; }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
deleted file mode 100644
index 76bb6fafd..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
+++ /dev/null
@@ -1,137 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 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/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file split_join_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-split(const_key_reference r_key, PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- if (m_size == 0)
- {
- other.clear();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return;
- }
-
- if (Cmp_Fn::operator()(r_key, PB_DS_V2F(*begin())))
- {
- value_swap(other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return;
- }
-
- if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(*(end() - 1))))
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return;
- }
-
- if (m_size == 1)
- {
- value_swap(other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return;
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
- iterator it = upper_bound(r_key);
- PB_DS_CLASS_C_DEC new_other(other, other);
- new_other.copy_from_ordered_range(it, end());
- PB_DS_CLASS_C_DEC new_this(*this, * this);
- new_this.copy_from_ordered_range(begin(), it);
-
- // No exceptions from this point.
- _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(Cmp_Fn& )(*this), other);)
- other.update(other.node_begin(), (node_update* )(&other));
- update(node_begin(), (node_update* )this);
- other.value_swap(new_other);
- value_swap(new_this);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-join(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- if (other.m_size == 0)
- return;
-
- if (m_size == 0)
- {
- value_swap(other);
- return;
- }
-
- const bool greater = Cmp_Fn::operator()(PB_DS_V2F(*(end() - 1)),
- PB_DS_V2F(*other.begin()));
-
- const bool lesser = Cmp_Fn::operator()(PB_DS_V2F(*(other.end() - 1)),
- PB_DS_V2F(*begin()));
-
- if (!greater && !lesser)
- __throw_join_error();
-
- PB_DS_CLASS_C_DEC new_this(*this, *this);
-
- if (greater)
- new_this.copy_from_ordered_range(begin(), end(),
- other.begin(), other.end());
- else
- new_this.copy_from_ordered_range(other.begin(), other.end(),
- begin(), end());
-
- // No exceptions from this point.
- _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
- value_swap(new_this);
- other.clear();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
deleted file mode 100644
index 63cb0f7fb..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
+++ /dev/null
@@ -1,183 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 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/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file traits.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-#ifndef PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP
-#define PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP
-
-#include <ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- template<typename Key,
- typename Mapped,
- class Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn_,
- class Allocator_>
- class Node_Update,
- class Allocator>
- struct tree_traits<
- Key,
- Mapped,
- Cmp_Fn,
- Node_Update,
- ov_tree_tag,
- Allocator>
- {
- private:
- typedef
- typename types_traits<
- Key,
- Mapped,
- Allocator,
- false>::value_type
- value_type;
-
- public:
- typedef
- typename tree_node_metadata_selector<
- Key,
- Mapped,
- Cmp_Fn,
- Node_Update,
- Allocator>::type
- metadata_type;
-
- typedef
- ov_tree_node_const_it_<
- value_type,
- metadata_type,
- Allocator>
- const_node_iterator;
-
- typedef
- ov_tree_node_it_<
- value_type,
- metadata_type,
- Allocator>
- node_iterator;
-
- typedef
- Node_Update<
- const_node_iterator,
- node_iterator,
- Cmp_Fn,
- Allocator>
- node_update;
-
- typedef
- __gnu_pbds::null_tree_node_update<
- const_node_iterator,
- node_iterator,
- Cmp_Fn,
- Allocator>*
- null_node_update_pointer;
- };
-
- template<typename Key,
- class Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn_,
- class Allocator_>
- class Node_Update,
- class Allocator>
- struct tree_traits<
- Key,
- null_mapped_type,
- Cmp_Fn,
- Node_Update,
- ov_tree_tag,
- Allocator>
- {
- private:
- typedef
- typename types_traits<
- Key,
- null_mapped_type,
- Allocator,
- false>::value_type
- value_type;
-
- public:
- typedef
- typename tree_node_metadata_selector<
- Key,
- null_mapped_type,
- Cmp_Fn,
- Node_Update,
- Allocator>::type
- metadata_type;
-
- typedef
- ov_tree_node_const_it_<
- value_type,
- metadata_type,
- Allocator>
- const_node_iterator;
-
- typedef const_node_iterator node_iterator;
-
- typedef
- Node_Update<
- const_node_iterator,
- const_node_iterator,
- Cmp_Fn,
- Allocator>
- node_update;
-
- typedef
- __gnu_pbds::null_tree_node_update<
- const_node_iterator,
- node_iterator,
- Cmp_Fn,
- Allocator>*
- null_node_update_pointer;
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP
-