diff options
Diffstat (limited to 'gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail')
257 files changed, 0 insertions, 36680 deletions
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp deleted file mode 100644 index 0ca90dbc7..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp +++ /dev/null @@ -1,173 +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 basic_tree_policy_base.hpp - * Contains a base class for tree_like policies. - */ - -#ifndef PB_DS_TREE_LIKE_POLICY_BASE_HPP -#define PB_DS_TREE_LIKE_POLICY_BASE_HPP - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_C_DEC \ - basic_tree_policy_base< \ - Const_Node_Iterator, \ - Node_Iterator, \ - Allocator> - - template<typename Const_Node_Iterator, - typename Node_Iterator, - typename Allocator> - struct basic_tree_policy_base - { - protected: - typedef typename Node_Iterator::value_type it_type; - - typedef typename std::iterator_traits< it_type>::value_type value_type; - - typedef typename value_type::first_type key_type; - - typedef - typename Allocator::template rebind< - typename remove_const< - key_type>::type>::other::const_reference - const_key_reference; - - typedef - typename Allocator::template rebind< - typename remove_const< - value_type>::type>::other::const_reference - const_reference; - - typedef - typename Allocator::template rebind< - typename remove_const< - value_type>::type>::other::reference - reference; - - typedef - typename Allocator::template rebind< - typename remove_const< - value_type>::type>::other::const_pointer - const_pointer; - - static inline const_key_reference - extract_key(const_reference r_val) - { - return (r_val.first); - } - - virtual it_type - end() = 0; - - it_type - end_iterator() const - { - return (const_cast<PB_DS_CLASS_C_DEC* >(this)->end()); - } - - virtual - ~basic_tree_policy_base() - { } - }; - - template<typename Const_Node_Iterator, typename Allocator> - struct basic_tree_policy_base< - Const_Node_Iterator, - Const_Node_Iterator, - Allocator> - { - protected: - typedef typename Const_Node_Iterator::value_type it_type; - - typedef typename std::iterator_traits< it_type>::value_type value_type; - - typedef value_type key_type; - - typedef - typename Allocator::template rebind< - typename remove_const< - key_type>::type>::other::const_reference - const_key_reference; - - typedef - typename Allocator::template rebind< - typename remove_const< - value_type>::type>::other::const_reference - const_reference; - - typedef - typename Allocator::template rebind< - typename remove_const< - value_type>::type>::other::reference - reference; - - typedef - typename Allocator::template rebind< - typename remove_const< - value_type>::type>::other::const_pointer - const_pointer; - - static inline const_key_reference - extract_key(const_reference r_val) - { - return (r_val); - } - - virtual it_type - end() const = 0; - - it_type - end_iterator() const - { - return (end()); - } - - virtual - ~basic_tree_policy_base() - { } - }; - -#undef PB_DS_CLASS_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_TREE_LIKE_POLICY_BASE_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp deleted file mode 100644 index 757b90956..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp +++ /dev/null @@ -1,67 +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 null_node_metadata.hpp - * Contains an implementation class for tree-like classes. - */ - -#ifndef PB_DS_NULL_NODE_METADATA_HPP -#define PB_DS_NULL_NODE_METADATA_HPP - -#include <ext/pb_ds/detail/types_traits.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Key, class Data, class Allocator> - struct dumconst_node_iterator - { - private: - typedef typename types_traits<Key, Data, Allocator, false>::pointer const_iterator; - - public: - typedef const_iterator value_type; - typedef const_iterator const_reference; - typedef const_reference reference; - }; - - struct null_node_metadata - { }; - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp deleted file mode 100644 index b30829a81..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp +++ /dev/null @@ -1,85 +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 tree-like classes. - */ - -#ifndef PB_DS_NODE_AND_IT_TRAITS_HPP -#define PB_DS_NODE_AND_IT_TRAITS_HPP - -#include <ext/pb_ds/detail/types_traits.hpp> -#include <ext/pb_ds/detail/bin_search_tree_/traits.hpp> -#include <ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp> -#include <ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Key, - typename Data, - class Cmp_Fn, - template<typename Const_Node_Iterator, - class Node_Iterator, - class Cmp_Fn_, - class Allocator> - class Node_Update, - class Tag, - class Allocator> - struct tree_traits; - - template<typename Key, - typename Data, - class E_Access_Traits, - template<typename Const_Node_Iterator, - class Node_Iterator, - class E_Access_Traits_, - class Allocator> - class Node_Update, - class Tag, - class Allocator> - struct trie_traits; - - } // namespace detail -} // namespace __gnu_pbds - -#include <ext/pb_ds/detail/rb_tree_map_/traits.hpp> -#include <ext/pb_ds/detail/splay_tree_/traits.hpp> -#include <ext/pb_ds/detail/ov_tree_map_/traits.hpp> -#include <ext/pb_ds/detail/pat_trie_/traits.hpp> - -#endif // #ifndef PB_DS_NODE_AND_IT_TRAITS_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_types.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_types.hpp deleted file mode 100644 index aac1397dd..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_types.hpp +++ /dev/null @@ -1,211 +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 basic_types.hpp - * Contains basic types used by containers. - */ - -#ifndef PB_DS_BASIC_TYPES_HPP -#define PB_DS_BASIC_TYPES_HPP - -#include <algorithm> -#include <utility> -#include <ext/pb_ds/tag_and_trait.hpp> -#include <ext/pb_ds/detail/type_utils.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Key, typename Mapped, typename Allocator, bool Store_Hash> - struct value_type_base; - - /** - * Specialization of value_type_base for the case where the hash value - * is not stored alongside each value. - **/ - template<typename Key, typename Mapped, typename Allocator> - struct value_type_base<Key, Mapped, Allocator, false> - { - typedef typename Allocator::template rebind<Mapped>::other mapped_type_allocator; - typedef typename mapped_type_allocator::value_type mapped_type; - typedef typename mapped_type_allocator::pointer mapped_pointer; - typedef typename mapped_type_allocator::const_pointer const_mapped_pointer; - typedef typename mapped_type_allocator::reference mapped_reference; - typedef typename mapped_type_allocator::const_reference const_mapped_reference; - - typedef typename Allocator::template rebind<std::pair<const Key, Mapped> >::other value_type_allocator; - typedef typename value_type_allocator::value_type value_type; - typedef typename value_type_allocator::pointer pointer; - typedef typename value_type_allocator::const_pointer const_pointer; - typedef typename value_type_allocator::reference reference; - typedef typename value_type_allocator::const_reference const_reference; - - struct stored_value_type - { - value_type m_value; - }; - }; - - /** - * Specialization of value_type_base for the case where the hash value - * is stored alongside each value. - **/ - template<typename Key, typename Mapped, typename Allocator> - struct value_type_base<Key, Mapped, Allocator, true> - { - typedef typename Allocator::template rebind<Mapped>::other mapped_type_allocator; - typedef typename mapped_type_allocator::value_type mapped_type; - typedef typename mapped_type_allocator::pointer mapped_pointer; - typedef typename mapped_type_allocator::const_pointer const_mapped_pointer; - typedef typename mapped_type_allocator::reference mapped_reference; - typedef typename mapped_type_allocator::const_reference const_mapped_reference; - - typedef typename Allocator::template rebind<std::pair<const Key, Mapped> >::other value_type_allocator; - typedef typename value_type_allocator::value_type value_type; - typedef typename value_type_allocator::pointer pointer; - typedef typename value_type_allocator::const_pointer const_pointer; - typedef typename value_type_allocator::reference reference; - typedef typename value_type_allocator::const_reference const_reference; - - struct stored_value_type - { - value_type m_value; - typename Allocator::size_type m_hash; - }; - }; - -#define PB_DS_CLASS_T_DEC \ - template<typename Key, typename Allocator> - -#define PB_DS_CLASS_C_DEC \ - value_type_base<Key, null_mapped_type, Allocator, false> - - /** - * Specialization of value_type_base for the case where the hash value - * is not stored alongside each value. - **/ - template<typename Key, typename Allocator> - struct value_type_base<Key, null_mapped_type, Allocator, false> - { - typedef typename Allocator::template rebind<null_mapped_type>::other mapped_type_allocator; - typedef typename mapped_type_allocator::value_type mapped_type; - typedef typename mapped_type_allocator::pointer mapped_pointer; - typedef typename mapped_type_allocator::const_pointer const_mapped_pointer; - typedef typename mapped_type_allocator::reference mapped_reference; - typedef typename mapped_type_allocator::const_reference const_mapped_reference; - - typedef Key value_type; - - typedef typename Allocator::template rebind<value_type>::other value_type_allocator; - typedef typename value_type_allocator::pointer pointer; - typedef typename value_type_allocator::const_pointer const_pointer; - typedef typename value_type_allocator::reference reference; - typedef typename value_type_allocator::const_reference const_reference; - - struct stored_value_type - { - value_type m_value; - }; - - static null_mapped_type s_null_mapped; - }; - - PB_DS_CLASS_T_DEC - null_mapped_type PB_DS_CLASS_C_DEC::s_null_mapped; - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - -#define PB_DS_CLASS_T_DEC \ - template<typename Key, typename Allocator> - -#define PB_DS_CLASS_C_DEC \ - value_type_base<Key, null_mapped_type, Allocator, true> - - /** - * Specialization of value_type_base for the case where the hash value - * is stored alongside each value. - **/ - template<typename Key, typename Allocator> - struct value_type_base<Key, null_mapped_type, Allocator, true> - { - typedef typename Allocator::template rebind<null_mapped_type>::other mapped_type_allocator; - typedef typename mapped_type_allocator::value_type mapped_type; - typedef typename mapped_type_allocator::pointer mapped_pointer; - typedef typename mapped_type_allocator::const_pointer const_mapped_pointer; - typedef typename mapped_type_allocator::reference mapped_reference; - typedef typename mapped_type_allocator::const_reference const_mapped_reference; - - typedef Key value_type; - - typedef typename Allocator::template rebind<value_type>::other value_type_allocator; - typedef typename value_type_allocator::pointer pointer; - typedef typename value_type_allocator::const_pointer const_pointer; - typedef typename value_type_allocator::reference reference; - typedef typename value_type_allocator::const_reference const_reference; - - struct stored_value_type - { - value_type m_value; - typename Allocator::size_type m_hash; - }; - - static null_mapped_type s_null_mapped; - }; - - PB_DS_CLASS_T_DEC - null_mapped_type PB_DS_CLASS_C_DEC::s_null_mapped; - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - - template<typename Key, typename Mapped> - struct no_throw_copies - { - typedef integral_constant<int, is_simple<Key>::value && is_simple<Mapped>::value> indicator; - }; - - template<typename Key> - struct no_throw_copies<Key, null_mapped_type> - { - typedef integral_constant<int, is_simple<Key>::value> indicator; - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp deleted file mode 100644 index 7315d951f..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp +++ /dev/null @@ -1,497 +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 bin_search_tree_.hpp - * Contains an implementation class for bin_search_tree_. - */ -/* - * This implementation uses an idea from the SGI STL (using a "header" node - * which is needed for efficient iteration). - */ - -#include <ext/pb_ds/exception.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/tree_policy.hpp> -#include <ext/pb_ds/detail/cond_dealtor.hpp> -#include <ext/pb_ds/detail/type_utils.hpp> -#include <ext/pb_ds/detail/tree_trace_base.hpp> -#include <utility> -#include <functional> -#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_CLASS_NAME \ - bin_search_tree_data_ -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#define PB_DS_CLASS_NAME \ - bin_search_tree_no_data_ -#endif - -#define PB_DS_CLASS_C_DEC \ - PB_DS_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, \ - true, \ - Allocator> -#endif - - /** - * class description = "8i|\|4ree $34rc|-| 7r33 74813."> - **/ - template<typename Key, - typename Mapped, - class Cmp_Fn, - class Node_And_It_Traits, - class Allocator> - class PB_DS_CLASS_NAME : -#ifdef _GLIBCXX_DEBUG - public 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 PB_DS_TYPES_TRAITS_C_DEC, - public Node_And_It_Traits::node_update - { - - protected: - typedef - typename Allocator::template rebind< - typename Node_And_It_Traits::node>::other - node_allocator; - - typedef typename node_allocator::value_type node; - - typedef typename node_allocator::pointer node_pointer; - - typedef PB_DS_TYPES_TRAITS_C_DEC traits_base; - - typedef - typename Node_And_It_Traits::null_node_update_pointer - null_node_update_pointer; - - private: - typedef cond_dealtor< node, Allocator> cond_dealtor_t; - -#ifdef _GLIBCXX_DEBUG - typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base; -#endif - - public: - - typedef typename Allocator::size_type size_type; - - typedef typename Allocator::difference_type difference_type; - - typedef typename PB_DS_TYPES_TRAITS_C_DEC::key_type key_type; - - typedef typename PB_DS_TYPES_TRAITS_C_DEC::key_pointer key_pointer; - - typedef - typename PB_DS_TYPES_TRAITS_C_DEC::const_key_pointer - const_key_pointer; - - typedef typename PB_DS_TYPES_TRAITS_C_DEC::key_reference key_reference; - - typedef - typename PB_DS_TYPES_TRAITS_C_DEC::const_key_reference - const_key_reference; - -#ifdef PB_DS_DATA_TRUE_INDICATOR - typedef typename PB_DS_TYPES_TRAITS_C_DEC::mapped_type mapped_type; - - typedef - typename PB_DS_TYPES_TRAITS_C_DEC::mapped_pointer - mapped_pointer; - - typedef - typename PB_DS_TYPES_TRAITS_C_DEC::const_mapped_pointer - const_mapped_pointer; - - typedef - typename PB_DS_TYPES_TRAITS_C_DEC::mapped_reference - mapped_reference; - - typedef - typename PB_DS_TYPES_TRAITS_C_DEC::const_mapped_reference - const_mapped_reference; -#endif - - typedef typename PB_DS_TYPES_TRAITS_C_DEC::value_type value_type; - - typedef typename PB_DS_TYPES_TRAITS_C_DEC::pointer pointer; - - typedef typename PB_DS_TYPES_TRAITS_C_DEC::const_pointer const_pointer; - - typedef typename PB_DS_TYPES_TRAITS_C_DEC::reference reference; - - typedef - typename PB_DS_TYPES_TRAITS_C_DEC::const_reference - const_reference; - - typedef - typename Node_And_It_Traits::const_point_iterator - const_point_iterator; - - typedef const_point_iterator const_iterator; - - typedef typename Node_And_It_Traits::point_iterator point_iterator; - - typedef point_iterator iterator; - - typedef - typename Node_And_It_Traits::const_reverse_iterator - const_reverse_iterator; - - typedef typename Node_And_It_Traits::reverse_iterator reverse_iterator; - - typedef - typename Node_And_It_Traits::const_node_iterator - const_node_iterator; - - typedef typename Node_And_It_Traits::node_iterator node_iterator; - - typedef Cmp_Fn cmp_fn; - - typedef Allocator allocator_type; - - typedef typename Node_And_It_Traits::node_update node_update; - - public: - - PB_DS_CLASS_NAME(); - - PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn); - - PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_update); - - PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other); - - void - swap(PB_DS_CLASS_C_DEC& other); - - ~PB_DS_CLASS_NAME(); - - inline bool - empty() const; - - inline size_type - size() const; - - inline size_type - max_size() const; - - Cmp_Fn& - get_cmp_fn(); - - const Cmp_Fn& - get_cmp_fn() const; - - inline point_iterator - lower_bound(const_key_reference r_key); - - inline const_point_iterator - lower_bound(const_key_reference r_key) const; - - inline point_iterator - upper_bound(const_key_reference r_key); - - inline const_point_iterator - upper_bound(const_key_reference r_key) const; - - inline point_iterator - find(const_key_reference r_key); - - inline const_point_iterator - find(const_key_reference r_key) const; - - inline iterator - begin(); - - inline const_iterator - begin() const; - - inline iterator - end(); - - inline const_iterator - end() const; - - inline reverse_iterator - rbegin(); - - inline const_reverse_iterator - rbegin() const; - - inline reverse_iterator - rend(); - - inline const_reverse_iterator - rend() const; - - inline const_node_iterator - node_begin() const; - - inline node_iterator - node_begin(); - - inline const_node_iterator - node_end() const; - - inline node_iterator - node_end(); - - void - clear(); - - protected: - - void - value_swap(PB_DS_CLASS_C_DEC& other); - - void - initialize_min_max(); - - inline iterator - insert_imp_empty(const_reference r_value); - - inline iterator - insert_leaf_new(const_reference r_value, node_pointer p_nd, bool left_nd); - - inline node_pointer - get_new_node_for_leaf_insert(const_reference r_val, false_type); - - inline node_pointer - get_new_node_for_leaf_insert(const_reference r_val, true_type); - - inline void - actual_erase_node(node_pointer p_nd); - - inline std::pair<node_pointer, bool> - erase(node_pointer p_nd); - - inline void - update_min_max_for_erased_node(node_pointer p_nd); - - static void - clear_imp(node_pointer p_nd); - - inline std::pair< - point_iterator, - bool> - insert_leaf(const_reference r_value); - - inline void - rotate_left(node_pointer p_x); - - inline void - rotate_right(node_pointer p_y); - - inline void - rotate_parent(node_pointer p_nd); - - inline void - apply_update(node_pointer p_nd, null_node_update_pointer); - - template<typename Node_Update_> - inline void - apply_update(node_pointer p_nd, Node_Update_* p_update); - - inline void - update_to_top(node_pointer p_nd, null_node_update_pointer); - - template<typename Node_Update_> - inline void - update_to_top(node_pointer p_nd, Node_Update_* p_update); - - bool - join_prep(PB_DS_CLASS_C_DEC& other); - - void - join_finish(PB_DS_CLASS_C_DEC& other); - - bool - split_prep(const_key_reference r_key, PB_DS_CLASS_C_DEC& other); - - void - split_finish(PB_DS_CLASS_C_DEC& other); - - size_type - recursive_count(node_pointer p_nd) const; - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; - - void - structure_only_assert_valid() const; - - void - assert_node_consistent(const node_pointer p_nd) const; -#endif - - private: -#ifdef _GLIBCXX_DEBUG - void - assert_iterators() const; - - void - assert_consistent_with_debug_base() const; - - void - assert_node_consistent_with_left(const node_pointer p_nd) const; - - void - assert_node_consistent_with_right(const node_pointer p_nd) const; - - void - assert_consistent_with_debug_base(const node_pointer p_nd) const; - - void - assert_min() const; - - void - assert_min_imp(const node_pointer p_nd) const; - - void - assert_max() const; - - void - assert_max_imp(const node_pointer p_nd) const; - - void - assert_size() const; - - typedef std::pair< const_pointer, const_pointer> node_consistent_t; - - node_consistent_t - assert_node_consistent_(const node_pointer p_nd) const; -#endif - - void - initialize(); - - node_pointer - recursive_copy_node(const node_pointer p_nd); - - protected: - node_pointer m_p_head; - - size_type m_size; - - static node_allocator s_node_allocator; - }; - -#include <ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp> -#include <ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp> -#include <ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp> -#include <ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp> -#include <ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp> -#include <ext/pb_ds/detail/bin_search_tree_/rotate_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_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 - - } // namespace detail -} // namespace __gnu_pbds diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp deleted file mode 100644 index 370574c90..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp +++ /dev/null @@ -1,70 +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_entry_dealtor.hpp - * Contains a binary tree container conditional deallocator - */ - -class bin_search_tree_cond_dtor_entry_dealtor_ -{ -public: - inline - bin_search_tree_cond_dtor_entry_dealtor_(node_pointer p_nd) : m_p_nd(p_nd), - m_no_action_dtor(false) - { } - - inline void - set_no_action_dtor() - { - m_no_action_dtor = true; - } - - inline - ~bin_search_tree_cond_dtor_entry_dealtor_() - { - if (m_no_action_dtor) - return; - - typename Allocator::template rebind<Node>::other(). - deallocate(m_p_nd, 1); - } - -protected: - node_pointer m_p_nd; - - bool m_no_action_dtor; -}; - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp deleted file mode 100644 index 612ecebbe..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp +++ /dev/null @@ -1,81 +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_key_dtor_entry_dealtor.hpp - * Contains a binary tree container conditional deallocator - */ - -class bin_seach_tree_cond_key_dtor_entry_dealtor_ -{ -public: - inline - bin_seach_tree_cond_key_dtor_entry_dealtor_(node_pointer p_nd) : m_p_nd(p_nd), - m_no_action_dtor(false), - m_key_destruct(false) - { } - - inline void - set_no_action_dtor() - { - m_no_action_dtor = true; - } - - inline void - set_key_destruct() - { - m_key_destruct = true; - } - - inline - ~bin_seach_tree_cond_key_dtor_entry_dealtor_() - { - if (m_no_action_dtor) - return; - - if (m_key_destruct) - m_p_nd->m_value.first.~Key(); - - bin_tree_base::s_alloc.deallocate(m_p_nd, 1); - } - -protected: - node_pointer m_p_nd; - - bool m_no_action_dtor; - - bool m_key_destruct; -}; - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 925d204dc..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,218 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_allocator -PB_DS_CLASS_C_DEC::s_node_allocator; - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME() : m_p_head(s_node_allocator.allocate(1)), m_size(0) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn) : - Cmp_Fn(r_cmp_fn), m_p_head(s_node_allocator.allocate(1)), m_size(0) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) : - Cmp_Fn(r_cmp_fn), - node_update(r_node_update), - m_p_head(s_node_allocator.allocate(1)), - m_size(0) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_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(other), - node_update(other), - m_p_head(s_node_allocator.allocate(1)), - m_size(0) -{ - initialize(); - m_size = other.m_size; - _GLIBCXX_DEBUG_ONLY(other.structure_only_assert_valid();) - - __try - { - m_p_head->m_p_parent = recursive_copy_node(other.m_p_head->m_p_parent); - if (m_p_head->m_p_parent != NULL) - m_p_head->m_p_parent->m_p_parent = m_p_head; - m_size = other.m_size; - initialize_min_max(); - } - __catch(...) - { - _GLIBCXX_DEBUG_ONLY(debug_base::clear();) - s_node_allocator.deallocate(m_p_head, 1); - __throw_exception_again; - } - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.structure_only_assert_valid();) - value_swap(other); - std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other); - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.structure_only_assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -value_swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);) - std::swap(m_p_head, other.m_p_head); - std::swap(m_size, other.m_size); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~PB_DS_CLASS_NAME() -{ - clear(); - s_node_allocator.deallocate(m_p_head, 1); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ - m_p_head->m_p_parent = NULL; - m_p_head->m_p_left = m_p_head; - m_p_head->m_p_right = m_p_head; - m_size = 0; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -recursive_copy_node(const node_pointer p_nd) -{ - if (p_nd == NULL) - return (NULL); - - node_pointer p_ret = s_node_allocator.allocate(1); - __try - { - new (p_ret) node(*p_nd); - } - __catch(...) - { - s_node_allocator.deallocate(p_ret, 1); - __throw_exception_again; - } - - p_ret->m_p_left = p_ret->m_p_right = NULL; - - __try - { - p_ret->m_p_left = recursive_copy_node(p_nd->m_p_left); - p_ret->m_p_right = recursive_copy_node(p_nd->m_p_right); - } - __catch(...) - { - clear_imp(p_ret); - __throw_exception_again; - } - - if (p_ret->m_p_left != NULL) - p_ret->m_p_left->m_p_parent = p_ret; - - if (p_ret->m_p_right != NULL) - p_ret->m_p_right->m_p_parent = p_ret; - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_ret);) - return p_ret; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize_min_max() -{ - if (m_p_head->m_p_parent == NULL) - { - m_p_head->m_p_left = m_p_head->m_p_right = m_p_head; - return; - } - - { - node_pointer p_min = m_p_head->m_p_parent; - while (p_min->m_p_left != NULL) - p_min = p_min->m_p_left; - m_p_head->m_p_left = p_min; - } - - { - node_pointer p_max = m_p_head->m_p_parent; - while (p_max->m_p_right != NULL) - p_max = p_max->m_p_right; - m_p_head->m_p_right = p_max; - } -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp deleted file mode 100644 index e3447bd4b..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp +++ /dev/null @@ -1,272 +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 bin_search_tree_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ - structure_only_assert_valid(); - assert_consistent_with_debug_base(); - assert_size(); - assert_iterators(); - if (m_p_head->m_p_parent == NULL) - { - _GLIBCXX_DEBUG_ASSERT(m_size == 0); - } - else - { - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -structure_only_assert_valid() const -{ - _GLIBCXX_DEBUG_ASSERT(m_p_head != NULL); - if (m_p_head->m_p_parent == NULL) - { - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_left == m_p_head); - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_right == m_p_head); - } - else - { - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_parent->m_p_parent == m_p_head); - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_left != m_p_head); - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_right != m_p_head); - } - - if (m_p_head->m_p_parent != NULL) - assert_node_consistent(m_p_head->m_p_parent); - assert_min(); - assert_max(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_node_consistent(const node_pointer p_nd) const -{ - assert_node_consistent_(p_nd); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_consistent_t -PB_DS_CLASS_C_DEC:: -assert_node_consistent_(const node_pointer p_nd) const -{ - if (p_nd == NULL) - return (std::make_pair((const_pointer)NULL,(const_pointer)NULL)); - - assert_node_consistent_with_left(p_nd); - assert_node_consistent_with_right(p_nd); - - const std::pair<const_pointer, const_pointer> - l_range = assert_node_consistent_(p_nd->m_p_left); - - if (l_range.second != NULL) - _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(*l_range.second), - PB_DS_V2F(p_nd->m_value))); - - const std::pair<const_pointer, const_pointer> - r_range = assert_node_consistent_(p_nd->m_p_right); - - if (r_range.first != NULL) - _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), - PB_DS_V2F(*r_range.first))); - - return (std::make_pair((l_range.first != NULL)? l_range.first :& p_nd->m_value,(r_range.second != NULL)? r_range.second :& p_nd->m_value)); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_node_consistent_with_left(const node_pointer p_nd) const -{ - if (p_nd->m_p_left == NULL) - return; - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left->m_p_parent == p_nd); - _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), - PB_DS_V2F(p_nd->m_p_left->m_value))); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_node_consistent_with_right(const node_pointer p_nd) const -{ - if (p_nd->m_p_right == NULL) - return; - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_right->m_p_parent == p_nd); - _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_p_right->m_value), - PB_DS_V2F(p_nd->m_value))); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_min() const -{ - assert_min_imp(m_p_head->m_p_parent); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_min_imp(const node_pointer p_nd) const -{ - if (p_nd == NULL) - { - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_left == m_p_head); - return; - } - - if (p_nd->m_p_left == NULL) - { - _GLIBCXX_DEBUG_ASSERT(p_nd == m_p_head->m_p_left); - return; - } - assert_min_imp(p_nd->m_p_left); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_max() const -{ - assert_max_imp(m_p_head->m_p_parent); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_max_imp(const node_pointer p_nd) const -{ - if (p_nd == NULL) - { - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_right == m_p_head); - return; - } - - if (p_nd->m_p_right == NULL) - { - _GLIBCXX_DEBUG_ASSERT(p_nd == m_p_head->m_p_right); - return; - } - - assert_max_imp(p_nd->m_p_right); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_iterators() const -{ - size_type iterated_num = 0; - const_iterator prev_it = end(); - for (const_iterator it = begin(); it != end(); ++it) - { - ++iterated_num; - _GLIBCXX_DEBUG_ASSERT(lower_bound(PB_DS_V2F(*it)).m_p_nd == it.m_p_nd); - const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*it)); - --upper_bound_it; - _GLIBCXX_DEBUG_ASSERT(upper_bound_it.m_p_nd == it.m_p_nd); - - 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); - size_type reverse_iterated_num = 0; - const_reverse_iterator reverse_prev_it = rend(); - for (const_reverse_iterator reverse_it = rbegin(); reverse_it != rend(); - ++reverse_it) - { - ++reverse_iterated_num; - _GLIBCXX_DEBUG_ASSERT(lower_bound( - PB_DS_V2F(*reverse_it)).m_p_nd == reverse_it.m_p_nd); - - const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*reverse_it)); - --upper_bound_it; - _GLIBCXX_DEBUG_ASSERT(upper_bound_it.m_p_nd == reverse_it.m_p_nd); - if (reverse_prev_it != rend()) - _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(PB_DS_V2F(*reverse_prev_it), - PB_DS_V2F(*reverse_it))); - reverse_prev_it = reverse_it; - } - _GLIBCXX_DEBUG_ASSERT(reverse_iterated_num == m_size); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_consistent_with_debug_base() const -{ - debug_base::check_size(m_size); - assert_consistent_with_debug_base(m_p_head->m_p_parent); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_consistent_with_debug_base(const node_pointer p_nd) const -{ - if (p_nd == NULL) - return; - debug_base::check_key_exists(PB_DS_V2F(p_nd->m_value)); - assert_consistent_with_debug_base(p_nd->m_p_left); - assert_consistent_with_debug_base(p_nd->m_p_right); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_size() const -{ - _GLIBCXX_DEBUG_ASSERT(recursive_count(m_p_head->m_p_parent) == m_size); -} - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp deleted file mode 100644 index a000c744c..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp +++ /dev/null @@ -1,120 +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 bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -actual_erase_node(node_pointer p_z) -{ - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - - _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_z->m_value))); - - p_z->~node(); - - s_node_allocator.deallocate(p_z, 1); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update_min_max_for_erased_node(node_pointer p_z) -{ - if (m_size == 1) - { - m_p_head->m_p_left = m_p_head->m_p_right = m_p_head; - - return; - } - - if (m_p_head->m_p_left == p_z) - { - iterator it(p_z); - - ++it; - - m_p_head->m_p_left = it.m_p_nd; - } - else if (m_p_head->m_p_right == p_z) - { - iterator it(p_z); - - --it; - - m_p_head->m_p_right = it.m_p_nd; - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) - - clear_imp(m_p_head->m_p_parent); - - m_size = 0; - - initialize(); - - _GLIBCXX_DEBUG_ONLY(debug_base::clear();) - - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) - } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear_imp(node_pointer p_nd) -{ - if (p_nd == NULL) - return; - - clear_imp(p_nd->m_p_left); - - clear_imp(p_nd->m_p_right); - - p_nd->~node(); - - s_node_allocator.deallocate(p_nd, 1); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp deleted file mode 100644 index 413304b80..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp +++ /dev/null @@ -1,182 +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 find_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_point_iterator -PB_DS_CLASS_C_DEC:: -lower_bound(const_key_reference r_key) const -{ - node_pointer p_pot = m_p_head; - node_pointer p_nd = m_p_head->m_p_parent; - - while (p_nd != NULL) - if (Cmp_Fn::operator()( - PB_DS_V2F(p_nd->m_value), - r_key)) - p_nd = p_nd->m_p_right; - else - { - p_pot = p_nd; - - p_nd = p_nd->m_p_left; - } - - return (iterator(p_pot)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -lower_bound(const_key_reference r_key) -{ - node_pointer p_pot = m_p_head; - node_pointer p_nd = m_p_head->m_p_parent; - - while (p_nd != NULL) - if (Cmp_Fn::operator()( - PB_DS_V2F(p_nd->m_value), - r_key)) - p_nd = p_nd->m_p_right; - else - { - p_pot = p_nd; - - p_nd = p_nd->m_p_left; - } - - return (iterator(p_pot)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_point_iterator -PB_DS_CLASS_C_DEC:: -upper_bound(const_key_reference r_key) const -{ - node_pointer p_pot = m_p_head; - node_pointer p_nd = m_p_head->m_p_parent; - - while (p_nd != NULL) - if (Cmp_Fn::operator()(r_key, - PB_DS_V2F(p_nd->m_value))) - { - p_pot = p_nd, - - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - - return (const_iterator(p_pot)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -upper_bound(const_key_reference r_key) -{ - node_pointer p_pot = m_p_head; - node_pointer p_nd = m_p_head->m_p_parent; - - while (p_nd != NULL) - if (Cmp_Fn::operator()(r_key, - PB_DS_V2F(p_nd->m_value))) - { - p_pot = p_nd, - - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - - return (point_iterator(p_pot)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find(const_key_reference r_key) -{ - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) - - node_pointer p_pot = m_p_head; - node_pointer p_nd = m_p_head->m_p_parent; - - while (p_nd != NULL) - if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) - { - p_pot = p_nd; - - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - - return point_iterator((p_pot != m_p_head&& Cmp_Fn::operator()( - r_key, - PB_DS_V2F(p_pot->m_value)))? - m_p_head : p_pot); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_point_iterator -PB_DS_CLASS_C_DEC:: -find(const_key_reference r_key) const -{ - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) - - node_pointer p_pot = m_p_head; - node_pointer p_nd = m_p_head->m_p_parent; - - while (p_nd != NULL) - if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) - { - p_pot = p_nd; - - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - - return const_point_iterator((p_pot != m_p_head&& Cmp_Fn::operator()( - r_key, - PB_DS_V2F(p_pot->m_value)))? - m_p_head : p_pot); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp deleted file mode 100644 index b3e46112f..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp +++ /dev/null @@ -1,64 +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 bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ - return (m_size == 0); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ - 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_node_allocator.max_size()); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp deleted file mode 100644 index 3abf0a08d..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp +++ /dev/null @@ -1,211 +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 bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool> -PB_DS_CLASS_C_DEC:: -insert_leaf(const_reference r_value) -{ - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) - - if (m_size == 0) - return (std::make_pair( - insert_imp_empty(r_value), - true)); - - node_pointer p_nd = m_p_head->m_p_parent; - node_pointer p_pot = m_p_head; - - while (p_nd != NULL) - if (!Cmp_Fn::operator()( - PB_DS_V2F(p_nd->m_value), - PB_DS_V2F(r_value))) - { - p_pot = p_nd; - - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - - if (p_pot == m_p_head) - return (std::make_pair( - insert_leaf_new(r_value, m_p_head->m_p_right, false), - true)); - - if (!Cmp_Fn::operator()( - PB_DS_V2F(r_value), - PB_DS_V2F(p_pot->m_value))) - { - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists( - PB_DS_V2F(r_value))); - - return (std::make_pair(p_pot, false)); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist( - PB_DS_V2F(r_value))); - - p_nd = p_pot->m_p_left; - if (p_nd == NULL) - return (std::make_pair( - insert_leaf_new(r_value, p_pot, true), - true)); - - while (p_nd->m_p_right != NULL) - p_nd = p_nd->m_p_right; - - return (std::make_pair( - insert_leaf_new(r_value, p_nd, false), - true)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -insert_leaf_new(const_reference r_value, node_pointer p_nd, bool left_nd) -{ - node_pointer p_new_nd = - get_new_node_for_leaf_insert( r_value, traits_base::m_no_throw_copies_indicator); - - if (left_nd) - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == NULL); - _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()( - PB_DS_V2F(r_value), - PB_DS_V2F(p_nd->m_value))); - - p_nd->m_p_left = p_new_nd; - - if (m_p_head->m_p_left == p_nd) - m_p_head->m_p_left = p_new_nd; - } - else - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_right == NULL); - _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()( - PB_DS_V2F(p_nd->m_value), - PB_DS_V2F(r_value))); - - p_nd->m_p_right = p_new_nd; - - if (m_p_head->m_p_right == p_nd) - m_p_head->m_p_right = p_new_nd; - } - - p_new_nd->m_p_parent = p_nd; - - p_new_nd->m_p_left = p_new_nd->m_p_right = NULL; - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_nd)); - - update_to_top(p_new_nd, (node_update* )this); - - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new( - PB_DS_V2F(r_value))); - - return (iterator(p_new_nd)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -insert_imp_empty(const_reference r_value) -{ - node_pointer p_new_node = - get_new_node_for_leaf_insert( r_value, traits_base::m_no_throw_copies_indicator); - - m_p_head->m_p_left = m_p_head->m_p_right = - m_p_head->m_p_parent = p_new_node; - - p_new_node->m_p_parent = m_p_head; - - p_new_node->m_p_left = p_new_node->m_p_right = NULL; - - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new( - PB_DS_V2F(r_value))); - - update_to_top(m_p_head->m_p_parent, (node_update* )this); - - return (iterator(p_new_node)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -get_new_node_for_leaf_insert(const_reference r_val, false_type) -{ - node_pointer p_new_nd = s_node_allocator.allocate(1); - - cond_dealtor_t cond(p_new_nd); - - new (const_cast<void* >( - static_cast<const void* >(&p_new_nd->m_value))) - typename node::value_type(r_val); - - cond.set_no_action(); - - p_new_nd->m_p_left = p_new_nd->m_p_right = NULL; - - ++m_size; - - return (p_new_nd); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -get_new_node_for_leaf_insert(const_reference r_val, true_type) -{ - node_pointer p_new_nd = s_node_allocator.allocate(1); - - new (const_cast<void* >( - static_cast<const void* >(&p_new_nd->m_value))) - typename node::value_type(r_val); - - p_new_nd->m_p_left = p_new_nd->m_p_right = NULL; - - ++m_size; - - return (p_new_nd); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp deleted file mode 100644 index ed7f1b172..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp +++ /dev/null @@ -1,136 +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 bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ - return (iterator(m_p_head->m_p_left)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ - return (const_iterator(m_p_head->m_p_left)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ - return (iterator(m_p_head)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ - return (const_iterator(m_p_head)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator -PB_DS_CLASS_C_DEC:: -rbegin() const -{ - return (const_reverse_iterator(m_p_head->m_p_right)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -rbegin() -{ - return (reverse_iterator(m_p_head->m_p_right)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -rend() -{ - return (reverse_iterator(m_p_head)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator -PB_DS_CLASS_C_DEC:: -rend() const -{ - return (const_reverse_iterator(m_p_head)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_node_iterator -PB_DS_CLASS_C_DEC:: -node_begin() const -{ - return (const_node_iterator(m_p_head->m_p_parent)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -node_begin() -{ - return (node_iterator(m_p_head->m_p_parent)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_node_iterator -PB_DS_CLASS_C_DEC:: -node_end() const -{ - return (const_node_iterator(NULL)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -node_end() -{ - return (node_iterator(NULL)); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp deleted file mode 100644 index 365f02b6e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp +++ /dev/null @@ -1,237 +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 node_iterators.hpp - * Contains an implementation class for bin_search_tree_. - */ - -#ifndef PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP -#define PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP - -#include <ext/pb_ds/tag_and_trait.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC \ - bin_search_tree_const_node_it_< \ - Node, \ - Const_Iterator, \ - Iterator, \ - Allocator> - - // Const node iterator. - template<typename Node, - class Const_Iterator, - class Iterator, - class Allocator> - class bin_search_tree_const_node_it_ - { - private: - - private: - typedef - typename Allocator::template rebind< - Node>::other::pointer - node_pointer; - - public: - - // Category. - typedef trivial_iterator_tag iterator_category; - - // Difference type. - typedef trivial_iterator_difference_type difference_type; - - // __Iterator's value type. - typedef Const_Iterator value_type; - - // __Iterator's reference type. - typedef Const_Iterator reference; - - // __Iterator's __const reference type. - typedef Const_Iterator const_reference; - - // Metadata type. - typedef typename Node::metadata_type metadata_type; - - // Const metadata reference type. - typedef - typename Allocator::template rebind< - metadata_type>::other::const_reference - const_metadata_reference; - - public: - - // Default constructor. - /* - inline - bin_search_tree_const_node_it_() - */ - - inline - bin_search_tree_const_node_it_(const node_pointer p_nd = NULL) : m_p_nd(const_cast<node_pointer>(p_nd)) - { } - - // Access. - inline const_reference - operator*() const - { - return (Const_Iterator(m_p_nd)); - } - - // Metadata access. - inline const_metadata_reference - get_metadata() const - { - return (m_p_nd->get_metadata()); - } - - // Returns the __const node iterator associated with the left node. - inline PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC - get_l_child() const - { - return (PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(m_p_nd->m_p_left)); - } - - // Returns the __const node iterator associated with the right node. - inline PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC - get_r_child() const - { - return (PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(m_p_nd->m_p_right)); - } - - // Compares to a different iterator object. - inline bool - operator==(const PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC& other) const - { - return (m_p_nd == other.m_p_nd); - } - - // Compares (negatively) to a different iterator object. - inline bool - operator!=(const PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC& other) const - { - return (m_p_nd != other.m_p_nd); - } - - public: - node_pointer m_p_nd; - }; - -#define PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC \ - bin_search_tree_node_it_< \ - Node, \ - Const_Iterator, \ - Iterator, \ - Allocator> - - // Node iterator. - template<typename Node, - class Const_Iterator, - class Iterator, - class Allocator> - class bin_search_tree_node_it_ : - public PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC - - { - - private: - typedef - typename Allocator::template rebind< - Node>::other::pointer - node_pointer; - - public: - - // __Iterator's value type. - typedef Iterator value_type; - - // __Iterator's reference type. - typedef Iterator reference; - - // __Iterator's __const reference type. - typedef Iterator const_reference; - - public: - - // Default constructor. - /* - inline - bin_search_tree_node_it_(); - */ - - inline - bin_search_tree_node_it_(const node_pointer p_nd = NULL) : PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC( - const_cast<node_pointer>(p_nd)) - { } - - // Access. - inline Iterator - operator*() const - { - return (Iterator(PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd)); - } - - // Returns the node iterator associated with the left node. - inline PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC - get_l_child() const - { - return (PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC( - PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd->m_p_left)); - } - - // Returns the node iterator associated with the right node. - inline PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC - get_r_child() const - { - return (PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC( - PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd->m_p_right)); - } - - }; - -#undef PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC - -#undef PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp deleted file mode 100644 index bb249e070..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp +++ /dev/null @@ -1,381 +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 point_iterators.hpp - * Contains an implementation class for bin_search_tree_. - */ - -#ifndef PB_DS_BIN_SEARCH_TREE_FIND_ITERATORS_HPP -#define PB_DS_BIN_SEARCH_TREE_FIND_ITERATORS_HPP - -#include <ext/pb_ds/tag_and_trait.hpp> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_TREE_CONST_IT_C_DEC \ - bin_search_tree_const_it_< \ - Node_Pointer, \ - Value_Type, \ - Pointer, \ - Const_Pointer, \ - Reference, \ - Const_Reference, \ - Is_Forward_Iterator, \ - Allocator> - -#define PB_DS_TREE_CONST_ODIR_IT_C_DEC \ - bin_search_tree_const_it_< \ - Node_Pointer, \ - Value_Type, \ - Pointer, \ - Const_Pointer, \ - Reference, \ - Const_Reference, \ - !Is_Forward_Iterator, \ - Allocator> - -#define PB_DS_TREE_IT_C_DEC \ - bin_search_tree_it_< \ - Node_Pointer, \ - Value_Type, \ - Pointer, \ - Const_Pointer, \ - Reference, \ - Const_Reference, \ - Is_Forward_Iterator, \ - Allocator> - -#define PB_DS_TREE_ODIR_IT_C_DEC \ - bin_search_tree_it_< \ - Node_Pointer, \ - Value_Type, \ - Pointer, \ - Const_Pointer, \ - Reference, \ - Const_Reference, \ - !Is_Forward_Iterator, \ - Allocator> - - // Const iterator. - template<typename Node_Pointer, - typename Value_Type, - typename Pointer, - typename Const_Pointer, - typename Reference, - typename Const_Reference, - bool Is_Forward_Iterator, - class Allocator> - class bin_search_tree_const_it_ - { - - public: - - typedef std::bidirectional_iterator_tag iterator_category; - - typedef typename Allocator::difference_type difference_type; - - typedef Value_Type value_type; - - typedef Pointer pointer; - - typedef Const_Pointer const_pointer; - - typedef Reference reference; - - typedef Const_Reference const_reference; - - public: - - inline - bin_search_tree_const_it_(const Node_Pointer p_nd = NULL) - : m_p_nd(const_cast<Node_Pointer>(p_nd)) - { } - - inline - bin_search_tree_const_it_(const PB_DS_TREE_CONST_ODIR_IT_C_DEC& other) - : m_p_nd(other.m_p_nd) - { } - - inline - PB_DS_TREE_CONST_IT_C_DEC& - operator=(const PB_DS_TREE_CONST_IT_C_DEC& other) - { - m_p_nd = other.m_p_nd; - return *this; - } - - inline - PB_DS_TREE_CONST_IT_C_DEC& - operator=(const PB_DS_TREE_CONST_ODIR_IT_C_DEC& other) - { - m_p_nd = other.m_p_nd; - return *this; - } - - inline const_pointer - operator->() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_nd != NULL); - return &m_p_nd->m_value; - } - - inline const_reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_nd != NULL); - return m_p_nd->m_value; - } - - inline bool - operator==(const PB_DS_TREE_CONST_IT_C_DEC & other) const - { return m_p_nd == other.m_p_nd; } - - inline bool - operator==(const PB_DS_TREE_CONST_ODIR_IT_C_DEC & other) const - { return m_p_nd == other.m_p_nd; } - - inline bool - operator!=(const PB_DS_TREE_CONST_IT_C_DEC& other) const - { return m_p_nd != other.m_p_nd; } - - inline bool - operator!=(const PB_DS_TREE_CONST_ODIR_IT_C_DEC& other) const - { return m_p_nd != other.m_p_nd; } - - inline PB_DS_TREE_CONST_IT_C_DEC& - operator++() - { - _GLIBCXX_DEBUG_ASSERT(m_p_nd != NULL); - inc(integral_constant<int,Is_Forward_Iterator>()); - return *this; - } - - inline PB_DS_TREE_CONST_IT_C_DEC - operator++(int) - { - PB_DS_TREE_CONST_IT_C_DEC ret_it(m_p_nd); - operator++(); - return ret_it; - } - - inline PB_DS_TREE_CONST_IT_C_DEC& - operator--() - { - dec(integral_constant<int,Is_Forward_Iterator>()); - return *this; - } - - inline PB_DS_TREE_CONST_IT_C_DEC - operator--(int) - { - PB_DS_TREE_CONST_IT_C_DEC ret_it(m_p_nd); - operator--(); - return ret_it; - } - - protected: - inline void - inc(false_type) - { dec(true_type()); } - - void - inc(true_type) - { - if (m_p_nd->special()&& - m_p_nd->m_p_parent->m_p_parent == m_p_nd) - { - m_p_nd = m_p_nd->m_p_left; - return; - } - - if (m_p_nd->m_p_right != NULL) - { - m_p_nd = m_p_nd->m_p_right; - while (m_p_nd->m_p_left != NULL) - m_p_nd = m_p_nd->m_p_left; - return; - } - - Node_Pointer p_y = m_p_nd->m_p_parent; - while (m_p_nd == p_y->m_p_right) - { - m_p_nd = p_y; - p_y = p_y->m_p_parent; - } - - if (m_p_nd->m_p_right != p_y) - m_p_nd = p_y; - } - - inline void - dec(false_type) - { inc(true_type()); } - - void - dec(true_type) - { - if (m_p_nd->special() && m_p_nd->m_p_parent->m_p_parent == m_p_nd) - { - m_p_nd = m_p_nd->m_p_right; - return; - } - - if (m_p_nd->m_p_left != NULL) - { - Node_Pointer p_y = m_p_nd->m_p_left; - while (p_y->m_p_right != NULL) - p_y = p_y->m_p_right; - m_p_nd = p_y; - return; - } - - Node_Pointer p_y = m_p_nd->m_p_parent; - while (m_p_nd == p_y->m_p_left) - { - m_p_nd = p_y; - p_y = p_y->m_p_parent; - } - if (m_p_nd->m_p_left != p_y) - m_p_nd = p_y; - } - - public: - Node_Pointer m_p_nd; - }; - - // Iterator. - template<typename Node_Pointer, - typename Value_Type, - typename Pointer, - typename Const_Pointer, - typename Reference, - typename Const_Reference, - bool Is_Forward_Iterator, - class Allocator> - class bin_search_tree_it_ : - public PB_DS_TREE_CONST_IT_C_DEC - - { - - public: - - inline - bin_search_tree_it_(const Node_Pointer p_nd = NULL) - : PB_DS_TREE_CONST_IT_C_DEC((Node_Pointer)p_nd) - { } - - inline - bin_search_tree_it_(const PB_DS_TREE_ODIR_IT_C_DEC& other) - : PB_DS_TREE_CONST_IT_C_DEC(other.m_p_nd) - { } - - inline - PB_DS_TREE_IT_C_DEC& - operator=(const PB_DS_TREE_IT_C_DEC& other) - { - base_it_type::m_p_nd = other.m_p_nd; - return *this; - } - - inline - PB_DS_TREE_IT_C_DEC& - operator=(const PB_DS_TREE_ODIR_IT_C_DEC& other) - { - base_it_type::m_p_nd = other.m_p_nd; - return *this; - } - - inline typename PB_DS_TREE_CONST_IT_C_DEC::pointer - operator->() const - { - _GLIBCXX_DEBUG_ASSERT(base_it_type::m_p_nd != NULL); - return &base_it_type::m_p_nd->m_value; - } - - inline typename PB_DS_TREE_CONST_IT_C_DEC::reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(base_it_type::m_p_nd != NULL); - return base_it_type::m_p_nd->m_value; - } - - inline PB_DS_TREE_IT_C_DEC& - operator++() - { - PB_DS_TREE_CONST_IT_C_DEC:: operator++(); - return *this; - } - - inline PB_DS_TREE_IT_C_DEC - operator++(int) - { - PB_DS_TREE_IT_C_DEC ret_it(base_it_type::m_p_nd); - operator++(); - return ret_it; - } - - inline PB_DS_TREE_IT_C_DEC& - operator--() - { - PB_DS_TREE_CONST_IT_C_DEC:: operator--(); - return *this; - } - - inline PB_DS_TREE_IT_C_DEC - operator--(int) - { - PB_DS_TREE_IT_C_DEC ret_it(base_it_type::m_p_nd); - operator--(); - return ret_it; - } - - protected: - typedef PB_DS_TREE_CONST_IT_C_DEC base_it_type; - }; - -#undef PB_DS_TREE_CONST_IT_C_DEC -#undef PB_DS_TREE_CONST_ODIR_IT_C_DEC -#undef PB_DS_TREE_IT_C_DEC -#undef PB_DS_TREE_ODIR_IT_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp deleted file mode 100644 index 63f307d39..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp +++ /dev/null @@ -1,56 +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/bin_search_tree_/r_erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp deleted file mode 100644 index 667ef8470..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp +++ /dev/null @@ -1,120 +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 r_erase_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -actual_erase_node(node_pointer p_z) -{ - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - - _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_z->m_value))); - - p_z->~node(); - - s_node_allocator.deallocate(p_z, 1); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update_min_max_for_erased_node(node_pointer p_z) -{ - if (m_size == 1) - { - m_p_head->m_p_left = m_p_head->m_p_right = m_p_head; - - return; - } - - if (m_p_head->m_p_left == p_z) - { - iterator it(p_z); - - ++it; - - m_p_head->m_p_left = it.m_p_nd; - } - else if (m_p_head->m_p_right == p_z) - { - iterator it(p_z); - - --it; - - m_p_head->m_p_right = it.m_p_nd; - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) - - clear_imp(m_p_head->m_p_parent); - - m_size = 0; - - initialize(); - - _GLIBCXX_DEBUG_ONLY(debug_base::clear();) - - _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();) - } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear_imp(node_pointer p_nd) -{ - if (p_nd == NULL) - return; - - clear_imp(p_nd->m_p_left); - - clear_imp(p_nd->m_p_right); - - p_nd->~Node(); - - s_node_allocator.deallocate(p_nd, 1); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp deleted file mode 100644 index 0598657fe..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp +++ /dev/null @@ -1,156 +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 rotate_fn_imps.hpp - * Contains imps for rotating nodes. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rotate_left(node_pointer p_x) -{ - node_pointer p_y = p_x->m_p_right; - - p_x->m_p_right = p_y->m_p_left; - - if (p_y->m_p_left != NULL) - p_y->m_p_left->m_p_parent = p_x; - - p_y->m_p_parent = p_x->m_p_parent; - - if (p_x == m_p_head->m_p_parent) - m_p_head->m_p_parent = p_y; - else if (p_x == p_x->m_p_parent->m_p_left) - p_x->m_p_parent->m_p_left = p_y; - else - p_x->m_p_parent->m_p_right = p_y; - - p_y->m_p_left = p_x; - p_x->m_p_parent = p_y; - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);) - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);) - - apply_update(p_x, (node_update* )this); - apply_update(p_x->m_p_parent, (node_update* )this); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rotate_right(node_pointer p_x) -{ - node_pointer p_y = p_x->m_p_left; - - p_x->m_p_left = p_y->m_p_right; - - if (p_y->m_p_right != NULL) - p_y->m_p_right->m_p_parent = p_x; - - p_y->m_p_parent = p_x->m_p_parent; - - if (p_x == m_p_head->m_p_parent) - m_p_head->m_p_parent = p_y; - else if (p_x == p_x->m_p_parent->m_p_right) - p_x->m_p_parent->m_p_right = p_y; - else - p_x->m_p_parent->m_p_left = p_y; - - p_y->m_p_right = p_x; - p_x->m_p_parent = p_y; - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);) - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);) - - apply_update(p_x, (node_update* )this); - apply_update(p_x->m_p_parent, (node_update* )this); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rotate_parent(node_pointer p_nd) -{ - node_pointer p_parent = p_nd->m_p_parent; - - if (p_nd == p_parent->m_p_left) - rotate_right(p_parent); - else - rotate_left(p_parent); - - _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_parent = p_nd); - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == p_parent || - p_nd->m_p_right == p_parent); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -apply_update(node_pointer /*p_nd*/, null_node_update_pointer /*p_update*/) -{ } - -PB_DS_CLASS_T_DEC -template<typename Node_Update_> -inline void -PB_DS_CLASS_C_DEC:: -apply_update(node_pointer p_nd, Node_Update_* /*p_update*/) -{ - node_update::operator()( - node_iterator(p_nd), - const_node_iterator(static_cast<node_pointer>(NULL))); -} - -PB_DS_CLASS_T_DEC -template<typename Node_Update_> -inline void -PB_DS_CLASS_C_DEC:: -update_to_top(node_pointer p_nd, Node_Update_* p_update) -{ - while (p_nd != m_p_head) - { - apply_update(p_nd, p_update); - - p_nd = p_nd->m_p_parent; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update_to_top(node_pointer /*p_nd*/, null_node_update_pointer /*p_update*/) -{ } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp deleted file mode 100644 index 9d2bd6d74..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp +++ /dev/null @@ -1,146 +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 bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -bool -PB_DS_CLASS_C_DEC:: -join_prep(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - if (other.m_size == 0) - return false; - - if (m_size == 0) - { - value_swap(other); - return false; - } - - const bool greater = Cmp_Fn::operator()(PB_DS_V2F(m_p_head->m_p_right->m_value), PB_DS_V2F(other.m_p_head->m_p_left->m_value)); - - const bool lesser = Cmp_Fn::operator()(PB_DS_V2F(other.m_p_head->m_p_right->m_value), PB_DS_V2F(m_p_head->m_p_left->m_value)); - - if (!greater && !lesser) - __throw_join_error(); - - if (lesser) - value_swap(other); - - m_size += other.m_size; - _GLIBCXX_DEBUG_ONLY(debug_base::join(other);) - return true; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -join_finish(PB_DS_CLASS_C_DEC& other) -{ - initialize_min_max(); - other.initialize(); -} - -PB_DS_CLASS_T_DEC -bool -PB_DS_CLASS_C_DEC:: -split_prep(const_key_reference r_key, PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - other.clear(); - - if (m_size == 0) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - return false; - } - - if (Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_left->m_value))) - { - value_swap(other); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - return false; - } - - if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_right->m_value))) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - return false; - } - - if (m_size == 1) - { - value_swap(other); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - return false; - } - - _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(Cmp_Fn& )(*this), other);) - return true; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -split_finish(PB_DS_CLASS_C_DEC& other) -{ - other.initialize_min_max(); - other.m_size = std::distance(other.begin(), other.end()); - m_size -= other.m_size; - initialize_min_max(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -recursive_count(node_pointer p) const -{ - if (p == NULL) - return 0; - return 1 + recursive_count(p->m_p_left) + recursive_count(p->m_p_right); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp deleted file mode 100644 index 58c30c3fe..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp +++ /dev/null @@ -1,250 +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 for bin_search_tree_. - */ - -#ifndef PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP -#define PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP - -#include <ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp> -#include <ext/pb_ds/detail/bin_search_tree_/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 Node, - class Allocator> - struct bin_search_tree_traits - { - private: - typedef - types_traits< - Key, - Mapped, - Allocator, - false> - type_traits; - - public: - typedef Node node; - - typedef - bin_search_tree_const_it_< - typename Allocator::template rebind< - node>::other::pointer, - typename type_traits::value_type, - typename type_traits::pointer, - typename type_traits::const_pointer, - typename type_traits::reference, - typename type_traits::const_reference, - true, - Allocator> - const_point_iterator; - - typedef - bin_search_tree_it_< - typename Allocator::template rebind< - node>::other::pointer, - typename type_traits::value_type, - typename type_traits::pointer, - typename type_traits::const_pointer, - typename type_traits::reference, - typename type_traits::const_reference, - true, - Allocator> - point_iterator; - - typedef - bin_search_tree_const_it_< - typename Allocator::template rebind< - node>::other::pointer, - typename type_traits::value_type, - typename type_traits::pointer, - typename type_traits::const_pointer, - typename type_traits::reference, - typename type_traits::const_reference, - false, - Allocator> - const_reverse_iterator; - - typedef - bin_search_tree_it_< - typename Allocator::template rebind< - node>::other::pointer, - typename type_traits::value_type, - typename type_traits::pointer, - typename type_traits::const_pointer, - typename type_traits::reference, - typename type_traits::const_reference, - false, - Allocator> - reverse_iterator; - - typedef - bin_search_tree_const_node_it_< - Node, - const_point_iterator, - point_iterator, - Allocator> - const_node_iterator; - - typedef - bin_search_tree_node_it_< - Node, - const_point_iterator, - point_iterator, - 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 Node, - class Allocator> - struct bin_search_tree_traits< - Key, - null_mapped_type, - Cmp_Fn, - Node_Update, - Node, - Allocator> - { - private: - typedef - types_traits< - Key, - null_mapped_type, - Allocator, - false> - type_traits; - - public: - typedef Node node; - - typedef - bin_search_tree_const_it_< - typename Allocator::template rebind< - node>::other::pointer, - typename type_traits::value_type, - typename type_traits::pointer, - typename type_traits::const_pointer, - typename type_traits::reference, - typename type_traits::const_reference, - true, - Allocator> - const_point_iterator; - - typedef const_point_iterator point_iterator; - - typedef - bin_search_tree_const_it_< - typename Allocator::template rebind< - node>::other::pointer, - typename type_traits::value_type, - typename type_traits::pointer, - typename type_traits::const_pointer, - typename type_traits::reference, - typename type_traits::const_reference, - false, - Allocator> - const_reverse_iterator; - - typedef const_reverse_iterator reverse_iterator; - - typedef - bin_search_tree_const_node_it_< - Node, - const_point_iterator, - point_iterator, - Allocator> - const_node_iterator; - - typedef const_node_iterator 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; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp deleted file mode 100644 index 576cba265..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp +++ /dev/null @@ -1,357 +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 binary_heap_.hpp - * Contains an implementation class for a binary heap. - */ - -#ifndef PB_DS_BINARY_HEAP_HPP -#define PB_DS_BINARY_HEAP_HPP - -/* - * Based on CLRS. - */ - -#include <queue> -#include <algorithm> -#include <ext/pb_ds/detail/cond_dealtor.hpp> -#include <ext/pb_ds/detail/cond_dealtor.hpp> -#include <ext/pb_ds/detail/type_utils.hpp> -#include <ext/pb_ds/detail/binary_heap_/entry_cmp.hpp> -#include <ext/pb_ds/detail/binary_heap_/entry_pred.hpp> -#include <ext/pb_ds/detail/binary_heap_/resize_policy.hpp> -#include <ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp> -#include <ext/pb_ds/detail/binary_heap_/const_iterator.hpp> -#ifdef PB_DS_BINARY_HEAP_TRACE_ -#include <iostream> -#endif -#include <ext/pb_ds/detail/type_utils.hpp> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_CLASS_T_DEC \ - template<typename Value_Type, class Cmp_Fn, class Allocator> - -#define PB_DS_CLASS_C_DEC \ - binary_heap_<Value_Type, Cmp_Fn, Allocator> - -#define PB_DS_ENTRY_CMP_DEC \ - entry_cmp<Value_Type, Cmp_Fn, is_simple<Value_Type>::value, Allocator>::type - -#define PB_DS_RESIZE_POLICY_DEC \ - __gnu_pbds::detail::resize_policy<typename Allocator::size_type> - - /** - * class description = "Base class for some types of h3ap$"> - **/ - template<typename Value_Type, class Cmp_Fn, class Allocator> - class binary_heap_ : public PB_DS_ENTRY_CMP_DEC, - public PB_DS_RESIZE_POLICY_DEC - { - - private: - enum - { - simple_value = is_simple<Value_Type>::value - }; - - typedef integral_constant<int, simple_value> no_throw_copies_t; - - typedef - typename Allocator::template rebind< - Value_Type>::other - value_allocator; - - typedef - typename __conditional_type< - simple_value, - Value_Type, - typename value_allocator::pointer>::__type - entry; - - typedef - typename Allocator::template rebind< - entry>::other - entry_allocator; - - typedef typename entry_allocator::pointer entry_pointer; - - typedef typename PB_DS_ENTRY_CMP_DEC entry_cmp; - - typedef PB_DS_RESIZE_POLICY_DEC resize_policy; - - typedef - cond_dealtor< - Value_Type, - Allocator> - cond_dealtor_t; - - public: - - typedef typename Allocator::size_type size_type; - - typedef typename Allocator::difference_type difference_type; - - typedef Value_Type value_type; - - 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< - value_type>::other::reference - reference; - - typedef - typename Allocator::template rebind< - value_type>::other::const_reference - const_reference; - - typedef - binary_heap_const_point_iterator_< - value_type, - entry, - simple_value, - Allocator> - const_point_iterator; - - typedef const_point_iterator point_iterator; - - typedef - binary_heap_const_iterator_< - value_type, - entry, - simple_value, - Allocator> - const_iterator; - - typedef const_iterator iterator; - - typedef Cmp_Fn cmp_fn; - - typedef Allocator allocator_type; - - public: - - binary_heap_(); - - binary_heap_(const Cmp_Fn& r_cmp_fn); - - binary_heap_(const PB_DS_CLASS_C_DEC& other); - - void - swap(PB_DS_CLASS_C_DEC& other); - - ~binary_heap_(); - - inline bool - empty() const; - - inline size_type - size() const; - - inline size_type - max_size() const; - - Cmp_Fn& - get_cmp_fn(); - - const Cmp_Fn& - get_cmp_fn() const; - - inline point_iterator - push(const_reference r_val); - - void - modify(point_iterator it, const_reference r_new_val); - - inline const_reference - top() const; - - inline void - pop(); - - inline void - erase(point_iterator it); - - template<typename Pred> - typename PB_DS_CLASS_C_DEC::size_type - erase_if(Pred pred); - - inline static void - erase_at(entry_pointer a_entries, size_type size, false_type); - - inline static void - erase_at(entry_pointer a_entries, size_type size, true_type); - - inline iterator - begin(); - - inline const_iterator - begin() const; - - inline iterator - end(); - - inline const_iterator - end() const; - - void - clear(); - - template<typename Pred> - void - split(Pred pred, PB_DS_CLASS_C_DEC& other); - - void - join(PB_DS_CLASS_C_DEC& other); - -#ifdef PB_DS_BINARY_HEAP_TRACE_ - void - trace() const; -#endif - - protected: - - template<typename It> - void - copy_from_range(It first_it, It last_it); - - private: - - void - value_swap(PB_DS_CLASS_C_DEC& other); - - inline void - insert_value(const_reference r_val, false_type); - - inline void - insert_value(value_type val, true_type); - - inline void - insert_entry(entry e); - - inline void - resize_for_insert_if_needed(); - - inline void - swap_value_imp(entry_pointer p_e, value_type new_val, true_type); - - inline void - swap_value_imp(entry_pointer p_e, const_reference r_new_val, false_type); - - void - fix(entry_pointer p_e); - - inline const_reference - top_imp(true_type) const; - - inline const_reference - top_imp(false_type) const; - - inline static size_type - left_child(size_type i); - - inline static size_type - right_child(size_type i); - - inline static size_type - parent(size_type i); - - inline void - resize_for_erase_if_needed(); - - template<typename Pred> - size_type - partition(Pred pred); - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; -#endif - -#ifdef PB_DS_BINARY_HEAP_TRACE_ - void - trace_entry(const entry& r_e, false_type) const; - - void - trace_entry(const entry& r_e, true_type) const; -#endif - - private: - static entry_allocator s_entry_allocator; - - static value_allocator s_value_allocator; - - static no_throw_copies_t s_no_throw_copies_ind; - - size_type m_size; - - size_type m_actual_size; - - entry_pointer m_a_entries; - }; - -#include <ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp> -#include <ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp> -#include <ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp> -#include <ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp> -#include <ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp> -#include <ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp> -#include <ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp> - -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_ENTRY_CMP_DEC -#undef PB_DS_RESIZE_POLICY_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp deleted file mode 100644 index 9cb13f99c..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp +++ /dev/null @@ -1,152 +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 const_iterator.hpp - * Contains an iterator class returned by the table's const find and insert - * methods. - */ - -#ifndef PB_DS_BINARY_HEAP_CONST_ITERATOR_HPP -#define PB_DS_BINARY_HEAP_CONST_ITERATOR_HPP - -#include <ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_C_DEC \ - binary_heap_const_iterator_<Value_Type, Entry, Simple, Allocator> - -#define PB_DS_BASE_C_DEC \ - binary_heap_const_point_iterator_<Value_Type, Entry, Simple, Allocator> - - // Const point-type iterator. - template<typename Value_Type, - typename Entry, - bool Simple, - class Allocator> - class binary_heap_const_iterator_ : public PB_DS_BASE_C_DEC - { - - private: - typedef typename PB_DS_BASE_C_DEC::entry_pointer entry_pointer; - - typedef PB_DS_BASE_C_DEC base_type; - - public: - - // Category. - typedef std::forward_iterator_tag iterator_category; - - // Difference type. - typedef typename Allocator::difference_type difference_type; - - // Iterator's value type. - typedef typename base_type::value_type value_type; - - // Iterator's pointer type. - typedef typename base_type::pointer pointer; - - // Iterator's const pointer type. - typedef typename base_type::const_pointer const_pointer; - - // Iterator's reference type. - typedef typename base_type::reference reference; - - // Iterator's const reference type. - typedef typename base_type::const_reference const_reference; - - public: - - inline - binary_heap_const_iterator_(entry_pointer p_e) : base_type(p_e) - { } - - // Default constructor. - inline - binary_heap_const_iterator_() - { } - - // Copy constructor. - inline - binary_heap_const_iterator_(const PB_DS_CLASS_C_DEC& other) : base_type(other) - { } - - // Compares content to a different iterator object. - inline bool - operator==(const PB_DS_CLASS_C_DEC& other) const - { - return base_type::m_p_e == other.m_p_e; - } - - // Compares content (negatively) to a different iterator object. - inline bool - operator!=(const PB_DS_CLASS_C_DEC& other) const - { - return base_type::m_p_e != other.m_p_e; - } - - inline PB_DS_CLASS_C_DEC& - operator++() - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_p_e != NULL); - inc(); - return *this; - } - - inline PB_DS_CLASS_C_DEC - operator++(int) - { - PB_DS_CLASS_C_DEC ret_it(base_type::m_p_e); - operator++(); - return ret_it; - } - - private: - void - inc() - { ++base_type::m_p_e; } - }; - -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_BASE_C_DEC - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp deleted file mode 100644 index d4013db16..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp +++ /dev/null @@ -1,144 +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 const_point_iterator.hpp - * Contains an iterator class returned by the table's const find and insert - * methods. - */ - -#ifndef PB_DS_BINARY_HEAP_CONST_FIND_ITERATOR_HPP -#define PB_DS_BINARY_HEAP_CONST_FIND_ITERATOR_HPP - -#include <ext/pb_ds/tag_and_trait.hpp> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - // Const point-type iterator. - template<typename Value_Type, typename Entry, bool Simple, - typename Allocator> - class binary_heap_const_point_iterator_ - { - protected: - typedef typename Allocator::template rebind<Entry>::other::pointer entry_pointer; - - public: - // Category. - typedef trivial_iterator_tag iterator_category; - - // Difference type. - typedef trivial_iterator_difference_type difference_type; - - // Iterator's value type. - typedef Value_Type value_type; - - // Iterator's pointer type. - typedef typename Allocator::template rebind<value_type>::other::pointer - pointer; - - // Iterator's const pointer type. - typedef - typename Allocator::template rebind<value_type>::other::const_pointer - const_pointer; - - // Iterator's reference type. - typedef - typename Allocator::template rebind<value_type>::other::reference - reference; - - // Iterator's const reference type. - typedef - typename Allocator::template rebind<value_type>::other::const_reference - const_reference; - - inline - binary_heap_const_point_iterator_(entry_pointer p_e) : m_p_e(p_e) - { } - - // Default constructor. - inline - binary_heap_const_point_iterator_() : m_p_e(NULL) { } - - // Copy constructor. - inline - binary_heap_const_point_iterator_(const binary_heap_const_point_iterator_& other) - : m_p_e(other.m_p_e) - { } - - // Access. - inline const_pointer - operator->() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_e != NULL); - return to_ptr(integral_constant<int, Simple>()); - } - - // Access. - inline const_reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_e != NULL); - return *to_ptr(integral_constant<int, Simple>()); - } - - // Compares content to a different iterator object. - inline bool - operator==(const binary_heap_const_point_iterator_& other) const - { return m_p_e == other.m_p_e; } - - // Compares content (negatively) to a different iterator object. - inline bool - operator!=(const binary_heap_const_point_iterator_& other) const - { return m_p_e != other.m_p_e; } - - private: - inline const_pointer - to_ptr(true_type) const - { return m_p_e; } - - inline const_pointer - to_ptr(false_type) const - { return *m_p_e; } - - public: - entry_pointer m_p_e; - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index a77a02521..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,159 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 binary_heap_. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::entry_allocator -PB_DS_CLASS_C_DEC::s_entry_allocator; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::value_allocator -PB_DS_CLASS_C_DEC::s_value_allocator; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::no_throw_copies_t -PB_DS_CLASS_C_DEC::s_no_throw_copies_ind; - -PB_DS_CLASS_T_DEC -template<typename It> -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - { - insert_value(*first_it, s_no_throw_copies_ind); - ++first_it; - } - - std::make_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this)); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binary_heap_() : - m_size(0), - m_actual_size(resize_policy::min_size), - m_a_entries(s_entry_allocator.allocate(m_actual_size)) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binary_heap_(const Cmp_Fn& r_cmp_fn) : - entry_cmp(r_cmp_fn), - m_size(0), - m_actual_size(resize_policy::min_size), - m_a_entries(s_entry_allocator.allocate(m_actual_size)) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binary_heap_(const PB_DS_CLASS_C_DEC& other) : - entry_cmp(other), - resize_policy(other), - m_size(0), - m_actual_size(other.m_actual_size), - m_a_entries(s_entry_allocator.allocate(m_actual_size)) -{ - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - _GLIBCXX_DEBUG_ASSERT(m_a_entries != other.m_a_entries); - - const_iterator first_it = other.begin(); - const_iterator last_it = other.end(); - - __try - { - while (first_it != last_it) - { - insert_value(*first_it, s_no_throw_copies_ind); - ++first_it; - } - } - __catch(...) - { - for (size_type i = 0; i < m_size; ++i) - erase_at(m_a_entries, i, s_no_throw_copies_ind); - - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - __throw_exception_again; - } - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - _GLIBCXX_DEBUG_ASSERT(m_a_entries != other.m_a_entries); - - value_swap(other); - std::swap((entry_cmp& )(*this), (entry_cmp& )other); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.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_entries, other.m_a_entries); - std::swap(m_size, other.m_size); - std::swap(m_actual_size, other.m_actual_size); - static_cast<resize_policy*>(this)->swap(other); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~binary_heap_() -{ - for (size_type i = 0; i < m_size; ++i) - erase_at(m_a_entries, i, s_no_throw_copies_ind); - s_entry_allocator.deallocate(m_a_entries, m_actual_size); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp deleted file mode 100644 index fcfecfd50..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp +++ /dev/null @@ -1,72 +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 a binary_heap. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ -#ifdef PB_DS_REGRESSION - s_entry_allocator.check_allocated(m_a_entries, m_actual_size); -#endif - - resize_policy::assert_valid(); - _GLIBCXX_DEBUG_ASSERT(m_size <= m_actual_size); - for (size_type i = 0; i < m_size; ++i) - { -#ifdef PB_DS_REGRESSION - s_value_allocator.check_allocated(m_a_entries[i], 1); -#endif - - if (left_child(i) < m_size) - _GLIBCXX_DEBUG_ASSERT(!entry_cmp::operator()(m_a_entries[i], m_a_entries[left_child(i)])); - - _GLIBCXX_DEBUG_ASSERT(parent(left_child(i)) == i); - - if (right_child(i) < m_size) - _GLIBCXX_DEBUG_ASSERT(!entry_cmp::operator()(m_a_entries[i], m_a_entries[right_child(i)])); - - _GLIBCXX_DEBUG_ASSERT(parent(right_child(i)) == i); - } -} - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp deleted file mode 100644 index b0a9b5b0d..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp +++ /dev/null @@ -1,93 +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 entry_cmp.hpp - * Contains an implementation class for a binary_heap. - */ - -#ifndef PB_DS_BINARY_HEAP_ENTRY_CMP_HPP -#define PB_DS_BINARY_HEAP_ENTRY_CMP_HPP - -namespace __gnu_pbds -{ - namespace detail - { - - template<typename Value_Type, - class Cmp_Fn, - bool No_Throw, - class Allocator> - struct entry_cmp - { - typedef Cmp_Fn type; - }; - - template<typename Value_Type, class Cmp_Fn, class Allocator> - struct entry_cmp< - Value_Type, - Cmp_Fn, - false, - Allocator> - { - public: - typedef - typename Allocator::template rebind< - Value_Type>::other::const_pointer - entry; - - struct type : public Cmp_Fn - { - public: - inline - type() - { } - - inline - type(const Cmp_Fn& other) : Cmp_Fn(other) - { } - - inline bool - operator()(entry p_lhs, entry p_rhs) const - { - return Cmp_Fn::operator()(*p_lhs, * p_rhs); - } - }; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_BINARY_HEAP_ENTRY_CMP_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp deleted file mode 100644 index 185529e15..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp +++ /dev/null @@ -1,93 +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 entry_pred.hpp - * Contains an implementation class for a binary_heap. - */ - -#ifndef PB_DS_BINARY_HEAP_ENTRY_PRED_HPP -#define PB_DS_BINARY_HEAP_ENTRY_PRED_HPP - -namespace __gnu_pbds -{ - namespace detail - { - - template<typename Value_Type, - class Pred, - bool No_Throw, - class Allocator> - struct entry_pred - { - typedef Pred type; - }; - - template<typename Value_Type, class Pred, class Allocator> - struct entry_pred< - Value_Type, - Pred, - false, - Allocator> - { - public: - typedef - typename Allocator::template rebind< - Value_Type>::other::const_pointer - entry; - - struct type : public Pred - { - public: - inline - type() - { } - - inline - type(const Pred& other) : Pred(other) - { } - - inline bool - operator()(entry p_v) const - { - return Pred::operator()(*p_v); - } - }; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_BINARY_HEAP_ENTRY_PRED_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp deleted file mode 100644 index 30f3a4854..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp +++ /dev/null @@ -1,246 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 a binary_heap. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - for (size_type i = 0; i < m_size; ++i) - erase_at(m_a_entries, i, s_no_throw_copies_ind); - - __try - { - const size_type actual_size = resize_policy::get_new_size_for_arbitrary(0); - - entry_pointer a_entries = s_entry_allocator.allocate(actual_size); - - resize_policy::notify_arbitrary(actual_size); - - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - - m_actual_size = actual_size; - - m_a_entries = a_entries; - } - __catch(...) - { } - - m_size = 0; - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_at(entry_pointer a_entries, size_type i, false_type) -{ - a_entries[i]->~value_type(); - - s_value_allocator.deallocate(a_entries[i], 1); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_at(entry_pointer, size_type, true_type) -{ } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -pop() -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!empty()); - - erase_at(m_a_entries, 0, s_no_throw_copies_ind); - - std::pop_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this)); - - resize_for_erase_if_needed(); - - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -template<typename Pred> -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - typedef - typename entry_pred< - value_type, - Pred, - simple_value, - Allocator>::type - pred_t; - - const size_type left = partition(pred_t(pred)); - - _GLIBCXX_DEBUG_ASSERT(m_size >= left); - - const size_type ersd = m_size - left; - - for (size_type i = left; i < m_size; ++i) - erase_at(m_a_entries, i, s_no_throw_copies_ind); - - __try - { - const size_type actual_size = - resize_policy::get_new_size_for_arbitrary(left); - - entry_pointer a_entries = s_entry_allocator.allocate(actual_size); - - std::copy(m_a_entries, m_a_entries + left, a_entries); - - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - - m_actual_size = actual_size; - - resize_policy::notify_arbitrary(m_actual_size); - } - __catch(...) - { }; - - m_size = left; - - std::make_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this)); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - return ersd; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -erase(point_iterator it) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!empty()); - - const size_type fix_pos = it.m_p_e - m_a_entries; - - std::swap(*it.m_p_e, m_a_entries[m_size - 1]); - - erase_at(m_a_entries, m_size - 1, s_no_throw_copies_ind); - - resize_for_erase_if_needed(); - - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - - _GLIBCXX_DEBUG_ASSERT(fix_pos <= m_size); - - if (fix_pos != m_size) - fix(m_a_entries + fix_pos); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -resize_for_erase_if_needed() -{ - if (!resize_policy::resize_needed_for_shrink(m_size)) - return; - - __try - { - const size_type new_actual_size = - resize_policy::get_new_size_for_shrink(); - - entry_pointer a_new_entries = s_entry_allocator.allocate(new_actual_size); - - resize_policy::notify_shrink_resize(); - - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - std::copy(m_a_entries, m_a_entries + m_size - 1, a_new_entries); - - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - - m_actual_size = new_actual_size; - - m_a_entries = a_new_entries; - } - __catch(...) - { } -} - -PB_DS_CLASS_T_DEC -template<typename Pred> -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -partition(Pred pred) -{ - size_type left = 0; - size_type right = m_size - 1; - - while (right + 1 != left) - { - _GLIBCXX_DEBUG_ASSERT(left <= m_size); - - if (!pred(m_a_entries[left])) - ++left; - else if (pred(m_a_entries[right])) - --right; - else - { - _GLIBCXX_DEBUG_ASSERT(left < right); - - std::swap(m_a_entries[left], m_a_entries[right]); - - ++left; - --right; - } - } - - return left; -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp deleted file mode 100644 index 28d4a8c80..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp +++ /dev/null @@ -1,91 +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 find_fn_imps.hpp - * Contains an implementation class for a binary_heap. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reference -PB_DS_CLASS_C_DEC:: -top() const -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!empty()); - - return top_imp(s_no_throw_copies_ind); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reference -PB_DS_CLASS_C_DEC:: -top_imp(true_type) const -{ - return* m_a_entries; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reference -PB_DS_CLASS_C_DEC:: -top_imp(false_type) const -{ - return** m_a_entries; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -left_child(size_type i) -{ - return i* 2 + 1; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -right_child(size_type i) -{ - return i* 2 + 2; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -parent(size_type i) -{ - return (i - 1) / 2; -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp deleted file mode 100644 index d29279318..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp +++ /dev/null @@ -1,64 +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 a binary_heap. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ - return (m_size == 0); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ - 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_entry_allocator.max_size()); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp deleted file mode 100644 index f13a3cb19..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.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 insert_fn_imps.hpp - * Contains an implementation class for a binary_heap. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -push(const_reference r_val) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - insert_value(r_val, s_no_throw_copies_ind); - std::push_heap(m_a_entries, m_a_entries + m_size, - static_cast<entry_cmp&>(*this)); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return point_iterator(m_a_entries); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -insert_value(value_type val, true_type) -{ - resize_for_insert_if_needed(); - - m_a_entries[m_size++] = val; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -insert_value(const_reference r_val, false_type) -{ - resize_for_insert_if_needed(); - pointer p_new = s_value_allocator.allocate(1); - cond_dealtor_t cond(p_new); - new (p_new) value_type(r_val); - cond.set_no_action(); - m_a_entries[m_size++] = p_new; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -insert_entry(entry e) -{ - resize_for_insert_if_needed(); - m_a_entries[m_size++] = e; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -resize_for_insert_if_needed() -{ - if (!resize_policy::resize_needed_for_grow(m_size)) - { - _GLIBCXX_DEBUG_ASSERT(m_size < m_actual_size); - return; - } - - const size_type new_actual_size = resize_policy::get_new_size_for_grow(); - entry_pointer a_new_entries = s_entry_allocator.allocate(new_actual_size); - resize_policy::notify_grow_resize(); - std::copy(m_a_entries, m_a_entries + m_size, a_new_entries); - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - m_actual_size = new_actual_size; - m_a_entries = a_new_entries; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -modify(point_iterator it, const_reference r_new_val) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - swap_value_imp(it.m_p_e, r_new_val, s_no_throw_copies_ind); - fix(it.m_p_e); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -fix(entry_pointer p_e) -{ - size_type i = p_e - m_a_entries; - if (i > 0 && entry_cmp::operator()(m_a_entries[parent(i)], m_a_entries[i])) - { - size_type parent_i = parent(i); - while (i > 0 - && entry_cmp::operator()(m_a_entries[parent_i], m_a_entries[i])) - { - std::swap(m_a_entries[i], m_a_entries[parent_i]); - i = parent_i; - parent_i = parent(i); - } - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return; - } - - while (i < m_size) - { - const size_type left_child_i = left_child(i); - const size_type right_child_i = right_child(i); - _GLIBCXX_DEBUG_ASSERT(right_child_i > left_child_i); - const bool smaller_than_left_child = left_child_i < m_size && - entry_cmp::operator()(m_a_entries[i], m_a_entries[left_child_i]); - - const bool smaller_than_right_child = right_child_i < m_size && - entry_cmp::operator()(m_a_entries[i], m_a_entries[right_child_i]); - - const bool swap_with_r_child = smaller_than_right_child && (!smaller_than_left_child || entry_cmp::operator()(m_a_entries[left_child_i], m_a_entries[right_child_i])); - - const bool swap_with_l_child = !swap_with_r_child && smaller_than_left_child; - - if (swap_with_l_child) - { - std::swap(m_a_entries[i], m_a_entries[left_child_i]); - i = left_child_i; - } - else if (swap_with_r_child) - { - std::swap(m_a_entries[i], m_a_entries[right_child_i]); - i = right_child_i; - } - else - i = m_size; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -swap_value_imp(entry_pointer p_e, value_type new_val, true_type) -{ - * p_e = new_val; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -swap_value_imp(entry_pointer p_e, const_reference r_new_val, false_type) -{ - value_type tmp(r_new_val); - (*p_e)->swap(tmp); -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp deleted file mode 100644 index db0a64ea8..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp +++ /dev/null @@ -1,72 +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 a binary_heap. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ - return (iterator(m_a_entries)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ - return (const_iterator(m_a_entries)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ - return (iterator(m_a_entries + m_size)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ - return (const_iterator(m_a_entries + m_size)); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp deleted file mode 100644 index 11a7b8915..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp +++ /dev/null @@ -1,56 +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 a binary_heap. - */ - -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/binary_heap_/resize_policy.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp deleted file mode 100644 index 588fb3d1d..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp +++ /dev/null @@ -1,253 +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 resize_policy.hpp - * Contains an implementation class for a binary_heap. - */ - -#ifndef PB_DS_BINARY_HEAP_RESIZE_POLICY_HPP -#define PB_DS_BINARY_HEAP_RESIZE_POLICY_HPP - -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_T_DEC template<typename Size_Type> - -#define PB_DS_CLASS_C_DEC resize_policy<Size_Type> - - template<typename Size_Type> - class resize_policy - { - public: - typedef Size_Type size_type; - - enum - { - min_size = 16 - }; - - public: - inline - resize_policy(); - - inline void - swap(PB_DS_CLASS_C_DEC& other); - - inline bool - resize_needed_for_grow(size_type size) const; - - inline bool - resize_needed_for_shrink(size_type size) const; - - inline bool - grow_needed(size_type size) const; - - inline bool - shrink_needed(size_type size) const; - - inline size_type - get_new_size_for_grow() const; - - inline size_type - get_new_size_for_shrink() const; - - size_type - get_new_size_for_arbitrary(size_type size) const; - - inline void - notify_grow_resize(); - - inline void - notify_shrink_resize(); - - void - notify_arbitrary(size_type actual_size); - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; -#endif - -#ifdef PB_DS_BINARY_HEAP_TRACE_ - void - trace() const; -#endif - - private: - enum - { - ratio = 8, - factor = 2 - }; - - private: - size_type m_next_shrink_size; - size_type m_next_grow_size; - }; - - PB_DS_CLASS_T_DEC - inline - PB_DS_CLASS_C_DEC:: - resize_policy() : - m_next_shrink_size(0), - m_next_grow_size(min_size) - { _GLIBCXX_DEBUG_ONLY(assert_valid();) } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - swap(PB_DS_CLASS_C_DEC& other) - { - std::swap(m_next_shrink_size, other.m_next_shrink_size); - std::swap(m_next_grow_size, other.m_next_grow_size); - } - - PB_DS_CLASS_T_DEC - inline bool - PB_DS_CLASS_C_DEC:: - resize_needed_for_grow(size_type size) const - { - _GLIBCXX_DEBUG_ASSERT(size <= m_next_grow_size); - return size == m_next_grow_size; - } - - PB_DS_CLASS_T_DEC - inline bool - PB_DS_CLASS_C_DEC:: - resize_needed_for_shrink(size_type size) const - { - _GLIBCXX_DEBUG_ASSERT(size <= m_next_grow_size); - return size == m_next_shrink_size; - } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - get_new_size_for_grow() const - { return m_next_grow_size* factor; } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - get_new_size_for_shrink() const - { - const size_type half_size = m_next_grow_size / factor; - return std::max(static_cast<size_type>(min_size), half_size); - } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - get_new_size_for_arbitrary(size_type size) const - { - size_type ret = min_size; - while (ret < size) - ret *= factor; - return ret; - } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - notify_grow_resize() - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(m_next_grow_size >= min_size); - m_next_grow_size *= factor; - m_next_shrink_size = m_next_grow_size / ratio; - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - notify_shrink_resize() - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - m_next_shrink_size /= factor; - if (m_next_shrink_size == 1) - m_next_shrink_size = 0; - - m_next_grow_size = - std::max(m_next_grow_size / factor, static_cast<size_type>(min_size)); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - notify_arbitrary(size_type actual_size) - { - m_next_grow_size = actual_size; - m_next_shrink_size = m_next_grow_size / ratio; - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -#ifdef _GLIBCXX_DEBUG - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - assert_valid() const - { - _GLIBCXX_DEBUG_ASSERT(m_next_shrink_size == 0 || - m_next_shrink_size* ratio == m_next_grow_size); - - _GLIBCXX_DEBUG_ASSERT(m_next_grow_size >= min_size); - } -#endif - -#ifdef PB_DS_BINARY_HEAP_TRACE_ - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - trace() const - { - std::cerr << "shrink = " << m_next_shrink_size << - " grow = " << m_next_grow_size << std::endl; - } -#endif - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - -} // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp deleted file mode 100644 index 04b7d548f..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp +++ /dev/null @@ -1,172 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 a binary_heap. - */ - -PB_DS_CLASS_T_DEC -template<typename Pred> -void -PB_DS_CLASS_C_DEC:: -split(Pred pred, PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - typedef - typename entry_pred< - value_type, - Pred, - simple_value, - Allocator>::type - pred_t; - - const size_type left = partition(pred_t(pred)); - - _GLIBCXX_DEBUG_ASSERT(m_size >= left); - - const size_type ersd = m_size - left; - - _GLIBCXX_DEBUG_ASSERT(m_size >= ersd); - - const size_type actual_size = - resize_policy::get_new_size_for_arbitrary(left); - - const size_type other_actual_size = - other.get_new_size_for_arbitrary(ersd); - - entry_pointer a_entries = NULL; - entry_pointer a_other_entries = NULL; - - __try - { - a_entries = s_entry_allocator.allocate(actual_size); - - a_other_entries = s_entry_allocator.allocate(other_actual_size); - } - __catch(...) - { - if (a_entries != NULL) - s_entry_allocator.deallocate(a_entries, actual_size); - - if (a_other_entries != NULL) - s_entry_allocator.deallocate(a_other_entries, other_actual_size); - - __throw_exception_again; - }; - - for (size_type i = 0; i < other.m_size; ++i) - erase_at(other.m_a_entries, i, s_no_throw_copies_ind); - - _GLIBCXX_DEBUG_ASSERT(actual_size >= left); - std::copy(m_a_entries, m_a_entries + left, a_entries); - std::copy(m_a_entries + left, m_a_entries + m_size, a_other_entries); - - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - s_entry_allocator.deallocate(other.m_a_entries, other.m_actual_size); - - m_actual_size = actual_size; - other.m_actual_size = other_actual_size; - - m_size = left; - other.m_size = ersd; - - m_a_entries = a_entries; - other.m_a_entries = a_other_entries; - - std::make_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this)); - std::make_heap(other.m_a_entries, other.m_a_entries + other.m_size, static_cast<entry_cmp& >(other)); - - resize_policy::notify_arbitrary(m_actual_size); - other.notify_arbitrary(other.m_actual_size); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - const size_type len = m_size + other.m_size; - const size_type actual_size = resize_policy::get_new_size_for_arbitrary(len); - - entry_pointer a_entries = NULL; - entry_pointer a_other_entries = NULL; - - __try - { - a_entries = s_entry_allocator.allocate(actual_size); - a_other_entries = s_entry_allocator.allocate(resize_policy::min_size); - } - __catch(...) - { - if (a_entries != NULL) - s_entry_allocator.deallocate(a_entries, actual_size); - - if (a_other_entries != NULL) - s_entry_allocator.deallocate(a_other_entries, resize_policy::min_size); - - __throw_exception_again; - } - - std::copy(m_a_entries, m_a_entries + m_size, a_entries); - std::copy(other.m_a_entries, other.m_a_entries + other.m_size, a_entries + m_size); - - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - m_a_entries = a_entries; - m_size = len; - m_actual_size = actual_size; - - resize_policy::notify_arbitrary(actual_size); - - std::make_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this)); - - s_entry_allocator.deallocate(other.m_a_entries, other.m_actual_size); - other.m_a_entries = a_other_entries; - other.m_size = 0; - other.m_actual_size = resize_policy::min_size; - - other.notify_arbitrary(resize_policy::min_size); - - _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/binary_heap_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp deleted file mode 100644 index 36bd66f75..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp +++ /dev/null @@ -1,78 +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 trace_fn_imps.hpp - * Contains an implementation class for a binary_heap. - */ - -#ifdef PB_DS_BINARY_HEAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << this << std::endl; - - std::cerr << m_a_entries << std::endl; - - for (size_type i = 0; i < m_size; ++i) - trace_entry(m_a_entries[i], s_no_throw_copies_ind); - - std::cerr << std::endl; - - std::cerr << "size = " << m_size << " " << "actual_size = " << m_actual_size << std::endl; - - resize_policy::trace(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_entry(const entry& r_e, false_type) const -{ - std::cout << r_e << " " <<* r_e << std::endl; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_entry(const entry& r_e, true_type) const -{ - std::cout << r_e << std::endl; -} - -#endif // #ifdef PB_DS_BINARY_HEAP_TRACE_ diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp deleted file mode 100644 index 3b4d6e91e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp +++ /dev/null @@ -1,116 +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 binomial_heap_.hpp - * Contains an implementation class for a binomial heap. - */ - -/* - * Binomial heap. - * Vuillemin J is the mastah. - * Modified from CLRS. - */ - -#include <debug/debug.h> -#include <ext/pb_ds/detail/cond_dealtor.hpp> -#include <ext/pb_ds/detail/type_utils.hpp> -#include <ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_T_DEC \ - template<typename Value_Type, class Cmp_Fn, class Allocator> - -#define PB_DS_CLASS_C_DEC \ - binomial_heap_<Value_Type, Cmp_Fn, Allocator> - -#define PB_DS_BASE_C_DEC \ - binomial_heap_base_<Value_Type, Cmp_Fn, Allocator> - - /** - * class description = "8y|\|0|\/|i41 h34p 74813"> - **/ - template<typename Value_Type, class Cmp_Fn, class Allocator> - class binomial_heap_ : public PB_DS_BASE_C_DEC - { - private: - typedef PB_DS_BASE_C_DEC base_type; - typedef typename base_type::node_pointer node_pointer; - typedef typename base_type::const_node_pointer const_node_pointer; - - public: - typedef Value_Type value_type; - typedef typename Allocator::size_type size_type; - typedef typename Allocator::difference_type difference_type; - typedef typename base_type::pointer pointer; - typedef typename base_type::const_pointer const_pointer; - typedef typename base_type::reference reference; - typedef typename base_type::const_reference const_reference; - typedef typename base_type::const_point_iterator const_point_iterator; - typedef typename base_type::point_iterator point_iterator; - typedef typename base_type::const_iterator const_iterator; - typedef typename base_type::iterator iterator; - typedef typename base_type::cmp_fn cmp_fn; - typedef typename base_type::allocator_type allocator_type; - - binomial_heap_(); - - binomial_heap_(const Cmp_Fn& r_cmp_fn); - - binomial_heap_(const PB_DS_CLASS_C_DEC& other); - - ~binomial_heap_(); - - protected: -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; -#endif - }; - -#include <ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp> - -#undef PB_DS_CLASS_C_DEC - -#undef PB_DS_CLASS_T_DEC - -#undef PB_DS_BASE_C_DEC - } // namespace detail -} // namespace __gnu_pbds diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index ef0937e42..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,61 +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 for binomial_heap_. - */ - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binomial_heap_() -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binomial_heap_(const Cmp_Fn& r_cmp_fn) : - PB_DS_BASE_C_DEC(r_cmp_fn) -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binomial_heap_(const PB_DS_CLASS_C_DEC& other) : - PB_DS_BASE_C_DEC(other) -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~binomial_heap_() { } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp deleted file mode 100644 index 10bec6959..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp +++ /dev/null @@ -1,49 +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 for binomial_heap_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ base_type::assert_valid(true); } - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp deleted file mode 100644 index 1d66d1b14..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp +++ /dev/null @@ -1,234 +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 binomial_heap_base_.hpp - * Contains an implementation class for a base of binomial heaps. - */ - -#ifndef PB_DS_BINOMIAL_HEAP_BASE_HPP -#define PB_DS_BINOMIAL_HEAP_BASE_HPP - -/* - * Binomial heap base. - * Vuillemin J is the mastah. - * Modified from CLRS. - */ - -#include <debug/debug.h> -#include <ext/pb_ds/detail/cond_dealtor.hpp> -#include <ext/pb_ds/detail/type_utils.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_T_DEC \ - template<typename Value_Type, class Cmp_Fn, class Allocator> - -#define PB_DS_CLASS_C_DEC \ - binomial_heap_base_<Value_Type, Cmp_Fn, Allocator> - -#ifdef _GLIBCXX_DEBUG -#define PB_DS_BASE_C_DEC \ - left_child_next_sibling_heap_<Value_Type, Cmp_Fn, \ - typename Allocator::size_type, \ - Allocator, false> -#else -#define PB_DS_BASE_C_DEC \ - left_child_next_sibling_heap_<Value_Type, Cmp_Fn, \ - typename Allocator::size_type, Allocator> -#endif - - /** - * class description = "8y|\|0|\/|i41 h34p 74813"> - **/ - template<typename Value_Type, class Cmp_Fn, class Allocator> - class binomial_heap_base_ : public PB_DS_BASE_C_DEC - { - - private: - typedef PB_DS_BASE_C_DEC base_type; - - protected: - typedef typename base_type::node node; - - typedef typename base_type::node_pointer node_pointer; - - typedef typename base_type::const_node_pointer const_node_pointer; - - public: - - typedef typename Allocator::size_type size_type; - - typedef typename Allocator::difference_type difference_type; - - typedef Value_Type value_type; - - 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< - value_type>::other::reference - reference; - - typedef - typename Allocator::template rebind< - value_type>::other::const_reference - const_reference; - - typedef - typename PB_DS_BASE_C_DEC::const_point_iterator - const_point_iterator; - - typedef typename PB_DS_BASE_C_DEC::point_iterator point_iterator; - - typedef typename PB_DS_BASE_C_DEC::const_iterator const_iterator; - - typedef typename PB_DS_BASE_C_DEC::iterator iterator; - - typedef Cmp_Fn cmp_fn; - - typedef Allocator allocator_type; - - public: - - inline point_iterator - push(const_reference r_val); - - void - modify(point_iterator it, const_reference r_new_val); - - inline const_reference - top() const; - - void - pop(); - - void - erase(point_iterator it); - - inline void - clear(); - - template<typename Pred> - size_type - erase_if(Pred pred); - - template<typename Pred> - void - split(Pred pred, PB_DS_CLASS_C_DEC& other); - - void - join(PB_DS_CLASS_C_DEC& other); - - protected: - - binomial_heap_base_(); - - binomial_heap_base_(const Cmp_Fn& r_cmp_fn); - - binomial_heap_base_(const PB_DS_CLASS_C_DEC& other); - - void - swap(PB_DS_CLASS_C_DEC& other); - - ~binomial_heap_base_(); - - template<typename It> - void - copy_from_range(It first_it, It last_it); - - inline void - find_max(); - -#ifdef _GLIBCXX_DEBUG - void - assert_valid(bool strictly_binomial) const; - - void - assert_max() const; -#endif - - private: - - inline node_pointer - fix(node_pointer p_nd) const; - - inline void - insert_node(node_pointer p_nd); - - inline void - remove_parentless_node(node_pointer p_nd); - - inline node_pointer - join(node_pointer p_lhs, node_pointer p_rhs) const; - -#ifdef _GLIBCXX_DEBUG - void - assert_node_consistent(const_node_pointer, bool, bool) const; -#endif - - protected: - node_pointer m_p_max; - }; - -#include <ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp> -#include <ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp> -#include <ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp> - -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_BASE_C_DEC - - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 274c93378..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,97 +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 a base of binomial heaps. - */ - -PB_DS_CLASS_T_DEC -template<typename It> -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - push(*(first_it++)); - - _GLIBCXX_DEBUG_ONLY(assert_valid(false);) - } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binomial_heap_base_() : - m_p_max(NULL) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(false);) - } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binomial_heap_base_(const Cmp_Fn& r_cmp_fn) : - PB_DS_BASE_C_DEC(r_cmp_fn), - m_p_max(NULL) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(false);) - } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binomial_heap_base_(const PB_DS_CLASS_C_DEC& other) : - PB_DS_BASE_C_DEC(other), - m_p_max(NULL) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(false);) - } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(false);) - - base_type::swap(other); - - std::swap(m_p_max, other.m_p_max); - - _GLIBCXX_DEBUG_ONLY(assert_valid(false);) - } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~binomial_heap_base_() -{ } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp deleted file mode 100644 index 9a07f0e7d..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp +++ /dev/null @@ -1,98 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 a base of binomial heaps. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(bool strictly_binomial) const -{ - base_type::assert_valid(); - assert_node_consistent(base_type::m_p_root, strictly_binomial, true); - assert_max(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_max() const -{ - if (m_p_max == NULL) - return; - _GLIBCXX_DEBUG_ASSERT(base_type::parent(m_p_max) == NULL); - for (const_iterator it = base_type::begin(); it != base_type::end(); ++it) - _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(m_p_max->m_value, - it.m_p_nd->m_value)); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_node_consistent(const_node_pointer p_nd, bool strictly_binomial, - bool increasing) const -{ - _GLIBCXX_DEBUG_ASSERT(increasing || strictly_binomial); - base_type::assert_node_consistent(p_nd, false); - if (p_nd == NULL) - return; - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == base_type::degree(p_nd)); - _GLIBCXX_DEBUG_ASSERT(base_type::size_under_node(p_nd) == - static_cast<size_type>(1 << p_nd->m_metadata)); - assert_node_consistent(p_nd->m_p_next_sibling, strictly_binomial, increasing); - assert_node_consistent(p_nd->m_p_l_child, true, false); - if (p_nd->m_p_next_sibling != NULL) - { - if (increasing) - { - if (strictly_binomial) - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata - < p_nd->m_p_next_sibling->m_metadata); - else - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata - <= p_nd->m_p_next_sibling->m_metadata); - } - else - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata - > p_nd->m_p_next_sibling->m_metadata); - } -} - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp deleted file mode 100644 index a4cf90c20..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp +++ /dev/null @@ -1,192 +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 a base of binomial heaps. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -pop() -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - if (m_p_max == NULL) - find_max(); - - _GLIBCXX_DEBUG_ASSERT(m_p_max != NULL); - - node_pointer p_nd = m_p_max; - - remove_parentless_node(m_p_max); - - base_type::actual_erase_node(p_nd); - - m_p_max = NULL; - - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -remove_parentless_node(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - _GLIBCXX_DEBUG_ASSERT(base_type::parent(p_nd) == NULL); - - node_pointer p_cur_root = p_nd == base_type::m_p_root? - p_nd->m_p_next_sibling : - base_type::m_p_root; - - if (p_cur_root != NULL) - p_cur_root->m_p_prev_or_parent = NULL; - - if (p_nd->m_p_prev_or_parent != NULL) - p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd->m_p_next_sibling; - - if (p_nd->m_p_next_sibling != NULL) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - - node_pointer p_child = p_nd->m_p_l_child; - - if (p_child != NULL) - { - p_child->m_p_prev_or_parent = NULL; - - while (p_child->m_p_next_sibling != NULL) - p_child = p_child->m_p_next_sibling; - } - - m_p_max = NULL; - - base_type::m_p_root = join(p_cur_root, p_child); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -clear() -{ - base_type::clear(); - - m_p_max = NULL; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase(point_iterator it) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - base_type::bubble_to_top(it.m_p_nd); - - remove_parentless_node(it.m_p_nd); - - base_type::actual_erase_node(it.m_p_nd); - - m_p_max = NULL; - - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - } - -PB_DS_CLASS_T_DEC -template<typename Pred> -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - - if (base_type::empty()) - { - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - - return 0; - } - - base_type::to_linked_list(); - - node_pointer p_out = base_type::prune(pred); - - size_type ersd = 0; - - while (p_out != NULL) - { - ++ersd; - - node_pointer p_next = p_out->m_p_next_sibling; - - base_type::actual_erase_node(p_out); - - p_out = p_next; - } - - node_pointer p_cur = base_type::m_p_root; - - base_type::m_p_root = NULL; - - while (p_cur != NULL) - { - node_pointer p_next = p_cur->m_p_next_sibling; - - p_cur->m_p_l_child = p_cur->m_p_prev_or_parent = NULL; - - p_cur->m_metadata = 0; - - p_cur->m_p_next_sibling = base_type::m_p_root; - - if (base_type::m_p_root != NULL) - base_type::m_p_root->m_p_prev_or_parent = p_cur; - - base_type::m_p_root = p_cur; - - base_type::m_p_root = fix(base_type::m_p_root); - - p_cur = p_next; - } - - m_p_max = NULL; - - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - - return ersd; -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp deleted file mode 100644 index ad7f65129..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp +++ /dev/null @@ -1,73 +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 find_fn_imps.hpp - * Contains an implementation class for a base of binomial heaps. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reference -PB_DS_CLASS_C_DEC:: -top() const -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(false);) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - if (m_p_max == NULL) - const_cast<PB_DS_CLASS_C_DEC* >(this)->find_max(); - - _GLIBCXX_DEBUG_ASSERT(m_p_max != NULL); - return m_p_max->m_value; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -find_max() -{ - node_pointer p_cur = base_type::m_p_root; - - m_p_max = p_cur; - - while (p_cur != NULL) - { - if (Cmp_Fn::operator()(m_p_max->m_value, p_cur->m_value)) - m_p_max = p_cur; - - p_cur = p_cur->m_p_next_sibling; - } -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp deleted file mode 100644 index e67d0df14..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp +++ /dev/null @@ -1,216 +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 a base of binomial heaps. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -push(const_reference r_val) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - - node_pointer p_nd = base_type::get_new_node_for_insert(r_val); - - insert_node(p_nd); - - m_p_max = NULL; - - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - - return point_iterator(p_nd); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -insert_node(node_pointer p_nd) -{ - if (base_type::m_p_root == NULL) - { - p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent = - p_nd->m_p_l_child = NULL; - - p_nd->m_metadata = 0; - - base_type::m_p_root = p_nd; - - return; - } - - if (base_type::m_p_root->m_metadata > 0) - { - p_nd->m_p_prev_or_parent = p_nd->m_p_l_child = NULL; - - p_nd->m_p_next_sibling = base_type::m_p_root; - - base_type::m_p_root->m_p_prev_or_parent = p_nd; - - base_type::m_p_root = p_nd; - - p_nd->m_metadata = 0; - - return; - } - - if (Cmp_Fn::operator()(base_type::m_p_root->m_value, p_nd->m_value)) - { - p_nd->m_p_next_sibling = base_type::m_p_root->m_p_next_sibling; - - p_nd->m_p_prev_or_parent = NULL; - - p_nd->m_metadata = 1; - - p_nd->m_p_l_child = base_type::m_p_root; - - base_type::m_p_root->m_p_prev_or_parent = p_nd; - - base_type::m_p_root->m_p_next_sibling = NULL; - - base_type::m_p_root = p_nd; - } - else - { - p_nd->m_p_next_sibling = NULL; - - p_nd->m_p_l_child = NULL; - - p_nd->m_p_prev_or_parent = base_type::m_p_root; - - p_nd->m_metadata = 0; - - _GLIBCXX_DEBUG_ASSERT(base_type::m_p_root->m_p_l_child == 0); - base_type::m_p_root->m_p_l_child = p_nd; - - base_type::m_p_root->m_metadata = 1; - } - - base_type::m_p_root = fix(base_type::m_p_root); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -fix(node_pointer p_nd) const -{ - while (p_nd->m_p_next_sibling != NULL&& - p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata) - { - node_pointer p_next = p_nd->m_p_next_sibling; - - if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value)) - { - p_next->m_p_prev_or_parent = - p_nd->m_p_prev_or_parent; - - if (p_nd->m_p_prev_or_parent != NULL) - p_nd->m_p_prev_or_parent->m_p_next_sibling = p_next; - - base_type::make_child_of(p_nd, p_next); - - ++p_next->m_metadata; - - p_nd = p_next; - } - else - { - p_nd->m_p_next_sibling = p_next->m_p_next_sibling; - - if (p_nd->m_p_next_sibling != NULL) - p_next->m_p_next_sibling = NULL; - - base_type::make_child_of(p_next, p_nd); - - ++p_nd->m_metadata; - } - } - - if (p_nd->m_p_next_sibling != NULL) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd; - - return p_nd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -modify(point_iterator it, const_reference r_new_val) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - node_pointer p_nd = it.m_p_nd; - - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd, false);) - - const bool bubble_up = Cmp_Fn::operator()(p_nd->m_value, r_new_val); - - p_nd->m_value = r_new_val; - - if (bubble_up) - { - node_pointer p_parent = base_type::parent(p_nd); - - while (p_parent != NULL&& - Cmp_Fn::operator()(p_parent->m_value, p_nd->m_value)) - { - base_type::swap_with_parent(p_nd, p_parent); - - p_parent = base_type::parent(p_nd); - } - - if (p_nd->m_p_prev_or_parent == NULL) - base_type::m_p_root = p_nd; - - m_p_max = NULL; - - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - - return; - } - - base_type::bubble_to_top(p_nd); - - remove_parentless_node(p_nd); - - insert_node(p_nd); - - m_p_max = NULL; - - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp deleted file mode 100644 index a701937cb..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp +++ /dev/null @@ -1,232 +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 a base of binomial heaps. - */ - -PB_DS_CLASS_T_DEC -template<typename Pred> -void -PB_DS_CLASS_C_DEC:: -split(Pred pred, PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);) - - other.clear(); - - if (base_type::empty()) - { - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);) - - return; - } - - base_type::to_linked_list(); - - node_pointer p_out = base_type::prune(pred); - - while (p_out != NULL) - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0); - --base_type::m_size; - - ++other.m_size; - - node_pointer p_next = p_out->m_p_next_sibling; - - p_out->m_p_l_child = p_out->m_p_prev_or_parent = NULL; - - p_out->m_metadata = 0; - - p_out->m_p_next_sibling = other.m_p_root; - - if (other.m_p_root != NULL) - other.m_p_root->m_p_prev_or_parent = p_out; - - other.m_p_root = p_out; - - other.m_p_root = other.fix(other.m_p_root); - - p_out = p_next; - } - - _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);) - - node_pointer p_cur = base_type::m_p_root; - - base_type::m_p_root = NULL; - - while (p_cur != NULL) - { - node_pointer p_next = p_cur->m_p_next_sibling; - - p_cur->m_p_l_child = p_cur->m_p_prev_or_parent = NULL; - - p_cur->m_metadata = 0; - - p_cur->m_p_next_sibling = base_type::m_p_root; - - if (base_type::m_p_root != NULL) - base_type::m_p_root->m_p_prev_or_parent = p_cur; - - base_type::m_p_root = p_cur; - - base_type::m_p_root = fix(base_type::m_p_root); - - p_cur = p_next; - } - - m_p_max = NULL; - - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);) - - node_pointer p_other = other.m_p_root; - - if (p_other != NULL) - do - { - node_pointer p_next = p_other->m_p_next_sibling; - - std::swap(p_other->m_p_next_sibling, p_other->m_p_prev_or_parent); - - p_other = p_next; - } - while (p_other != NULL); - - base_type::m_p_root = join(base_type::m_p_root, other.m_p_root); - base_type::m_size += other.m_size; - m_p_max = NULL; - - other.m_p_root = NULL; - other.m_size = 0; - other.m_p_max = NULL; - - _GLIBCXX_DEBUG_ONLY(assert_valid(true);) - _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);) - } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -join(node_pointer p_lhs, node_pointer p_rhs) const -{ - node_pointer p_ret = NULL; - - node_pointer p_cur = NULL; - - while (p_lhs != NULL || p_rhs != NULL) - { - if (p_rhs == NULL) - { - if (p_cur == NULL) - p_ret = p_cur = p_lhs; - else - { - p_cur->m_p_next_sibling = p_lhs; - - p_lhs->m_p_prev_or_parent = p_cur; - } - - p_cur = p_lhs = NULL; - } - else if (p_lhs == NULL || p_rhs->m_metadata < p_lhs->m_metadata) - { - if (p_cur == NULL) - { - p_ret = p_cur = p_rhs; - - p_rhs = p_rhs->m_p_prev_or_parent; - } - else - { - p_cur->m_p_next_sibling = p_rhs; - - p_rhs = p_rhs->m_p_prev_or_parent; - - p_cur->m_p_next_sibling->m_p_prev_or_parent = p_cur; - - p_cur = p_cur->m_p_next_sibling; - } - } - else if (p_lhs->m_metadata < p_rhs->m_metadata) - { - if (p_cur == NULL) - p_ret = p_cur = p_lhs; - else - { - p_cur->m_p_next_sibling = p_lhs; - - p_lhs->m_p_prev_or_parent = p_cur; - - p_cur = p_cur->m_p_next_sibling; - } - - p_lhs = p_cur->m_p_next_sibling; - } - else - { - node_pointer p_next_rhs = p_rhs->m_p_prev_or_parent; - - p_rhs->m_p_next_sibling = p_lhs; - - p_lhs = fix(p_rhs); - - p_rhs = p_next_rhs; - } - } - - if (p_cur != NULL) - p_cur->m_p_next_sibling = NULL; - - if (p_ret != NULL) - p_ret->m_p_prev_or_parent = NULL; - - return p_ret; -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp deleted file mode 100644 index f5efabe08..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp +++ /dev/null @@ -1,636 +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 cc_ht_map_.hpp - * Contains an implementation class for cc_ht_map_. - */ - -#include <utility> -#include <iterator> -#include <ext/pb_ds/detail/cond_dealtor.hpp> -#include <ext/pb_ds/tag_and_trait.hpp> -#include <ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp> -#include <ext/pb_ds/detail/types_traits.hpp> -#include <ext/pb_ds/exception.hpp> -#include <ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp> -#ifdef _GLIBCXX_DEBUG -#include <ext/pb_ds/detail/debug_map_base.hpp> -#endif -#ifdef PB_DS_HT_MAP_TRACE_ -#include <iostream> -#endif -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_T_DEC \ - template<typename Key, typename Mapped, typename Hash_Fn, \ - typename Eq_Fn, typename Allocator, bool Store_Hash, \ - typename Comb_Hash_Fn, typename Resize_Policy> - -#ifdef PB_DS_DATA_TRUE_INDICATOR -#define PB_DS_CLASS_NAME cc_ht_map_data_ -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#define PB_DS_CLASS_NAME cc_ht_map_no_data_ -#endif - -#define PB_DS_CLASS_C_DEC \ - PB_DS_CLASS_NAME<Key, Mapped, Hash_Fn, Eq_Fn, Allocator, \ - Store_Hash, Comb_Hash_Fn, Resize_Policy> - -#define PB_DS_HASH_EQ_FN_C_DEC \ - hash_eq_fn<Key, Eq_Fn, Allocator, Store_Hash> - -#define PB_DS_RANGED_HASH_FN_C_DEC \ - ranged_hash_fn<Key, Hash_Fn, Allocator, Comb_Hash_Fn, Store_Hash> - -#define PB_DS_TYPES_TRAITS_C_DEC \ - types_traits<Key, Mapped, Allocator, Store_Hash> - -#ifdef _GLIBCXX_DEBUG -#define PB_DS_DEBUG_MAP_BASE_C_DEC \ - debug_map_base<Key, Eq_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 -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#define PB_DS_V2F(X) (X) -#define PB_DS_V2S(X) Mapped_Data() -#endif - - // <011i$i0|\|-<|-|4i|\|i|\|g |-|4$|-| 74813. - template<typename Key, - typename Mapped, - typename Hash_Fn, - typename Eq_Fn, - typename Allocator, - bool Store_Hash, - typename Comb_Hash_Fn, - typename Resize_Policy > - class PB_DS_CLASS_NAME: -#ifdef _GLIBCXX_DEBUG - protected PB_DS_DEBUG_MAP_BASE_C_DEC, -#endif - public PB_DS_HASH_EQ_FN_C_DEC, - public Resize_Policy, - public PB_DS_RANGED_HASH_FN_C_DEC, - public PB_DS_TYPES_TRAITS_C_DEC - { - private: - typedef PB_DS_TYPES_TRAITS_C_DEC traits_base; - typedef typename traits_base::comp_hash comp_hash; - 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_; - - struct entry : public traits_base::stored_value_type - { - typename Allocator::template rebind<entry>::other::pointer m_p_next; - }; - - typedef cond_dealtor<entry, Allocator> cond_dealtor_t; - - typedef typename Allocator::template rebind<entry>::other entry_allocator; - typedef typename entry_allocator::pointer entry_pointer; - typedef typename entry_allocator::const_pointer const_entry_pointer; - typedef typename entry_allocator::reference entry_reference; - typedef typename entry_allocator::const_reference const_entry_reference; - - typedef typename Allocator::template rebind<entry_pointer>::other entry_pointer_allocator; - typedef typename entry_pointer_allocator::pointer entry_pointer_array; - - typedef PB_DS_RANGED_HASH_FN_C_DEC ranged_hash_fn_base; - typedef PB_DS_HASH_EQ_FN_C_DEC hash_eq_fn_base; - typedef Resize_Policy resize_base; - -#ifdef _GLIBCXX_DEBUG - typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base; -#endif - -#define PB_DS_GEN_POS std::pair<entry_pointer, typename Allocator::size_type> - -#include <ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp> -#include <ext/pb_ds/detail/unordered_iterator/point_iterator.hpp> -#include <ext/pb_ds/detail/unordered_iterator/const_iterator.hpp> -#include <ext/pb_ds/detail/unordered_iterator/iterator.hpp> - -#undef PB_DS_GEN_POS - - public: - typedef Allocator allocator_type; - typedef typename Allocator::size_type size_type; - typedef typename Allocator::difference_type difference_type; - typedef Hash_Fn hash_fn; - typedef Eq_Fn eq_fn; - typedef Comb_Hash_Fn comb_hash_fn; - typedef Resize_Policy resize_policy; - - enum - { - store_hash = Store_Hash - }; - - 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; - -#ifdef PB_DS_DATA_TRUE_INDICATOR - typedef point_iterator_ point_iterator; -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR - typedef const_point_iterator_ point_iterator; -#endif - - typedef const_point_iterator_ const_point_iterator; - -#ifdef PB_DS_DATA_TRUE_INDICATOR - typedef iterator_ iterator; -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR - typedef const_iterator_ iterator; -#endif - - typedef const_iterator_ const_iterator; - - PB_DS_CLASS_NAME(); - - PB_DS_CLASS_NAME(const Hash_Fn&); - - PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&); - - PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Hash_Fn&); - - PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Hash_Fn&, - const Resize_Policy&); - - PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&); - - virtual - ~PB_DS_CLASS_NAME(); - - void - swap(PB_DS_CLASS_C_DEC&); - - template<typename It> - void - copy_from_range(It, It); - - void - initialize(); - - inline size_type - size() const; - - inline size_type - max_size() const; - - inline bool - empty() const; - - Hash_Fn& - get_hash_fn(); - - const Hash_Fn& - get_hash_fn() const; - - Eq_Fn& - get_eq_fn(); - - const Eq_Fn& - get_eq_fn() const; - - Comb_Hash_Fn& - get_comb_hash_fn(); - - const Comb_Hash_Fn& - get_comb_hash_fn() const; - - Resize_Policy& - get_resize_policy(); - - const Resize_Policy& - get_resize_policy() const; - - inline std::pair<point_iterator, bool> - insert(const_reference r_val) - { return insert_imp(r_val, traits_base::m_store_extra_indicator); } - - inline mapped_reference - operator[](const_key_reference r_key) - { -#ifdef PB_DS_DATA_TRUE_INDICATOR - return (subscript_imp(r_key, traits_base::m_store_extra_indicator)); -#else - insert(r_key); - return traits_base::s_null_mapped; -#endif - } - - inline point_iterator - find(const_key_reference); - - inline const_point_iterator - find(const_key_reference) const; - - inline point_iterator - find_end(); - - inline const_point_iterator - find_end() const; - - inline bool - erase(const_key_reference); - - template<typename Pred> - inline size_type - erase_if(Pred); - - void - clear(); - - inline iterator - begin(); - - inline const_iterator - begin() const; - - inline iterator - end(); - - inline const_iterator - end() const; - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; -#endif - -#ifdef PB_DS_HT_MAP_TRACE_ - void - trace() const; -#endif - - private: - void - deallocate_all(); - - inline bool - do_resize_if_needed(); - - inline void - do_resize_if_needed_no_throw(); - - void - resize_imp(size_type new_size); - - void - do_resize(size_type new_size); - - void - resize_imp_no_exceptions(size_type, entry_pointer_array, size_type); - - inline entry_pointer - resize_imp_no_exceptions_reassign_pointer(entry_pointer, entry_pointer_array, false_type); - - inline entry_pointer - resize_imp_no_exceptions_reassign_pointer(entry_pointer, entry_pointer_array, true_type); - - void - deallocate_links_in_list(entry_pointer); - - inline entry_pointer - get_entry(const_reference, false_type); - - inline entry_pointer - get_entry(const_reference, true_type); - - inline void - rels_entry(entry_pointer); - -#ifdef PB_DS_DATA_TRUE_INDICATOR - inline mapped_reference - subscript_imp(const_key_reference r_key, false_type) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - const size_type pos = ranged_hash_fn_base::operator()(r_key); - entry_pointer p_e = m_entries[pos]; - resize_base::notify_insert_search_start(); - - while (p_e != NULL - && !hash_eq_fn_base::operator()(p_e->m_value.first, r_key)) - { - resize_base::notify_insert_search_collision(); - p_e = p_e->m_p_next; - } - - resize_base::notify_insert_search_end(); - if (p_e != NULL) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);) - return (p_e->m_value.second); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - return insert_new_imp(value_type(r_key, mapped_type()), pos)->second; - } - - inline mapped_reference - subscript_imp(const_key_reference r_key, true_type) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(r_key); - entry_pointer p_e = m_entries[pos_hash_pair.first]; - resize_base::notify_insert_search_start(); - while (p_e != NULL && - !hash_eq_fn_base::operator()(p_e->m_value.first, p_e->m_hash, r_key, pos_hash_pair.second)) - { - resize_base::notify_insert_search_collision(); - p_e = p_e->m_p_next; - } - - resize_base::notify_insert_search_end(); - if (p_e != NULL) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);) - return p_e->m_value.second; - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - return insert_new_imp(value_type(r_key, mapped_type()), - pos_hash_pair)->second; - } -#endif - - inline std::pair<point_iterator, bool> - insert_imp(const_reference, false_type); - - inline std::pair<point_iterator, bool> - insert_imp(const_reference, true_type); - - inline pointer - insert_new_imp(const_reference r_val, size_type pos) - { - if (do_resize_if_needed()) - pos = ranged_hash_fn_base::operator()(PB_DS_V2F(r_val)); - - // Following lines might throw an exception. - entry_pointer p_e = get_entry(r_val, traits_base::m_no_throw_copies_indicator); - - // At this point no exceptions can be thrown. - p_e->m_p_next = m_entries[pos]; - m_entries[pos] = p_e; - resize_base::notify_inserted(++m_num_used_e); - - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));) - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return &p_e->m_value; - } - - inline pointer - insert_new_imp(const_reference r_val, comp_hash& r_pos_hash_pair) - { - // Following lines might throw an exception. - if (do_resize_if_needed()) - r_pos_hash_pair = ranged_hash_fn_base::operator()(PB_DS_V2F(r_val)); - - entry_pointer p_e = get_entry(r_val, traits_base::m_no_throw_copies_indicator); - - // At this point no exceptions can be thrown. - p_e->m_hash = r_pos_hash_pair.second; - p_e->m_p_next = m_entries[r_pos_hash_pair.first]; - m_entries[r_pos_hash_pair.first] = p_e; - resize_base::notify_inserted(++m_num_used_e); - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));) - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return &p_e->m_value; - } - - inline pointer - find_key_pointer(const_key_reference r_key, false_type) - { - entry_pointer p_e = m_entries[ranged_hash_fn_base::operator()(r_key)]; - resize_base::notify_find_search_start(); - while (p_e != NULL && - !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key)) - { - resize_base::notify_find_search_collision(); - p_e = p_e->m_p_next; - } - - resize_base::notify_find_search_end(); - -#ifdef _GLIBCXX_DEBUG - if (p_e == NULL) - debug_base::check_key_does_not_exist(r_key); - else - debug_base::check_key_exists(r_key); -#endif - return &p_e->m_value; - } - - inline pointer - find_key_pointer(const_key_reference r_key, true_type) - { - comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(r_key); - entry_pointer p_e = m_entries[pos_hash_pair.first]; - resize_base::notify_find_search_start(); - while (p_e != NULL && - !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), - p_e->m_hash, - r_key, pos_hash_pair.second)) - { - resize_base::notify_find_search_collision(); - p_e = p_e->m_p_next; - } - - resize_base::notify_find_search_end(); - -#ifdef _GLIBCXX_DEBUG - if (p_e == NULL) - debug_base::check_key_does_not_exist(r_key); - else - debug_base::check_key_exists(r_key); -#endif - return &p_e->m_value; - } - - inline bool - erase_in_pos_imp(const_key_reference, size_type); - - inline bool - erase_in_pos_imp(const_key_reference, const comp_hash&); - - inline void - erase_entry_pointer(entry_pointer&); - -#ifdef PB_DS_DATA_TRUE_INDICATOR - void - inc_it_state(pointer& r_p_value, - std::pair<entry_pointer, size_type>& r_pos) const - { - inc_it_state((const_mapped_pointer& )r_p_value, r_pos); - } -#endif - - void - inc_it_state(const_pointer& r_p_value, - std::pair<entry_pointer, size_type>& r_pos) const - { - _GLIBCXX_DEBUG_ASSERT(r_p_value != NULL); - r_pos.first = r_pos.first->m_p_next; - if (r_pos.first != NULL) - { - r_p_value = &r_pos.first->m_value; - return; - } - - for (++r_pos.second; r_pos.second < m_num_e; ++r_pos.second) - if (m_entries[r_pos.second] != NULL) - { - r_pos.first = m_entries[r_pos.second]; - r_p_value = &r_pos.first->m_value; - return; - } - r_p_value = NULL; - } - - void - get_start_it_state(pointer& r_p_value, - std::pair<entry_pointer, size_type>& r_pos) const - { - for (r_pos.second = 0; r_pos.second < m_num_e; ++r_pos.second) - if (m_entries[r_pos.second] != NULL) - { - r_pos.first = m_entries[r_pos.second]; - r_p_value = &r_pos.first->m_value; - return; - } - r_p_value = NULL; - } - -#ifdef _GLIBCXX_DEBUG - void - assert_entry_pointer_array_valid(const entry_pointer_array) const; - - void - assert_entry_pointer_valid(const entry_pointer, true_type) const; - - void - assert_entry_pointer_valid(const entry_pointer, false_type) const; -#endif - -#ifdef PB_DS_HT_MAP_TRACE_ - void - trace_list(const_entry_pointer) const; -#endif - - private: -#ifdef PB_DS_DATA_TRUE_INDICATOR - friend class iterator_; -#endif - - friend class const_iterator_; - - static entry_allocator s_entry_allocator; - static entry_pointer_allocator s_entry_pointer_allocator; - static iterator s_end_it; - static const_iterator s_const_end_it; - static point_iterator s_find_end_it; - static const_point_iterator s_const_find_end_it; - - size_type m_num_e; - size_type m_num_used_e; - entry_pointer_array m_entries; - - enum - { - store_hash_ok = !Store_Hash - || !is_same<Hash_Fn, __gnu_pbds::null_hash_fn>::value - }; - - PB_DS_STATIC_ASSERT(sth, store_hash_ok); - }; - -#include <ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp> - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_HASH_EQ_FN_C_DEC -#undef PB_DS_RANGED_HASH_FN_C_DEC -#undef PB_DS_TYPES_TRAITS_C_DEC -#undef PB_DS_DEBUG_MAP_BASE_C_DEC -#undef PB_DS_CLASS_NAME -#undef PB_DS_V2F -#undef PB_DS_V2S - - } // namespace detail -} // namespace __gnu_pbds - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp deleted file mode 100644 index 1a61893d1..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp +++ /dev/null @@ -1,83 +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 cmp_fn_imps.hpp - * Contains implementations of cc_ht_map_'s entire container comparison related - * functions. - */ - -PB_DS_CLASS_T_DEC -template<typename Other_HT_Map_Type> -bool -PB_DS_CLASS_C_DEC:: -operator==(const Other_HT_Map_Type& other) const -{ return cmp_with_other(other); } - -PB_DS_CLASS_T_DEC -template<typename Other_Map_Type> -bool -PB_DS_CLASS_C_DEC:: -cmp_with_other(const Other_Map_Type& other) const -{ - if (size() != other.size()) - return false; - - for (typename Other_Map_Type::const_iterator it = other.begin(); - it != other.end(); ++it) - { - const_key_reference r_key = const_key_reference(PB_DS_V2F(*it)); - - const_mapped_pointer p_mapped_value = - const_cast<PB_DS_CLASS_C_DEC& >(*this). - find_key_pointer(r_key, traits_base::m_store_extra_indicator); - - if (p_mapped_value == NULL) - return false; - -#ifdef PB_DS_DATA_TRUE_INDICATOR - if (p_mapped_value->second != it->second) - return false; -#endif - } - return true; -} - -PB_DS_CLASS_T_DEC -template<typename Other_HT_Map_Type> -bool -PB_DS_CLASS_C_DEC:: -operator!=(const Other_HT_Map_Type& other) const -{ return !operator==(other); } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp deleted file mode 100644 index fa3f31df0..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp +++ /dev/null @@ -1,117 +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_key_dtor_entry_dealtor.hpp - * Contains a conditional key destructor, used for exception handling. - */ - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_T_DEC template<typename HT_Map> -#define PB_DS_CLASS_C_DEC PB_DS_CKDED_CLASS_NAME<HT_Map> - - /** - * A conditional key destructor, used for exception handling. - **/ - template<typename HT_Map> - class PB_DS_CKDED_CLASS_NAME - { - public: - typedef typename HT_Map::entry entry; - typedef typename HT_Map::entry_allocator entry_allocator; - typedef typename HT_Map::key_type key_type; - - inline - PB_DS_CKDED_CLASS_NAME(entry_allocator* p_a, entry* p_e); - - inline - ~PB_DS_CKDED_CLASS_NAME(); - - inline void - set_key_destruct(); - - inline void - set_no_action_destructor(); - - protected: - entry_allocator* const m_p_a; - entry* const m_p_e; - - bool m_key_destruct; - bool m_no_action_destructor; - }; - - PB_DS_CLASS_T_DEC - inline - PB_DS_CLASS_C_DEC:: - PB_DS_CKDED_CLASS_NAME(entry_allocator* p_a, entry* p_e) - : m_p_a(p_a), m_p_e(p_e), m_key_destruct(false), - m_no_action_destructor(false) - { } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - set_key_destruct() - { m_key_destruct = true; } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - set_no_action_destructor() - { m_no_action_destructor = true; } - - PB_DS_CLASS_T_DEC - inline - PB_DS_CLASS_C_DEC:: - ~PB_DS_CKDED_CLASS_NAME() - { - if (m_no_action_destructor) - return; - if (m_key_destruct) - m_p_e->m_value.first.~key_type(); - m_p_a->deallocate(m_p_e, 1); - } - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp deleted file mode 100644 index 571115373..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp +++ /dev/null @@ -1,191 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 constructor_destructor_fn_imps.hpp - * Contains implementations of cc_ht_map_'s constructors, destructor, - * and related functions. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::entry_allocator -PB_DS_CLASS_C_DEC::s_entry_allocator; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::entry_pointer_allocator -PB_DS_CLASS_C_DEC::s_entry_pointer_allocator; - -PB_DS_CLASS_T_DEC -template<typename It> -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - insert(*(first_it++)); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME() : - ranged_hash_fn_base(resize_base::get_nearest_larger_size(1)), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_pointer_allocator.allocate(m_num_e)) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn) : - ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_pointer_allocator.allocate(m_num_e)) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn) : - PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn), - ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_pointer_allocator.allocate(m_num_e)) -{ - std::fill(m_entries, m_entries + m_num_e, (entry_pointer)NULL); - Resize_Policy::notify_cleared(); - ranged_hash_fn_base::notify_resized(m_num_e); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, const Comb_Hash_Fn& r_comb_hash_fn) : - PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn), - ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), - r_hash_fn, r_comb_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_pointer_allocator.allocate(m_num_e)) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, const Comb_Hash_Fn& r_comb_hash_fn, const Resize_Policy& r_resize_policy) : - PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn), - Resize_Policy(r_resize_policy), - ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), - r_hash_fn, r_comb_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_pointer_allocator.allocate(m_num_e)) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) : -#ifdef _GLIBCXX_DEBUG - debug_base(other), -#endif - PB_DS_HASH_EQ_FN_C_DEC(other), - resize_base(other), ranged_hash_fn_base(other), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(m_entries = s_entry_pointer_allocator.allocate(m_num_e)) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) - __try - { - copy_from_range(other.begin(), other.end()); - } - __catch(...) - { - deallocate_all(); - __throw_exception_again; - } - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~PB_DS_CLASS_NAME() -{ deallocate_all(); } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid()); - _GLIBCXX_DEBUG_ONLY(other.assert_valid()); - - std::swap(m_entries, other.m_entries); - std::swap(m_num_e, other.m_num_e); - std::swap(m_num_used_e, other.m_num_used_e); - ranged_hash_fn_base::swap(other); - hash_eq_fn_base::swap(other); - resize_base::swap(other); - - _GLIBCXX_DEBUG_ONLY(debug_base::swap(other)); - _GLIBCXX_DEBUG_ONLY(assert_valid()); - _GLIBCXX_DEBUG_ONLY(other.assert_valid()); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -deallocate_all() -{ - clear(); - s_entry_pointer_allocator.deallocate(m_entries, m_num_e); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ - std::fill(m_entries, m_entries + m_num_e, entry_pointer(NULL)); - Resize_Policy::notify_resized(m_num_e); - Resize_Policy::notify_cleared(); - ranged_hash_fn_base::notify_resized(m_num_e); -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp deleted file mode 100644 index 4f1cce648..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,55 +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 constructor_destructor_no_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s constructors, destructor, - * and related functions. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -constructor_insert_new_imp(const_mapped_reference r_val, size_type pos, - false_type) -{ - // Following lines might throw an exception. - entry_pointer p = get_entry(r_val, traits_base::s_no_throw_copies_indicator); - - // At this point no exceptions can be thrown. - p->m_p_next = m_entries[pos]; - m_entries[pos] = p; - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(r_key);) -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp deleted file mode 100644 index a2b6fa111..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +++ /dev/null @@ -1,56 +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 constructor_destructor_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s constructors, destructor, - * and related functions. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -constructor_insert_new_imp(const_reference r_val, size_type pos, true_type) -{ - // Following lines might throw an exception. - entry_pointer p = get_entry(r_val, traits_base::s_no_throw_copies_indicator); - - // At this point no exceptions can be thrown. - p->m_p_next = m_entries[pos]; - p->m_hash = ranged_hash_fn_base::operator()((const_key_reference)(PB_DS_V2F(p->m_value))).second; - - m_entries[pos] = p; - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(r_key);) -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp deleted file mode 100644 index 4219eef38..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.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 debug_fn_imps.hpp - * Contains implementations of cc_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ - debug_base::check_size(m_num_used_e); - assert_entry_pointer_array_valid(m_entries); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_entry_pointer_array_valid(const entry_pointer_array a_p_entries) const -{ - size_type iterated_num_used_e = 0; - for (size_type pos = 0; pos < m_num_e; ++pos) - { - entry_pointer p_e = a_p_entries[pos]; - while (p_e != NULL) - { - ++iterated_num_used_e; - assert_entry_pointer_valid(p_e, traits_base::m_store_extra_indicator); - p_e = p_e->m_p_next; - } - } - _GLIBCXX_DEBUG_ASSERT(iterated_num_used_e == m_num_used_e); -} - -#include <ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp> - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp deleted file mode 100644 index 770bed34c..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,49 +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_no_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_entry_pointer_valid(const entry_pointer p, false_type) const -{ debug_base::check_key_exists(PB_DS_V2F(p->m_value)); } - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp deleted file mode 100644 index 3d17671e9..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp +++ /dev/null @@ -1,53 +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_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_entry_pointer_valid(const entry_pointer p_e, true_type) const -{ - debug_base::check_key_exists(PB_DS_V2F(p_e->m_value)); - comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value)); - _GLIBCXX_DEBUG_ASSERT(p_e->m_hash == pos_hash_pair.second); -} - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp deleted file mode 100644 index fa09f7348..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp +++ /dev/null @@ -1,91 +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 entry_list_fn_imps.hpp - * Contains implementations of cc_ht_map_'s entry-list related functions. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -deallocate_links_in_list(entry_pointer p_e) -{ - while (p_e != NULL) - { - entry_pointer p_dealloc_e = p_e; - p_e = p_e->m_p_next; - s_entry_allocator.deallocate(p_dealloc_e, 1); - } -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::entry_pointer -PB_DS_CLASS_C_DEC:: -get_entry(const_reference r_val, true_type) -{ - // Following line might throw an exception. - entry_pointer p_e = s_entry_allocator.allocate(1); - - // Following lines* cannot* throw an exception. - new (&p_e->m_value) value_type(r_val); - return p_e; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::entry_pointer -PB_DS_CLASS_C_DEC:: -get_entry(const_reference r_val, false_type) -{ - // Following line might throw an exception. - entry_pointer p_e = s_entry_allocator.allocate(1); - cond_dealtor_t cond(p_e); - - // Following lines might throw an exception. - new (&p_e->m_value) value_type(r_val); - cond.set_no_action(); - return p_e; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rels_entry(entry_pointer p_e) -{ - // The following lines cannot throw exceptions (unless if key-data dtors do). - p_e->m_value.~value_type(); - s_entry_allocator.deallocate(p_e, 1); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp deleted file mode 100644 index 9f9178bc9..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_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 erase_fn_imps.hpp - * Contains implementations of cc_ht_map_'s erase related functions. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -erase_entry_pointer(entry_pointer& r_p_e) -{ - _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(r_p_e->m_value))); - - entry_pointer p_e = r_p_e; - r_p_e = r_p_e->m_p_next; - rels_entry(p_e); - _GLIBCXX_DEBUG_ASSERT(m_num_used_e > 0); - resize_base::notify_erased(--m_num_used_e); -} - -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) -{ - size_type num_ersd = 0; - for (size_type pos = 0; pos < m_num_e; ++pos) - { - while (m_entries[pos] != NULL && pred(m_entries[pos]->m_value)) - { - ++num_ersd; - entry_pointer p_next_e = m_entries[pos]->m_p_next; - erase_entry_pointer(m_entries[pos]); - m_entries[pos] = p_next_e; - } - - entry_pointer p_e = m_entries[pos]; - while (p_e != NULL && p_e->m_p_next != NULL) - { - if (pred(p_e->m_p_next->m_value)) - { - ++num_ersd; - erase_entry_pointer(p_e->m_p_next); - } - else - p_e = p_e->m_p_next; - } - } - - do_resize_if_needed_no_throw(); - return num_ersd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - for (size_type pos = 0; pos < m_num_e; ++pos) - while (m_entries[pos] != NULL) - erase_entry_pointer(m_entries[pos]); - do_resize_if_needed_no_throw(); - resize_base::notify_cleared(); -} - -#include <ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp> - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp deleted file mode 100644 index d24fc31f9..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,101 +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_no_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s erase related functions, - * when the hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase(const_key_reference r_key) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return erase_in_pos_imp(r_key, ranged_hash_fn_base::operator()(r_key)); -} - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase_in_pos_imp(const_key_reference r_key, size_type pos) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - entry_pointer p_e = m_entries[pos]; - resize_base::notify_erase_search_start(); - if (p_e == NULL) - { - resize_base::notify_erase_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return false; - } - - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key)) - { - resize_base::notify_erase_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base:: check_key_exists(r_key);) - erase_entry_pointer(m_entries[pos]); - do_resize_if_needed_no_throw(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return true; - } - - while (true) - { - entry_pointer p_next_e = p_e->m_p_next; - if (p_next_e == NULL) - { - resize_base::notify_erase_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return false; - } - - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_next_e->m_value), r_key)) - { - resize_base::notify_erase_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);) - erase_entry_pointer(p_e->m_p_next); - do_resize_if_needed_no_throw(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return true; - } - resize_base::notify_erase_search_collision(); - p_e = p_next_e; - } -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp deleted file mode 100644 index d72df6962..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp +++ /dev/null @@ -1,95 +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_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s erase related functions, - * when the hash value is stored. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase_in_pos_imp(const_key_reference r_key, const comp_hash& r_pos_hash_pair) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - entry_pointer p_e = m_entries[r_pos_hash_pair.first]; - resize_base::notify_erase_search_start(); - if (p_e == NULL) - { - resize_base::notify_erase_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base:: check_key_does_not_exist(r_key);) - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return false; - } - - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash, - r_key, r_pos_hash_pair.second)) - { - resize_base::notify_erase_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);) - erase_entry_pointer(m_entries[r_pos_hash_pair.first]); - do_resize_if_needed_no_throw(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return true; - } - - while (true) - { - entry_pointer p_next_e = p_e->m_p_next; - if (p_next_e == NULL) - { - resize_base::notify_erase_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return false; - } - - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_next_e->m_value), - p_next_e->m_hash, r_key, - r_pos_hash_pair.second)) - { - resize_base::notify_erase_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);) - erase_entry_pointer(p_e->m_p_next); - do_resize_if_needed_no_throw(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return true; - } - resize_base::notify_erase_search_collision(); - p_e = p_next_e; - } -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp deleted file mode 100644 index 6ca9a03b4..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp +++ /dev/null @@ -1,71 +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 find_fn_imps.hpp - * Contains implementations of cc_ht_map_'s find related functions. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find(const_key_reference r_key) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return find_key_pointer(r_key, traits_base::m_store_extra_indicator); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_point_iterator -PB_DS_CLASS_C_DEC:: -find(const_key_reference r_key) const -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return const_cast<PB_DS_CLASS_C_DEC& >(*this).find_key_pointer(r_key, - traits_base::m_store_extra_indicator); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find_end() -{ return NULL; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_point_iterator -PB_DS_CLASS_C_DEC:: -find_end() const -{ return NULL; } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp deleted file mode 100644 index 1db51c990..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp +++ /dev/null @@ -1,41 +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 find_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s find related functions, - * when the hash value is stored. - */ - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp deleted file mode 100644 index dc1519df7..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp +++ /dev/null @@ -1,100 +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 implementations of cc_ht_map_'s entire container info related - * functions. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ return m_num_used_e; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -max_size() const -{ return m_entry_allocator.max_size(); } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ return (size() == 0); } - -PB_DS_CLASS_T_DEC -template<typename Other_HT_Map_Type> -bool -PB_DS_CLASS_C_DEC:: -operator==(const Other_HT_Map_Type& other) const -{ return cmp_with_other(other); } - -PB_DS_CLASS_T_DEC -template<typename Other_Map_Type> -bool -PB_DS_CLASS_C_DEC:: -cmp_with_other(const Other_Map_Type& other) const -{ - if (size() != other.size()) - return false; - - for (typename Other_Map_Type::const_iterator it = other.begin(); - it != other.end(); ++it) - { - const_key_reference r_key =(const_key_reference)PB_DS_V2F(*it); - const_mapped_pointer p_mapped_value = - const_cast<PB_DS_CLASS_C_DEC& >(*this). - find_key_pointer(r_key, traits_base::m_store_extra_indicator); - - if (p_mapped_value == NULL) - return false; - -#ifdef PB_DS_DATA_TRUE_INDICATOR - if (p_mapped_value->second != it->second) - return false; -#endif - } - return true; -} - -PB_DS_CLASS_T_DEC -template<typename Other_HT_Map_Type> -bool -PB_DS_CLASS_C_DEC:: -operator!=(const Other_HT_Map_Type& other) const -{ return !operator==(other); } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp deleted file mode 100644 index 0679dbe6e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp +++ /dev/null @@ -1,43 +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 implementations of cc_ht_map_'s insert related functions. - */ - -#include <ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp> - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp deleted file mode 100644 index 7215ccd86..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,70 +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_no_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s insert related functions, - * when the hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool> -PB_DS_CLASS_C_DEC:: -insert_imp(const_reference r_val, false_type) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - const_key_reference r_key = PB_DS_V2F(r_val); - const size_type pos = ranged_hash_fn_base::operator()(r_key); - entry_pointer p_e = m_entries[pos]; - resize_base::notify_insert_search_start(); - - while (p_e != NULL && !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), - r_key)) - { - resize_base::notify_insert_search_collision(); - p_e = p_e->m_p_next; - } - - resize_base::notify_insert_search_end(); - if (p_e != NULL) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);) - return std::make_pair(&p_e->m_value, false); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - return std::make_pair(insert_new_imp(r_val, pos), true); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp deleted file mode 100644 index fbc284f80..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp +++ /dev/null @@ -1,71 +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_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s insert related functions, - * when the hash value is stored. - */ - -PB_DS_CLASS_T_DEC -inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool> -PB_DS_CLASS_C_DEC:: -insert_imp(const_reference r_val, true_type) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - const_key_reference key = PB_DS_V2F(r_val); - comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(key); - entry_pointer p_e = m_entries[pos_hash_pair.first]; - resize_base::notify_insert_search_start(); - - while (p_e != NULL && !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), - p_e->m_hash, - key, pos_hash_pair.second)) - { - resize_base::notify_insert_search_collision(); - p_e = p_e->m_p_next; - } - - resize_base::notify_insert_search_end(); - if (p_e != NULL) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key);) - return std::make_pair(&p_e->m_value, false); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);) - return std::make_pair(insert_new_imp(r_val, pos_hash_pair), true); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp deleted file mode 100644 index a7592b7f1..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp +++ /dev/null @@ -1,83 +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 implementations of cc_ht_map_'s iterators related functions, e.g., - * begin(). - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC::s_end_it; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC::s_const_end_it; - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ - pointer p_value; - std::pair<entry_pointer, size_type> pos; - get_start_it_state(p_value, pos); - return iterator(p_value, pos, this); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ return s_end_it; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ - pointer p_value; - std::pair<entry_pointer, size_type> pos; - get_start_it_state(p_value, pos); - return const_iterator(p_value, pos, this); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ return s_const_end_it; } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp deleted file mode 100644 index 9a661b361..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp +++ /dev/null @@ -1,88 +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 implementations of cc_ht_map_'s policy access - * functions. - */ - -PB_DS_CLASS_T_DEC -Hash_Fn& -PB_DS_CLASS_C_DEC:: -get_hash_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Hash_Fn& -PB_DS_CLASS_C_DEC:: -get_hash_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Eq_Fn& -PB_DS_CLASS_C_DEC:: -get_eq_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Eq_Fn& -PB_DS_CLASS_C_DEC:: -get_eq_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Comb_Hash_Fn& -PB_DS_CLASS_C_DEC:: -get_comb_hash_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Comb_Hash_Fn& -PB_DS_CLASS_C_DEC:: -get_comb_hash_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Resize_Policy& -PB_DS_CLASS_C_DEC:: -get_resize_policy() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Resize_Policy& -PB_DS_CLASS_C_DEC:: -get_resize_policy() const -{ return *this; } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp deleted file mode 100644 index 66333ec85..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp +++ /dev/null @@ -1,133 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 resize_fn_imps.hpp - * Contains implementations of cc_ht_map_'s resize related functions. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -do_resize_if_needed() -{ - if (!resize_base::is_resize_needed()) - return false; - resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e)); - return true; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -do_resize(size_type len) -{ resize_imp(resize_base::get_nearest_larger_size(len)); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -do_resize_if_needed_no_throw() -{ - if (!resize_base::is_resize_needed()) - return; - - __try - { - resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e)); - } - __catch(...) - { } - - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -resize_imp(size_type new_size) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - if (new_size == m_num_e) - return; - - const size_type old_size = m_num_e; - entry_pointer_array a_p_entries_resized; - - // Following line might throw an exception. - ranged_hash_fn_base::notify_resized(new_size); - - __try - { - // Following line might throw an exception. - a_p_entries_resized = s_entry_pointer_allocator.allocate(new_size); - m_num_e = new_size; - } - __catch(...) - { - ranged_hash_fn_base::notify_resized(old_size); - __throw_exception_again; - } - - // At this point no exceptions can be thrown. - resize_imp_no_exceptions(new_size, a_p_entries_resized, old_size); - Resize_Policy::notify_resized(new_size); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -resize_imp_no_exceptions(size_type new_size, entry_pointer_array a_p_entries_resized, size_type old_size) -{ - std::fill(a_p_entries_resized, a_p_entries_resized + m_num_e, - entry_pointer(NULL)); - - for (size_type pos = 0; pos < old_size; ++pos) - { - entry_pointer p_e = m_entries[pos]; - while (p_e != NULL) - p_e = resize_imp_no_exceptions_reassign_pointer(p_e, a_p_entries_resized, traits_base::m_store_extra_indicator); - } - - m_num_e = new_size; - _GLIBCXX_DEBUG_ONLY(assert_entry_pointer_array_valid(a_p_entries_resized);) - s_entry_pointer_allocator.deallocate(m_entries, old_size); - m_entries = a_p_entries_resized; - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -#include <ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp> -#include <ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp> - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp deleted file mode 100644 index 6577630f0..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,54 +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 resize_no_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s resize related functions, when the - * hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::entry_pointer -PB_DS_CLASS_C_DEC:: -resize_imp_no_exceptions_reassign_pointer(entry_pointer p_e, entry_pointer_array a_p_entries_resized, false_type) -{ - const size_type hash_pos = - ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value)); - - entry_pointer const p_next_e = p_e->m_p_next; - p_e->m_p_next = a_p_entries_resized[hash_pos]; - a_p_entries_resized[hash_pos] = p_e; - return p_next_e; -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp deleted file mode 100644 index c1adb61b1..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp +++ /dev/null @@ -1,54 +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 resize_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s resize related functions, when the - * hash value is stored. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::entry_pointer -PB_DS_CLASS_C_DEC:: -resize_imp_no_exceptions_reassign_pointer(entry_pointer p_e, entry_pointer_array a_p_entries_resized, true_type) -{ - const comp_hash pos_hash_pair = - ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash); - - entry_pointer const p_next_e = p_e->m_p_next; - p_e->m_p_next = a_p_entries_resized[pos_hash_pair.first]; - a_p_entries_resized[pos_hash_pair.first] = p_e; - return p_next_e; -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp deleted file mode 100644 index 0d5ec85f2..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp +++ /dev/null @@ -1,59 +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 size_fn_imps.hpp - * Contains implementations of cc_ht_map_'s entire container size related - * functions. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ return m_num_used_e; } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ return (size() == 0); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -max_size() const -{ return s_entry_allocator.max_size(); } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp deleted file mode 100644 index b9c1ee20e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp +++ /dev/null @@ -1,46 +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 standard_policies.hpp - * Contains standard policies for cc_ht_map types. - */ - -#ifndef PB_DS_CC_HT_MAP_STANDARD_POLICIES_HPP -#define PB_DS_CC_HT_MAP_STANDARD_POLICIES_HPP - -#include <ext/pb_ds/detail/standard_policies.hpp> - -#endif // #ifndef PB_DS_CC_HT_MAP_STANDARD_POLICIES_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp deleted file mode 100644 index 6fa5676b9..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp +++ /dev/null @@ -1,72 +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 trace_fn_imps.hpp - * Contains implementations of cc_ht_map_'s trace-mode functions. - */ - -#ifdef PB_DS_HT_MAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << static_cast<unsigned long>(m_num_e) << " " - << static_cast<unsigned long>(m_num_used_e) << std::endl; - - for (size_type i = 0; i < m_num_e; ++i) - { - std::cerr << static_cast<unsigned long>(i) << " "; - trace_list(m_entries[i]); - std::cerr << std::endl; - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_list(const_entry_pointer p_l) const -{ - size_type iterated_num_used_e = 0; - while (p_l != NULL) - { - std::cerr << PB_DS_V2F(p_l->m_value) << " "; - p_l = p_l->m_p_next; - } -} - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp deleted file mode 100644 index 1ee48a2ac..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp +++ /dev/null @@ -1,125 +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_dealtor.hpp - * Contains a conditional deallocator. - */ - -#ifndef PB_DS_COND_DEALTOR_HPP -#define PB_DS_COND_DEALTOR_HPP - -namespace __gnu_pbds -{ - - namespace detail - { - -#define PB_DS_COND_DEALTOR_CLASS_T_DEC \ - template<typename Entry, class Allocator> - -#define PB_DS_COND_DEALTOR_CLASS_C_DEC \ - cond_dealtor< \ - Entry, \ - Allocator> - - template<typename Entry, class Allocator> - class cond_dealtor - { - public: - typedef - typename Allocator::template rebind<Entry>::other - entry_allocator; - - typedef typename entry_allocator::pointer entry_pointer; - - public: - inline - cond_dealtor(entry_pointer p_e); - - inline - ~cond_dealtor(); - - inline void - set_no_action(); - - private: - entry_pointer m_p_e; - - bool m_no_action_destructor; - - static entry_allocator s_alloc; - }; - - PB_DS_COND_DEALTOR_CLASS_T_DEC - typename PB_DS_COND_DEALTOR_CLASS_C_DEC::entry_allocator - PB_DS_COND_DEALTOR_CLASS_C_DEC::s_alloc; - - PB_DS_COND_DEALTOR_CLASS_T_DEC - inline - PB_DS_COND_DEALTOR_CLASS_C_DEC:: - cond_dealtor(entry_pointer p_e) : - m_p_e(p_e), - m_no_action_destructor(false) - { } - - PB_DS_COND_DEALTOR_CLASS_T_DEC - inline void - PB_DS_COND_DEALTOR_CLASS_C_DEC:: - set_no_action() - { - m_no_action_destructor = true; - } - - PB_DS_COND_DEALTOR_CLASS_T_DEC - inline - PB_DS_COND_DEALTOR_CLASS_C_DEC:: - ~cond_dealtor() - { - if (m_no_action_destructor) - return; - - s_alloc.deallocate(m_p_e, 1); - } - -#undef PB_DS_COND_DEALTOR_CLASS_T_DEC -#undef PB_DS_COND_DEALTOR_CLASS_C_DEC - - } // namespace detail - -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_COND_DEALTOR_HPP - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 20c998868..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/constructors_destructor_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 constructors_destructor_fn_imps.hpp - * Contains constructors_destructor_fn_imps applicable to different containers. - */ - -inline -PB_DS_CLASS_NAME() -{ } - -inline -PB_DS_CLASS_NAME(const PB_DS_CLASS_NAME& other) -: base_type((const base_type&)other) -{ } - -template<typename T0> -inline -PB_DS_CLASS_NAME(T0 t0) : base_type(t0) -{ } - -template<typename T0, typename T1> -inline -PB_DS_CLASS_NAME(T0 t0, T1 t1) : base_type(t0, t1) -{ } - -template<typename T0, typename T1, typename T2> -inline -PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2) : base_type(t0, t1, t2) -{ } - -template<typename T0, typename T1, typename T2, typename T3> -inline -PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3) -: base_type(t0, t1, t2, t3) -{ } - -template<typename T0, typename T1, typename T2, typename T3, typename T4> -inline -PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4) -: base_type(t0, t1, t2, t3, t4) -{ } - -template<typename T0, typename T1, typename T2, typename T3, typename T4, - typename T5> -inline -PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) -: base_type(t0, t1, t2, t3, t4, t5) -{ } - -template<typename T0, typename T1, typename T2, typename T3, typename T4, - typename T5, typename T6> -inline -PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6) -: base_type(t0, t1, t2, t3, t4, t5, t6) -{ } - -template<typename T0, typename T1, typename T2, typename T3, typename T4, - typename T5, typename T6, typename T7> -inline -PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7) -: base_type(t0, t1, t2, t3, t4, t5, t6, t7) -{ } - -template<typename T0, typename T1, typename T2, typename T3, typename T4, - typename T5, typename T6, typename T7, typename T8> -inline -PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8) -: base_type(t0, t1, t2, t3, t4, t5, t6, t7, t8) -{ } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp deleted file mode 100644 index 7f8d87a3c..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp +++ /dev/null @@ -1,332 +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 container_base_dispatch.hpp - * Contains an associative container dispatching base. - */ - -#ifndef PB_DS_ASSOC_CNTNR_BASE_DS_DISPATCHER_HPP -#define PB_DS_ASSOC_CNTNR_BASE_DS_DISPATCHER_HPP - -#include <ext/typelist.h> - -#define PB_DS_DATA_TRUE_INDICATOR -#include <ext/pb_ds/detail/list_update_map_/lu_map_.hpp> -#undef PB_DS_DATA_TRUE_INDICATOR - -#define PB_DS_DATA_FALSE_INDICATOR -#include <ext/pb_ds/detail/list_update_map_/lu_map_.hpp> -#undef PB_DS_DATA_FALSE_INDICATOR - -#define PB_DS_DATA_TRUE_INDICATOR -#include <ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp> -#undef PB_DS_DATA_TRUE_INDICATOR - -#define PB_DS_DATA_FALSE_INDICATOR -#include <ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp> -#undef PB_DS_DATA_FALSE_INDICATOR - -#define PB_DS_DATA_TRUE_INDICATOR -#include <ext/pb_ds/detail/splay_tree_/splay_tree_.hpp> -#undef PB_DS_DATA_TRUE_INDICATOR - -#define PB_DS_DATA_FALSE_INDICATOR -#include <ext/pb_ds/detail/splay_tree_/splay_tree_.hpp> -#undef PB_DS_DATA_FALSE_INDICATOR - -#define PB_DS_DATA_TRUE_INDICATOR -#include <ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp> -#undef PB_DS_DATA_TRUE_INDICATOR - -#define PB_DS_DATA_FALSE_INDICATOR -#include <ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp> -#undef PB_DS_DATA_FALSE_INDICATOR - -#define PB_DS_DATA_TRUE_INDICATOR -#include <ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp> -#undef PB_DS_DATA_TRUE_INDICATOR - -#define PB_DS_DATA_FALSE_INDICATOR -#include <ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp> -#undef PB_DS_DATA_FALSE_INDICATOR - -#define PB_DS_DATA_TRUE_INDICATOR -#include <ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp> -#undef PB_DS_DATA_TRUE_INDICATOR - -#define PB_DS_DATA_FALSE_INDICATOR -#include <ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp> -#undef PB_DS_DATA_FALSE_INDICATOR - -#define PB_DS_DATA_TRUE_INDICATOR -#include <ext/pb_ds/detail/pat_trie_/pat_trie_.hpp> -#undef PB_DS_DATA_TRUE_INDICATOR - -#define PB_DS_DATA_FALSE_INDICATOR -#include <ext/pb_ds/detail/pat_trie_/pat_trie_.hpp> -#undef PB_DS_DATA_FALSE_INDICATOR - -namespace __gnu_pbds -{ -namespace detail -{ - // Primary template. - template<typename Key, typename Mapped, typename Data_Structure_Taq, - typename Policy_Tl, typename Alloc> - struct container_base_dispatch; - - template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, Mapped, list_update_tag, - Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0; - typedef typename at0::type at0t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - - public: - typedef lu_map_data_<Key, Mapped, at0t, Alloc, at1t> type; - }; - - template<typename Key, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, null_mapped_type, list_update_tag, - Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0; - typedef typename at0::type at0t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - - public: - typedef lu_map_no_data_<Key, null_mapped_type, at0t, Alloc, at1t> type; - }; - - template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, Mapped, pat_trie_tag, Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - - public: - typedef pat_trie_data_<Key, Mapped, at1t, Alloc> type; - }; - - template<typename Key, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, null_mapped_type, pat_trie_tag, - Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - - public: - typedef pat_trie_no_data_<Key, null_mapped_type, at1t, Alloc> type; - }; - - template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, Mapped, rb_tree_tag, Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0; - typedef typename at0::type at0t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - - public: - typedef rb_tree_data_<Key, Mapped, at0t, at1t, Alloc> type; - }; - - template<typename Key, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, null_mapped_type, rb_tree_tag, - Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0; - typedef typename at0::type at0t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - - public: - typedef rb_tree_no_data_<Key, null_mapped_type, at0t, at1t, Alloc> type; - }; - - template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, Mapped, splay_tree_tag, - Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0; - typedef typename at0::type at0t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - - public: - typedef splay_tree_data_<Key, Mapped, at0t, at1t, Alloc> type; - }; - - template<typename Key, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, null_mapped_type, splay_tree_tag, - Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0; - typedef typename at0::type at0t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - - public: - typedef splay_tree_no_data_<Key, null_mapped_type, at0t, at1t, Alloc> type; - }; - - template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, Mapped, ov_tree_tag, Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0; - typedef typename at0::type at0t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - - public: - typedef ov_tree_data_<Key, Mapped, at0t, at1t, Alloc> type; - }; - - template<typename Key, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, null_mapped_type, ov_tree_tag, - Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0; - typedef typename at0::type at0t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - - public: - typedef ov_tree_no_data_<Key, null_mapped_type, at0t, at1t, Alloc> type; - }; - - template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, Mapped, cc_hash_tag, Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0; - typedef typename at0::type at0t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2> at2; - typedef typename at2::type at2t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3> at3; - typedef typename at3::type at3t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4> at4; - typedef typename at4::type at4t; - - public: - typedef cc_ht_map_data_<Key, Mapped, at0t, at1t, Alloc, at3t::value, - at4t, at2t> type; - }; - - template<typename Key, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, null_mapped_type, cc_hash_tag, - Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0; - typedef typename at0::type at0t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2> at2; - typedef typename at2::type at2t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3> at3; - typedef typename at3::type at3t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4> at4; - typedef typename at4::type at4t; - - public: - typedef cc_ht_map_no_data_<Key, null_mapped_type, at0t, at1t, Alloc, - at3t::value, at4t, at2t> type; - }; - - template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, Mapped, gp_hash_tag, Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0; - typedef typename at0::type at0t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2> at2; - typedef typename at2::type at2t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3> at3; - typedef typename at3::type at3t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4> at4; - typedef typename at4::type at4t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 5> at5; - typedef typename at5::type at5t; - - public: - typedef gp_ht_map_data_<Key, Mapped, at0t, at1t, Alloc, at3t::value, - at4t, at5t, at2t> type; - }; - - template<typename Key, typename Policy_Tl, typename Alloc> - struct container_base_dispatch<Key, null_mapped_type, gp_hash_tag, - Policy_Tl, Alloc> - { - private: - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0; - typedef typename at0::type at0t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1; - typedef typename at1::type at1t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2> at2; - typedef typename at2::type at2t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3> at3; - typedef typename at3::type at3t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4> at4; - typedef typename at4::type at4t; - typedef __gnu_cxx::typelist::at_index<Policy_Tl, 5> at5; - typedef typename at5::type at5t; - - public: - typedef gp_ht_map_no_data_<Key, null_mapped_type, at0t, at1t, Alloc, - at3t::value, at4t, at5t, at2t> type; - }; -} // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp deleted file mode 100644 index 6f2defb64..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp +++ /dev/null @@ -1,360 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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_map_base.hpp - * Contains a debug-mode base for all maps. - */ - -#ifndef PB_DS_DEBUG_MAP_BASE_HPP -#define PB_DS_DEBUG_MAP_BASE_HPP - -#ifdef _GLIBCXX_DEBUG - -#include <list> -#include <utility> -#include <cstdlib> -#include <iostream> -#include <ext/throw_allocator.h> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - // Need std::pair ostream extractor. - template<typename _CharT, typename _Traits, typename _Tp1, typename _Tp2> - inline std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __out, - const std::pair<_Tp1, _Tp2>& p) - { return (__out << '(' << p.first << ',' << p.second << ')'); } - -#define PB_DS_CLASS_T_DEC \ - template<typename Key, class Eq_Fn, typename Const_Key_Reference> - -#define PB_DS_CLASS_C_DEC \ - debug_map_base<Key, Eq_Fn, Const_Key_Reference> - - template<typename Key, class Eq_Fn, typename Const_Key_Reference> - class debug_map_base - { - private: - typedef typename std::allocator< Key> key_allocator; - - typedef typename key_allocator::size_type size_type; - - typedef Const_Key_Reference const_key_reference; - - protected: - debug_map_base(); - - debug_map_base(const PB_DS_CLASS_C_DEC& other); - - ~debug_map_base(); - - inline void - insert_new(const_key_reference r_key); - - inline void - erase_existing(const_key_reference r_key); - - void - clear(); - - inline void - check_key_exists(const_key_reference r_key) const; - - inline void - check_key_does_not_exist(const_key_reference r_key) const; - - inline void - check_size(size_type size) const; - - void - swap(PB_DS_CLASS_C_DEC& other); - - template<typename Cmp_Fn> - void - split(const_key_reference, Cmp_Fn, PB_DS_CLASS_C_DEC&); - - void - join(PB_DS_CLASS_C_DEC& other); - - private: - typedef std::list< Key> key_set; - typedef typename key_set::iterator key_set_iterator; - typedef typename key_set::const_iterator const_key_set_iterator; - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; -#endif - - const_key_set_iterator - find(const_key_reference r_key) const; - - key_set_iterator - find(const_key_reference r_key); - - key_set m_key_set; - Eq_Fn m_eq; - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - debug_map_base() - { _GLIBCXX_DEBUG_ONLY(assert_valid();) } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - debug_map_base(const PB_DS_CLASS_C_DEC& other) : m_key_set(other.m_key_set) - { _GLIBCXX_DEBUG_ONLY(assert_valid();) } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ~debug_map_base() - { _GLIBCXX_DEBUG_ONLY(assert_valid();) } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - insert_new(const_key_reference r_key) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - __gnu_cxx::throw_allocator<char> alloc; - const double orig_throw_prob = alloc.get_throw_prob(); - alloc.set_throw_prob(0); - if (find(r_key) != m_key_set.end()) - { - std::cerr << "insert_new" << r_key << std::endl; - std::abort(); - } - - __try - { - m_key_set.push_back(r_key); - } - __catch(...) - { - std::cerr << "insert_new" << r_key << std::endl; - std::abort(); - } - alloc.set_throw_prob(orig_throw_prob); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - erase_existing(const_key_reference r_key) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - key_set_iterator it = find(r_key); - if (it == m_key_set.end()) - { - std::cerr << "erase_existing" << r_key << std::endl; - std::abort(); - } - m_key_set.erase(it); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - clear() - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - m_key_set.clear(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - check_key_exists(const_key_reference r_key) const - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - if (find(r_key) == m_key_set.end()) - { - std::cerr << "check_key_exists" << r_key << std::endl; - std::abort(); - } - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - check_key_does_not_exist(const_key_reference r_key) const - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - if (find(r_key) != m_key_set.end()) - { - using std::cerr; - using std::endl; - cerr << "check_key_does_not_exist" << r_key << endl; - std::abort(); - } - } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - check_size(size_type size) const - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - const size_type key_set_size = m_key_set.size(); - if (size != key_set_size) - { - std::cerr << "check_size " << size - << " " << key_set_size << std::endl; - std::abort(); - } - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - swap(PB_DS_CLASS_C_DEC& other) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - m_key_set.swap(other.m_key_set); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::const_key_set_iterator - PB_DS_CLASS_C_DEC:: - find(const_key_reference r_key) const - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - typedef const_key_set_iterator iterator_type; - for (iterator_type it = m_key_set.begin(); it != m_key_set.end(); ++it) - if (m_eq(*it, r_key)) - return it; - return m_key_set.end(); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::key_set_iterator - PB_DS_CLASS_C_DEC:: - find(const_key_reference r_key) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - key_set_iterator it = m_key_set.begin(); - while (it != m_key_set.end()) - { - if (m_eq(*it, r_key)) - return it; - ++it; - } - return it; - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -#ifdef _GLIBCXX_DEBUG - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - assert_valid() const - { - const_key_set_iterator prime_it = m_key_set.begin(); - while (prime_it != m_key_set.end()) - { - const_key_set_iterator sec_it = prime_it; - ++sec_it; - while (sec_it != m_key_set.end()) - { - _GLIBCXX_DEBUG_ASSERT(!m_eq(*sec_it, *prime_it)); - _GLIBCXX_DEBUG_ASSERT(!m_eq(*prime_it, *sec_it)); - ++sec_it; - } - ++prime_it; - } - } -#endif - - PB_DS_CLASS_T_DEC - template<typename Cmp_Fn> - void - PB_DS_CLASS_C_DEC:: - split(const_key_reference r_key, Cmp_Fn cmp_fn, PB_DS_CLASS_C_DEC& other) - { - __gnu_cxx::throw_allocator<char> alloc; - const double orig_throw_prob = alloc.get_throw_prob(); - alloc.set_throw_prob(0); - other.clear(); - key_set_iterator it = m_key_set.begin(); - while (it != m_key_set.end()) - if (cmp_fn(r_key, * it)) - { - other.insert_new(*it); - it = m_key_set.erase(it); - } - else - ++it; - alloc.set_throw_prob(orig_throw_prob); - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - join(PB_DS_CLASS_C_DEC& other) - { - __gnu_cxx::throw_allocator<char> alloc; - const double orig_throw_prob = alloc.get_throw_prob(); - alloc.set_throw_prob(0); - key_set_iterator it = other.m_key_set.begin(); - while (it != other.m_key_set.end()) - { - insert_new(*it); - it = other.m_key_set.erase(it); - } - _GLIBCXX_DEBUG_ASSERT(other.m_key_set.empty()); - alloc.set_throw_prob(orig_throw_prob); - } - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - -} // namespace detail -} // namespace __gnu_pbds - -#endif - -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp deleted file mode 100644 index ec95bca64..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp +++ /dev/null @@ -1,68 +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 eq_by_less.hpp - * Contains an equivalence function. - */ - -#ifndef PB_DS_EQ_BY_LESS_HPP -#define PB_DS_EQ_BY_LESS_HPP - -#include <utility> -#include <functional> -#include <vector> -#include <assert.h> -#include <ext/pb_ds/detail/types_traits.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Key, class Cmp_Fn> - struct eq_by_less : private Cmp_Fn - { - bool - operator()(const Key& r_lhs, const Key& r_rhs) const - { - const bool l = Cmp_Fn::operator()(r_lhs, r_rhs); - const bool g = Cmp_Fn::operator()(r_rhs, r_lhs); - return !(l || g); - } - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_EQ_BY_LESS_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp deleted file mode 100644 index b21c252e2..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp +++ /dev/null @@ -1,179 +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 hash_eq_fn.hpp - * Contains 2 eqivalence functions, one employing a hash value, - * and one ignoring it. - */ - -#ifndef PB_DS_HASH_EQ_FN_HPP -#define PB_DS_HASH_EQ_FN_HPP - -#include <utility> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Key, class Eq_Fn, class Allocator, bool Store_Hash> - struct hash_eq_fn; - -#define PB_DS_CLASS_T_DEC \ - template<typename Key, class Eq_Fn, class Allocator> - -#define PB_DS_CLASS_C_DEC \ - hash_eq_fn<Key, Eq_Fn, Allocator, false> - - /** - * Specialization 1- The client requests that hash values not be stored. - **/ - template<typename Key, class Eq_Fn, class Allocator> - struct hash_eq_fn<Key, Eq_Fn, Allocator, false> : public Eq_Fn - { - typedef Eq_Fn eq_fn_base; - - typedef typename Allocator::template rebind<Key>::other key_allocator; - - typedef typename key_allocator::const_reference const_key_reference; - - hash_eq_fn(); - - hash_eq_fn(const Eq_Fn& r_eq_fn); - - inline bool - operator()(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const; - - inline void - swap(const PB_DS_CLASS_C_DEC& other); - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - hash_eq_fn() - { } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - swap(const PB_DS_CLASS_C_DEC& other) - { std::swap((Eq_Fn& )(*this), (Eq_Fn& )other); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - hash_eq_fn(const Eq_Fn& r_eq_fn) : - Eq_Fn(r_eq_fn) - { } - - PB_DS_CLASS_T_DEC - inline bool - PB_DS_CLASS_C_DEC:: - operator()(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const - { return (eq_fn_base::operator()(r_lhs_key, r_rhs_key)); } - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - -#define PB_DS_CLASS_T_DEC \ - template<typename Key, class Eq_Fn, class Allocator> - -#define PB_DS_CLASS_C_DEC \ - hash_eq_fn<Key, Eq_Fn, Allocator, true> - - /** - * Specialization 2- The client requests that hash values be stored. - **/ - template<typename Key, class Eq_Fn, class Allocator> - struct hash_eq_fn<Key, Eq_Fn, Allocator, true> : - public Eq_Fn - { - typedef typename Allocator::size_type size_type; - - typedef Eq_Fn eq_fn_base; - - typedef typename Allocator::template rebind<Key>::other key_allocator; - - typedef typename key_allocator::const_reference const_key_reference; - - hash_eq_fn(); - - hash_eq_fn(const Eq_Fn& r_eq_fn); - - inline bool - operator()(const_key_reference r_lhs_key, size_type lhs_hash, - const_key_reference r_rhs_key, size_type rhs_hash) const; - - inline void - swap(const PB_DS_CLASS_C_DEC& other); - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - hash_eq_fn() - { } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - hash_eq_fn(const Eq_Fn& r_eq_fn) : - Eq_Fn(r_eq_fn) - { } - - PB_DS_CLASS_T_DEC - inline bool - PB_DS_CLASS_C_DEC:: - operator()(const_key_reference r_lhs_key, size_type lhs_hash, - const_key_reference r_rhs_key, size_type rhs_hash) const - { - _GLIBCXX_DEBUG_ASSERT(!eq_fn_base::operator()(r_lhs_key, r_rhs_key) - || lhs_hash == rhs_hash); - - return (lhs_hash == rhs_hash && - eq_fn_base::operator()(r_lhs_key, r_rhs_key)); - } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - swap(const PB_DS_CLASS_C_DEC& other) - { std::swap((Eq_Fn& )(*this), (Eq_Fn& )(other)); } - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp deleted file mode 100644 index 4ac145d3d..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp +++ /dev/null @@ -1,223 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 constructor_destructor_fn_imps.hpp - * Contains implementations of gp_ht_map_'s constructors, destructor, - * and related functions. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::entry_allocator -PB_DS_CLASS_C_DEC::s_entry_allocator; - -PB_DS_CLASS_T_DEC -template<typename It> -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - insert(*(first_it++)); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME() -: ranged_probe_fn_base(resize_base::get_nearest_larger_size(1)), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn) -: ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn) -: hash_eq_fn_base(r_eq_fn), - ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, - const Comb_Probe_Fn& r_comb_hash_fn) -: hash_eq_fn_base(r_eq_fn), - ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), - r_hash_fn, r_comb_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, - const Comb_Probe_Fn& comb_hash_fn, const Probe_Fn& prober) -: hash_eq_fn_base(r_eq_fn), - ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), - r_hash_fn, comb_hash_fn, prober), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, - const Comb_Probe_Fn& comb_hash_fn, const Probe_Fn& prober, - const Resize_Policy& r_resize_policy) -: hash_eq_fn_base(r_eq_fn), resize_base(r_resize_policy), - ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), - r_hash_fn, comb_hash_fn, prober), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) : -#ifdef _GLIBCXX_DEBUG - debug_base(other), -#endif - hash_eq_fn_base(other), - resize_base(other), - ranged_probe_fn_base(other), - m_num_e(other.m_num_e), - m_num_used_e(other.m_num_used_e), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - for (size_type i = 0; i < m_num_e; ++i) - m_entries[i].m_stat = (entry_status)empty_entry_status; - - __try - { - for (size_type i = 0; i < m_num_e; ++i) - { - m_entries[i].m_stat = other.m_entries[i].m_stat; - if (m_entries[i].m_stat == valid_entry_status) - new (m_entries + i) entry(other.m_entries[i]); - } - } - __catch(...) - { - deallocate_all(); - __throw_exception_again; - } - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~PB_DS_CLASS_NAME() -{ deallocate_all(); } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid()); - _GLIBCXX_DEBUG_ONLY(other.assert_valid()); - std::swap(m_num_e, other.m_num_e); - std::swap(m_num_used_e, other.m_num_used_e); - std::swap(m_entries, other.m_entries); - ranged_probe_fn_base::swap(other); - hash_eq_fn_base::swap(other); - resize_base::swap(other); - _GLIBCXX_DEBUG_ONLY(debug_base::swap(other)); - _GLIBCXX_DEBUG_ONLY(assert_valid()); - _GLIBCXX_DEBUG_ONLY(other.assert_valid()); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -deallocate_all() -{ - clear(); - erase_all_valid_entries(m_entries, m_num_e); - s_entry_allocator.deallocate(m_entries, m_num_e); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_all_valid_entries(entry_array a_entries_resized, size_type len) -{ - for (size_type pos = 0; pos < len; ++pos) - { - entry_pointer p_e = &a_entries_resized[pos]; - if (p_e->m_stat == valid_entry_status) - p_e->m_value.~value_type(); - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ - Resize_Policy::notify_resized(m_num_e); - Resize_Policy::notify_cleared(); - ranged_probe_fn_base::notify_resized(m_num_e); - for (size_type i = 0; i < m_num_e; ++i) - m_entries[i].m_stat = empty_entry_status; -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp deleted file mode 100644 index ec8069839..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,53 +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 constructor_destructor_no_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s constructors, destructor, - * and related functions. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -constructor_insert_new_imp(const_mapped_reference r_val, size_type pos, - false_type) -{ - _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status)k; - entry* const p_e = m_entries + pos; - new (&p_e->m_value) mapped_value_type(r_val); - p_e->m_stat = valid_entry_status; - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(p_e->m_value.first);) -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp deleted file mode 100644 index 5f3048759..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +++ /dev/null @@ -1,54 +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 constructor_destructor_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s constructors, destructor, - * and related functions. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -constructor_insert_new_imp(const_mapped_reference r_val, size_type pos, - true_type) -{ - _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status); - entry* const p_e = m_entries + pos; - new (&p_e->m_value) mapped_value_type(r_val); - p_e->m_hash = ranged_probe_fn_base::operator()(PB_DS_V2F(r_val)).second; - p_e->m_stat = valid_entry_status; - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(p_e->m_value.first);) -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp deleted file mode 100644 index d7018c62c..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp +++ /dev/null @@ -1,55 +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 implementations of gp_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ - debug_base::check_size(m_num_used_e); - assert_entry_array_valid(m_entries, traits_base::m_store_extra_indicator); -} - -#include <ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp> - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp deleted file mode 100644 index 86b4d7daf..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,71 +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_no_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_entry_array_valid(const entry_array a_entries, false_type) const -{ - size_type iterated_num_used_e = 0; - for (size_type pos = 0; pos < m_num_e; ++pos) - { - const_entry_pointer p_e = &a_entries[pos]; - switch(p_e->m_stat) - { - case empty_entry_status: - case erased_entry_status: - break; - case valid_entry_status: - { - const_key_reference r_key = PB_DS_V2F(p_e->m_value); - debug_base::check_key_exists(r_key); - ++iterated_num_used_e; - break; - } - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - } - _GLIBCXX_DEBUG_ASSERT(iterated_num_used_e == m_num_used_e); -} - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp deleted file mode 100644 index 961f14361..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp +++ /dev/null @@ -1,77 +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_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_entry_array_valid(const entry_array a_entries, true_type) const -{ - size_type iterated_num_used_e = 0; - - for (size_type pos = 0; pos < m_num_e; ++pos) - { - const_entry_pointer p_e =& a_entries[pos]; - switch(p_e->m_stat) - { - case empty_entry_status: - case erased_entry_status: - break; - case valid_entry_status: - { - const_key_reference r_key = PB_DS_V2F(p_e->m_value); - debug_base::check_key_exists(r_key); - - const comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key); - - _GLIBCXX_DEBUG_ASSERT(p_e->m_hash == pos_hash_pair.second); - ++iterated_num_used_e; - break; - } - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - } - - _GLIBCXX_DEBUG_ASSERT(iterated_num_used_e == m_num_used_e); -} - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp deleted file mode 100644 index 68878eb2a..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp +++ /dev/null @@ -1,100 +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 implementations of gp_ht_map_'s erase related functions. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -erase_entry(entry_pointer p_e) -{ - _GLIBCXX_DEBUG_ASSERT(p_e->m_stat = valid_entry_status); - _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_e->m_value));) - p_e->m_value.~value_type(); - p_e->m_stat = erased_entry_status; - _GLIBCXX_DEBUG_ASSERT(m_num_used_e > 0); - resize_base::notify_erased(--m_num_used_e); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - for (size_type pos = 0; pos < m_num_e; ++pos) - { - entry_pointer p_e = &m_entries[pos]; - if (p_e->m_stat == valid_entry_status) - erase_entry(p_e); - } - do_resize_if_needed_no_throw(); - resize_base::notify_cleared(); -} - -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(PB_DS_CLASS_C_DEC::assert_valid();) - size_type num_ersd = 0; - for (size_type pos = 0; pos < m_num_e; ++pos) - { - entry_pointer p_e = &m_entries[pos]; - if (p_e->m_stat == valid_entry_status) - if (pred(p_e->m_value)) - { - ++num_ersd; - erase_entry(p_e); - } - } - - do_resize_if_needed_no_throw(); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) - return num_ersd; -} - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase(const_key_reference r_key) -{ return erase_imp(r_key, traits_base::m_store_extra_indicator); } - -#include <ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp> diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp deleted file mode 100644 index 40d578ebe..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,85 +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_no_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s erase related functions, - * when the hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase_imp(const_key_reference r_key, false_type) -{ - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) - size_type hash = ranged_probe_fn_base::operator()(r_key); - size_type i; - resize_base::notify_erase_search_start(); - - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i); - entry* const p_e = m_entries + pos; - switch(p_e->m_stat) - { - case empty_entry_status: - { - resize_base::notify_erase_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist( - r_key)); - return false; - } - break; - case valid_entry_status: - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key)) - { - resize_base::notify_erase_search_end(); - erase_entry(p_e); - do_resize_if_needed_no_throw(); - return true; - } - break; - case erased_entry_status: - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - resize_base::notify_erase_search_collision(); - } - resize_base::notify_erase_search_end(); - return false; -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp deleted file mode 100644 index 8155a5261..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp +++ /dev/null @@ -1,86 +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_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s erase related functions, - * when the hash value is stored. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase_imp(const_key_reference r_key, true_type) -{ - const comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key); - size_type i; - resize_base::notify_erase_search_start(); - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(r_key, pos_hash_pair.second, i); - - entry* const p_e = m_entries + pos; - switch(p_e->m_stat) - { - case empty_entry_status: - { - resize_base::notify_erase_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist( - r_key)); - return false; - } - break; - case valid_entry_status: - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash, - r_key, pos_hash_pair.second)) - { - resize_base::notify_erase_search_end(); - erase_entry(p_e); - do_resize_if_needed_no_throw(); - return true; - } - break; - case erased_entry_status: - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - - resize_base::notify_erase_search_collision(); - } - resize_base::notify_erase_search_end(); - return false; -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp deleted file mode 100644 index 69d53763a..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp +++ /dev/null @@ -1,70 +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 find_fn_imps.hpp - * Contains implementations of gp_ht_map_'s find related functions. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find(const_key_reference r_key) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return find_key_pointer(r_key, traits_base::m_store_extra_indicator); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_point_iterator -PB_DS_CLASS_C_DEC:: -find(const_key_reference r_key) const -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return const_cast<PB_DS_CLASS_C_DEC&>(*this).find_key_pointer(r_key, traits_base::m_store_extra_indicator); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find_end() -{ return NULL; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_point_iterator -PB_DS_CLASS_C_DEC:: -find_end() const -{ return NULL; } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp deleted file mode 100644 index 298604c80..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,46 +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 find_no_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s find related functions, - * when the hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::pointer -PB_DS_CLASS_C_DEC:: -find_key_pointer(const_key_reference r_key, false_type) - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp deleted file mode 100644 index a44b8326e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp +++ /dev/null @@ -1,40 +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 find_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s insert related functions, - * when the hash value is stored. - */ diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp deleted file mode 100644 index 4741afec0..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp +++ /dev/null @@ -1,677 +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 gp_ht_map_.hpp - * Contains an implementation class for gp_ht_map_. - */ - -#include <ext/pb_ds/tag_and_trait.hpp> -#include <ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp> -#include <ext/pb_ds/detail/types_traits.hpp> -#include <ext/pb_ds/exception.hpp> -#include <ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp> -#include <utility> -#ifdef PB_DS_HT_MAP_TRACE_ -#include <iostream> -#endif -#ifdef _GLIBCXX_DEBUG -#include <ext/pb_ds/detail/debug_map_base.hpp> -#endif -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_CLASS_T_DEC \ - template<typename Key, typename Mapped, typename Hash_Fn, typename Eq_Fn, \ - typename Allocator, bool Store_Hash, typename Comb_Probe_Fn, \ - typename Probe_Fn, typename Resize_Policy> - -#ifdef PB_DS_DATA_TRUE_INDICATOR -#define PB_DS_CLASS_NAME gp_ht_map_data_ -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#define PB_DS_CLASS_NAME gp_ht_map_no_data_ -#endif - -#define PB_DS_CLASS_C_DEC \ - PB_DS_CLASS_NAME<Key, Mapped, Hash_Fn, Eq_Fn, Allocator, \ - Store_Hash, Comb_Probe_Fn, Probe_Fn, Resize_Policy> - -#define PB_DS_HASH_EQ_FN_C_DEC \ - hash_eq_fn<Key, Eq_Fn, Allocator, Store_Hash> - -#define PB_DS_RANGED_PROBE_FN_C_DEC \ - ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, Probe_Fn, Store_Hash> - -#define PB_DS_TYPES_TRAITS_C_DEC \ - types_traits<Key, Mapped, Allocator, Store_Hash> - -#ifdef _GLIBCXX_DEBUG -#define PB_DS_DEBUG_MAP_BASE_C_DEC \ - debug_map_base<Key, Eq_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 -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#define PB_DS_V2F(X) (X) -#define PB_DS_V2S(X) Mapped() -#endif - - template<typename Key, - typename Mapped, - typename Hash_Fn, - typename Eq_Fn, - typename Allocator, - bool Store_Hash, - typename Comb_Probe_Fn, - typename Probe_Fn, - typename Resize_Policy> - class PB_DS_CLASS_NAME : -#ifdef _GLIBCXX_DEBUG - protected PB_DS_DEBUG_MAP_BASE_C_DEC, -#endif - public PB_DS_HASH_EQ_FN_C_DEC, - public Resize_Policy, - public PB_DS_RANGED_PROBE_FN_C_DEC, - public PB_DS_TYPES_TRAITS_C_DEC - { - private: - typedef PB_DS_TYPES_TRAITS_C_DEC traits_base; - 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 typename traits_base::comp_hash comp_hash; - - enum entry_status - { - empty_entry_status, - valid_entry_status, - erased_entry_status - } __attribute__ ((packed)); - - struct entry : public traits_base::stored_value_type - { - entry_status m_stat; - }; - - typedef typename Allocator::template rebind<entry>::other entry_allocator; - typedef typename entry_allocator::pointer entry_pointer; - typedef typename entry_allocator::const_pointer const_entry_pointer; - typedef typename entry_allocator::reference entry_reference; - typedef typename entry_allocator::const_reference const_entry_reference; - typedef typename entry_allocator::pointer entry_array; - - typedef PB_DS_RANGED_PROBE_FN_C_DEC ranged_probe_fn_base; - -#ifdef _GLIBCXX_DEBUG - typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base; -#endif - - typedef PB_DS_HASH_EQ_FN_C_DEC hash_eq_fn_base; - typedef Resize_Policy resize_base; - -#define PB_DS_GEN_POS typename Allocator::size_type - -#include <ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp> -#include <ext/pb_ds/detail/unordered_iterator/point_iterator.hpp> -#include <ext/pb_ds/detail/unordered_iterator/const_iterator.hpp> -#include <ext/pb_ds/detail/unordered_iterator/iterator.hpp> - -#undef PB_DS_GEN_POS - - public: - typedef Allocator allocator_type; - typedef typename Allocator::size_type size_type; - typedef typename Allocator::difference_type difference_type; - typedef Hash_Fn hash_fn; - typedef Eq_Fn eq_fn; - typedef Probe_Fn probe_fn; - typedef Comb_Probe_Fn comb_probe_fn; - typedef Resize_Policy resize_policy; - - enum - { - store_hash = Store_Hash - }; - - 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; - -#ifdef PB_DS_DATA_TRUE_INDICATOR - typedef point_iterator_ point_iterator; -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR - typedef const_point_iterator_ point_iterator; -#endif - - typedef const_point_iterator_ const_point_iterator; - -#ifdef PB_DS_DATA_TRUE_INDICATOR - typedef iterator_ iterator; -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR - typedef const_iterator_ iterator; -#endif - - typedef const_iterator_ const_iterator; - - PB_DS_CLASS_NAME(); - - PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&); - - PB_DS_CLASS_NAME(const Hash_Fn&); - - PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&); - - PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Probe_Fn&); - - PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Probe_Fn&, - const Probe_Fn&); - - PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Probe_Fn&, - const Probe_Fn&, const Resize_Policy&); - - template<typename It> - void - copy_from_range(It first_it, It last_it); - - virtual - ~PB_DS_CLASS_NAME(); - - void - swap(PB_DS_CLASS_C_DEC& other); - - inline size_type - size() const; - - inline size_type - max_size() const; - - inline bool - empty() const; - - Hash_Fn& - get_hash_fn(); - - const Hash_Fn& - get_hash_fn() const; - - Eq_Fn& - get_eq_fn(); - - const Eq_Fn& - get_eq_fn() const; - - Probe_Fn& - get_probe_fn(); - - const Probe_Fn& - get_probe_fn() const; - - Comb_Probe_Fn& - get_comb_probe_fn(); - - const Comb_Probe_Fn& - get_comb_probe_fn() const; - - Resize_Policy& - get_resize_policy(); - - const Resize_Policy& - get_resize_policy() const; - - inline std::pair<point_iterator, bool> - insert(const_reference r_val) - { - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) - return insert_imp(r_val, traits_base::m_store_extra_indicator); - } - - inline mapped_reference - operator[](const_key_reference r_key) - { -#ifdef PB_DS_DATA_TRUE_INDICATOR - return subscript_imp(r_key, traits_base::m_store_extra_indicator); -#else - insert(r_key); - return traits_base::s_null_mapped; -#endif - } - - inline point_iterator - find(const_key_reference r_key); - - inline const_point_iterator - find(const_key_reference r_key) const; - - inline point_iterator - find_end(); - - inline const_point_iterator - find_end() const; - - inline bool - erase(const_key_reference r_key); - - template<typename Pred> - inline size_type - erase_if(Pred prd); - - void - clear(); - - inline iterator - begin(); - - inline const_iterator - begin() const; - - inline iterator - end(); - - inline const_iterator - end() const; - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; -#endif - -#ifdef PB_DS_HT_MAP_TRACE_ - void - trace() const; -#endif - - private: -#ifdef PB_DS_DATA_TRUE_INDICATOR - friend class iterator_; -#endif - - friend class const_iterator_; - - void - deallocate_all(); - - void - initialize(); - - void - erase_all_valid_entries(entry_array, size_type); - - inline bool - do_resize_if_needed(); - - inline void - do_resize_if_needed_no_throw(); - - void - resize_imp(size_type); - - virtual void - do_resize(size_type); - - void - resize_imp(entry_array, size_type); - - inline void - resize_imp_reassign(entry_pointer, entry_array, false_type); - - inline void - resize_imp_reassign(entry_pointer, entry_array, true_type); - - inline size_type - find_ins_pos(const_key_reference, false_type); - - inline comp_hash - find_ins_pos(const_key_reference, true_type); - - inline std::pair<point_iterator, bool> - insert_imp(const_reference, false_type); - - inline std::pair<point_iterator, bool> - insert_imp(const_reference, true_type); - - inline pointer - insert_new_imp(const_reference r_val, size_type pos) - { - _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status); - - if (do_resize_if_needed()) - pos = find_ins_pos(PB_DS_V2F(r_val), - traits_base::m_store_extra_indicator); - - _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status); - - entry* const p_e = m_entries + pos; - new (&p_e->m_value) value_type(r_val); - p_e->m_stat = valid_entry_status; - resize_base::notify_inserted(++m_num_used_e); - - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(p_e->m_value));) - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return &p_e->m_value; - } - - inline pointer - insert_new_imp(const_reference r_val, comp_hash& r_pos_hash_pair) - { - _GLIBCXX_DEBUG_ASSERT(m_entries[r_pos_hash_pair.first].m_stat != - valid_entry_status); - - if (do_resize_if_needed()) - r_pos_hash_pair = find_ins_pos(PB_DS_V2F(r_val), - traits_base::m_store_extra_indicator); - - _GLIBCXX_DEBUG_ASSERT(m_entries[r_pos_hash_pair.first].m_stat != - valid_entry_status); - - entry* const p_e = m_entries + r_pos_hash_pair.first; - new (&p_e->m_value) value_type(r_val); - p_e->m_hash = r_pos_hash_pair.second; - p_e->m_stat = valid_entry_status; - - resize_base::notify_inserted(++m_num_used_e); - - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(p_e->m_value));) - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return &p_e->m_value; - } - -#ifdef PB_DS_DATA_TRUE_INDICATOR - inline mapped_reference - subscript_imp(const_key_reference key, false_type) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - const size_type pos = find_ins_pos(key, - traits_base::m_store_extra_indicator); - - entry_pointer p_e = &m_entries[pos]; - if (p_e->m_stat != valid_entry_status) - return insert_new_imp(value_type(key, mapped_type()), pos)->second; - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key);) - return p_e->m_value.second; - } - - inline mapped_reference - subscript_imp(const_key_reference key, true_type) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - comp_hash pos_hash_pair = - find_ins_pos(key, traits_base::m_store_extra_indicator); - - if (m_entries[pos_hash_pair.first].m_stat != valid_entry_status) - return insert_new_imp(value_type(key, mapped_type()), - pos_hash_pair)->second; - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key)); - return (m_entries + pos_hash_pair.first)->m_value.second; - } -#endif - - inline pointer - find_key_pointer(const_key_reference key, false_type) - { - const size_type hash = ranged_probe_fn_base::operator()(key); - size_type i; - resize_base::notify_find_search_start(); - - // Loop until entry is found or until all possible entries accessed. - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(key, hash, i); - - entry* const p_e = m_entries + pos; - switch (p_e->m_stat) - { - case empty_entry_status: - { - resize_base::notify_find_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);) - - return NULL; - } - break; - case valid_entry_status: - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), key)) - { - resize_base::notify_find_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key);) - - return pointer(&p_e->m_value); - } - break; - case erased_entry_status: - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - - resize_base::notify_find_search_collision(); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);) - resize_base::notify_find_search_end(); - return NULL; - } - - inline pointer - find_key_pointer(const_key_reference key, true_type) - { - comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(key); - size_type i; - resize_base::notify_find_search_start(); - - // Loop until entry is found or until all possible entries accessed. - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = - ranged_probe_fn_base::operator()(key, pos_hash_pair.second, i); - - entry* const p_e = m_entries + pos; - - switch(p_e->m_stat) - { - case empty_entry_status: - { - resize_base::notify_find_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);) - - return NULL; - } - break; - case valid_entry_status: - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), - p_e->m_hash, - key, pos_hash_pair.second)) - { - resize_base::notify_find_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key);) - return pointer(&p_e->m_value); - } - break; - case erased_entry_status: - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - - resize_base::notify_find_search_collision(); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);) - resize_base::notify_find_search_end(); - return NULL; - } - - inline bool - erase_imp(const_key_reference, true_type); - - inline bool - erase_imp(const_key_reference, false_type); - - inline void - erase_entry(entry_pointer p_e); - -#ifdef PB_DS_DATA_TRUE_INDICATOR - void - inc_it_state(pointer& r_p_value, size_type& r_pos) const - { inc_it_state((const_mapped_pointer& )r_p_value, r_pos); } -#endif - - void - inc_it_state(const_pointer& r_p_value, size_type& r_pos) const - { - _GLIBCXX_DEBUG_ASSERT(r_p_value != NULL); - for (++r_pos; r_pos < m_num_e; ++r_pos) - { - const_entry_pointer p_e =& m_entries[r_pos]; - if (p_e->m_stat == valid_entry_status) - { - r_p_value =& p_e->m_value; - return; - } - } - r_p_value = NULL; - } - - void - get_start_it_state(const_pointer& r_p_value, size_type& r_pos) const - { - for (r_pos = 0; r_pos < m_num_e; ++r_pos) - { - const_entry_pointer p_e = &m_entries[r_pos]; - if (p_e->m_stat == valid_entry_status) - { - r_p_value = &p_e->m_value; - return; - } - } - r_p_value = NULL; - } - - void - get_start_it_state(pointer& r_p_value, size_type& r_pos) - { - for (r_pos = 0; r_pos < m_num_e; ++r_pos) - { - entry_pointer p_e = &m_entries[r_pos]; - if (p_e->m_stat == valid_entry_status) - { - r_p_value = &p_e->m_value; - return; - } - } - r_p_value = NULL; - } - -#ifdef _GLIBCXX_DEBUG - void - assert_entry_array_valid(const entry_array, false_type) const; - - void - assert_entry_array_valid(const entry_array, true_type) const; -#endif - - static entry_allocator s_entry_allocator; - static iterator s_end_it; - static const_iterator s_const_end_it; - - size_type m_num_e; - size_type m_num_used_e; - entry_pointer m_entries; - - enum - { - store_hash_ok = !Store_Hash - || !is_same<Hash_Fn, __gnu_pbds::null_hash_fn>::value - }; - - PB_DS_STATIC_ASSERT(sth, store_hash_ok); - }; - -#include <ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp> - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_HASH_EQ_FN_C_DEC -#undef PB_DS_RANGED_PROBE_FN_C_DEC -#undef PB_DS_TYPES_TRAITS_C_DEC -#undef PB_DS_DEBUG_MAP_BASE_C_DEC -#undef PB_DS_CLASS_NAME -#undef PB_DS_V2F -#undef PB_DS_V2S - - } // namespace detail -} // namespace __gnu_pbds - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp deleted file mode 100644 index 423a9288e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp +++ /dev/null @@ -1,58 +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 implementations of gp_ht_map_'s entire container info related - * functions. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ return m_num_used_e; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -max_size() const -{ return s_entry_allocator.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/gp_hash_table_map_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp deleted file mode 100644 index 101ce8c6b..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp +++ /dev/null @@ -1,43 +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 implementations of gp_ht_map_'s insert related functions. - */ - -#include <ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp> - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp deleted file mode 100644 index 3227a4aaa..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,111 +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_no_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s insert related functions, - * when the hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -find_ins_pos(const_key_reference r_key, false_type) -{ - size_type hash = ranged_probe_fn_base::operator()(r_key); - size_type i; - - /* The insertion position is initted to a non-legal value to indicate - * that it has not been initted yet. - */ - size_type ins_pos = m_num_e; - resize_base::notify_insert_search_start(); - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i); - _GLIBCXX_DEBUG_ASSERT(pos < m_num_e); - entry* const p_e = m_entries + pos; - switch(p_e->m_stat) - { - case empty_entry_status: - { - resize_base::notify_insert_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - return (ins_pos == m_num_e) ? pos : ins_pos; - } - break; - case erased_entry_status: - if (ins_pos == m_num_e) - ins_pos = pos; - break; - case valid_entry_status: - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key)) - { - resize_base::notify_insert_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);) - return pos; - } - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - - resize_base::notify_insert_search_collision(); - } - resize_base::notify_insert_search_end(); - if (ins_pos == m_num_e) - __throw_insert_error(); - return ins_pos; -} - -PB_DS_CLASS_T_DEC -inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool> -PB_DS_CLASS_C_DEC:: -insert_imp(const_reference r_val, false_type) -{ - const_key_reference r_key = PB_DS_V2F(r_val); - const size_type pos = find_ins_pos(r_key, - traits_base::m_store_extra_indicator); - - if (m_entries[pos].m_stat == valid_entry_status) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);) - return std::make_pair(&(m_entries + pos)->m_value, false); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key)); - return std::make_pair(insert_new_imp(r_val, pos), true); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp deleted file mode 100644 index f4310b629..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp +++ /dev/null @@ -1,118 +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_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s find related functions, - * when the hash value is stored. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::comp_hash -PB_DS_CLASS_C_DEC:: -find_ins_pos(const_key_reference r_key, true_type) -{ - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) - comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key); - - size_type i; - - /* The insertion position is initted to a non-legal value to indicate - * that it has not been initted yet. - */ - size_type ins_pos = m_num_e; - resize_base::notify_insert_search_start(); - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(r_key, pos_hash_pair.second, i); - - entry* const p_e = m_entries + pos; - switch(p_e->m_stat) - { - case empty_entry_status: - { - resize_base::notify_insert_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - - return ((ins_pos == m_num_e) ? - std::make_pair(pos, pos_hash_pair.second) : - std::make_pair(ins_pos, pos_hash_pair.second)); - } - break; - case erased_entry_status: - if (ins_pos == m_num_e) - ins_pos = pos; - break; - case valid_entry_status: - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash, - r_key, pos_hash_pair.second)) - { - resize_base::notify_insert_search_end(); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);) - return std::make_pair(pos, pos_hash_pair.second); - } - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - resize_base::notify_insert_search_collision(); - } - resize_base::notify_insert_search_end(); - if (ins_pos == m_num_e) - __throw_insert_error(); - return std::make_pair(ins_pos, pos_hash_pair.second); -} - -PB_DS_CLASS_T_DEC -inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool> -PB_DS_CLASS_C_DEC:: -insert_imp(const_reference r_val, true_type) -{ - const_key_reference r_key = PB_DS_V2F(r_val); - comp_hash pos_hash_pair = find_ins_pos(r_key, - traits_base::m_store_extra_indicator); - - _GLIBCXX_DEBUG_ASSERT(pos_hash_pair.first < m_num_e); - entry_pointer p_e =& m_entries[pos_hash_pair.first]; - if (p_e->m_stat == valid_entry_status) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key)); - return std::make_pair(&p_e->m_value, false); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key)); - return std::make_pair(insert_new_imp(r_val, pos_hash_pair), true); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp deleted file mode 100644 index ff1f80f28..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp +++ /dev/null @@ -1,83 +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 iterator_fn_imps.hpp - * Contains implementations of gp_ht_map_'s iterators related functions, e.g., - * begin(). - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC::s_end_it; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC::s_const_end_it; - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ - pointer_ p_value; - size_type pos; - get_start_it_state(p_value, pos); - return iterator(p_value, pos, this); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ return s_end_it; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ - const_pointer_ p_value; - size_type pos; - get_start_it_state(p_value, pos); - return const_iterator(p_value, pos, this); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ return s_const_end_it; } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp deleted file mode 100644 index b1a3f7a7e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp +++ /dev/null @@ -1,100 +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 implementations of gp_ht_map_'s policy agpess - * functions. - */ - -PB_DS_CLASS_T_DEC -Hash_Fn& -PB_DS_CLASS_C_DEC:: -get_hash_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Hash_Fn& -PB_DS_CLASS_C_DEC:: -get_hash_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Eq_Fn& -PB_DS_CLASS_C_DEC:: -get_eq_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Eq_Fn& -PB_DS_CLASS_C_DEC:: -get_eq_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Probe_Fn& -PB_DS_CLASS_C_DEC:: -get_probe_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Probe_Fn& -PB_DS_CLASS_C_DEC:: -get_probe_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Comb_Probe_Fn& -PB_DS_CLASS_C_DEC:: -get_comb_probe_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Comb_Probe_Fn& -PB_DS_CLASS_C_DEC:: -get_comb_probe_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Resize_Policy& -PB_DS_CLASS_C_DEC:: -get_resize_policy() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Resize_Policy& -PB_DS_CLASS_C_DEC:: -get_resize_policy() const -{ return *this; } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp deleted file mode 100644 index 82a8ab0d2..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp +++ /dev/null @@ -1,137 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 resize_fn_imps.hpp - * Contains implementations of gp_ht_map_'s resize related functions. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -do_resize_if_needed() -{ - if (!resize_base::is_resize_needed()) - return false; - resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e)); - return true; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -do_resize(size_type n) -{ resize_imp(resize_base::get_nearest_larger_size(n)); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -do_resize_if_needed_no_throw() -{ - if (!resize_base::is_resize_needed()) - return; - - __try - { - resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e)); - } - __catch(...) - { } - - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -resize_imp(size_type new_size) -{ -#ifdef PB_DS_REGRESSION - typename Allocator::group_throw_prob_adjustor adjust(m_num_e); -#endif - - if (new_size == m_num_e) - return; - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - const size_type old_size = m_num_e; - entry_array a_entries_resized = NULL; - - // Following line might throw an exception. - a_entries_resized = s_entry_allocator.allocate(new_size); - - ranged_probe_fn_base::notify_resized(new_size); - m_num_e = new_size; - - for (size_type i = 0; i < m_num_e; ++i) - a_entries_resized[i].m_stat = empty_entry_status; - - __try - { - resize_imp(a_entries_resized, old_size); - } - __catch(...) - { - erase_all_valid_entries(a_entries_resized, new_size); - m_num_e = old_size; - s_entry_allocator.deallocate(a_entries_resized, new_size); - ranged_probe_fn_base::notify_resized(old_size); - __throw_exception_again; - } - - // At this point no exceptions can be thrown. - _GLIBCXX_DEBUG_ONLY(assert_entry_array_valid(a_entries_resized, traits_base::m_store_extra_indicator);) - - Resize_Policy::notify_resized(new_size); - erase_all_valid_entries(m_entries, old_size); - s_entry_allocator.deallocate(m_entries, old_size); - m_entries = a_entries_resized; - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -resize_imp(entry_array a_entries_resized, size_type old_size) -{ - for (size_type pos = 0; pos < old_size; ++pos) - if (m_entries[pos].m_stat == valid_entry_status) - resize_imp_reassign(m_entries + pos, a_entries_resized, - traits_base::m_store_extra_indicator); -} - -#include <ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp> -#include <ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp> - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp deleted file mode 100644 index 1d2839e0a..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,72 +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 resize_no_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s resize related functions, when the - * hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -resize_imp_reassign(entry_pointer p_e, entry_array a_entries_resized, - false_type) -{ - const_key_reference r_key = PB_DS_V2F(p_e->m_value); - size_type hash = ranged_probe_fn_base::operator()(r_key); - size_type i; - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i); - entry_pointer p_new_e = a_entries_resized + pos; - switch(p_new_e->m_stat) - { - case empty_entry_status: - new (&p_new_e->m_value) value_type(p_e->m_value); - p_new_e->m_stat = valid_entry_status; - return; - case erased_entry_status: - _GLIBCXX_DEBUG_ASSERT(0); - break; - case valid_entry_status: - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - } - __throw_insert_error(); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp deleted file mode 100644 index 765e9624b..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.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 resize_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s resize related functions, when the - * hash value is stored. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -resize_imp_reassign(entry_pointer p_e, entry_array a_entries_resized, - true_type) -{ - const_key_reference r_key = PB_DS_V2F(p_e->m_value); - size_type hash = ranged_probe_fn_base::operator()(r_key, p_e->m_hash); - - size_type i; - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i); - entry_pointer p_new_e = a_entries_resized + pos; - switch(p_new_e->m_stat) - { - case empty_entry_status: - new (&p_new_e->m_value) value_type(p_e->m_value); - p_new_e->m_hash = hash; - p_new_e->m_stat = valid_entry_status; - return; - case erased_entry_status: - _GLIBCXX_DEBUG_ASSERT(0); - break; - case valid_entry_status: - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - } - __throw_insert_error(); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp deleted file mode 100644 index 479725fd5..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.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 standard_policies.hpp - * Contains standard policies for gp_ht_map types. - */ - -#ifndef PB_DS_GP_HT_MAP_STANDARD_POLICIES_HPP -#define PB_DS_GP_HT_MAP_STANDARD_POLICIES_HPP - -#include <ext/pb_ds/detail/standard_policies.hpp> -#include <ext/pb_ds/ht_load_check_resize_trigger.hpp> -#include <ext/pb_ds/linear_probe_fn.hpp> -#include <ext/pb_ds/quadratic_probe_fn.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Comb_Probe_Fn> - struct default_probe_fn - { - private: - typedef typename Comb_Probe_Fn::size_type size_type; - - public: - typedef - typename __conditional_type< - is_same< - __gnu_pbds::direct_mask_range_hashing<size_t>, - Comb_Probe_Fn>::value, - __gnu_pbds::linear_probe_fn<size_type>, - __gnu_pbds::quadratic_probe_fn<size_type> >::__type - type; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp deleted file mode 100644 index c3fe13c00..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.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 trace_fn_imps.hpp - * Contains implementations of gp_ht_map_'s trace-mode functions. - */ - -#ifdef PB_DS_HT_MAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << static_cast<unsigned long>(m_num_e) << " " << - static_cast<unsigned long>(m_num_used_e) << std::endl; - - for (size_type i = 0; i < m_num_e; ++i) - { - std::cerr << static_cast<unsigned long>(i) << " "; - - switch(m_entries[i].m_stat) - { - case empty_entry_status: - std::cerr << "<empty>"; - break; - case erased_entry_status: - std::cerr << "<erased>"; - break; - case valid_entry_status: - std::cerr << PB_DS_V2F(m_entries[i].m_value); - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - - std::cerr << std::endl; - } -} - -#endif // #ifdef PB_DS_HT_MAP_TRACE_ diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp deleted file mode 100644 index caf78482a..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp +++ /dev/null @@ -1,58 +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 direct_mask_range_hashing_imp.hpp - * Contains a range-hashing policy implementation - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ mask_based_base::swap(other); } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -notify_resized(size_type size) -{ mask_based_base::notify_resized(size); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -operator()(size_type hash) const -{ return mask_based_base::range_hash(hash); } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp deleted file mode 100644 index 17d57b23d..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp +++ /dev/null @@ -1,58 +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 direct_mod_range_hashing_imp.hpp - * Contains a range-hashing policy implementation - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ mod_based_base::swap(other); } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -notify_resized(size_type n) -{ mod_based_base::notify_resized(n); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -operator()(size_type hash) const -{ return mod_based_base::range_hash(hash); } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp deleted file mode 100644 index e7b264493..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp +++ /dev/null @@ -1,53 +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 linear_probe_fn_imp.hpp - * Contains a probe policy implementation - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -operator()(size_type i) const -{ - return (i); -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp deleted file mode 100644 index 936abbee1..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp +++ /dev/null @@ -1,107 +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 mask_based_range_hashing.hpp - * Contains a range hashing policy base. - */ - -#ifndef PB_DS_MASK_BASED_RANGE_HASHING_HPP -#define PB_DS_MASK_BASED_RANGE_HASHING_HPP - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_CLASS_T_DEC template<typename Size_Type> -#define PB_DS_CLASS_C_DEC mask_based_range_hashing<Size_Type> - - template<typename Size_Type> - class mask_based_range_hashing - { - protected: - typedef Size_Type size_type; - - void - swap(mask_based_range_hashing& other) - { std::swap(m_mask, other.m_mask); } - - void - notify_resized(size_type size); - - inline size_type - range_hash(size_type hash) const - { return size_type(hash & m_mask); } - - private: - size_type m_mask; - const static size_type s_num_bits_in_size_type; - const static size_type s_highest_bit_1; - }; - - PB_DS_CLASS_T_DEC - const typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC::s_num_bits_in_size_type = - sizeof(typename PB_DS_CLASS_C_DEC::size_type) << 3; - - PB_DS_CLASS_T_DEC - const typename PB_DS_CLASS_C_DEC::size_type PB_DS_CLASS_C_DEC::s_highest_bit_1 = static_cast<typename PB_DS_CLASS_C_DEC::size_type>(1) << (s_num_bits_in_size_type - 1); - - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - notify_resized(size_type size) - { - size_type i = 0; - while (size ^ s_highest_bit_1) - { - size <<= 1; - ++i; - } - - m_mask = 1; - i += 2; - while (i++ < s_num_bits_in_size_type) - m_mask = (m_mask << 1) ^ 1; - } - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp deleted file mode 100644 index 2610e0457..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp +++ /dev/null @@ -1,108 +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 mod_based_range_hashing.hpp - * Contains a range hashing policy base. - */ - -#ifndef PB_DS_MOD_BASED_RANGE_HASHING_HPP -#define PB_DS_MOD_BASED_RANGE_HASHING_HPP - -namespace __gnu_pbds -{ - - namespace detail - { - -#define PB_DS_CLASS_T_DEC \ - template<typename Size_Type> - -#define PB_DS_CLASS_C_DEC \ - mod_based_range_hashing< \ - Size_Type> - - template<typename Size_Type> - class mod_based_range_hashing - { - protected: - typedef Size_Type size_type; - - protected: - void - swap(PB_DS_CLASS_C_DEC& other); - - void - notify_resized(size_type size); - - inline size_type - range_hash(size_type hash) const; - - private: - size_type m_size; - }; - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - swap(PB_DS_CLASS_C_DEC& other) - { - std::swap(m_size, other.m_size); - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - notify_resized(size_type size) - { - m_size = size; - } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - range_hash(size_type hash) const - { - return (hash % m_size); - } - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - - } // namespace detail - -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_MOD_BASED_RANGE_HASHING_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp deleted file mode 100644 index 970cfc1e5..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp +++ /dev/null @@ -1,59 +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 probe_fn_base.hpp - * Contains a probe policy base. - */ - -#ifndef PB_DS_PROBE_FN_BASE_HPP -#define PB_DS_PROBE_FN_BASE_HPP - -#include <functional> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Allocator> - class probe_fn_base - { - protected: - ~probe_fn_base() { } - }; -} // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp deleted file mode 100644 index 4c7a6c465..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp +++ /dev/null @@ -1,53 +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 quadratic_probe_fn_imp.hpp - * Contains a probe policy implementation - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -operator()(size_type i) const -{ - return (i* i); -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp deleted file mode 100644 index 24899272f..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp +++ /dev/null @@ -1,359 +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 ranged_hash_fn.hpp - * Contains a unified ranged hash functor, allowing the hash tables - * to deal with a single class for ranged hashing. - */ - -#ifndef PB_DS_RANGED_HASH_FN_HPP -#define PB_DS_RANGED_HASH_FN_HPP - -#include <ext/pb_ds/detail/basic_types.hpp> -#include <utility> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Key, typename Hash_Fn, typename Allocator, - typename Comb_Hash_Fn, bool Store_Hash> - class ranged_hash_fn; - -#define PB_DS_CLASS_T_DEC \ - template<typename Key, typename Hash_Fn, typename Allocator, \ - typename Comb_Hash_Fn> - -#define PB_DS_CLASS_C_DEC \ - ranged_hash_fn<Key, Hash_Fn, Allocator, Comb_Hash_Fn, false> - - /** - * Specialization 1 - * The client supplies a hash function and a ranged hash function, - * and requests that hash values not be stored. - **/ - template<typename Key, typename Hash_Fn, typename Allocator, - typename Comb_Hash_Fn> - class ranged_hash_fn< Key, Hash_Fn, Allocator, Comb_Hash_Fn, false> - : public Hash_Fn, public Comb_Hash_Fn - { - protected: - typedef typename Allocator::size_type size_type; - typedef Hash_Fn hash_fn_base; - typedef Comb_Hash_Fn comb_hash_fn_base; - typedef typename Allocator::template rebind< Key>::other key_allocator; - typedef typename key_allocator::const_reference const_key_reference; - - ranged_hash_fn(size_type); - - ranged_hash_fn(size_type, const Hash_Fn&); - - ranged_hash_fn(size_type, const Hash_Fn&, const Comb_Hash_Fn&); - - void - swap(PB_DS_CLASS_C_DEC&); - - void - notify_resized(size_type); - - inline size_type - operator()(const_key_reference) const; - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_hash_fn(size_type size) - { Comb_Hash_Fn::notify_resized(size); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_hash_fn(size_type size, const Hash_Fn& r_hash_fn) - : Hash_Fn(r_hash_fn) - { Comb_Hash_Fn::notify_resized(size); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_hash_fn(size_type size, const Hash_Fn& r_hash_fn, - const Comb_Hash_Fn& r_comb_hash_fn) - : Hash_Fn(r_hash_fn), Comb_Hash_Fn(r_comb_hash_fn) - { comb_hash_fn_base::notify_resized(size); } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - swap(PB_DS_CLASS_C_DEC& other) - { - comb_hash_fn_base::swap(other); - std::swap((Hash_Fn& )(*this), (Hash_Fn& )other); - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - notify_resized(size_type size) - { comb_hash_fn_base::notify_resized(size); } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - operator()(const_key_reference r_key) const - { return (comb_hash_fn_base::operator()(hash_fn_base::operator()(r_key)));} - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - -#define PB_DS_CLASS_T_DEC \ - template<typename Key, typename Hash_Fn, typename Allocator, \ - typename Comb_Hash_Fn> - -#define PB_DS_CLASS_C_DEC \ - ranged_hash_fn<Key,Hash_Fn, Allocator, Comb_Hash_Fn, true> - - /** - * Specialization 2 - * The client supplies a hash function and a ranged hash function, - * and requests that hash values be stored. - **/ - template<typename Key, typename Hash_Fn, typename Allocator, - typename Comb_Hash_Fn> - class ranged_hash_fn<Key, Hash_Fn, Allocator, Comb_Hash_Fn, true> - : public Hash_Fn, public Comb_Hash_Fn - { - protected: - typedef typename Allocator::size_type size_type; - typedef std::pair<size_type, size_type> comp_hash; - typedef Hash_Fn hash_fn_base; - typedef Comb_Hash_Fn comb_hash_fn_base; - typedef typename Allocator::template rebind<Key>::other key_allocator; - typedef typename key_allocator::const_reference const_key_reference; - - ranged_hash_fn(size_type); - - ranged_hash_fn(size_type, const Hash_Fn&); - - ranged_hash_fn(size_type, const Hash_Fn&, const Comb_Hash_Fn&); - - void - swap(PB_DS_CLASS_C_DEC&); - - void - notify_resized(size_type); - - inline comp_hash - operator()(const_key_reference) const; - - inline comp_hash - operator()(const_key_reference, size_type) const; - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_hash_fn(size_type size) - { Comb_Hash_Fn::notify_resized(size); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_hash_fn(size_type size, const Hash_Fn& r_hash_fn) : - Hash_Fn(r_hash_fn) - { Comb_Hash_Fn::notify_resized(size); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_hash_fn(size_type size, const Hash_Fn& r_hash_fn, - const Comb_Hash_Fn& r_comb_hash_fn) - : Hash_Fn(r_hash_fn), Comb_Hash_Fn(r_comb_hash_fn) - { comb_hash_fn_base::notify_resized(size); } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - swap(PB_DS_CLASS_C_DEC& other) - { - comb_hash_fn_base::swap(other); - std::swap((Hash_Fn& )(*this), (Hash_Fn& )other); - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - notify_resized(size_type size) - { comb_hash_fn_base::notify_resized(size); } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::comp_hash - PB_DS_CLASS_C_DEC:: - operator()(const_key_reference r_key) const - { - const size_type hash = hash_fn_base::operator()(r_key); - return std::make_pair(comb_hash_fn_base::operator()(hash), hash); - } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::comp_hash - PB_DS_CLASS_C_DEC:: - operator() -#ifdef _GLIBCXX_DEBUG - (const_key_reference r_key, size_type hash) const -#else - (const_key_reference /*r_key*/, size_type hash) const -#endif - { - _GLIBCXX_DEBUG_ASSERT(hash == hash_fn_base::operator()(r_key)); - return std::make_pair(comb_hash_fn_base::operator()(hash), hash); - } - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - -#define PB_DS_CLASS_T_DEC \ - template<typename Key, typename Allocator, typename Comb_Hash_Fn> - -#define PB_DS_CLASS_C_DEC \ - ranged_hash_fn<Key, null_hash_fn, Allocator, Comb_Hash_Fn, false> - - /** - * Specialization 3 - * The client does not supply a hash function (by specifying - * null_hash_fn as the Hash_Fn parameter), and requests that hash - * values not be stored. - **/ - template<typename Key, typename Allocator, typename Comb_Hash_Fn> - class ranged_hash_fn<Key, null_hash_fn, Allocator, Comb_Hash_Fn, false> - : public null_hash_fn, public Comb_Hash_Fn - { - protected: - typedef typename Allocator::size_type size_type; - typedef Comb_Hash_Fn comb_hash_fn_base; - - ranged_hash_fn(size_type); - - ranged_hash_fn(size_type, const Comb_Hash_Fn&); - - ranged_hash_fn(size_type, const null_hash_fn&, const Comb_Hash_Fn&); - - void - swap(PB_DS_CLASS_C_DEC&); - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_hash_fn(size_type size) - { Comb_Hash_Fn::notify_resized(size); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_hash_fn(size_type size, const Comb_Hash_Fn& r_comb_hash_fn) : - Comb_Hash_Fn(r_comb_hash_fn) - { } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_hash_fn(size_type size, const null_hash_fn& r_null_hash_fn, - const Comb_Hash_Fn& r_comb_hash_fn) - : Comb_Hash_Fn(r_comb_hash_fn) - { } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - swap(PB_DS_CLASS_C_DEC& other) - { comb_hash_fn_base::swap(other); } - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - -#define PB_DS_CLASS_T_DEC \ - template<typename Key, typename Allocator, typename Comb_Hash_Fn> - -#define PB_DS_CLASS_C_DEC \ - ranged_hash_fn<Key, null_hash_fn, Allocator, Comb_Hash_Fn, true> - - /** - * Specialization 4 - * The client does not supply a hash function (by specifying - * null_hash_fn as the Hash_Fn parameter), and requests that hash - * values be stored. - **/ - template<typename Key, typename Allocator, typename Comb_Hash_Fn> - class ranged_hash_fn<Key, null_hash_fn, Allocator, Comb_Hash_Fn, true> - : public null_hash_fn, public Comb_Hash_Fn - { - protected: - typedef typename Allocator::size_type size_type; - typedef Comb_Hash_Fn comb_hash_fn_base; - - ranged_hash_fn(size_type); - - ranged_hash_fn(size_type, const Comb_Hash_Fn&); - - ranged_hash_fn(size_type, const null_hash_fn&, const Comb_Hash_Fn&); - - void - swap(PB_DS_CLASS_C_DEC&); - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_hash_fn(size_type size) - { Comb_Hash_Fn::notify_resized(size); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_hash_fn(size_type size, const Comb_Hash_Fn& r_comb_hash_fn) - : Comb_Hash_Fn(r_comb_hash_fn) - { } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_hash_fn(size_type size, const null_hash_fn& r_null_hash_fn, - const Comb_Hash_Fn& r_comb_hash_fn) - : Comb_Hash_Fn(r_comb_hash_fn) - { } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - swap(PB_DS_CLASS_C_DEC& other) - { comb_hash_fn_base::swap(other); } - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp deleted file mode 100644 index ddfba9de1..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp +++ /dev/null @@ -1,327 +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 ranged_probe_fn.hpp - * Contains a unified ranged probe functor, allowing the probe tables to deal with - * a single class for ranged probeing. - */ - -#ifndef PB_DS_RANGED_PROBE_FN_HPP -#define PB_DS_RANGED_PROBE_FN_HPP - -#include <ext/pb_ds/detail/basic_types.hpp> -#include <utility> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Key, typename Hash_Fn, typename Allocator, - typename Comb_Probe_Fn, typename Probe_Fn, bool Store_Hash> - class ranged_probe_fn; - -#define PB_DS_CLASS_T_DEC \ - template<typename Key, typename Hash_Fn, typename Allocator, \ - typename Comb_Probe_Fn, typename Probe_Fn> - -#define PB_DS_CLASS_C_DEC \ - ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, Probe_Fn, false> - - /** - * Specialization 1 - * The client supplies a probe function and a ranged probe - * function, and requests that hash values not be stored. - **/ - template<typename Key, typename Hash_Fn, typename Allocator, - typename Comb_Probe_Fn, typename Probe_Fn> - class ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, - Probe_Fn, false> - : public Hash_Fn, public Comb_Probe_Fn, public Probe_Fn - { - protected: - typedef typename Allocator::size_type size_type; - typedef Comb_Probe_Fn comb_probe_fn_base; - typedef Hash_Fn hash_fn_base; - typedef Probe_Fn probe_fn_base; - typedef typename Allocator::template rebind<Key>::other key_allocator; - typedef typename key_allocator::const_reference const_key_reference; - - ranged_probe_fn(size_type); - - ranged_probe_fn(size_type, const Hash_Fn&); - - ranged_probe_fn(size_type, const Hash_Fn&, const Comb_Probe_Fn&); - - ranged_probe_fn(size_type, const Hash_Fn&, const Comb_Probe_Fn&, - const Probe_Fn&); - - void - swap(PB_DS_CLASS_C_DEC&); - - void - notify_resized(size_type); - - inline size_type - operator()(const_key_reference) const; - - inline size_type - operator()(const_key_reference, size_type, size_type) const; - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_probe_fn(size_type size) - { Comb_Probe_Fn::notify_resized(size); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn) - : Hash_Fn(r_hash_fn) - { Comb_Probe_Fn::notify_resized(size); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn, - const Comb_Probe_Fn& r_comb_probe_fn) - : Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn) - { comb_probe_fn_base::notify_resized(size); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn, - const Comb_Probe_Fn& r_comb_probe_fn, - const Probe_Fn& r_probe_fn) - : Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn), Probe_Fn(r_probe_fn) - { comb_probe_fn_base::notify_resized(size); } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - swap(PB_DS_CLASS_C_DEC& other) - { - comb_probe_fn_base::swap(other); - std::swap((Hash_Fn& )(*this), (Hash_Fn&)other); - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - notify_resized(size_type size) - { comb_probe_fn_base::notify_resized(size); } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - operator()(const_key_reference r_key) const - { return comb_probe_fn_base::operator()(hash_fn_base::operator()(r_key)); } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - operator()(const_key_reference, size_type hash, size_type i) const - { - return comb_probe_fn_base::operator()(hash + probe_fn_base::operator()(i)); - } - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - -#define PB_DS_CLASS_T_DEC \ - template<typename Key, typename Hash_Fn, typename Allocator, \ - typename Comb_Probe_Fn, typename Probe_Fn> - -#define PB_DS_CLASS_C_DEC \ - ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, Probe_Fn, true> - - /** - * Specialization 2- The client supplies a probe function and a ranged - * probe function, and requests that hash values not be stored. - **/ - template<typename Key, typename Hash_Fn, typename Allocator, - typename Comb_Probe_Fn, typename Probe_Fn> - class ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, - Probe_Fn, true> - : public Hash_Fn, public Comb_Probe_Fn, public Probe_Fn - { - protected: - typedef typename Allocator::size_type size_type; - typedef std::pair<size_type, size_type> comp_hash; - typedef Comb_Probe_Fn comb_probe_fn_base; - typedef Hash_Fn hash_fn_base; - typedef Probe_Fn probe_fn_base; - typedef typename Allocator::template rebind<Key>::other key_allocator; - typedef typename key_allocator::const_reference const_key_reference; - - ranged_probe_fn(size_type); - - ranged_probe_fn(size_type, const Hash_Fn&); - - ranged_probe_fn(size_type, const Hash_Fn&, - const Comb_Probe_Fn&); - - ranged_probe_fn(size_type, const Hash_Fn&, const Comb_Probe_Fn&, - const Probe_Fn&); - - void - swap(PB_DS_CLASS_C_DEC&); - - void - notify_resized(size_type); - - inline comp_hash - operator()(const_key_reference) const; - - inline size_type - operator()(const_key_reference, size_type, size_type) const; - - inline size_type - operator()(const_key_reference, size_type) const; - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_probe_fn(size_type size) - { Comb_Probe_Fn::notify_resized(size); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn) - : Hash_Fn(r_hash_fn) - { Comb_Probe_Fn::notify_resized(size); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn, - const Comb_Probe_Fn& r_comb_probe_fn) - : Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn) - { comb_probe_fn_base::notify_resized(size); } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn, - const Comb_Probe_Fn& r_comb_probe_fn, - const Probe_Fn& r_probe_fn) - : Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn), Probe_Fn(r_probe_fn) - { comb_probe_fn_base::notify_resized(size); } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - swap(PB_DS_CLASS_C_DEC& other) - { - comb_probe_fn_base::swap(other); - std::swap((Hash_Fn& )(*this), (Hash_Fn& )other); - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - notify_resized(size_type size) - { comb_probe_fn_base::notify_resized(size); } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::comp_hash - PB_DS_CLASS_C_DEC:: - operator()(const_key_reference r_key) const - { - const size_type hash = hash_fn_base::operator()(r_key); - return std::make_pair(comb_probe_fn_base::operator()(hash), hash); - } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - operator()(const_key_reference, size_type hash, size_type i) const - { - return comb_probe_fn_base::operator()(hash + probe_fn_base::operator()(i)); - } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - operator() -#ifdef _GLIBCXX_DEBUG - (const_key_reference r_key, size_type hash) const -#else - (const_key_reference /*r_key*/, size_type hash) const -#endif - { - _GLIBCXX_DEBUG_ASSERT(hash == hash_fn_base::operator()(r_key)); - return hash; - } - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - - /** - * Specialization 3 and 4 - * The client does not supply a hash function or probe function, - * and requests that hash values not be stored. - **/ - template<typename Key, typename Allocator, typename Comb_Probe_Fn> - class ranged_probe_fn<Key, null_hash_fn, Allocator, Comb_Probe_Fn, - null_probe_fn, false> - : public Comb_Probe_Fn, public null_hash_fn, public null_probe_fn - { - protected: - typedef typename Allocator::size_type size_type; - typedef Comb_Probe_Fn comb_probe_fn_base; - typedef typename Allocator::template rebind<Key>::other key_allocator; - typedef typename key_allocator::const_reference const_key_reference; - - ranged_probe_fn(size_type size) - { Comb_Probe_Fn::notify_resized(size); } - - ranged_probe_fn(size_type, const Comb_Probe_Fn& r_comb_probe_fn) - : Comb_Probe_Fn(r_comb_probe_fn) - { } - - ranged_probe_fn(size_type, const null_hash_fn&, - const Comb_Probe_Fn& r_comb_probe_fn, - const null_probe_fn&) - : Comb_Probe_Fn(r_comb_probe_fn) - { } - - void - swap(ranged_probe_fn& other) - { comb_probe_fn_base::swap(other); } - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp deleted file mode 100644 index dad6451d0..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp +++ /dev/null @@ -1,73 +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 sample_probe_fn.hpp - * Contains a sample probe policy. - */ - -#ifndef PB_DS_SAMPLE_PROBE_FN_HPP -#define PB_DS_SAMPLE_PROBE_FN_HPP - -// A sample probe policy. -class sample_probe_fn -{ - -public: - - // Size type. - typedef size_t size_type; - -public: - - // Default constructor. - sample_probe_fn(); - - // Copy constructor. - sample_probe_fn(const sample_probe_fn& other); - - // Swaps content. - inline void - swap(sample_probe_fn& other); - -protected: - - // Returns the i-th offset from the hash value of some key r_key. - inline size_type - operator()(const_key_reference r_key, size_type i) const; - -}; - -#endif // #ifndef PB_DS_SAMPLE_PROBE_FN_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp deleted file mode 100644 index 0912e7f27..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp +++ /dev/null @@ -1,77 +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 sample_range_hashing.hpp - * Contains a range hashing policy. - */ - -#ifndef PB_DS_SAMPLE_RANGE_HASHING_HPP -#define PB_DS_SAMPLE_RANGE_HASHING_HPP - -// A sample range-hashing functor. -class sample_range_hashing -{ - -public: - - // Size type. - typedef size_t size_type; - -public: - - // Default constructor. - sample_range_hashing(); - - // Copy constructor. - sample_range_hashing(const sample_range_hashing& other); - - // Swaps content. - inline void - swap(sample_range_hashing& other); - -protected: - - // Notifies the policy object that the container's __size has changed to size. - void - notify_resized(size_type size); - - // Transforms the __hash value hash into a ranged-hash value. - inline size_type - operator()(size_type hash) const; - -}; - -#endif // #ifndef PB_DS_SAMPLE_RANGE_HASHING_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp deleted file mode 100644 index 6120231e2..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp +++ /dev/null @@ -1,77 +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 sample_ranged_hash_fn.hpp - * Contains a ranged hash policy. - */ - -#ifndef PB_DS_SAMPLE_RANGED_HASH_FN_HPP -#define PB_DS_SAMPLE_RANGED_HASH_FN_HPP - -// A sample ranged-hash functor. -class sample_ranged_hash_fn -{ - -public: - - // Size type. - typedef size_t size_type; - -public: - - // Default constructor. - sample_ranged_hash_fn(); - - // Copy constructor. - sample_ranged_hash_fn(const sample_ranged_hash_fn& other); - - // Swaps content. - inline void - swap(sample_ranged_hash_fn& other); - -protected: - - // Notifies the policy object that the container's __size has changed to size. - void - notify_resized(size_type size); - - // Transforms r_key into a position within the table. - inline size_type - operator()(const_key_reference r_key) const; - -}; - -#endif // #ifndef PB_DS_SAMPLE_RANGED_HASH_FN_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp deleted file mode 100644 index 915f108df..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp +++ /dev/null @@ -1,77 +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 sample_ranged_probe_fn.hpp - * Contains a ranged probe policy. - */ - -#ifndef PB_DS_SAMPLE_RANGED_PROBE_FN_HPP -#define PB_DS_SAMPLE_RANGED_PROBE_FN_HPP - -// A sample ranged-probe functor. -class sample_ranged_probe_fn -{ - -public: - - // Size type. - typedef size_t size_type; - -public: - - // Default constructor. - sample_ranged_probe_fn(); - - // Copy constructor. - sample_ranged_probe_fn(const sample_ranged_probe_fn& other); - - // Swaps content. - inline void - swap(sample_ranged_probe_fn& other); - -protected: - - // Notifies the policy object that the container's __size has changed to size. - void - notify_resized(size_type size); - - // Transforms the const key reference r_key into the i-th position within the table. This method is called for each collision within the probe sequence. - inline size_type - operator()(const_key_reference r_key, size_t hash, size_type i) const; - -}; - -#endif // #ifndef PB_DS_SAMPLE_RANGED_PROBE_FN_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp deleted file mode 100644 index 5955df161..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp +++ /dev/null @@ -1,162 +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 const_iterator.hpp - * Contains an iterator class returned by the table's const find and insert - * methods. - */ - -#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_ITERATOR_HPP -#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_ITERATOR_HPP - -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_C_DEC \ - left_child_next_sibling_heap_const_iterator_<Node, Allocator> - -#define PB_DS_BASE_C_DEC \ - left_child_next_sibling_heap_node_const_point_iterator_<Node, Allocator> - - // Const point-type iterator. - template<typename Node, class Allocator> - class left_child_next_sibling_heap_const_iterator_ : public PB_DS_BASE_C_DEC - { - - private: - typedef typename PB_DS_BASE_C_DEC::node_pointer node_pointer; - - typedef PB_DS_BASE_C_DEC base_type; - - public: - - // Category. - typedef std::forward_iterator_tag iterator_category; - - // Difference type. - typedef typename Allocator::difference_type difference_type; - - // Iterator's value type. - typedef typename base_type::value_type value_type; - - // Iterator's pointer type. - typedef typename base_type::pointer pointer; - - // Iterator's const pointer type. - typedef typename base_type::const_pointer const_pointer; - - // Iterator's reference type. - typedef typename base_type::reference reference; - - // Iterator's const reference type. - typedef typename base_type::const_reference const_reference; - - public: - - inline - left_child_next_sibling_heap_const_iterator_(node_pointer p_nd) : base_type(p_nd) - { } - - // Default constructor. - inline - left_child_next_sibling_heap_const_iterator_() - { } - - // Copy constructor. - inline - left_child_next_sibling_heap_const_iterator_(const PB_DS_CLASS_C_DEC& other) : base_type(other) - { } - - // Compares content to a different iterator object. - inline bool - operator==(const PB_DS_CLASS_C_DEC& other) const - { return (base_type::m_p_nd == other.m_p_nd); } - - // Compares content (negatively) to a different iterator object. - inline bool - operator!=(const PB_DS_CLASS_C_DEC& other) const - { return (base_type::m_p_nd != other.m_p_nd); } - - inline PB_DS_CLASS_C_DEC& - operator++() - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_p_nd != NULL); - inc(); - return (*this); - } - - inline PB_DS_CLASS_C_DEC - operator++(int) - { - PB_DS_CLASS_C_DEC ret_it(base_type::m_p_nd); - operator++(); - return (ret_it); - } - - private: - void - inc() - { - if (base_type::m_p_nd->m_p_next_sibling != NULL) - { - base_type::m_p_nd = base_type::m_p_nd->m_p_next_sibling; - while (base_type::m_p_nd->m_p_l_child != NULL) - base_type::m_p_nd = base_type::m_p_nd->m_p_l_child; - return; - } - - while (true) - { - node_pointer p_next = base_type::m_p_nd; - base_type::m_p_nd = base_type::m_p_nd->m_p_prev_or_parent; - if (base_type::m_p_nd == NULL || base_type::m_p_nd->m_p_l_child == p_next) - return; - } - } - }; - -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_BASE_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp deleted file mode 100644 index 7d682526b..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp +++ /dev/null @@ -1,154 +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 const_point_iterator.hpp - * Contains an iterator class returned by the table's const find and insert - * methods. - */ - -#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_FIND_ITERATOR_HPP -#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_FIND_ITERATOR_HPP - -#include <ext/pb_ds/tag_and_trait.hpp> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_T_DEC \ - template<typename Node, class Allocator> - -#define PB_DS_CLASS_C_DEC \ - left_child_next_sibling_heap_node_const_point_iterator_<Node, Allocator> - - // Const point-type iterator. - template<typename Node, class Allocator> - class left_child_next_sibling_heap_node_const_point_iterator_ - { - - protected: - typedef typename Allocator::template rebind<Node>::other::pointer node_pointer; - - public: - - // Category. - typedef trivial_iterator_tag iterator_category; - - // Difference type. - typedef trivial_iterator_difference_type difference_type; - - // Iterator's value type. - typedef typename Node::value_type value_type; - - // Iterator's pointer type. - typedef - typename Allocator::template rebind< - value_type>::other::pointer - pointer; - - // Iterator's const pointer type. - typedef - typename Allocator::template rebind< - value_type>::other::const_pointer - const_pointer; - - // Iterator's reference type. - typedef - typename Allocator::template rebind< - value_type>::other::reference - reference; - - // Iterator's const reference type. - typedef - typename Allocator::template rebind< - value_type>::other::const_reference - const_reference; - - public: - - inline - left_child_next_sibling_heap_node_const_point_iterator_(node_pointer p_nd) : m_p_nd(p_nd) - { } - - // Default constructor. - inline - left_child_next_sibling_heap_node_const_point_iterator_() : m_p_nd(NULL) - { } - - // Copy constructor. - inline - left_child_next_sibling_heap_node_const_point_iterator_(const PB_DS_CLASS_C_DEC& other) : m_p_nd(other.m_p_nd) - { } - - // Access. - inline const_pointer - operator->() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_nd != NULL); - return &m_p_nd->m_value; - } - - // Access. - inline const_reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_nd != NULL); - return m_p_nd->m_value; - } - - // Compares content to a different iterator object. - inline bool - operator==(const PB_DS_CLASS_C_DEC& other) const - { return m_p_nd == other.m_p_nd; } - - // Compares content (negatively) to a different iterator object. - inline bool - operator!=(const PB_DS_CLASS_C_DEC& other) const - { return m_p_nd != other.m_p_nd; } - - public: - node_pointer m_p_nd; - }; - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index ea0572527..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,152 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 left_child_next_sibling_heap_. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_allocator -PB_DS_CLASS_C_DEC::s_node_allocator; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::no_throw_copies_t -PB_DS_CLASS_C_DEC::s_no_throw_copies_ind; - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -left_child_next_sibling_heap_() : - m_p_root(NULL), - m_size(0) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -left_child_next_sibling_heap_(const Cmp_Fn& r_cmp_fn) : - Cmp_Fn(r_cmp_fn), - m_p_root(NULL), - m_size(0) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -left_child_next_sibling_heap_(const PB_DS_CLASS_C_DEC& other) -: Cmp_Fn(other), m_p_root(NULL), m_size(0) -{ - m_size = other.m_size; - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - m_p_root = recursive_copy_node(other.m_p_root); - m_size = other.m_size; - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - value_swap(other); - std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -value_swap(PB_DS_CLASS_C_DEC& other) -{ - std::swap(m_p_root, other.m_p_root); - std::swap(m_size, other.m_size); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~left_child_next_sibling_heap_() -{ - clear(); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -recursive_copy_node(const_node_pointer p_nd) -{ - if (p_nd == NULL) - return (NULL); - - node_pointer p_ret = s_node_allocator.allocate(1); - - __try - { - new (p_ret) node(*p_nd); - } - __catch(...) - { - s_node_allocator.deallocate(p_ret, 1); - __throw_exception_again; - } - - p_ret->m_p_l_child = p_ret->m_p_next_sibling = - p_ret->m_p_prev_or_parent = NULL; - - __try - { - p_ret->m_p_l_child = recursive_copy_node(p_nd->m_p_l_child); - p_ret->m_p_next_sibling = recursive_copy_node(p_nd->m_p_next_sibling); - } - __catch(...) - { - clear_imp(p_ret); - __throw_exception_again; - } - - if (p_ret->m_p_l_child != NULL) - p_ret->m_p_l_child->m_p_prev_or_parent = p_ret; - - if (p_ret->m_p_next_sibling != NULL) - p_ret->m_p_next_sibling->m_p_prev_or_parent = - p_nd->m_p_next_sibling->m_p_prev_or_parent == p_nd ? p_ret : NULL; - - return p_ret; -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp deleted file mode 100644 index 86871ac38..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp +++ /dev/null @@ -1,141 +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 left_child_next_sibling_heap_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ - _GLIBCXX_DEBUG_ASSERT(m_p_root == NULL || m_p_root->m_p_prev_or_parent == NULL); - - if (m_p_root != NULL) - assert_node_consistent(m_p_root, Single_Link_Roots); - assert_size(); - assert_iterators(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_node_consistent(const_node_pointer p_nd, bool single_link) const -{ - if (p_nd == NULL) - return; - - assert_node_consistent(p_nd->m_p_l_child, false); - assert_node_consistent(p_nd->m_p_next_sibling, single_link); - - if (single_link) - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_prev_or_parent == NULL); - else if (p_nd->m_p_next_sibling != NULL) - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling->m_p_prev_or_parent == p_nd); - - if (p_nd->m_p_l_child == NULL) - return; - - const_node_pointer p_child = p_nd->m_p_l_child; - while (p_child != NULL) - { - const_node_pointer p_next_child = p_child->m_p_next_sibling; - _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(p_nd->m_value, p_child->m_value)); - p_child = p_next_child; - } - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child->m_p_prev_or_parent == p_nd); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_iterators() const -{ - const size_type calc_size = std::distance(begin(), end()); - if (calc_size == size()) - return; - _GLIBCXX_DEBUG_ASSERT(0); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_size() const -{ - if (size_from_node(m_p_root) == m_size) - return; - _GLIBCXX_DEBUG_ASSERT(0); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size_under_node(const_node_pointer p_nd) -{ return 1 + size_from_node(p_nd->m_p_l_child); } - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size_from_node(const_node_pointer p_nd) -{ - size_type ret = 0; - while (p_nd != NULL) - { - ret += 1 + size_from_node(p_nd->m_p_l_child); - p_nd = p_nd->m_p_next_sibling; - } - return ret; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -degree(const_node_pointer p_nd) -{ - size_type ret = 0; - const_node_pointer p_child = p_nd->m_p_l_child; - while (p_child != NULL) - { - ++ret; - p_child = p_child->m_p_next_sibling; - } - return ret; -} - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp deleted file mode 100644 index 9fa09f49b..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp +++ /dev/null @@ -1,150 +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 left_child_next_sibling_heap_. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - clear_imp(m_p_root); - _GLIBCXX_DEBUG_ASSERT(m_size == 0); - m_p_root = NULL; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -actual_erase_node(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - p_nd->~node(); - s_node_allocator.deallocate(p_nd, 1); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear_imp(node_pointer p_nd) -{ - while (p_nd != NULL) - { - clear_imp(p_nd->m_p_l_child); - node_pointer p_next = p_nd->m_p_next_sibling; - actual_erase_node(p_nd); - p_nd = p_next; - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -to_linked_list() -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - node_pointer p_cur = m_p_root; - while (p_cur != NULL) - if (p_cur->m_p_l_child != NULL) - { - node_pointer p_child_next = p_cur->m_p_l_child->m_p_next_sibling; - p_cur->m_p_l_child->m_p_next_sibling = p_cur->m_p_next_sibling; - p_cur->m_p_next_sibling = p_cur->m_p_l_child; - p_cur->m_p_l_child = p_child_next; - } - else - p_cur = p_cur->m_p_next_sibling; - -#ifdef _GLIBCXX_DEBUG - const_node_pointer p_counter = m_p_root; - size_type count = 0; - while (p_counter != NULL) - { - ++count; - _GLIBCXX_DEBUG_ASSERT(p_counter->m_p_l_child == NULL); - p_counter = p_counter->m_p_next_sibling; - } - _GLIBCXX_DEBUG_ASSERT(count == m_size); -#endif -} - -PB_DS_CLASS_T_DEC -template<typename Pred> -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -prune(Pred pred) -{ - node_pointer p_cur = m_p_root; - m_p_root = NULL; - node_pointer p_out = NULL; - while (p_cur != NULL) - { - node_pointer p_next = p_cur->m_p_next_sibling; - if (pred(p_cur->m_value)) - { - p_cur->m_p_next_sibling = p_out; - if (p_out != NULL) - p_out->m_p_prev_or_parent = p_cur; - p_out = p_cur; - } - else - { - p_cur->m_p_next_sibling = m_p_root; - if (m_p_root != NULL) - m_p_root->m_p_prev_or_parent = p_cur; - m_p_root = p_cur; - } - p_cur = p_next; - } - return p_out; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -bubble_to_top(node_pointer p_nd) -{ - node_pointer p_parent = parent(p_nd); - while (p_parent != NULL) - { - swap_with_parent(p_nd, p_parent); - p_parent = parent(p_nd); - } -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp deleted file mode 100644 index 75e6561c3..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp +++ /dev/null @@ -1,64 +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 left_child_next_sibling_heap_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ - return (m_size == 0); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ - 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_node_allocator.max_size()); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp deleted file mode 100644 index 926ccd39c..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp +++ /dev/null @@ -1,175 +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 left_child_next_sibling_heap_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -get_new_node_for_insert(const_reference r_val) -{ - return get_new_node_for_insert(r_val, s_no_throw_copies_ind); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -get_new_node_for_insert(const_reference r_val, false_type) -{ - node_pointer p_new_nd = s_node_allocator.allocate(1); - - cond_dealtor_t cond(p_new_nd); - - new (const_cast<void* >( - static_cast<const void* >(&p_new_nd->m_value))) - typename node::value_type(r_val); - - cond.set_no_action(); - - ++m_size; - - return (p_new_nd); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -get_new_node_for_insert(const_reference r_val, true_type) -{ - node_pointer p_new_nd = s_node_allocator.allocate(1); - - new (const_cast<void* >( - static_cast<const void* >(&p_new_nd->m_value))) - typename node::value_type(r_val); - - ++m_size; - - return (p_new_nd); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -make_child_of(node_pointer p_nd, node_pointer p_new_parent) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - _GLIBCXX_DEBUG_ASSERT(p_new_parent != NULL); - - p_nd->m_p_next_sibling = p_new_parent->m_p_l_child; - - if (p_new_parent->m_p_l_child != NULL) - p_new_parent->m_p_l_child->m_p_prev_or_parent = p_nd; - - p_nd->m_p_prev_or_parent = p_new_parent; - - p_new_parent->m_p_l_child = p_nd; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -parent(node_pointer p_nd) -{ - while (true) - { - node_pointer p_pot = p_nd->m_p_prev_or_parent; - - if (p_pot == NULL || p_pot->m_p_l_child == p_nd) - return p_pot; - - p_nd = p_pot; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -swap_with_parent(node_pointer p_nd, node_pointer p_parent) -{ - if (p_parent == m_p_root) - m_p_root = p_nd; - - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - _GLIBCXX_DEBUG_ASSERT(p_parent != NULL); - _GLIBCXX_DEBUG_ASSERT(parent(p_nd) == p_parent); - - const bool nd_direct_child = p_parent->m_p_l_child == p_nd; - const bool parent_root = p_parent->m_p_prev_or_parent == NULL; - const bool parent_direct_child = - !parent_root&& p_parent->m_p_prev_or_parent->m_p_l_child == p_parent; - - std::swap(p_parent->m_p_prev_or_parent, p_nd->m_p_prev_or_parent); - std::swap(p_parent->m_p_next_sibling, p_nd->m_p_next_sibling); - std::swap(p_parent->m_p_l_child, p_nd->m_p_l_child); - std::swap(p_parent->m_metadata, p_nd->m_metadata); - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child != NULL); - _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_prev_or_parent != NULL); - - if (p_nd->m_p_next_sibling != NULL) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd; - - if (p_parent->m_p_next_sibling != NULL) - p_parent->m_p_next_sibling->m_p_prev_or_parent = p_parent; - - if (p_parent->m_p_l_child != NULL) - p_parent->m_p_l_child->m_p_prev_or_parent = p_parent; - - if (parent_direct_child) - p_nd->m_p_prev_or_parent->m_p_l_child = p_nd; - else if (!parent_root) - p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd; - - if (!nd_direct_child) - { - p_nd->m_p_l_child->m_p_prev_or_parent = p_nd; - - p_parent->m_p_prev_or_parent->m_p_next_sibling = p_parent; - } - else - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child == p_nd); - _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_prev_or_parent == p_parent); - - p_nd->m_p_l_child = p_parent; - p_parent->m_p_prev_or_parent = p_nd; - } - - _GLIBCXX_DEBUG_ASSERT(parent(p_parent) == p_nd); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp deleted file mode 100644 index dca70fdd5..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp +++ /dev/null @@ -1,88 +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 left_child_next_sibling_heap_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ - node_pointer p_nd = m_p_root; - - if (p_nd == NULL) - return (iterator(NULL)); - - while (p_nd->m_p_l_child != NULL) - p_nd = p_nd->m_p_l_child; - - return (iterator(p_nd)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ - node_pointer p_nd = m_p_root; - - if (p_nd == NULL) - return (const_iterator(NULL)); - - while (p_nd->m_p_l_child != NULL) - p_nd = p_nd->m_p_l_child; - - return (const_iterator(p_nd)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ - return (iterator(NULL)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ - return (const_iterator(NULL)); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp deleted file mode 100644 index 34ad4bee0..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp +++ /dev/null @@ -1,349 +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 left_child_next_sibling_heap_.hpp - * Contains an implementation class for a basic heap. - */ - -#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_HPP -#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_HPP - -/* - * Based on CLRS. - */ - -#include <iterator> -#include <ext/pb_ds/detail/cond_dealtor.hpp> -#include <ext/pb_ds/detail/type_utils.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp> -#ifdef PB_DS_LC_NS_HEAP_TRACE_ -#include <iostream> -#endif -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - -#ifdef _GLIBCXX_DEBUG -#define PB_DS_CLASS_T_DEC \ - template< \ - typename Value_Type, \ - class Cmp_Fn, \ - typename Node_Metadata, \ - class Allocator, \ - bool Single_Link_Roots> -#else -#define PB_DS_CLASS_T_DEC \ - template< \ - typename Value_Type, \ - class Cmp_Fn, \ - typename Node_Metadata, \ - class Allocator> -#endif - -#ifdef _GLIBCXX_DEBUG -#define PB_DS_CLASS_C_DEC \ - left_child_next_sibling_heap_< \ - Value_Type, \ - Cmp_Fn, \ - Node_Metadata, \ - Allocator, \ - Single_Link_Roots> -#else -#define PB_DS_CLASS_C_DEC \ - left_child_next_sibling_heap_< \ - Value_Type, \ - Cmp_Fn, \ - Node_Metadata, \ - Allocator> -#endif - - /** - * class description = "Base class for some types of h3ap$"> - **/ -#ifdef _GLIBCXX_DEBUG - template<typename Value_Type, - class Cmp_Fn, - typename Node_Metadata, - class Allocator, - bool Single_Link_Roots> -#else - template<typename Value_Type, - class Cmp_Fn, - typename Node_Metadata, - class Allocator> -#endif - class left_child_next_sibling_heap_ : public Cmp_Fn - { - - protected: - typedef - typename Allocator::template rebind< - left_child_next_sibling_heap_node_< - Value_Type, - Node_Metadata, - Allocator> >::other - node_allocator; - - typedef typename node_allocator::value_type node; - - typedef typename node_allocator::pointer node_pointer; - - typedef typename node_allocator::const_pointer const_node_pointer; - - typedef Node_Metadata node_metadata; - - typedef std::pair< node_pointer, node_pointer> node_pointer_pair; - - private: - typedef cond_dealtor< node, Allocator> cond_dealtor_t; - - enum - { - simple_value = is_simple<Value_Type>::value - }; - - typedef integral_constant<int, simple_value> no_throw_copies_t; - - public: - - typedef typename Allocator::size_type size_type; - - typedef typename Allocator::difference_type difference_type; - - typedef Value_Type value_type; - - 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< - value_type>::other::reference - reference; - - typedef - typename Allocator::template rebind< - value_type>::other::const_reference - const_reference; - - typedef - left_child_next_sibling_heap_node_const_point_iterator_< - node, - Allocator> - const_point_iterator; - - typedef const_point_iterator point_iterator; - - typedef - left_child_next_sibling_heap_const_iterator_< - node, - Allocator> - const_iterator; - - typedef const_iterator iterator; - - typedef Cmp_Fn cmp_fn; - - typedef Allocator allocator_type; - - public: - - left_child_next_sibling_heap_(); - - left_child_next_sibling_heap_(const Cmp_Fn& r_cmp_fn); - - left_child_next_sibling_heap_(const PB_DS_CLASS_C_DEC& other); - - void - swap(PB_DS_CLASS_C_DEC& other); - - ~left_child_next_sibling_heap_(); - - inline bool - empty() const; - - inline size_type - size() const; - - inline size_type - max_size() const; - - Cmp_Fn& - get_cmp_fn(); - - const Cmp_Fn& - get_cmp_fn() const; - - inline iterator - begin(); - - inline const_iterator - begin() const; - - inline iterator - end(); - - inline const_iterator - end() const; - - void - clear(); - -#ifdef PB_DS_LC_NS_HEAP_TRACE_ - void - trace() const; -#endif - - protected: - - inline node_pointer - get_new_node_for_insert(const_reference r_val); - - inline static void - make_child_of(node_pointer p_nd, node_pointer p_new_parent); - - void - value_swap(PB_DS_CLASS_C_DEC& other); - - inline static node_pointer - parent(node_pointer p_nd); - - inline void - swap_with_parent(node_pointer p_nd, node_pointer p_parent); - - void - bubble_to_top(node_pointer p_nd); - - inline void - actual_erase_node(node_pointer p_nd); - - void - clear_imp(node_pointer p_nd); - - void - to_linked_list(); - - template<typename Pred> - node_pointer - prune(Pred pred); - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; - - void - assert_node_consistent(const_node_pointer p_nd, bool single_link) const; - - static size_type - size_under_node(const_node_pointer p_nd); - - static size_type - degree(const_node_pointer p_nd); -#endif - -#ifdef PB_DS_LC_NS_HEAP_TRACE_ - static void - trace_node(const_node_pointer, size_type level); -#endif - - protected: - node_pointer m_p_root; - - size_type m_size; - - private: -#ifdef _GLIBCXX_DEBUG - void - assert_iterators() const; - - void - assert_size() const; - - static size_type - size_from_node(const_node_pointer p_nd); -#endif - - node_pointer - recursive_copy_node(const_node_pointer p_nd); - - inline node_pointer - get_new_node_for_insert(const_reference r_val, false_type); - - inline node_pointer - get_new_node_for_insert(const_reference r_val, true_type); - -#ifdef PB_DS_LC_NS_HEAP_TRACE_ - template<typename Metadata_> - static void - trace_node_metadata(const_node_pointer p_nd, type_to_type<Metadata_>); - - static void - trace_node_metadata(const_node_pointer, type_to_type<null_left_child_next_sibling_heap_node_metadata>); -#endif - - private: - static node_allocator s_node_allocator; - - static no_throw_copies_t s_no_throw_copies_ind; - }; - -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp> - -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_CLASS_T_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp deleted file mode 100644 index 1cdfe2883..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp +++ /dev/null @@ -1,123 +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 node.hpp - * Contains an implementation struct for this type of heap's node. - */ - -#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP -#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP - -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - - template<typename Value_Type, typename Metadata_Type, class Allocator> - struct left_child_next_sibling_heap_node_ - { - private: - typedef - left_child_next_sibling_heap_node_< - Value_Type, - Metadata_Type, - Allocator> - this_type; - - public: - typedef typename Allocator::size_type size_type; - - typedef - typename Allocator::template rebind< - this_type>::other::pointer - node_pointer; - - typedef Value_Type value_type; - - typedef Metadata_Type metadata_type; - - public: - value_type m_value; - - metadata_type m_metadata; - - node_pointer m_p_l_child; - - node_pointer m_p_next_sibling; - - node_pointer m_p_prev_or_parent; - }; - - template<typename Value_Type, class Allocator> - struct left_child_next_sibling_heap_node_< - Value_Type, - null_left_child_next_sibling_heap_node_metadata, - Allocator> - { - private: - typedef - left_child_next_sibling_heap_node_< - Value_Type, - null_left_child_next_sibling_heap_node_metadata, - Allocator> - this_type; - - public: - typedef typename Allocator::size_type size_type; - - typedef - typename Allocator::template rebind< - this_type>::other::pointer - node_pointer; - - typedef Value_Type value_type; - - public: - value_type m_value; - - node_pointer m_p_l_child; - - node_pointer m_p_next_sibling; - - node_pointer m_p_prev_or_parent; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp deleted file mode 100644 index 040466e8e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp +++ /dev/null @@ -1,55 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2008, 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 null_metadata.hpp - * Contains an implementation struct for this type of heap's node. - */ - -#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NULL_METADATA_HPP -#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NULL_METADATA_HPP - -namespace __gnu_pbds -{ - namespace detail - { - - struct null_left_child_next_sibling_heap_node_metadata - { }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NULL_METADATA_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp deleted file mode 100644 index 350b4d08a..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp +++ /dev/null @@ -1,52 +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 left_child_next_sibling_heap_. - */ - -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/left_child_next_sibling_heap_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp deleted file mode 100644 index 2b90cfa1d..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp +++ /dev/null @@ -1,95 +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 trace_fn_imps.hpp - * Contains an implementation class for left_child_next_sibling_heap_. - */ - -#ifdef PB_DS_LC_NS_HEAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << std::endl; - - trace_node(m_p_root, 0); - - std::cerr << std::endl; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_node(const_node_pointer p_nd, size_type level) -{ - while (p_nd != NULL) - { - for (size_type i = 0; i < level; ++i) - std::cerr << ' '; - - std::cerr << p_nd << - " prev = " << p_nd->m_p_prev_or_parent << - " next " << p_nd->m_p_next_sibling << - " left = " << p_nd->m_p_l_child << " "; - - trace_node_metadata(p_nd, type_to_type<node_metadata>()); - - std::cerr << p_nd->m_value << std::endl; - - trace_node(p_nd->m_p_l_child, level + 1); - - p_nd = p_nd->m_p_next_sibling; - } -} - -PB_DS_CLASS_T_DEC -template<typename Metadata_> -void -PB_DS_CLASS_C_DEC:: -trace_node_metadata(const_node_pointer p_nd, type_to_type<Metadata_>) -{ - std::cerr << "(" << p_nd->m_metadata << ") "; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_node_metadata(const_node_pointer, type_to_type<null_left_child_next_sibling_heap_node_metadata>) -{ } - -#endif // #ifdef PB_DS_LC_NS_HEAP_TRACE_ diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp deleted file mode 100644 index c998c3e67..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp +++ /dev/null @@ -1,141 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 constructor_destructor_fn_imps.hpp - * Contains implementations of PB_DS_CLASS_NAME. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::entry_allocator -PB_DS_CLASS_C_DEC::s_entry_allocator; - -PB_DS_CLASS_T_DEC -Eq_Fn PB_DS_CLASS_C_DEC::s_eq_fn; - -PB_DS_CLASS_T_DEC -null_lu_metadata PB_DS_CLASS_C_DEC::s_null_lu_metadata; - -PB_DS_CLASS_T_DEC -Update_Policy PB_DS_CLASS_C_DEC::s_update_policy; - -PB_DS_CLASS_T_DEC -type_to_type< - typename PB_DS_CLASS_C_DEC::update_metadata> PB_DS_CLASS_C_DEC::s_metadata_type_indicator; - -PB_DS_CLASS_T_DEC -template<typename It> -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - insert(*(first_it++)); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME() : m_p_l(NULL) -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -template<typename It> -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(It first_it, It last_it) : m_p_l(NULL) -{ - copy_from_range(first_it, last_it); - _GLIBCXX_DEBUG_ONLY(assert_valid();); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) : -#ifdef _GLIBCXX_DEBUG - debug_base(), -#endif -m_p_l(NULL) -{ - __try - { - for (const_iterator it = other.begin(); it != other.end(); ++it) - { - entry_pointer p_l = allocate_new_entry(*it, - PB_DS_TYPES_TRAITS_C_DEC::m_no_throw_copies_indicator); - - p_l->m_p_next = m_p_l; - m_p_l = p_l; - } - } - __catch(...) - { - deallocate_all(); - __throw_exception_again; - } - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);) - std::swap(m_p_l, other.m_p_l); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -deallocate_all() -{ - entry_pointer p_l = m_p_l; - while (p_l != NULL) - { - entry_pointer p_next_l = p_l->m_p_next; - actual_erase_entry(p_l); - p_l = p_next_l; - } - m_p_l = NULL; -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~PB_DS_CLASS_NAME() -{ deallocate_all(); } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp deleted file mode 100644 index 95e9e22b1..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp +++ /dev/null @@ -1,57 +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 implementations of cc_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ - size_type calc_size = 0; - for (const_iterator it = begin(); it != end(); ++it) - { - debug_base::check_key_exists(PB_DS_V2F(*it)); - ++calc_size; - } - debug_base::check_size(calc_size); -} - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp deleted file mode 100644 index 021ef50d8..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.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 entry_metadata_base.hpp - * Contains an implementation for a list update map. - */ - -#ifndef PB_DS_LU_MAP_ENTRY_METADATA_BASE_HPP -#define PB_DS_LU_MAP_ENTRY_METADATA_BASE_HPP - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Metadata> - struct lu_map_entry_metadata_base - { - Metadata m_update_metadata; - }; - - template<> - struct lu_map_entry_metadata_base<null_lu_metadata> - { }; - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp deleted file mode 100644 index cdc59208f..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp +++ /dev/null @@ -1,135 +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 implementations of lu_map_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase(const_key_reference r_key) -{ - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) - if (m_p_l == NULL) - return false; - - if (s_eq_fn(r_key, PB_DS_V2F(m_p_l->m_value))) - { - entry_pointer p_next = m_p_l->m_p_next; - actual_erase_entry(m_p_l); - m_p_l = p_next; - return true; - } - - entry_pointer p_l = m_p_l; - while (p_l->m_p_next != NULL) - if (s_eq_fn(r_key, PB_DS_V2F(p_l->m_p_next->m_value))) - { - erase_next(p_l); - return true; - } - else - p_l = p_l->m_p_next; - return false; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - deallocate_all(); -} - -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(PB_DS_CLASS_C_DEC::assert_valid();) - size_type num_ersd = 0; - while (m_p_l != NULL && pred(m_p_l->m_value)) - { - entry_pointer p_next = m_p_l->m_p_next; - ++num_ersd; - actual_erase_entry(m_p_l); - m_p_l = p_next; - } - - if (m_p_l == NULL) - return num_ersd; - - entry_pointer p_l = m_p_l; - while (p_l->m_p_next != NULL) - { - if (pred(p_l->m_p_next->m_value)) - { - ++num_ersd; - erase_next(p_l); - } - else - p_l = p_l->m_p_next; - } - - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) - return num_ersd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_next(entry_pointer p_l) -{ - _GLIBCXX_DEBUG_ASSERT(p_l != NULL); - _GLIBCXX_DEBUG_ASSERT(p_l != m_p_l); - _GLIBCXX_DEBUG_ASSERT(p_l->m_p_next != NULL); - entry_pointer p_next_l = p_l->m_p_next->m_p_next; - actual_erase_entry(p_l->m_p_next); - p_l->m_p_next = p_next_l; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -actual_erase_entry(entry_pointer p_l) -{ - _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_l->m_value));) - p_l->~entry(); - s_entry_allocator.deallocate(p_l, 1); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp deleted file mode 100644 index 50347ac5f..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp +++ /dev/null @@ -1,90 +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 find_fn_imps.hpp - * Contains implementations of lu_map_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::entry_pointer -PB_DS_CLASS_C_DEC:: -find_imp(const_key_reference r_key) const -{ - if (m_p_l == NULL) - return NULL; - if (s_eq_fn(r_key, PB_DS_V2F(m_p_l->m_value))) - { - apply_update(m_p_l, s_metadata_type_indicator); - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);) - return m_p_l; - } - - entry_pointer p_l = m_p_l; - while (p_l->m_p_next != NULL) - { - entry_pointer p_next = p_l->m_p_next; - if (s_eq_fn(r_key, PB_DS_V2F(p_next->m_value))) - { - if (apply_update(p_next, s_metadata_type_indicator)) - { - p_l->m_p_next = p_next->m_p_next; - p_next->m_p_next = m_p_l; - m_p_l = p_next; - return m_p_l; - } - return p_next; - } - else - p_l = p_next; - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - return NULL; -} - -PB_DS_CLASS_T_DEC -template<typename Metadata> -inline bool -PB_DS_CLASS_C_DEC:: -apply_update(entry_pointer p_l, type_to_type<Metadata>) -{ return s_update_policy(p_l->m_update_metadata); } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -apply_update(entry_pointer, type_to_type<null_lu_metadata>) -{ return s_update_policy(s_null_lu_metadata); } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp deleted file mode 100644 index 5ad39709d..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp +++ /dev/null @@ -1,57 +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 implementations of lu_map_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ return std::distance(begin(), end()); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -max_size() const -{ return s_entry_allocator.max_size(); } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ return (m_p_l == NULL); } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp deleted file mode 100644 index 5efe2a13a..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp +++ /dev/null @@ -1,106 +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 implementations of lu_map_. - */ - -PB_DS_CLASS_T_DEC -inline std::pair< - typename PB_DS_CLASS_C_DEC::point_iterator, - bool> -PB_DS_CLASS_C_DEC:: -insert(const_reference r_val) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - entry_pointer p_l = find_imp(PB_DS_V2F(r_val)); - - if (p_l != NULL) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(PB_DS_V2F(r_val));) - return std::make_pair(point_iterator(&p_l->m_value), false); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(PB_DS_V2F(r_val));) - - p_l = allocate_new_entry(r_val, traits_base::m_no_throw_copies_indicator); - p_l->m_p_next = m_p_l; - m_p_l = p_l; - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return std::make_pair(point_iterator(&p_l->m_value), true); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::entry_pointer -PB_DS_CLASS_C_DEC:: -allocate_new_entry(const_reference r_val, false_type) -{ - entry_pointer p_l = s_entry_allocator.allocate(1); - cond_dealtor_t cond(p_l); - new (const_cast<void* >(static_cast<const void* >(&p_l->m_value))) - value_type(r_val); - - cond.set_no_action(); - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));) - init_entry_metadata(p_l, s_metadata_type_indicator); - return p_l; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::entry_pointer -PB_DS_CLASS_C_DEC:: -allocate_new_entry(const_reference r_val, true_type) -{ - entry_pointer p_l = s_entry_allocator.allocate(1); - new (&p_l->m_value) value_type(r_val); - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));) - init_entry_metadata(p_l, s_metadata_type_indicator); - return p_l; -} - -PB_DS_CLASS_T_DEC -template<typename Metadata> -inline void -PB_DS_CLASS_C_DEC:: -init_entry_metadata(entry_pointer p_l, type_to_type<Metadata>) -{ new (&p_l->m_update_metadata) Metadata(s_update_policy()); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -init_entry_metadata(entry_pointer, type_to_type<null_lu_metadata>) -{ } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp deleted file mode 100644 index e3247c5b0..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp +++ /dev/null @@ -1,80 +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 implementations of lu_map_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ - if (m_p_l == NULL) - { - _GLIBCXX_DEBUG_ASSERT(empty()); - return end(); - } - return iterator(&m_p_l->m_value, m_p_l, this); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ - if (m_p_l == NULL) - { - _GLIBCXX_DEBUG_ASSERT(empty()); - return end(); - } - return iterator(&m_p_l->m_value, m_p_l, const_cast<PB_DS_CLASS_C_DEC* >(this)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ return iterator(NULL, NULL, this); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ - return const_iterator(NULL, NULL, const_cast<PB_DS_CLASS_C_DEC* const>(this)); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp deleted file mode 100644 index 0e9336b57..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp +++ /dev/null @@ -1,359 +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 lu_map_.hpp - * Contains a list update map. - */ - -#include <utility> -#include <iterator> -#include <ext/pb_ds/detail/cond_dealtor.hpp> -#include <ext/pb_ds/tag_and_trait.hpp> -#include <ext/pb_ds/detail/types_traits.hpp> -#include <ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp> -#include <ext/pb_ds/exception.hpp> -#ifdef _GLIBCXX_DEBUG -#include <ext/pb_ds/detail/debug_map_base.hpp> -#endif -#ifdef PB_DS_LU_MAP_TRACE_ -#include <iostream> -#endif -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_CLASS_T_DEC \ - template<typename Key, typename Mapped, class Eq_Fn, \ - class Allocator, class Update_Policy> - -#ifdef PB_DS_DATA_TRUE_INDICATOR -#define PB_DS_CLASS_NAME lu_map_data_ -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#define PB_DS_CLASS_NAME lu_map_no_data_ -#endif - -#define PB_DS_CLASS_C_DEC \ - PB_DS_CLASS_NAME<Key, Mapped, Eq_Fn, Allocator, Update_Policy> - -#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_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 - - /* Skip to the lu, my darling. */ - // list-based (with updates) associative container. - template<typename Key, - typename Mapped, - class Eq_Fn, - class Allocator, - class Update_Policy> - class PB_DS_CLASS_NAME : -#ifdef _GLIBCXX_DEBUG - protected PB_DS_DEBUG_MAP_BASE_C_DEC, -#endif - public PB_DS_TYPES_TRAITS_C_DEC - { - private: - typedef PB_DS_TYPES_TRAITS_C_DEC traits_base; - - struct entry - : public lu_map_entry_metadata_base<typename Update_Policy::metadata_type> - { - typename traits_base::value_type m_value; - typename Allocator::template rebind<entry>::other::pointer m_p_next; - }; - - typedef typename Allocator::template rebind<entry>::other entry_allocator; - typedef typename entry_allocator::pointer entry_pointer; - typedef typename entry_allocator::const_pointer const_entry_pointer; - typedef typename entry_allocator::reference entry_reference; - typedef typename entry_allocator::const_reference const_entry_reference; - - typedef typename Allocator::template rebind<entry_pointer>::other entry_pointer_allocator; - typedef typename entry_pointer_allocator::pointer entry_pointer_array; - - 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_; - -#define PB_DS_GEN_POS entry_pointer - -#include <ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp> -#include <ext/pb_ds/detail/unordered_iterator/point_iterator.hpp> -#include <ext/pb_ds/detail/unordered_iterator/const_iterator.hpp> -#include <ext/pb_ds/detail/unordered_iterator/iterator.hpp> - -#undef PB_DS_GEN_POS - - -#ifdef _GLIBCXX_DEBUG - typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base; -#endif - - typedef cond_dealtor<entry, Allocator> cond_dealtor_t; - - public: - typedef Allocator allocator_type; - typedef typename Allocator::size_type size_type; - typedef typename Allocator::difference_type difference_type; - typedef Eq_Fn eq_fn; - typedef Update_Policy update_policy; - typedef typename Update_Policy::metadata_type update_metadata; - 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; - -#ifdef PB_DS_DATA_TRUE_INDICATOR - typedef point_iterator_ point_iterator; -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR - typedef const_point_iterator_ point_iterator; -#endif - - typedef const_point_iterator_ const_point_iterator; - -#ifdef PB_DS_DATA_TRUE_INDICATOR - typedef iterator_ iterator; -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR - typedef const_iterator_ iterator; -#endif - - typedef const_iterator_ const_iterator; - - public: - PB_DS_CLASS_NAME(); - - PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&); - - virtual - ~PB_DS_CLASS_NAME(); - - template<typename It> - PB_DS_CLASS_NAME(It first_it, It last_it); - - void - swap(PB_DS_CLASS_C_DEC&); - - inline size_type - size() const; - - inline size_type - max_size() const; - - inline bool - empty() const; - - inline mapped_reference - operator[](const_key_reference r_key) - { -#ifdef PB_DS_DATA_TRUE_INDICATOR - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return insert(std::make_pair(r_key, mapped_type())).first->second; -#else - insert(r_key); - return traits_base::s_null_mapped; -#endif - } - - inline std::pair<point_iterator, bool> - insert(const_reference); - - inline point_iterator - find(const_key_reference r_key) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - entry_pointer p_e = find_imp(r_key); - return point_iterator(p_e == NULL ? NULL: &p_e->m_value); - } - - inline const_point_iterator - find(const_key_reference r_key) const - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - entry_pointer p_e = find_imp(r_key); - return const_point_iterator(p_e == NULL ? NULL: &p_e->m_value); - } - - inline bool - erase(const_key_reference); - - template<typename Pred> - inline size_type - erase_if(Pred); - - void - clear(); - - inline iterator - begin(); - - inline const_iterator - begin() const; - - inline iterator - end(); - - inline const_iterator - end() const; - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; -#endif - -#ifdef PB_DS_LU_MAP_TRACE_ - void - trace() const; -#endif - - protected: - - template<typename It> - void - copy_from_range(It, It); - - private: -#ifdef PB_DS_DATA_TRUE_INDICATOR - friend class iterator_; -#endif - - friend class const_iterator_; - - inline entry_pointer - allocate_new_entry(const_reference, false_type); - - inline entry_pointer - allocate_new_entry(const_reference, true_type); - - template<typename Metadata> - inline static void - init_entry_metadata(entry_pointer, type_to_type<Metadata>); - - inline static void - init_entry_metadata(entry_pointer, type_to_type<null_lu_metadata>); - - void - deallocate_all(); - - void - erase_next(entry_pointer); - - void - actual_erase_entry(entry_pointer); - - void - inc_it_state(const_pointer& r_p_value, entry_pointer& r_pos) const - { - r_pos = r_pos->m_p_next; - r_p_value = (r_pos == NULL) ? NULL : &r_pos->m_value; - } - - template<typename Metadata> - inline static bool - apply_update(entry_pointer, type_to_type<Metadata>); - - inline static bool - apply_update(entry_pointer, type_to_type<null_lu_metadata>); - - inline entry_pointer - find_imp(const_key_reference) const; - - static entry_allocator s_entry_allocator; - static Eq_Fn s_eq_fn; - static Update_Policy s_update_policy; - static type_to_type<update_metadata> s_metadata_type_indicator; - static null_lu_metadata s_null_lu_metadata; - - mutable entry_pointer m_p_l; - }; - -#include <ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp> -#include <ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp> -#include <ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp> -#include <ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp> -#include <ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp> - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_TYPES_TRAITS_C_DEC -#undef PB_DS_DEBUG_MAP_BASE_C_DEC -#undef PB_DS_CLASS_NAME -#undef PB_DS_V2F -#undef PB_DS_EP2VP -#undef PB_DS_V2S - - } // namespace detail -} // namespace __gnu_pbds diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp deleted file mode 100644 index 908aacc19..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp +++ /dev/null @@ -1,59 +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 trace_fn_imps.hpp - * Contains implementations of lu_map_. - */ - -#ifdef PB_DS_LU_MAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << m_p_l << std::endl << std::endl; - const_entry_pointer p_l = m_p_l; - while (p_l != NULL) - { - std::cerr << PB_DS_V2F(p_l->m_value) << std::endl; - p_l = p_l->m_p_next; - } - std::cerr << std::endl; -} - -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp deleted file mode 100644 index 4ef7fe48a..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp +++ /dev/null @@ -1,86 +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 counter_lu_metadata.hpp - * Contains implementation of a lu counter policy's metadata. - */ - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Size_Type> - class counter_lu_policy_base; - - // A list-update metadata type that moves elements to the front of - // the list based on the counter algorithm. - template<typename Size_Type = size_t> - class counter_lu_metadata - { - public: - typedef Size_Type size_type; - - private: - counter_lu_metadata(size_type init_count) : m_count(init_count) - { } - - friend class counter_lu_policy_base<size_type>; - - mutable size_type m_count; - }; - - template<typename Size_Type> - class counter_lu_policy_base - { - protected: - typedef Size_Type size_type; - - counter_lu_metadata<size_type> - operator()(size_type max_size) const - { return counter_lu_metadata<Size_Type>(std::rand() % max_size); } - - template<typename Metadata_Reference> - bool - operator()(Metadata_Reference r_data, size_type m_max_count) const - { - if (++r_data.m_count != m_max_count) - return false; - r_data.m_count = 0; - return true; - } - }; - } // namespace detail -} // namespace __gnu_pbds diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp deleted file mode 100644 index f74a9fb54..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.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 counter_lu_policy_imp.hpp - * Contains a lu counter policy implementation. - */ - -PB_DS_CLASS_T_DEC -detail::counter_lu_metadata<typename Allocator::size_type> -PB_DS_CLASS_C_DEC:: -operator()() const -{ return (base_type::operator()(max_count)); } - -PB_DS_CLASS_T_DEC -bool -PB_DS_CLASS_C_DEC:: -operator()(metadata_reference r_data) const -{ return (base_type::operator()(r_data, max_count)); } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp deleted file mode 100644 index 34426c538..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp +++ /dev/null @@ -1,55 +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 mtf_lu_policy_imp.hpp - * Contains a move-to-front policy implementation. - */ - -PB_DS_CLASS_T_DEC -null_lu_metadata PB_DS_CLASS_C_DEC::s_metadata; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::metadata_type -PB_DS_CLASS_C_DEC:: -operator()() const -{ return s_metadata; } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -operator()(metadata_reference /*r_data*/) const -{ return true; } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp deleted file mode 100644 index c5da1e9d0..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.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 sample_update_policy.hpp - * Contains a sample policy for list update containers. - */ - -#ifndef PB_DS_SAMPLE_UPDATE_POLICY_HPP -#define PB_DS_SAMPLE_UPDATE_POLICY_HPP - -// A sample list-update policy. -struct sample_update_policy -{ - // Default constructor. - sample_update_policy(); - - // Copy constructor. - sample_update_policy(const sample_update_policy&); - - // Swaps content. - inline void - swap(sample_update_policy& other); - -protected: - // Metadata on which this functor operates. - typedef some_metadata_type metadata_type; - - // Creates a metadata object. - metadata_type - operator()() const; - - // Decides whether a metadata object should be moved to the front of - // the list. A list-update based containers object will call this - // method to decide whether to move a node to the front of the - // list. The method shoule return true if the node should be moved - // to the front of the list. - bool - operator()(metadata_reference) const; -}; - -#endif 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 - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index e292ed5d9..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,91 +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 a pairing heap. - */ - -PB_DS_CLASS_T_DEC -template<typename It> -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - push(*(first_it++)); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -pairing_heap_() -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -pairing_heap_(const Cmp_Fn& r_cmp_fn) : - PB_DS_BASE_C_DEC(r_cmp_fn) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -pairing_heap_(const PB_DS_CLASS_C_DEC& other) : - PB_DS_BASE_C_DEC(other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - PB_DS_BASE_C_DEC::swap(other); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~pairing_heap_() -{ } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp deleted file mode 100644 index 7c9fc1345..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp +++ /dev/null @@ -1,53 +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 a pairing heap. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ - _GLIBCXX_DEBUG_ASSERT(base_type::m_p_root == NULL - || base_type::m_p_root->m_p_next_sibling == NULL); - base_type::assert_valid(); -} - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp deleted file mode 100644 index 905be1098..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp +++ /dev/null @@ -1,236 +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 a pairing heap. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -pop() -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - node_pointer p_new_root = join_node_children(base_type::m_p_root); - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_new_root, false);) - if (p_new_root != NULL) - p_new_root->m_p_prev_or_parent = NULL; - - base_type::actual_erase_node(base_type::m_p_root); - base_type::m_p_root = p_new_root; - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase(point_iterator it) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - remove_node(it.m_p_nd); - base_type::actual_erase_node(it.m_p_nd); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -remove_node(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - node_pointer p_new_child = join_node_children(p_nd); - -#ifdef _GLIBCXX_DEBUG - if (p_new_child != NULL) - base_type::assert_node_consistent(p_new_child, false); -#endif - - if (p_nd == base_type::m_p_root) - { - if (p_new_child != NULL) - p_new_child->m_p_prev_or_parent = NULL; - base_type::m_p_root = p_new_child; - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(base_type::m_p_root, false);) - return; - } - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_prev_or_parent != NULL); - if (p_nd->m_p_prev_or_parent->m_p_l_child == p_nd) - { - if (p_new_child != NULL) - { - p_new_child->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - p_new_child->m_p_next_sibling = p_nd->m_p_next_sibling; - if (p_new_child->m_p_next_sibling != NULL) - p_new_child->m_p_next_sibling->m_p_prev_or_parent = p_new_child; - p_nd->m_p_prev_or_parent->m_p_l_child = p_new_child; - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd->m_p_prev_or_parent, false);) - return; - } - - p_nd->m_p_prev_or_parent->m_p_l_child = p_nd->m_p_next_sibling; - if (p_nd->m_p_next_sibling != NULL) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd->m_p_prev_or_parent, false);) - return; - } - - if (p_new_child != NULL) - { - p_new_child->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - p_new_child->m_p_next_sibling = p_nd->m_p_next_sibling; - if (p_new_child->m_p_next_sibling != NULL) - p_new_child->m_p_next_sibling->m_p_prev_or_parent = p_new_child; - p_new_child->m_p_prev_or_parent->m_p_next_sibling = p_new_child; - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd->m_p_prev_or_parent, false);) - return; - } - - p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd->m_p_next_sibling; - if (p_nd->m_p_next_sibling != NULL) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd->m_p_prev_or_parent, false);) -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -join_node_children(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - node_pointer p_ret = p_nd->m_p_l_child; - if (p_ret == NULL) - return NULL; - while (p_ret->m_p_next_sibling != NULL) - p_ret = forward_join(p_ret, p_ret->m_p_next_sibling); - while (p_ret->m_p_prev_or_parent != p_nd) - p_ret = back_join(p_ret->m_p_prev_or_parent, p_ret); - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_ret, false);) - return p_ret; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -forward_join(node_pointer p_nd, node_pointer p_next) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling == p_next); - if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value)) - { - p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - base_type::make_child_of(p_nd, p_next); - return p_next->m_p_next_sibling == NULL - ? p_next : p_next->m_p_next_sibling; - } - - if (p_next->m_p_next_sibling != NULL) - { - p_next->m_p_next_sibling->m_p_prev_or_parent = p_nd; - p_nd->m_p_next_sibling = p_next->m_p_next_sibling; - base_type::make_child_of(p_next, p_nd); - return p_nd->m_p_next_sibling; - } - - p_nd->m_p_next_sibling = NULL; - base_type::make_child_of(p_next, p_nd); - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd, false)); - return p_nd; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -back_join(node_pointer p_nd, node_pointer p_next) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - _GLIBCXX_DEBUG_ASSERT(p_next->m_p_next_sibling == NULL); - - if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value)) - { - p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - base_type::make_child_of(p_nd, p_next); - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_next, false)); - return p_next; - } - - p_nd->m_p_next_sibling = NULL; - base_type::make_child_of(p_next, p_nd); - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd, false)); - return p_nd; -} - -PB_DS_CLASS_T_DEC -template<typename Pred> -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - if (base_type::empty()) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return 0; - } - base_type::to_linked_list(); - node_pointer p_out = base_type::prune(pred); - size_type ersd = 0; - while (p_out != NULL) - { - ++ersd; - node_pointer p_next = p_out->m_p_next_sibling; - base_type::actual_erase_node(p_out); - p_out = p_next; - } - - node_pointer p_cur = base_type::m_p_root; - base_type::m_p_root = NULL; - while (p_cur != NULL) - { - node_pointer p_next = p_cur->m_p_next_sibling; - p_cur->m_p_l_child = p_cur->m_p_next_sibling = p_cur->m_p_prev_or_parent = NULL; - - push_imp(p_cur); - p_cur = p_next; - } - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return ersd; -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp deleted file mode 100644 index 85efd70dc..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp +++ /dev/null @@ -1,50 +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 find_fn_imps.hpp - * Contains an implementation class for a pairing heap. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reference -PB_DS_CLASS_C_DEC:: -top() const -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - return base_type::m_p_root->m_value; -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp deleted file mode 100644 index b00e9d13c..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp +++ /dev/null @@ -1,101 +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 a pairing heap. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -push(const_reference r_val) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - node_pointer p_new_nd = base_type::get_new_node_for_insert(r_val); - - push_imp(p_new_nd); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - return point_iterator(p_new_nd); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -push_imp(node_pointer p_nd) -{ - p_nd->m_p_l_child = NULL; - - if (base_type::m_p_root == NULL) - { - p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent = NULL; - - base_type::m_p_root = p_nd; - } - else if (Cmp_Fn::operator()(base_type::m_p_root->m_value, p_nd->m_value)) - { - p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent = NULL; - - base_type::make_child_of(base_type::m_p_root, p_nd); - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd, false)); - - base_type::m_p_root = p_nd; - } - else - { - base_type::make_child_of(p_nd, base_type::m_p_root); - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(base_type::m_p_root, false)); - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -modify(point_iterator it, const_reference r_new_val) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - remove_node(it.m_p_nd); - - it.m_p_nd->m_value = r_new_val; - - push_imp(it.m_p_nd); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp deleted file mode 100644 index e19bcb695..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp +++ /dev/null @@ -1,216 +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 pairing_heap_.hpp - * Contains an implementation class for a pairing heap. - */ - -/* - * Pairing heap: - * Michael L. Fredman, Robert Sedgewick, Daniel Dominic Sleator, - * and Robert Endre Tarjan, The Pairing Heap: - * A New Form of Self-Adjusting Heap, Algorithmica, 1(1):111-129, 1986. - */ - -#include <ext/pb_ds/detail/cond_dealtor.hpp> -#include <ext/pb_ds/detail/type_utils.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_T_DEC \ - template<typename Value_Type, class Cmp_Fn, class Allocator> - -#define PB_DS_CLASS_C_DEC \ - pairing_heap_<Value_Type, Cmp_Fn, Allocator> - -#ifdef _GLIBCXX_DEBUG -#define PB_DS_BASE_C_DEC \ - left_child_next_sibling_heap_< \ - Value_Type, \ - Cmp_Fn, \ - null_left_child_next_sibling_heap_node_metadata, \ - Allocator, \ - false> -#else -#define PB_DS_BASE_C_DEC \ - left_child_next_sibling_heap_< \ - Value_Type, \ - Cmp_Fn, \ - null_left_child_next_sibling_heap_node_metadata, \ - Allocator> -#endif - - /** - * class description = "P4ri|\|g h3ap$"> - **/ - template<typename Value_Type, class Cmp_Fn, class Allocator> - class pairing_heap_ : public PB_DS_BASE_C_DEC - { - - private: - typedef PB_DS_BASE_C_DEC base_type; - - typedef typename base_type::node_pointer node_pointer; - - public: - - typedef typename Allocator::size_type size_type; - - typedef typename Allocator::difference_type difference_type; - - typedef Value_Type value_type; - - 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< - value_type>::other::reference - reference; - - typedef - typename Allocator::template rebind< - value_type>::other::const_reference - const_reference; - - typedef - typename PB_DS_BASE_C_DEC::const_point_iterator - const_point_iterator; - - typedef typename PB_DS_BASE_C_DEC::point_iterator point_iterator; - - typedef typename PB_DS_BASE_C_DEC::const_iterator const_iterator; - - typedef typename PB_DS_BASE_C_DEC::iterator iterator; - - typedef Cmp_Fn cmp_fn; - - typedef Allocator allocator_type; - - - pairing_heap_(); - - pairing_heap_(const Cmp_Fn& r_cmp_fn); - - pairing_heap_(const PB_DS_CLASS_C_DEC& other); - - void - swap(PB_DS_CLASS_C_DEC& other); - - ~pairing_heap_(); - - inline point_iterator - push(const_reference r_val); - - void - modify(point_iterator it, const_reference r_new_val); - - inline const_reference - top() const; - - void - pop(); - - void - erase(point_iterator it); - - template<typename Pred> - size_type - erase_if(Pred pred); - - template<typename Pred> - void - split(Pred pred, PB_DS_CLASS_C_DEC& other); - - void - join(PB_DS_CLASS_C_DEC& other); - - protected: - - template<typename It> - void - copy_from_range(It first_it, It last_it); - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; -#endif - - private: - - inline void - push_imp(node_pointer p_nd); - - node_pointer - join_node_children(node_pointer p_nd); - - node_pointer - forward_join(node_pointer p_nd, node_pointer p_next); - - node_pointer - back_join(node_pointer p_nd, node_pointer p_next); - - void - remove_node(node_pointer p_nd); - - }; - -#include <ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp> -#include <ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp> -#include <ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp> - -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_BASE_C_DEC - - } // namespace detail -} // namespace __gnu_pbds diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp deleted file mode 100644 index 85d4ddf07..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp +++ /dev/null @@ -1,140 +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 a pairing heap. - */ - -PB_DS_CLASS_T_DEC -template<typename Pred> -void -PB_DS_CLASS_C_DEC:: -split(Pred pred, PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - other.clear(); - - if (base_type::empty()) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - return; - } - - base_type::to_linked_list(); - - node_pointer p_out = base_type::prune(pred); - - while (p_out != NULL) - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0); - --base_type::m_size; - - ++other.m_size; - - node_pointer p_next = p_out->m_p_next_sibling; - - p_out->m_p_l_child = p_out->m_p_next_sibling = p_out->m_p_prev_or_parent = NULL; - - other.push_imp(p_out); - - p_out = p_next; - } - - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - node_pointer p_cur = base_type::m_p_root; - - base_type::m_p_root = NULL; - - while (p_cur != NULL) - { - node_pointer p_next = p_cur->m_p_next_sibling; - - p_cur->m_p_l_child = p_cur->m_p_next_sibling = p_cur->m_p_prev_or_parent = NULL; - - push_imp(p_cur); - - p_cur = p_next; - } - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - } - -PB_DS_CLASS_T_DEC -inline 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_p_root == NULL) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - return; - } - - if (base_type::m_p_root == NULL) - base_type::m_p_root = other.m_p_root; - else if (Cmp_Fn::operator()(base_type::m_p_root->m_value, other.m_p_root->m_value)) - { - base_type::make_child_of(base_type::m_p_root, other.m_p_root); - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(other.m_p_root, false)); - - base_type::m_p_root = other.m_p_root; - } - else - { - base_type::make_child_of(other.m_p_root, base_type::m_p_root); - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(base_type::m_p_root, false)); - } - - base_type::m_size += other.m_size; - - other.m_p_root = NULL; - other.m_size = 0; - - _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/pat_trie_/child_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp deleted file mode 100644 index 15f349efb..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp +++ /dev/null @@ -1,93 +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 child_iterator.hpp - * Contains a iterator for a patricia tree. - */ - -struct iterator : public const_iterator -{ -public: - typedef std::forward_iterator_tag iterator_category; - typedef typename Allocator::difference_type difference_type; - typedef node_pointer value_type; - typedef node_pointer_pointer pointer; - typedef node_pointer_reference reference; - - inline - iterator(node_pointer_pointer p_p_cur = NULL, - node_pointer_pointer p_p_end = NULL) - : const_iterator(p_p_cur, p_p_end) - { } - - inline bool - operator==(const iterator& other) const - { return const_iterator::m_p_p_cur == other.m_p_p_cur; } - - inline bool - operator!=(const iterator& other) const - { return const_iterator::m_p_p_cur != other.m_p_p_cur; } - - inline iterator& - operator++() - { - const_iterator::operator++(); - return *this; - } - - inline iterator - operator++(int) - { - iterator ret_it(*this); - operator++(); - return ret_it; - } - - node_pointer_pointer - operator->() - { - _GLIBCXX_DEBUG_ONLY(const_iterator::assert_referencible();) - return const_iterator::m_p_p_cur; - } - - node_pointer - operator*() - { - _GLIBCXX_DEBUG_ONLY(const_iterator::assert_referencible();) - return *const_iterator::m_p_p_cur; - } -}; - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp deleted file mode 100644 index 184b98652..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp +++ /dev/null @@ -1,79 +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_entry_dealtor.hpp - * Contains a binary tree container conditional deallocator - */ - -class cond_dealtor -{ -public: - inline - cond_dealtor(leaf_pointer p_nd) : m_p_nd(p_nd), - m_no_action_dtor(false), - m_call_destructor(false) - { } - - inline void - set_no_action_dtor() - { - m_no_action_dtor = true; - } - - inline void - set_call_destructor() - { - m_call_destructor = true; - } - - inline - ~cond_dealtor() - { - if (m_no_action_dtor) - return; - - if (m_call_destructor) - m_p_nd->~leaf(); - - s_leaf_allocator.deallocate(m_p_nd, 1); - } - -protected: - leaf_pointer m_p_nd; - bool m_no_action_dtor; - bool m_call_destructor; -}; - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp deleted file mode 100644 index bc349cf2d..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp +++ /dev/null @@ -1,111 +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 const_child_iterator.hpp - * Contains a const_iterator for a patricia tree. - */ - -struct const_iterator -{ -public: - typedef std::forward_iterator_tag iterator_category; - - typedef typename Allocator::difference_type difference_type; - - typedef node_pointer value_type; - - typedef node_pointer_pointer pointer; - - typedef node_pointer_reference reference; - -public: - inline - const_iterator(node_pointer_pointer p_p_cur = NULL, - node_pointer_pointer p_p_end = NULL) - : m_p_p_cur(p_p_cur), m_p_p_end(p_p_end) - { } - - inline bool - operator==(const const_iterator& other) const - { return m_p_p_cur == other.m_p_p_cur; } - - inline bool - operator!=(const const_iterator& other) const - { return m_p_p_cur != other.m_p_p_cur; } - - inline const_iterator& - operator++() - { - do - ++m_p_p_cur; - while (m_p_p_cur != m_p_p_end&& * m_p_p_cur == NULL); - return *this; - } - - inline const_iterator - operator++(int) - { - const_iterator ret_it(*this); - operator++(); - return ret_it; - } - - const node_pointer_pointer - operator->() const - { - _GLIBCXX_DEBUG_ONLY(assert_referencible();) - return (m_p_p_cur); - } - - const_node_pointer - operator*() const - { - _GLIBCXX_DEBUG_ONLY(assert_referencible();) - return (*m_p_p_cur); - } - -protected: -#ifdef _GLIBCXX_DEBUG - void - assert_referencible() const - { _GLIBCXX_DEBUG_ASSERT(m_p_p_cur != m_p_p_end&& * m_p_p_cur != NULL); } -#endif - -public: - node_pointer_pointer m_p_p_cur; - node_pointer_pointer m_p_p_end; -}; - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index ca38f932a..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,214 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::head_allocator -PB_DS_CLASS_C_DEC::s_head_allocator; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::internal_node_allocator -PB_DS_CLASS_C_DEC::s_internal_node_allocator; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::leaf_allocator -PB_DS_CLASS_C_DEC::s_leaf_allocator; - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME() : - m_p_head(s_head_allocator.allocate(1)), - m_size(0) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const e_access_traits& r_e_access_traits) : - synth_e_access_traits(r_e_access_traits), - m_p_head(s_head_allocator.allocate(1)), - m_size(0) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) : -#ifdef _GLIBCXX_DEBUG - debug_base(other), -#endif - synth_e_access_traits(other), - node_update(other), - m_p_head(s_head_allocator.allocate(1)), - m_size(0) -{ - initialize(); - m_size = other.m_size; - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - if (other.m_p_head->m_p_parent == NULL) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return; - } - __try - { - m_p_head->m_p_parent = recursive_copy_node(other.m_p_head->m_p_parent); - } - __catch(...) - { - s_head_allocator.deallocate(m_p_head, 1); - __throw_exception_again; - } - - m_p_head->m_p_min = leftmost_descendant(m_p_head->m_p_parent); - m_p_head->m_p_max = rightmost_descendant(m_p_head->m_p_parent); - m_p_head->m_p_parent->m_p_parent = m_p_head; - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - value_swap(other); - std::swap((e_access_traits& )(*this), (e_access_traits& )other); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -value_swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);) - std::swap(m_p_head, other.m_p_head); - std::swap(m_size, other.m_size); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~PB_DS_CLASS_NAME() -{ - clear(); - s_head_allocator.deallocate(m_p_head, 1); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ - new (m_p_head) head(); - m_p_head->m_p_parent = NULL; - m_p_head->m_p_min = m_p_head; - m_p_head->m_p_max = m_p_head; - m_size = 0; -} - -PB_DS_CLASS_T_DEC -template<typename It> -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - insert(*(first_it++)); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -recursive_copy_node(const_node_pointer p_other_nd) -{ - _GLIBCXX_DEBUG_ASSERT(p_other_nd != NULL); - if (p_other_nd->m_type == pat_trie_leaf_node_type) - { - const_leaf_pointer p_other_leaf = static_cast<const_leaf_pointer>(p_other_nd); - - leaf_pointer p_new_lf = s_leaf_allocator.allocate(1); - cond_dealtor cond(p_new_lf); - new (p_new_lf) leaf(p_other_leaf->value()); - apply_update(p_new_lf, (node_update* )this); - cond.set_no_action_dtor(); - return (p_new_lf); - } - - _GLIBCXX_DEBUG_ASSERT(p_other_nd->m_type == pat_trie_internal_node_type); - node_pointer a_p_children[internal_node::arr_size]; - size_type child_i = 0; - const_internal_node_pointer p_other_internal_nd = - static_cast<const_internal_node_pointer>(p_other_nd); - - typename internal_node::const_iterator child_it = - p_other_internal_nd->begin(); - - internal_node_pointer p_ret; - __try - { - while (child_it != p_other_internal_nd->end()) - a_p_children[child_i++] = recursive_copy_node(*(child_it++)); - p_ret = s_internal_node_allocator.allocate(1); - } - __catch(...) - { - while (child_i-- > 0) - clear_imp(a_p_children[child_i]); - __throw_exception_again; - } - - new (p_ret) internal_node(p_other_internal_nd->get_e_ind(), - pref_begin(a_p_children[0])); - - --child_i; - _GLIBCXX_DEBUG_ASSERT(child_i > 1); - do - p_ret->add_child(a_p_children[child_i], pref_begin(a_p_children[child_i]), - pref_end(a_p_children[child_i]), this); - while (child_i-- > 0); - apply_update(p_ret, (node_update* )this); - return p_ret; -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp deleted file mode 100644 index de7565788..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp +++ /dev/null @@ -1,117 +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 pat_trie_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ - if (m_p_head->m_p_parent != NULL) - m_p_head->m_p_parent->assert_valid(this); - assert_iterators(); - assert_reverse_iterators(); - if (m_p_head->m_p_parent == NULL) - { - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_min == m_p_head); - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_max == m_p_head); - _GLIBCXX_DEBUG_ASSERT(empty()); - return; - } - - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_min->m_type == pat_trie_leaf_node_type); - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_max->m_type == pat_trie_leaf_node_type); - _GLIBCXX_DEBUG_ASSERT(!empty()); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_iterators() const -{ - size_type calc_size = 0; - for (const_iterator it = begin(); it != end(); ++it) - { - ++calc_size; - debug_base::check_key_exists(PB_DS_V2F(*it)); - _GLIBCXX_DEBUG_ASSERT(lower_bound(PB_DS_V2F(*it)) == it); - _GLIBCXX_DEBUG_ASSERT(--upper_bound(PB_DS_V2F(*it)) == it); - } - _GLIBCXX_DEBUG_ASSERT(calc_size == m_size); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_reverse_iterators() const -{ - size_type calc_size = 0; - for (const_reverse_iterator it = rbegin(); it != rend(); ++it) - { - ++calc_size; - const_node_pointer p_nd = - const_cast<PB_DS_CLASS_C_DEC* >(this)->find_imp(PB_DS_V2F(*it)); - _GLIBCXX_DEBUG_ASSERT(p_nd == it.m_p_nd); - } - _GLIBCXX_DEBUG_ASSERT(calc_size == m_size); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -recursive_count_leafs(const_node_pointer p_nd) -{ - if (p_nd == NULL) - return (0); - if (p_nd->m_type == pat_trie_leaf_node_type) - return (1); - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type); - size_type ret = 0; - for (typename internal_node::const_iterator it = - static_cast<const_internal_node_pointer>(p_nd)->begin(); - it != static_cast<const_internal_node_pointer>(p_nd)->end(); - ++it) - ret += recursive_count_leafs(*it); - return ret; -} - -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp deleted file mode 100644 index 90988184a..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp +++ /dev/null @@ -1,319 +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 bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase(const_key_reference r_key) -{ - node_pointer p_nd = find_imp(r_key); - if (p_nd == NULL || p_nd->m_type == pat_trie_internal_node_type) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key)); - return false; - } - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_leaf_node_type); - if (!synth_e_access_traits::equal_keys(PB_DS_V2F(reinterpret_cast<leaf_pointer>(p_nd)->value()), r_key)) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key)); - return false; - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key)); - erase_leaf(static_cast<leaf_pointer>(p_nd)); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return true; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_fixup(internal_node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(std::distance(p_nd->begin(), p_nd->end()) >= 1); - if (std::distance(p_nd->begin(), p_nd->end()) == 1) - { - node_pointer p_parent = p_nd->m_p_parent; - if (p_parent == m_p_head) - m_p_head->m_p_parent =* p_nd->begin(); - else - { - _GLIBCXX_DEBUG_ASSERT(p_parent->m_type == pat_trie_internal_node_type); - node_pointer p_new_child =* p_nd->begin(); - static_cast<internal_node_pointer>(p_parent)->replace_child( - p_new_child, - pref_begin(p_new_child), - pref_end(p_new_child), - this); - } - (*p_nd->begin())->m_p_parent = p_nd->m_p_parent; - p_nd->~internal_node(); - s_internal_node_allocator.deallocate(p_nd, 1); - - if (p_parent == m_p_head) - return; - - _GLIBCXX_DEBUG_ASSERT(p_parent->m_type == pat_trie_internal_node_type); - p_nd = static_cast<internal_node_pointer>(p_parent); - } - - while (true) - { - _GLIBCXX_DEBUG_ASSERT(std::distance(p_nd->begin(), p_nd->end()) > 1); - p_nd->update_prefixes(this); - apply_update(p_nd, (node_update* )this); - _GLIBCXX_DEBUG_ONLY(p_nd->assert_valid(this);) - if (p_nd->m_p_parent->m_type == pat_trie_head_node_type) - return; - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_parent->m_type == - pat_trie_internal_node_type); - - p_nd = static_cast<internal_node_pointer>(p_nd->m_p_parent); - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -actual_erase_leaf(leaf_pointer p_l) -{ - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_l->value()))); - p_l->~leaf(); - s_leaf_allocator.deallocate(p_l, 1); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - if (empty()) - return; - - clear_imp(m_p_head->m_p_parent); - m_size = 0; - initialize(); - _GLIBCXX_DEBUG_ONLY(debug_base::clear();) - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear_imp(node_pointer p_nd) -{ - if (p_nd->m_type == pat_trie_internal_node_type) - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type); - for (typename internal_node::iterator it = - static_cast<internal_node_pointer>(p_nd)->begin(); - it != static_cast<internal_node_pointer>(p_nd)->end(); - ++it) - { - node_pointer p_child =* it; - clear_imp(p_child); - } - s_internal_node_allocator.deallocate(static_cast<internal_node_pointer>(p_nd), 1); - return; - } - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_leaf_node_type); - static_cast<leaf_pointer>(p_nd)->~leaf(); - s_leaf_allocator.deallocate(static_cast<leaf_pointer>(p_nd), 1); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -erase(const_iterator it) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid()); - - if (it == end()) - return it; - - const_iterator ret_it = it; - ++ret_it; - _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == pat_trie_leaf_node_type); - erase_leaf(static_cast<leaf_pointer>(it.m_p_nd)); - _GLIBCXX_DEBUG_ONLY(assert_valid()); - return ret_it; -} - -#ifdef PB_DS_DATA_TRUE_INDICATOR -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -erase(iterator it) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid()); - - if (it == end()) - return it; - iterator ret_it = it; - ++ret_it; - _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == pat_trie_leaf_node_type); - erase_leaf(static_cast<leaf_pointer>(it.m_p_nd)); - _GLIBCXX_DEBUG_ONLY(assert_valid()); - return ret_it; -} -#endif // #ifdef PB_DS_DATA_TRUE_INDICATOR - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator -PB_DS_CLASS_C_DEC:: -erase(const_reverse_iterator it) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid()); - - if (it.m_p_nd == m_p_head) - return it; - const_reverse_iterator ret_it = it; - ++ret_it; - - _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == pat_trie_leaf_node_type); - erase_leaf(static_cast<leaf_pointer>(it.m_p_nd)); - _GLIBCXX_DEBUG_ONLY(assert_valid()); - return ret_it; -} - -#ifdef PB_DS_DATA_TRUE_INDICATOR -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -erase(reverse_iterator it) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid()); - - if (it.m_p_nd == m_p_head) - return it; - reverse_iterator ret_it = it; - ++ret_it; - - _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == pat_trie_leaf_node_type); - erase_leaf(static_cast<leaf_pointer>(it.m_p_nd)); - _GLIBCXX_DEBUG_ONLY(assert_valid()); - return ret_it; -} -#endif // #ifdef PB_DS_DATA_TRUE_INDICATOR - -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) -{ - size_type num_ersd = 0; - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - iterator it = begin(); - while (it != end()) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - if (pred(*it)) - { - ++num_ersd; - it = erase(it); - } - else - ++it; - } - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return num_ersd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_leaf(leaf_pointer p_l) -{ - update_min_max_for_erased_leaf(p_l); - if (p_l->m_p_parent->m_type == pat_trie_head_node_type) - { - _GLIBCXX_DEBUG_ASSERT(size() == 1); - clear(); - return; - } - - _GLIBCXX_DEBUG_ASSERT(size() > 1); - _GLIBCXX_DEBUG_ASSERT(p_l->m_p_parent->m_type == - pat_trie_internal_node_type); - - internal_node_pointer p_parent = - static_cast<internal_node_pointer>(p_l->m_p_parent); - - p_parent->remove_child(p_l); - erase_fixup(p_parent); - actual_erase_leaf(p_l); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -update_min_max_for_erased_leaf(leaf_pointer p_l) -{ - if (m_size == 1) - { - m_p_head->m_p_min = m_p_head; - m_p_head->m_p_max = m_p_head; - return; - } - - if (p_l == static_cast<const_leaf_pointer>(m_p_head->m_p_min)) - { - iterator it(p_l); - ++it; - m_p_head->m_p_min = it.m_p_nd; - return; - } - - if (p_l == static_cast<const_leaf_pointer>(m_p_head->m_p_max)) - { - iterator it(p_l); - --it; - m_p_head->m_p_max = it.m_p_nd; - } -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp deleted file mode 100644 index 2552ead8b..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp +++ /dev/null @@ -1,269 +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 find_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find(const_key_reference r_key) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - node_pointer p_nd = find_imp(r_key); - - if (p_nd == NULL || p_nd->m_type != pat_trie_leaf_node_type) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - return end(); - } - - if (synth_e_access_traits::equal_keys(PB_DS_V2F(static_cast<leaf_pointer>(p_nd)->value()), r_key)) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key)); - return iterator(p_nd); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - return end(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_point_iterator -PB_DS_CLASS_C_DEC:: -find(const_key_reference r_key) const -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - const_node_pointer p_nd = const_cast<PB_DS_CLASS_C_DEC* >(this)->find_imp(r_key); - - if (p_nd == NULL || p_nd->m_type != pat_trie_leaf_node_type) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - return end(); - } - - if (synth_e_access_traits::equal_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(p_nd)->value()), r_key)) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key)); - return const_iterator(const_cast<node_pointer>(p_nd)); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);) - return end(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -find_imp(const_key_reference r_key) -{ - if (empty()) - return (NULL); - - typename synth_e_access_traits::const_iterator b_it = - synth_e_access_traits::begin(r_key); - typename synth_e_access_traits::const_iterator e_it = - synth_e_access_traits::end(r_key); - - node_pointer p_nd = m_p_head->m_p_parent; - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - - while (p_nd->m_type != pat_trie_leaf_node_type) - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type); - node_pointer p_next_nd = static_cast<internal_node_pointer>(p_nd)->get_child_node(b_it, e_it, this); - - if (p_next_nd == NULL) - return p_nd; - p_nd = p_next_nd; - } - return p_nd; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -lower_bound_imp(const_key_reference r_key) -{ - if (empty()) - return (m_p_head); - - node_pointer p_nd = m_p_head->m_p_parent; - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - - typename PB_DS_CLASS_C_DEC::const_e_iterator b_it = - synth_e_access_traits::begin(r_key); - - typename PB_DS_CLASS_C_DEC::const_e_iterator e_it = - synth_e_access_traits::end(r_key); - - size_type checked_ind = 0; - while (true) - { - if (p_nd->m_type == pat_trie_leaf_node_type) - { - if (!synth_e_access_traits::cmp_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(p_nd)->value()), r_key)) - return p_nd; - iterator it(p_nd); - ++it; - return it.m_p_nd; - } - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type); - const size_type new_checked_ind = - static_cast<internal_node_pointer>(p_nd)->get_e_ind(); - - p_nd = - static_cast<internal_node_pointer>(p_nd)->get_lower_bound_child_node( b_it, e_it, checked_ind, this); - checked_ind = new_checked_ind; - } -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -lower_bound(const_key_reference r_key) -{ return point_iterator(lower_bound_imp(r_key)); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_point_iterator -PB_DS_CLASS_C_DEC:: -lower_bound(const_key_reference r_key) const -{ - return const_point_iterator(const_cast<PB_DS_CLASS_C_DEC* >(this)->lower_bound_imp(r_key)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -upper_bound(const_key_reference r_key) -{ - point_iterator l_bound_it = lower_bound(r_key); - - _GLIBCXX_DEBUG_ASSERT(l_bound_it == end() || - !synth_e_access_traits::cmp_keys(PB_DS_V2F(*l_bound_it), - r_key)); - - if (l_bound_it == end() || - synth_e_access_traits::cmp_keys(r_key, PB_DS_V2F(*l_bound_it))) - return l_bound_it; - - return ++l_bound_it; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_point_iterator -PB_DS_CLASS_C_DEC:: -upper_bound(const_key_reference r_key) const -{ - const_point_iterator l_bound_it = lower_bound(r_key); - - _GLIBCXX_DEBUG_ASSERT(l_bound_it == end() || - !synth_e_access_traits::cmp_keys(PB_DS_V2F(*l_bound_it), - r_key)); - - if (l_bound_it == end() || - synth_e_access_traits::cmp_keys(r_key, PB_DS_V2F(*l_bound_it))) - return l_bound_it; - return ++l_bound_it; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_e_iterator -PB_DS_CLASS_C_DEC:: -pref_begin(const_node_pointer p_nd) -{ - if (p_nd->m_type == pat_trie_leaf_node_type) - return (synth_e_access_traits::begin(PB_DS_V2F(static_cast<const_leaf_pointer>(p_nd)->value()))); - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type); - return static_cast<const_internal_node_pointer>(p_nd)->pref_b_it(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_e_iterator -PB_DS_CLASS_C_DEC:: -pref_end(const_node_pointer p_nd) -{ - if (p_nd->m_type == pat_trie_leaf_node_type) - return (synth_e_access_traits::end(PB_DS_V2F(static_cast<const_leaf_pointer>(p_nd)->value()))); - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type); - return static_cast<const_internal_node_pointer>(p_nd)->pref_e_it(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_leaf_pointer -PB_DS_CLASS_C_DEC:: -leftmost_descendant(const_node_pointer p_nd) -{ - if (p_nd->m_type == pat_trie_leaf_node_type) - return static_cast<const_leaf_pointer>(p_nd); - return static_cast<const_internal_node_pointer>(p_nd)->leftmost_descendant(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::leaf_pointer -PB_DS_CLASS_C_DEC:: -leftmost_descendant(node_pointer p_nd) -{ - if (p_nd->m_type == pat_trie_leaf_node_type) - return static_cast<leaf_pointer>(p_nd); - return static_cast<internal_node_pointer>(p_nd)->leftmost_descendant(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_leaf_pointer -PB_DS_CLASS_C_DEC:: -rightmost_descendant(const_node_pointer p_nd) -{ - if (p_nd->m_type == pat_trie_leaf_node_type) - return static_cast<const_leaf_pointer>(p_nd); - return static_cast<const_internal_node_pointer>(p_nd)->rightmost_descendant(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::leaf_pointer -PB_DS_CLASS_C_DEC:: -rightmost_descendant(node_pointer p_nd) -{ - if (p_nd->m_type == pat_trie_leaf_node_type) - return static_cast<leaf_pointer>(p_nd); - return static_cast<internal_node_pointer>(p_nd)->rightmost_descendant(); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/head.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/head.hpp deleted file mode 100644 index 0c7381294..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/head.hpp +++ /dev/null @@ -1,124 +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 head.hpp - * Contains a leaf for a patricia tree. - */ - -#ifndef PB_DS_PAT_TRIE_IHEAD_HPP -#define PB_DS_PAT_TRIE_IHEAD_HPP - -#include <ext/pb_ds/detail/pat_trie_/node_base.hpp> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_CLASS_T_DEC \ - template<typename Type_Traits, typename E_Access_Traits, \ - typename Metadata, typename Allocator> - -#define PB_DS_CLASS_C_DEC \ - pat_trie_head<Type_Traits, E_Access_Traits, Metadata, Allocator> - -#define PB_DS_BASE_C_DEC \ - pat_trie_node_base<Type_Traits, E_Access_Traits, Metadata, Allocator> - - template<typename Type_Traits, - typename E_Access_Traits, - typename Metadata, - typename Allocator> - struct pat_trie_head : public PB_DS_BASE_C_DEC - { - private: - typedef E_Access_Traits e_access_traits; - - typedef - typename Allocator::template rebind< - e_access_traits>::other::const_pointer - const_e_access_traits_pointer; - - typedef - typename Allocator::template rebind< - PB_DS_BASE_C_DEC>::other::pointer - node_pointer; - -#ifdef _GLIBCXX_DEBUG - typedef - typename PB_DS_BASE_C_DEC::subtree_debug_info - subtree_debug_info; -#endif - - public: - pat_trie_head(); - -#ifdef _GLIBCXX_DEBUG - virtual subtree_debug_info - assert_valid_imp(const_e_access_traits_pointer p_traits) const; -#endif - - public: - node_pointer m_p_min; - - node_pointer m_p_max; - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - pat_trie_head() : PB_DS_BASE_C_DEC(pat_trie_head_node_type) - { } - -#ifdef _GLIBCXX_DEBUG - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::subtree_debug_info - PB_DS_CLASS_C_DEC:: - assert_valid_imp(const_e_access_traits_pointer /*p_traits*/) const - { - _GLIBCXX_DEBUG_ASSERT(false); - return subtree_debug_info(); - } -#endif - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_BASE_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp deleted file mode 100644 index 81d7096a9..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp +++ /dev/null @@ -1,58 +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 bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ return (m_size == 0); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ 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_internal_node_allocator.max_size(); } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp deleted file mode 100644 index e6049743f..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp +++ /dev/null @@ -1,465 +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_join_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -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();); - split_join_branch_bag bag; - if (!join_prep(other, bag)) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();); - _GLIBCXX_DEBUG_ONLY(other.assert_valid();); - return; - } - - m_p_head->m_p_parent = rec_join(m_p_head->m_p_parent, - other.m_p_head->m_p_parent, 0, bag); - - m_p_head->m_p_parent->m_p_parent = m_p_head; - m_size += other.m_size; - other.initialize(); - _GLIBCXX_DEBUG_ONLY(other.assert_valid();); - m_p_head->m_p_min = leftmost_descendant(m_p_head->m_p_parent); - m_p_head->m_p_max = rightmost_descendant(m_p_head->m_p_parent); - _GLIBCXX_DEBUG_ONLY(assert_valid();); -} - -PB_DS_CLASS_T_DEC -bool -PB_DS_CLASS_C_DEC:: -join_prep(PB_DS_CLASS_C_DEC& other, split_join_branch_bag& r_bag) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - if (other.m_size == 0) - return false; - - if (m_size == 0) - { - value_swap(other); - return false; - } - - const bool greater = synth_e_access_traits::cmp_keys(PB_DS_V2F(static_cast<const_leaf_pointer>( - m_p_head->m_p_max)->value()),PB_DS_V2F(static_cast<const_leaf_pointer>( - other.m_p_head->m_p_min)->value())); - - const bool lesser = synth_e_access_traits::cmp_keys(PB_DS_V2F(static_cast<const_leaf_pointer>( - other.m_p_head->m_p_max)->value()),PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_min)->value())); - - if (!greater && !lesser) - __throw_join_error(); - - rec_join_prep(m_p_head->m_p_parent, other.m_p_head->m_p_parent, r_bag); - _GLIBCXX_DEBUG_ONLY(debug_base::join(other);) - return true; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -rec_join_prep(const_node_pointer p_l, const_node_pointer p_r, split_join_branch_bag& r_bag) -{ - if (p_l->m_type == pat_trie_leaf_node_type) - { - if (p_r->m_type == pat_trie_leaf_node_type) - { - rec_join_prep(static_cast<const_leaf_pointer>(p_l), - static_cast<const_leaf_pointer>(p_r), r_bag); - return; - } - - _GLIBCXX_DEBUG_ASSERT(p_r->m_type == pat_trie_internal_node_type); - rec_join_prep(static_cast<const_leaf_pointer>(p_l), - static_cast<const_internal_node_pointer>(p_r), r_bag); - return; - } - - _GLIBCXX_DEBUG_ASSERT(p_l->m_type == pat_trie_internal_node_type); - if (p_r->m_type == pat_trie_leaf_node_type) - { - rec_join_prep(static_cast<const_internal_node_pointer>(p_l), - static_cast<const_leaf_pointer>(p_r), r_bag); - return; - } - - _GLIBCXX_DEBUG_ASSERT(p_r->m_type == pat_trie_internal_node_type); - - rec_join_prep(static_cast<const_internal_node_pointer>(p_l), - static_cast<const_internal_node_pointer>(p_r), r_bag); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -rec_join_prep(const_leaf_pointer /*p_l*/, const_leaf_pointer /*p_r*/, - split_join_branch_bag& r_bag) -{ r_bag.add_branch(); } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -rec_join_prep(const_leaf_pointer /*p_l*/, const_internal_node_pointer /*p_r*/, - split_join_branch_bag& r_bag) -{ r_bag.add_branch(); } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -rec_join_prep(const_internal_node_pointer /*p_l*/, const_leaf_pointer /*p_r*/, - split_join_branch_bag& r_bag) -{ r_bag.add_branch(); } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -rec_join_prep(const_internal_node_pointer p_l, const_internal_node_pointer p_r, - split_join_branch_bag& r_bag) -{ - if (p_l->get_e_ind() == p_r->get_e_ind() && - synth_e_access_traits::equal_prefixes(p_l->pref_b_it(), p_l->pref_e_it(), - p_r->pref_b_it(), p_r->pref_e_it())) - { - for (typename internal_node::const_iterator it = p_r->begin(); - it != p_r->end(); ++ it) - { - const_node_pointer p_l_join_child = p_l->get_join_child(*it, this); - if (p_l_join_child != NULL) - rec_join_prep(p_l_join_child, * it, r_bag); - } - return; - } - - if (p_r->get_e_ind() < p_l->get_e_ind() && - p_r->should_be_mine(p_l->pref_b_it(), p_l->pref_e_it(), 0, this)) - { - const_node_pointer p_r_join_child = p_r->get_join_child(p_l, this); - if (p_r_join_child != NULL) - rec_join_prep(p_r_join_child, p_l, r_bag); - return; - } - - if (p_r->get_e_ind() < p_l->get_e_ind() && - p_r->should_be_mine(p_l->pref_b_it(), p_l->pref_e_it(), 0, this)) - { - const_node_pointer p_r_join_child = p_r->get_join_child(p_l, this); - if (p_r_join_child != NULL) - rec_join_prep(p_r_join_child, p_l, r_bag); - return; - } - r_bag.add_branch(); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -rec_join(node_pointer p_l, node_pointer p_r, size_type checked_ind, split_join_branch_bag& r_bag) -{ - _GLIBCXX_DEBUG_ASSERT(p_r != NULL); - if (p_l == NULL) - { - apply_update(p_r, (node_update* )this); - return (p_r); - } - - if (p_l->m_type == pat_trie_leaf_node_type) - { - if (p_r->m_type == pat_trie_leaf_node_type) - { - node_pointer p_ret = rec_join(static_cast<leaf_pointer>(p_l), - static_cast<leaf_pointer>(p_r), r_bag); - apply_update(p_ret, (node_update* )this); - return p_ret; - } - - _GLIBCXX_DEBUG_ASSERT(p_r->m_type == pat_trie_internal_node_type); - node_pointer p_ret = rec_join(static_cast<leaf_pointer>(p_l), - static_cast<internal_node_pointer>(p_r), - checked_ind, r_bag); - apply_update(p_ret, (node_update* )this); - return p_ret; - } - - _GLIBCXX_DEBUG_ASSERT(p_l->m_type == pat_trie_internal_node_type); - if (p_r->m_type == pat_trie_leaf_node_type) - { - node_pointer p_ret = rec_join(static_cast<internal_node_pointer>(p_l), - static_cast<leaf_pointer>(p_r), - checked_ind, r_bag); - apply_update(p_ret, (node_update* )this); - return p_ret; - } - - _GLIBCXX_DEBUG_ASSERT(p_r->m_type == pat_trie_internal_node_type); - node_pointer p_ret = rec_join(static_cast<internal_node_pointer>(p_l), - static_cast<internal_node_pointer>(p_r), - r_bag); - - apply_update(p_ret, (node_update* )this); - return p_ret; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -rec_join(leaf_pointer p_l, leaf_pointer p_r, split_join_branch_bag& r_bag) -{ - _GLIBCXX_DEBUG_ASSERT(p_r != NULL); - if (p_l == NULL) - return (p_r); - node_pointer p_ret = insert_branch(p_l, p_r, r_bag); - _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_ret) == 2); - return p_ret; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -rec_join(leaf_pointer p_l, internal_node_pointer p_r, size_type checked_ind, - split_join_branch_bag& r_bag) -{ -#ifdef _GLIBCXX_DEBUG - const size_type lhs_leafs = recursive_count_leafs(p_l); - const size_type rhs_leafs = recursive_count_leafs(p_r); -#endif - - _GLIBCXX_DEBUG_ASSERT(p_r != NULL); - node_pointer p_ret = rec_join(p_r, p_l, checked_ind, r_bag); - _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_ret) == lhs_leafs + rhs_leafs); - return p_ret; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -rec_join(internal_node_pointer p_l, leaf_pointer p_r, size_type checked_ind, split_join_branch_bag& r_bag) -{ - _GLIBCXX_DEBUG_ASSERT(p_l != NULL); - _GLIBCXX_DEBUG_ASSERT(p_r != NULL); - -#ifdef _GLIBCXX_DEBUG - const size_type lhs_leafs = recursive_count_leafs(p_l); - const size_type rhs_leafs = recursive_count_leafs(p_r); -#endif - - if (!p_l->should_be_mine(pref_begin(p_r), pref_end(p_r), checked_ind, this)) - { - node_pointer p_ret = insert_branch(p_l, p_r, r_bag); - _GLIBCXX_DEBUG_ONLY(p_ret->assert_valid(this);) - _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_ret) == - lhs_leafs + rhs_leafs); - return p_ret; - } - - node_pointer p_pot_child = p_l->add_child(p_r, pref_begin(p_r), - pref_end(p_r), this); - if (p_pot_child != p_r) - { - node_pointer p_new_child = rec_join(p_pot_child, p_r, p_l->get_e_ind(), - r_bag); - - p_l->replace_child(p_new_child, pref_begin(p_new_child), - pref_end(p_new_child), this); - } - - _GLIBCXX_DEBUG_ONLY(p_l->assert_valid(this)); - _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_l) == lhs_leafs + rhs_leafs); - return p_l; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -rec_join(internal_node_pointer p_l, internal_node_pointer p_r, split_join_branch_bag& r_bag) -{ - _GLIBCXX_DEBUG_ASSERT(p_l != NULL); - _GLIBCXX_DEBUG_ASSERT(p_r != NULL); - -#ifdef _GLIBCXX_DEBUG - const size_type lhs_leafs = recursive_count_leafs(p_l); - const size_type rhs_leafs = recursive_count_leafs(p_r); -#endif - - if (p_l->get_e_ind() == p_r->get_e_ind() && - synth_e_access_traits::equal_prefixes(p_l->pref_b_it(), p_l->pref_e_it(), - p_r->pref_b_it(), p_r->pref_e_it())) - { - for (typename internal_node::iterator it = p_r->begin(); - it != p_r->end(); ++ it) - { - node_pointer p_new_child = rec_join(p_l->get_join_child(*it, this), - * it, 0, r_bag); - p_l->replace_child(p_new_child, pref_begin(p_new_child), - pref_end(p_new_child), this); - } - - p_r->~internal_node(); - s_internal_node_allocator.deallocate(p_r, 1); - _GLIBCXX_DEBUG_ONLY(p_l->assert_valid(this);) - _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_l) == lhs_leafs + rhs_leafs); - return p_l; - } - - if (p_l->get_e_ind() < p_r->get_e_ind() && - p_l->should_be_mine(p_r->pref_b_it(), p_r->pref_e_it(), 0, this)) - { - node_pointer p_new_child = rec_join(p_l->get_join_child(p_r, this), - p_r, 0, r_bag); - p_l->replace_child(p_new_child, pref_begin(p_new_child), - pref_end(p_new_child), this); - _GLIBCXX_DEBUG_ONLY(p_l->assert_valid(this);) - return p_l; - } - - if (p_r->get_e_ind() < p_l->get_e_ind() && - p_r->should_be_mine(p_l->pref_b_it(), p_l->pref_e_it(), 0, this)) - { - node_pointer p_new_child = rec_join(p_r->get_join_child(p_l, this), p_l, - 0, r_bag); - - p_r->replace_child(p_new_child, pref_begin(p_new_child), - pref_end(p_new_child), this); - - _GLIBCXX_DEBUG_ONLY(p_r->assert_valid(this);) - _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_r) == lhs_leafs + rhs_leafs); - return p_r; - } - - node_pointer p_ret = insert_branch(p_l, p_r, r_bag); - _GLIBCXX_DEBUG_ONLY(p_ret->assert_valid(this);) - _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_ret) == lhs_leafs + rhs_leafs); - return p_ret; -} - -PB_DS_CLASS_T_DEC -inline std::pair<typename PB_DS_CLASS_C_DEC::iterator, bool> -PB_DS_CLASS_C_DEC:: -insert(const_reference r_val) -{ - node_pointer p_lf = find_imp(PB_DS_V2F(r_val)); - if (p_lf != NULL && p_lf->m_type == pat_trie_leaf_node_type && - synth_e_access_traits::equal_keys(PB_DS_V2F(static_cast<leaf_pointer>(p_lf)->value()), PB_DS_V2F(r_val))) - { - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(PB_DS_V2F(r_val))); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return std::make_pair(iterator(p_lf), false); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(PB_DS_V2F(r_val))); - - leaf_pointer p_new_lf = s_leaf_allocator.allocate(1); - cond_dealtor cond(p_new_lf); - - new (p_new_lf) leaf(r_val); - apply_update(p_new_lf, (node_update* )this); - cond.set_call_destructor(); - split_join_branch_bag bag; - bag.add_branch(); - m_p_head->m_p_parent = rec_join(m_p_head->m_p_parent, p_new_lf, 0, bag); - m_p_head->m_p_parent->m_p_parent = m_p_head; - cond.set_no_action_dtor(); - ++m_size; - update_min_max_for_inserted_leaf(p_new_lf); - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));) - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return std::make_pair(point_iterator(p_new_lf), true); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -keys_diff_ind(typename e_access_traits::const_iterator b_l, typename e_access_traits::const_iterator e_l, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r) -{ - size_type diff_pos = 0; - while (b_l != e_l) - { - if (b_r == e_r) - return (diff_pos); - if (e_access_traits::e_pos(*b_l) != e_access_traits::e_pos(*b_r)) - return (diff_pos); - ++b_l; - ++b_r; - ++diff_pos; - } - _GLIBCXX_DEBUG_ASSERT(b_r != e_r); - return diff_pos; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::internal_node_pointer -PB_DS_CLASS_C_DEC:: -insert_branch(node_pointer p_l, node_pointer p_r, split_join_branch_bag& r_bag) -{ - typename synth_e_access_traits::const_iterator left_b_it = pref_begin(p_l); - typename synth_e_access_traits::const_iterator left_e_it = pref_end(p_l); - typename synth_e_access_traits::const_iterator right_b_it = pref_begin(p_r); - typename synth_e_access_traits::const_iterator right_e_it = pref_end(p_r); - - const size_type diff_ind = keys_diff_ind(left_b_it, left_e_it, - right_b_it, right_e_it); - - internal_node_pointer p_new_nd = r_bag.get_branch(); - new (p_new_nd) internal_node(diff_ind, left_b_it); - p_new_nd->add_child(p_l, left_b_it, left_e_it, this); - p_new_nd->add_child(p_r, right_b_it, right_e_it, this); - p_l->m_p_parent = p_new_nd; - p_r->m_p_parent = p_new_nd; - _GLIBCXX_DEBUG_ONLY(p_new_nd->assert_valid(this);) - return (p_new_nd); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -update_min_max_for_inserted_leaf(leaf_pointer p_new_lf) -{ - if (m_p_head->m_p_min == m_p_head || - synth_e_access_traits::cmp_keys(PB_DS_V2F(p_new_lf->value()), - PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_min)->value()))) - m_p_head->m_p_min = p_new_lf; - - if (m_p_head->m_p_max == m_p_head || - synth_e_access_traits::cmp_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_max)->value()), PB_DS_V2F(p_new_lf->value()))) - m_p_head->m_p_max = p_new_lf; -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp deleted file mode 100644 index bf2f42916..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp +++ /dev/null @@ -1,599 +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 internal_node.hpp - * Contains an internal PB_DS_BASE_C_DEC for a patricia tree. - */ - -#ifndef PB_DS_PAT_TRIE_INTERNAL_NODE_HPP -#define PB_DS_PAT_TRIE_INTERNAL_NODE_HPP - -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_CLASS_T_DEC \ - template<typename Type_Traits, typename E_Access_Traits, \ - typename Metadata, typename Allocator> - -#define PB_DS_CLASS_C_DEC \ - pat_trie_internal_node<Type_Traits, E_Access_Traits, Metadata, Allocator> - -#define PB_DS_BASE_C_DEC \ - pat_trie_node_base<Type_Traits, E_Access_Traits, Metadata, Allocator> - -#define PB_DS_LEAF_C_DEC \ - pat_trie_leaf<Type_Traits, E_Access_Traits, Metadata, Allocator> - - template<typename Type_Traits, - typename E_Access_Traits, - typename Metadata, - typename Allocator> - struct pat_trie_internal_node : public PB_DS_BASE_C_DEC - { - private: - typedef PB_DS_BASE_C_DEC base_type; - typedef Type_Traits type_traits; - typedef typename type_traits::value_type value_type; - typedef typename Allocator::size_type size_type; - - typedef E_Access_Traits e_access_traits; - typedef typename e_access_traits::const_iterator const_e_iterator; - typedef typename Allocator::template rebind<e_access_traits>::other access_rebind; - typedef typename access_rebind::const_pointer const_e_access_traits_pointer; - - typedef typename Allocator::template rebind<base_type>::other base_rebind; - typedef typename base_rebind::pointer node_pointer; - typedef typename base_rebind::const_pointer const_node_pointer; - - typedef PB_DS_LEAF_C_DEC leaf; - typedef typename Allocator::template rebind<leaf>::other leaf_rebind; - typedef typename leaf_rebind::pointer leaf_pointer; - typedef typename leaf_rebind::const_pointer const_leaf_pointer; - - typedef typename Allocator::template rebind<pat_trie_internal_node>::other internal_node_rebind; - typedef typename internal_node_rebind::pointer internal_node_pointer; - typedef typename internal_node_rebind::const_pointer const_internal_node_pointer; - -#ifdef _GLIBCXX_DEBUG - typedef typename base_type::subtree_debug_info subtree_debug_info; - - virtual subtree_debug_info - assert_valid_imp(const_e_access_traits_pointer) const; -#endif - - inline size_type - get_pref_pos(const_e_iterator, const_e_iterator, - const_e_access_traits_pointer) const; - - public: - typedef typename Allocator::template rebind<node_pointer>::other node_pointer_rebind; - typedef typename node_pointer_rebind::pointer node_pointer_pointer; - typedef typename node_pointer_rebind::reference node_pointer_reference; - - enum - { - arr_size = E_Access_Traits::max_size + 1 - }; - PB_DS_STATIC_ASSERT(min_arr_size, arr_size >= 2); - -#include <ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp> -#include <ext/pb_ds/detail/pat_trie_/child_iterator.hpp> - - pat_trie_internal_node(size_type, const const_e_iterator); - - void - update_prefixes(const_e_access_traits_pointer); - - const_iterator - begin() const; - - iterator - begin(); - - const_iterator - end() const; - - iterator - end(); - - inline node_pointer - get_child_node(const_e_iterator, const_e_iterator, - const_e_access_traits_pointer); - - inline const_node_pointer - get_child_node(const_e_iterator, const_e_iterator, - const_e_access_traits_pointer) const; - - inline iterator - get_child_it(const_e_iterator, const_e_iterator, - const_e_access_traits_pointer); - - inline node_pointer - get_lower_bound_child_node(const_e_iterator, const_e_iterator, - size_type, const_e_access_traits_pointer); - - inline node_pointer - add_child(node_pointer, const_e_iterator, const_e_iterator, - const_e_access_traits_pointer); - - inline const_node_pointer - get_join_child(const_node_pointer, const_e_access_traits_pointer) const; - - inline node_pointer - get_join_child(node_pointer, const_e_access_traits_pointer); - - void - remove_child(node_pointer p_nd); - - iterator - remove_child(iterator it); - - void - replace_child(node_pointer, const_e_iterator, const_e_iterator, - const_e_access_traits_pointer); - - inline const_e_iterator - pref_b_it() const; - - inline const_e_iterator - pref_e_it() const; - - inline size_type - get_e_ind() const; - - bool - should_be_mine(const_e_iterator, const_e_iterator, size_type, - const_e_access_traits_pointer) const; - - leaf_pointer - leftmost_descendant(); - - const_leaf_pointer - leftmost_descendant() const; - - leaf_pointer - rightmost_descendant(); - - const_leaf_pointer - rightmost_descendant() const; - -#ifdef _GLIBCXX_DEBUG - size_type - e_ind() const; -#endif - - private: - pat_trie_internal_node(const pat_trie_internal_node&); - - size_type - get_begin_pos() const; - - const size_type m_e_ind; - const_e_iterator m_pref_b_it; - const_e_iterator m_pref_e_it; - node_pointer m_a_p_children[arr_size]; - static leaf_rebind s_leaf_alloc; - static internal_node_rebind s_internal_node_alloc; - }; - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::leaf_rebind - PB_DS_CLASS_C_DEC::s_leaf_alloc; - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::internal_node_rebind - PB_DS_CLASS_C_DEC::s_internal_node_alloc; - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - get_pref_pos(const_e_iterator b_it, const_e_iterator e_it, - const_e_access_traits_pointer p_traits) const - { - if (static_cast<size_t>(std::distance(b_it, e_it)) <= m_e_ind) - return 0; - std::advance(b_it, m_e_ind); - return 1 + p_traits->e_pos(*b_it); - } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - pat_trie_internal_node(size_type len, const const_e_iterator it) : - PB_DS_BASE_C_DEC(pat_trie_internal_node_type), - m_e_ind(len), m_pref_b_it(it), m_pref_e_it(it) - { - std::advance(m_pref_e_it, m_e_ind); - std::fill(m_a_p_children, m_a_p_children + arr_size, - static_cast<node_pointer>(NULL)); - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - update_prefixes(const_e_access_traits_pointer p_traits) - { - node_pointer p_first = *begin(); - if (p_first->m_type == pat_trie_leaf_node_type) - { - const_leaf_pointer p = static_cast<const_leaf_pointer>(p_first); - m_pref_b_it = p_traits->begin(e_access_traits::extract_key(p->value())); - } - else - { - _GLIBCXX_DEBUG_ASSERT(p_first->m_type == pat_trie_internal_node_type); - m_pref_b_it = static_cast<internal_node_pointer>(p_first)->pref_b_it(); - } - m_pref_e_it = m_pref_b_it; - std::advance(m_pref_e_it, m_e_ind); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::const_iterator - PB_DS_CLASS_C_DEC:: - begin() const - { - typedef node_pointer_pointer pointer_type; - pointer_type p = const_cast<pointer_type>(m_a_p_children); - return const_iterator(p + get_begin_pos(), p + arr_size); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::iterator - PB_DS_CLASS_C_DEC:: - begin() - { - return iterator(m_a_p_children + get_begin_pos(), - m_a_p_children + arr_size); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::const_iterator - PB_DS_CLASS_C_DEC:: - end() const - { - typedef node_pointer_pointer pointer_type; - pointer_type p = const_cast<pointer_type>(m_a_p_children) + arr_size; - return const_iterator(p, p); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::iterator - PB_DS_CLASS_C_DEC:: - end() - { return iterator(m_a_p_children + arr_size, m_a_p_children + arr_size); } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::node_pointer - PB_DS_CLASS_C_DEC:: - get_child_node(const_e_iterator b_it, const_e_iterator e_it, - const_e_access_traits_pointer p_traits) - { - const size_type i = get_pref_pos(b_it, e_it, p_traits); - _GLIBCXX_DEBUG_ASSERT(i < arr_size); - return m_a_p_children[i]; - } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::iterator - PB_DS_CLASS_C_DEC:: - get_child_it(const_e_iterator b_it, const_e_iterator e_it, - const_e_access_traits_pointer p_traits) - { - const size_type i = get_pref_pos(b_it, e_it, p_traits); - _GLIBCXX_DEBUG_ASSERT(i < arr_size); - _GLIBCXX_DEBUG_ASSERT(m_a_p_children[i] != NULL); - return iterator(m_a_p_children + i, m_a_p_children + i); - } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::const_node_pointer - PB_DS_CLASS_C_DEC:: - get_child_node(const_e_iterator b_it, const_e_iterator e_it, - const_e_access_traits_pointer p_traits) const - { return const_cast<node_pointer>(get_child_node(b_it, e_it, p_traits)); } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::node_pointer - PB_DS_CLASS_C_DEC:: - get_lower_bound_child_node(const_e_iterator b_it, const_e_iterator e_it, - size_type checked_ind, - const_e_access_traits_pointer p_traits) - { - if (!should_be_mine(b_it, e_it, checked_ind, p_traits)) - { - if (p_traits->cmp_prefixes(b_it, e_it, m_pref_b_it, m_pref_e_it, true)) - return leftmost_descendant(); - return rightmost_descendant(); - } - - size_type i = get_pref_pos(b_it, e_it, p_traits); - _GLIBCXX_DEBUG_ASSERT(i < arr_size); - - if (m_a_p_children[i] != NULL) - return m_a_p_children[i]; - - while (++i < arr_size) - if (m_a_p_children[i] != NULL) - { - if (m_a_p_children[i]->m_type == pat_trie_leaf_node_type) - return m_a_p_children[i]; - - _GLIBCXX_DEBUG_ASSERT(m_a_p_children[i]->m_type == pat_trie_internal_node_type); - - return static_cast<internal_node_pointer>(m_a_p_children[i])->leftmost_descendant(); - } - - return rightmost_descendant(); - } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::node_pointer - PB_DS_CLASS_C_DEC:: - add_child(node_pointer p_nd, const_e_iterator b_it, const_e_iterator e_it, - const_e_access_traits_pointer p_traits) - { - const size_type i = get_pref_pos(b_it, e_it, p_traits); - _GLIBCXX_DEBUG_ASSERT(i < arr_size); - if (m_a_p_children[i] == NULL) - { - m_a_p_children[i] = p_nd; - p_nd->m_p_parent = this; - return p_nd; - } - return m_a_p_children[i]; - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::const_node_pointer - PB_DS_CLASS_C_DEC:: - get_join_child(const_node_pointer p_nd, const_e_access_traits_pointer p_traits) const - { - node_pointer p = const_cast<node_pointer>(p_nd); - return const_cast<internal_node_pointer>(this)->get_join_child(p, p_traits); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::node_pointer - PB_DS_CLASS_C_DEC:: - get_join_child(node_pointer p_nd, const_e_access_traits_pointer p_traits) - { - size_type i; - const_e_iterator b_it; - const_e_iterator e_it; - if (p_nd->m_type == pat_trie_leaf_node_type) - { - typename Type_Traits::const_key_reference r_key = - e_access_traits::extract_key(static_cast<const_leaf_pointer>(p_nd)->value()); - - b_it = p_traits->begin(r_key); - e_it = p_traits->end(r_key); - } - else - { - b_it = static_cast<internal_node_pointer>(p_nd)->pref_b_it(); - e_it = static_cast<internal_node_pointer>(p_nd)->pref_e_it(); - } - i = get_pref_pos(b_it, e_it, p_traits); - _GLIBCXX_DEBUG_ASSERT(i < arr_size); - return m_a_p_children[i]; - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - remove_child(node_pointer p_nd) - { - size_type i = 0; - for (; i < arr_size; ++i) - if (m_a_p_children[i] == p_nd) - { - m_a_p_children[i] = NULL; - return; - } - _GLIBCXX_DEBUG_ASSERT(i != arr_size); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::iterator - PB_DS_CLASS_C_DEC:: - remove_child(iterator it) - { - iterator ret = it; - ++ret; - * it.m_p_p_cur = NULL; - return ret; - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - replace_child(node_pointer p_nd, const_e_iterator b_it, - const_e_iterator e_it, - const_e_access_traits_pointer p_traits) - { - const size_type i = get_pref_pos(b_it, e_it, p_traits); - _GLIBCXX_DEBUG_ASSERT(i < arr_size); - m_a_p_children[i] = p_nd; - p_nd->m_p_parent = this; - } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::const_e_iterator - PB_DS_CLASS_C_DEC:: - pref_b_it() const - { return m_pref_b_it; } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::const_e_iterator - PB_DS_CLASS_C_DEC:: - pref_e_it() const - { return m_pref_e_it; } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - get_e_ind() const - { return m_e_ind; } - - PB_DS_CLASS_T_DEC - bool - PB_DS_CLASS_C_DEC:: - should_be_mine(const_e_iterator b_it, const_e_iterator e_it, - size_type checked_ind, - const_e_access_traits_pointer p_traits) const - { - if (m_e_ind == 0) - return true; - - const size_type num_es = std::distance(b_it, e_it); - if (num_es < m_e_ind) - return false; - - const_e_iterator key_b_it = b_it; - std::advance(key_b_it, checked_ind); - const_e_iterator key_e_it = b_it; - std::advance(key_e_it, m_e_ind); - - const_e_iterator value_b_it = m_pref_b_it; - std::advance(value_b_it, checked_ind); - const_e_iterator value_e_it = m_pref_b_it; - std::advance(value_e_it, m_e_ind); - - return p_traits->equal_prefixes(key_b_it, key_e_it, value_b_it, - value_e_it); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::leaf_pointer - PB_DS_CLASS_C_DEC:: - leftmost_descendant() - { - node_pointer p_pot =* begin(); - if (p_pot->m_type == pat_trie_leaf_node_type) - return (static_cast<leaf_pointer>(p_pot)); - _GLIBCXX_DEBUG_ASSERT(p_pot->m_type == pat_trie_internal_node_type); - return static_cast<internal_node_pointer>(p_pot)->leftmost_descendant(); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::const_leaf_pointer - PB_DS_CLASS_C_DEC:: - leftmost_descendant() const - { - return const_cast<internal_node_pointer>(this)->leftmost_descendant(); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::leaf_pointer - PB_DS_CLASS_C_DEC:: - rightmost_descendant() - { - const size_type num_children = std::distance(begin(), end()); - _GLIBCXX_DEBUG_ASSERT(num_children >= 2); - - iterator it = begin(); - std::advance(it, num_children - 1); - node_pointer p_pot =* it; - if (p_pot->m_type == pat_trie_leaf_node_type) - return static_cast<leaf_pointer>(p_pot); - _GLIBCXX_DEBUG_ASSERT(p_pot->m_type == pat_trie_internal_node_type); - return static_cast<internal_node_pointer>(p_pot)->rightmost_descendant(); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::const_leaf_pointer - PB_DS_CLASS_C_DEC:: - rightmost_descendant() const - { - return const_cast<internal_node_pointer>(this)->rightmost_descendant(); - } - -#ifdef _GLIBCXX_DEBUG - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - e_ind() const - { return m_e_ind; } -#endif - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - get_begin_pos() const - { - size_type i; - for (i = 0; i < arr_size && m_a_p_children[i] == NULL; ++i) - ; - return i; - } - -#ifdef _GLIBCXX_DEBUG - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::subtree_debug_info - PB_DS_CLASS_C_DEC:: - assert_valid_imp(const_e_access_traits_pointer p_traits) const - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_type == pat_trie_internal_node_type); - _GLIBCXX_DEBUG_ASSERT(static_cast<size_type>(std::distance(pref_b_it(), pref_e_it())) == m_e_ind); - _GLIBCXX_DEBUG_ASSERT(std::distance(begin(), end()) >= 2); - - for (typename pat_trie_internal_node::const_iterator it = begin(); - it != end(); ++it) - { - const_node_pointer p_nd =* it; - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_parent == this); - subtree_debug_info child_ret = p_nd->assert_valid_imp(p_traits); - - _GLIBCXX_DEBUG_ASSERT(static_cast<size_type>(std::distance(child_ret.first, child_ret.second)) >= m_e_ind); - _GLIBCXX_DEBUG_ASSERT(should_be_mine(child_ret.first, child_ret.second, 0, p_traits)); - _GLIBCXX_DEBUG_ASSERT(get_pref_pos(child_ret.first, child_ret.second, p_traits) == static_cast<size_type>(it.m_p_p_cur - m_a_p_children)); - } - return std::make_pair(pref_b_it(), pref_e_it()); - } -#endif - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_BASE_C_DEC -#undef PB_DS_LEAF_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp deleted file mode 100644 index 9902d96db..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp +++ /dev/null @@ -1,120 +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 bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ return iterator(m_p_head->m_p_min); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ return const_iterator(m_p_head->m_p_min); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ return iterator(m_p_head); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ return const_iterator(m_p_head); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator -PB_DS_CLASS_C_DEC:: -rbegin() const -{ - if (empty()) - return rend(); - return --end(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -rbegin() -{ - if (empty()) - return rend(); - return --end(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -rend() -{ return reverse_iterator(m_p_head); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator -PB_DS_CLASS_C_DEC:: -rend() const -{ return const_reverse_iterator(m_p_head); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_node_iterator -PB_DS_CLASS_C_DEC:: -node_begin() const -{ return const_node_iterator(m_p_head->m_p_parent, this); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -node_begin() -{ return node_iterator(m_p_head->m_p_parent, this); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_node_iterator -PB_DS_CLASS_C_DEC:: -node_end() const -{ return const_node_iterator(NULL, this); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -node_end() -{ return node_iterator(NULL, this); } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/leaf.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/leaf.hpp deleted file mode 100644 index 91cf14faa..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/leaf.hpp +++ /dev/null @@ -1,171 +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 leaf.hpp - * Contains a pat_trie_leaf for a patricia tree. - */ - -#ifndef PB_DS_PAT_TRIE_LEAF_HPP -#define PB_DS_PAT_TRIE_LEAF_HPP - -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_T_DEC \ - template< \ - class Type_Traits, \ - class E_Access_Traits, \ - class Metadata, \ - class Allocator> - -#define PB_DS_CLASS_C_DEC \ - pat_trie_leaf< \ - Type_Traits, \ - E_Access_Traits, \ - Metadata, \ - Allocator> - -#define PB_DS_BASE_C_DEC \ - pat_trie_node_base< \ - Type_Traits, \ - E_Access_Traits, \ - Metadata, \ - Allocator> - -#define PB_DS_PAT_TRIE_SUBTREE_DEBUG_INFO_C_DEC \ - pat_trie_subtree_debug_info< \ - Type_Traits, \ - E_Access_Traits, \ - Allocator> - - template<typename Type_Traits, - class E_Access_Traits, - class Metadata, - class Allocator> - struct pat_trie_leaf : public PB_DS_BASE_C_DEC - { - private: - typedef typename Type_Traits::value_type value_type; - - typedef typename Type_Traits::const_reference const_reference; - - typedef typename Type_Traits::reference reference; - - typedef - typename Allocator::template rebind< - E_Access_Traits>::other::const_pointer - const_e_access_traits_pointer; - -#ifdef _GLIBCXX_DEBUG - typedef - typename PB_DS_BASE_C_DEC::subtree_debug_info - subtree_debug_info; -#endif - - typedef PB_DS_BASE_C_DEC base_type; - - public: - pat_trie_leaf(const_reference r_val); - - inline reference - value(); - - inline const_reference - value() const; - -#ifdef _GLIBCXX_DEBUG - virtual subtree_debug_info - assert_valid_imp(const_e_access_traits_pointer p_traits) const; - - virtual - ~pat_trie_leaf(); -#endif - - private: - pat_trie_leaf(const PB_DS_CLASS_C_DEC& other); - - value_type m_value; - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - pat_trie_leaf(const_reference r_val) : - PB_DS_BASE_C_DEC(pat_trie_leaf_node_type), m_value(r_val) - { } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::reference - PB_DS_CLASS_C_DEC:: - value() - { return m_value; } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::const_reference - PB_DS_CLASS_C_DEC:: - value() const - { return m_value; } - -#ifdef _GLIBCXX_DEBUG - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::subtree_debug_info - PB_DS_CLASS_C_DEC:: - assert_valid_imp(const_e_access_traits_pointer p_traits) const - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_type == pat_trie_leaf_node_type); - subtree_debug_info ret; - const_reference r_val = value(); - return std::make_pair(p_traits->begin(p_traits->extract_key(r_val)), - p_traits->end(p_traits->extract_key(r_val))); - } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - ~pat_trie_leaf() { } -#endif - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_BASE_C_DEC -#undef PB_DS_PAT_TRIE_SUBTREE_DEBUG_INFO_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_base.hpp deleted file mode 100644 index bb13068bc..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_base.hpp +++ /dev/null @@ -1,128 +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 node_base.hpp - * Contains a pat_trie_node_base base for a patricia tree. - */ - -#ifndef PB_DS_PAT_TRIE_NODE_BASE_HPP -#define PB_DS_PAT_TRIE_NODE_BASE_HPP - -#include <ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp> - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_CLASS_T_DEC \ - template<typename Type_Traits, typename E_Access_Traits, \ - typename Metadata, typename Allocator> - -#define PB_DS_CLASS_C_DEC \ - pat_trie_node_base<Type_Traits, E_Access_Traits, Metadata, Allocator> - -#define PB_DS_PAT_TRIE_SUBTREE_DEBUG_INFO_C_DEC \ - pat_trie_subtree_debug_info<Type_Traits, E_Access_Traits, Allocator> - - enum pat_trie_node_type - { - pat_trie_internal_node_type, - pat_trie_leaf_node_type, - pat_trie_head_node_type - }; - - template<typename Type_Traits, - typename E_Access_Traits, - typename Metadata, - typename Allocator> - struct pat_trie_node_base : public pat_trie_node_metadata_base< - Metadata, - Allocator> - { - public: - typedef - typename Allocator::template rebind< - pat_trie_node_base>::other::pointer - node_pointer; - - typedef - typename Allocator::template rebind< - E_Access_Traits>::other::const_pointer - const_e_access_traits_pointer; - -#ifdef _GLIBCXX_DEBUG - typedef - std::pair< - typename E_Access_Traits::const_iterator, - typename E_Access_Traits::const_iterator> - subtree_debug_info; -#endif - - pat_trie_node_base(pat_trie_node_type type); - -#ifdef _GLIBCXX_DEBUG - void - assert_valid(const_e_access_traits_pointer p_traits) const; - - virtual subtree_debug_info - assert_valid_imp(const_e_access_traits_pointer p_traits) const = 0; -#endif - - node_pointer m_p_parent; - const pat_trie_node_type m_type; - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - pat_trie_node_base(pat_trie_node_type type) : m_type(type) - { } - -#ifdef _GLIBCXX_DEBUG - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - assert_valid(const_e_access_traits_pointer p_traits) const - { assert_valid_imp(p_traits); } -#endif - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_PAT_TRIE_SUBTREE_DEBUG_INFO_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp deleted file mode 100644 index 37250091d..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp +++ /dev/null @@ -1,338 +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 node_iterators.hpp - * Contains an implementation class for pat_trie_. - */ - -#ifndef PB_DS_PAT_TRIE_NODE_ITERATORS_HPP -#define PB_DS_PAT_TRIE_NODE_ITERATORS_HPP - -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC \ - pat_trie_const_node_it_< \ - Node, \ - Leaf, \ - Head, \ - Internal_Node, \ - Const_Iterator, \ - Iterator, \ - E_Access_Traits, \ - Allocator> - -#define PB_DS_PAT_TRIE_NODE_ITERATOR_C_DEC \ - pat_trie_node_it_< \ - Node, \ - Leaf, \ - Head, \ - Internal_Node, \ - Const_Iterator, \ - Iterator, \ - E_Access_Traits, \ - Allocator> - - // Const node iterator. - template<typename Node, - class Leaf, - class Head, - class Internal_Node, - class Const_Iterator, - class Iterator, - class E_Access_Traits, - class Allocator> - class pat_trie_const_node_it_ - { - protected: - typedef - typename Allocator::template rebind< - Node>::other::pointer - node_pointer; - - typedef - typename Allocator::template rebind< - Leaf>::other::const_pointer - const_leaf_pointer; - - typedef - typename Allocator::template rebind< - Leaf>::other::pointer - leaf_pointer; - - typedef - typename Allocator::template rebind< - Internal_Node>::other::pointer - internal_node_pointer; - - typedef - typename Allocator::template rebind< - Internal_Node>::other::const_pointer - const_internal_node_pointer; - - typedef - typename Allocator::template rebind< - E_Access_Traits>::other::const_pointer - const_e_access_traits_pointer; - - private: - inline typename E_Access_Traits::const_iterator - pref_begin() const - { - if (m_p_nd->m_type == pat_trie_leaf_node_type) - return (m_p_traits->begin( - m_p_traits->extract_key( - static_cast<const_leaf_pointer>(m_p_nd)->value()))); - - _GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_internal_node_type); - - return (static_cast<const_internal_node_pointer>(m_p_nd)->pref_b_it()); - } - - inline typename E_Access_Traits::const_iterator - pref_end() const - { - if (m_p_nd->m_type == pat_trie_leaf_node_type) - return (m_p_traits->end( - m_p_traits->extract_key( - static_cast<const_leaf_pointer>(m_p_nd)->value()))); - - _GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_internal_node_type); - - return (static_cast<const_internal_node_pointer>(m_p_nd)->pref_e_it()); - } - - public: - - // Size type. - typedef typename Allocator::size_type size_type; - - // Category. - typedef trivial_iterator_tag iterator_category; - - // Difference type. - typedef trivial_iterator_difference_type difference_type; - - // __Iterator's value type. - typedef Const_Iterator value_type; - - // __Iterator's reference type. - typedef value_type reference; - - // __Iterator's __const reference type. - typedef value_type const_reference; - - // Element access traits. - typedef E_Access_Traits e_access_traits; - - // A key's element __const iterator. - typedef typename e_access_traits::const_iterator const_e_iterator; - - // Metadata type. - typedef typename Node::metadata_type metadata_type; - - // Const metadata reference type. - typedef - typename Allocator::template rebind< - metadata_type>::other::const_reference - const_metadata_reference; - - // Default constructor. - /* - inline - pat_trie_const_node_it_() - */ - inline - pat_trie_const_node_it_(node_pointer p_nd = NULL, - const_e_access_traits_pointer p_traits = NULL) - : m_p_nd(const_cast<node_pointer>(p_nd)), m_p_traits(p_traits) - { } - - // Subtree valid prefix. - inline std::pair<const_e_iterator, const_e_iterator> - valid_prefix() const - { return std::make_pair(pref_begin(), pref_end()); } - - // Const access; returns the __const iterator* associated with - // the current leaf. - inline const_reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(num_children() == 0); - return Const_Iterator(m_p_nd); - } - - // Metadata access. - inline const_metadata_reference - get_metadata() const - { return m_p_nd->get_metadata(); } - - // Returns the number of children in the corresponding node. - inline size_type - num_children() const - { - if (m_p_nd->m_type == pat_trie_leaf_node_type) - return 0; - _GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_internal_node_type); - return std::distance(static_cast<internal_node_pointer>(m_p_nd)->begin(), static_cast<internal_node_pointer>(m_p_nd)->end()); - } - - // Returns a __const node __iterator to the corresponding node's - // i-th child. - PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC - get_child(size_type i) const - { - _GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_internal_node_type); - typename Internal_Node::iterator it = - static_cast<internal_node_pointer>(m_p_nd)->begin(); - - std::advance(it, i); - return PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC(*it, m_p_traits); - } - - // Compares content to a different iterator object. - inline bool - operator==(const PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC& other) const - { return (m_p_nd == other.m_p_nd); } - - // Compares content (negatively) to a different iterator object. - inline bool - operator!=(const PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC& other) const - { return m_p_nd != other.m_p_nd; } - - private: - - friend class PB_DS_CLASS_C_DEC; - - public: - node_pointer m_p_nd; - - const_e_access_traits_pointer m_p_traits; - }; - - // Node iterator. - template<typename Node, - class Leaf, - class Head, - class Internal_Node, - class Const_Iterator, - class Iterator, - class E_Access_Traits, - class Allocator> - class pat_trie_node_it_ : - public PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC - - { - private: - typedef - typename Allocator::template rebind< - Node>::other::pointer - node_pointer; - - typedef Iterator iterator; - - typedef PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC base_type; - - typedef - typename base_type::const_e_access_traits_pointer - const_e_access_traits_pointer; - - typedef typename base_type::internal_node_pointer internal_node_pointer; - - public: - - // Size type. - typedef - typename PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC::size_type - size_type; - - // __Iterator's value type. - typedef Iterator value_type; - - // __Iterator's reference type. - typedef value_type reference; - - // __Iterator's __const reference type. - typedef value_type const_reference; - - // Default constructor. - /* - inline - pat_trie_node_it_() ; - */ - - inline - pat_trie_node_it_(node_pointer p_nd = NULL, const_e_access_traits_pointer p_traits = NULL) : base_type(p_nd, p_traits) - { } - - // Access; returns the iterator* associated with the current leaf. - inline reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(base_type::num_children() == 0); - return Iterator(base_type::m_p_nd); - - } - - // Returns a node __iterator to the corresponding node's i-th child. - PB_DS_PAT_TRIE_NODE_ITERATOR_C_DEC - get_child(size_type i) const - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_p_nd->m_type == pat_trie_internal_node_type); - - typename Internal_Node::iterator it = - static_cast<internal_node_pointer>(base_type::m_p_nd)->begin(); - - std::advance(it, i); - return PB_DS_PAT_TRIE_NODE_ITERATOR_C_DEC(*it, base_type::m_p_traits); - } - - private: - friend class PB_DS_CLASS_C_DEC; - }; - -#undef PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC -#undef PB_DS_PAT_TRIE_NODE_ITERATOR_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp deleted file mode 100644 index 36272eda8..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp +++ /dev/null @@ -1,86 +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 node_metadata_base.hpp - * Contains an internal PB_DS_BASE_C_DEC for a patricia tree. - */ - -#ifndef PB_DS_PAT_TRIE_NODE_METADATA_BASE_HPP -#define PB_DS_PAT_TRIE_NODE_METADATA_BASE_HPP - -#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - - template<typename Metadata, class Allocator> - struct pat_trie_node_metadata_base - { - public: - typedef Metadata metadata_type; - - typedef - typename Allocator::template rebind< - metadata_type>::other::const_reference - const_metadata_reference; - - public: - inline const_metadata_reference - get_metadata() const - { - return (m_metadata); - } - - public: - metadata_type m_metadata; - }; - - template<typename Allocator> - struct pat_trie_node_metadata_base< - null_node_metadata, - Allocator> - { - public: - typedef null_node_metadata metadata_type; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_PAT_TRIE_NODE_BASE_HPP - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp deleted file mode 100644 index f6f420986..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp +++ /dev/null @@ -1,515 +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 pat_trie_.hpp - * Contains an implementation class for a patricia tree. - */ - -/** - * This implementation loosely borrows ideas from: - * 1) "Fast Mergeable Integer Maps", Okasaki, Gill 1998 - * 2) "Ptset: Sets of integers implemented as Patricia trees", - * Jean-Christophe Filliatr, 2000 - **/ - -#include <ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp> -#include <ext/pb_ds/detail/pat_trie_/node_base.hpp> -#include <ext/pb_ds/exception.hpp> -#include <ext/pb_ds/tag_and_trait.hpp> -#include <ext/pb_ds/detail/eq_fn/eq_by_less.hpp> -#include <ext/pb_ds/detail/types_traits.hpp> -#include <ext/pb_ds/tree_policy.hpp> -#include <ext/pb_ds/detail/cond_dealtor.hpp> -#include <ext/pb_ds/detail/type_utils.hpp> -#include <iterator> -#include <utility> -#include <algorithm> -#include <functional> -#include <assert.h> -#include <list> -#ifdef _GLIBCXX_DEBUG -#include <ext/pb_ds/detail/debug_map_base.hpp> -#endif -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_CLASS_T_DEC \ - template<typename Key, typename Mapped, typename Node_And_It_Traits, \ - typename Allocator> - -#ifdef PB_DS_DATA_TRUE_INDICATOR -#define PB_DS_CLASS_NAME pat_trie_data_ -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#define PB_DS_CLASS_NAME pat_trie_no_data_ -#endif - -#define PB_DS_CLASS_C_DEC \ - PB_DS_CLASS_NAME<Key, Mapped, 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, \ - std::less<Key> >, 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 - - /** - * class description = PATRICIA trie implementation."> - **/ - template<typename Key, - typename Mapped, - typename Node_And_It_Traits, - typename Allocator> - class PB_DS_CLASS_NAME : -#ifdef _GLIBCXX_DEBUG - public PB_DS_DEBUG_MAP_BASE_C_DEC, -#endif - public Node_And_It_Traits::synth_e_access_traits, - 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 Node_And_It_Traits::synth_e_access_traits synth_e_access_traits; - typedef typename Allocator::template rebind<synth_e_access_traits>::other::const_pointer const_e_access_traits_pointer; - typedef typename synth_e_access_traits::const_iterator const_e_iterator; - - typedef typename Node_And_It_Traits::node node; - typedef typename Allocator::template rebind<node>::other::const_pointer const_node_pointer; - - typedef typename Allocator::template rebind<node>::other::pointer node_pointer; - - typedef typename Node_And_It_Traits::head head; - typedef typename Allocator::template rebind<head>::other head_allocator; - typedef typename head_allocator::pointer head_pointer; - - typedef typename Node_And_It_Traits::leaf leaf; - typedef typename Allocator::template rebind<leaf>::other leaf_allocator; - typedef typename leaf_allocator::const_pointer const_leaf_pointer; - typedef typename leaf_allocator::pointer leaf_pointer; - - typedef typename Node_And_It_Traits::internal_node internal_node; - typedef typename Allocator::template rebind<internal_node>::other internal_node_allocator; - typedef typename internal_node_allocator::const_pointer const_internal_node_pointer; - typedef typename internal_node_allocator::pointer internal_node_pointer; - -#include <ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp> - -#ifdef _GLIBCXX_DEBUG - typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base; -#endif - -#include <ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp> - - typedef typename Node_And_It_Traits::null_node_update_pointer null_node_update_pointer; - - public: - typedef pat_trie_tag container_category; - typedef Allocator allocator_type; - typedef typename Allocator::size_type size_type; - typedef typename Allocator::difference_type difference_type; - - 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 typename Node_And_It_Traits::const_iterator const_point_iterator; - typedef typename Node_And_It_Traits::iterator point_iterator; - typedef const_point_iterator const_iterator; - typedef point_iterator iterator; - - typedef typename Node_And_It_Traits::const_reverse_iterator const_reverse_iterator; - typedef typename Node_And_It_Traits::reverse_iterator reverse_iterator; - typedef typename Node_And_It_Traits::const_node_iterator const_node_iterator; - typedef typename Node_And_It_Traits::node_iterator node_iterator; - typedef typename Node_And_It_Traits::e_access_traits e_access_traits; - typedef typename Node_And_It_Traits::node_update node_update; - - PB_DS_CLASS_NAME(); - - PB_DS_CLASS_NAME(const e_access_traits&); - - PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&); - - void - swap(PB_DS_CLASS_C_DEC&); - - ~PB_DS_CLASS_NAME(); - - inline bool - empty() const; - - inline size_type - size() const; - - inline size_type - max_size() const; - - e_access_traits& - get_e_access_traits(); - - const e_access_traits& - get_e_access_traits() const; - - node_update& - get_node_update(); - - const node_update& - get_node_update() const; - - inline std::pair<point_iterator, bool> - insert(const_reference); - - inline mapped_reference - operator[](const_key_reference r_key) - { -#ifdef PB_DS_DATA_TRUE_INDICATOR - return insert(std::make_pair(r_key, mapped_type())).first->second; -#else - insert(r_key); - return traits_base::s_null_mapped; -#endif - } - - inline point_iterator - find(const_key_reference); - - inline const_point_iterator - find(const_key_reference) const; - - inline point_iterator - lower_bound(const_key_reference); - - inline const_point_iterator - lower_bound(const_key_reference) const; - - inline point_iterator - upper_bound(const_key_reference); - - inline const_point_iterator - upper_bound(const_key_reference) const; - - void - clear(); - - inline bool - erase(const_key_reference); - - inline const_iterator - erase(const_iterator); - -#ifdef PB_DS_DATA_TRUE_INDICATOR - inline iterator - erase(iterator); -#endif - - inline const_reverse_iterator - erase(const_reverse_iterator); - -#ifdef PB_DS_DATA_TRUE_INDICATOR - inline reverse_iterator - erase(reverse_iterator); -#endif - - template<typename Pred> - inline size_type - erase_if(Pred); - - void - join(PB_DS_CLASS_C_DEC&); - - void - split(const_key_reference, PB_DS_CLASS_C_DEC&); - - inline iterator - begin(); - - inline const_iterator - begin() const; - - inline iterator - end(); - - inline const_iterator - end() const; - - inline reverse_iterator - rbegin(); - - inline const_reverse_iterator - rbegin() const; - - inline reverse_iterator - rend(); - - inline const_reverse_iterator - rend() const; - - inline const_node_iterator - node_begin() const; - - inline node_iterator - node_begin(); - - inline const_node_iterator - node_end() const; - - inline node_iterator - node_end(); - -#ifdef PB_DS_PAT_TRIE_TRACE_ - void - trace() const; -#endif - - protected: - - template<typename It> - void - copy_from_range(It, It); - - void - value_swap(PB_DS_CLASS_C_DEC&); - - node_pointer - recursive_copy_node(const_node_pointer); - - private: - - void - initialize(); - - inline void - apply_update(node_pointer, null_node_update_pointer); - - template<typename Node_Update_> - inline void - apply_update(node_pointer, Node_Update_*); - - bool - join_prep(PB_DS_CLASS_C_DEC&, split_join_branch_bag&); - - void - rec_join_prep(const_node_pointer, const_node_pointer, - split_join_branch_bag&); - - void - rec_join_prep(const_leaf_pointer, const_leaf_pointer, - split_join_branch_bag&); - - void - rec_join_prep(const_leaf_pointer, const_internal_node_pointer, - split_join_branch_bag&); - - void - rec_join_prep(const_internal_node_pointer, const_leaf_pointer, - split_join_branch_bag&); - - void - rec_join_prep(const_internal_node_pointer, const_internal_node_pointer, - split_join_branch_bag&); - - node_pointer - rec_join(node_pointer, node_pointer, size_type, split_join_branch_bag&); - - node_pointer - rec_join(leaf_pointer, leaf_pointer, split_join_branch_bag&); - - node_pointer - rec_join(leaf_pointer, internal_node_pointer, size_type, - split_join_branch_bag&); - - node_pointer - rec_join(internal_node_pointer, leaf_pointer, size_type, - split_join_branch_bag&); - - node_pointer - rec_join(internal_node_pointer, internal_node_pointer, - split_join_branch_bag&); - - size_type - keys_diff_ind(typename e_access_traits::const_iterator, typename e_access_traits::const_iterator, typename e_access_traits::const_iterator, typename e_access_traits::const_iterator); - - internal_node_pointer - insert_branch(node_pointer, node_pointer, split_join_branch_bag&); - - void - update_min_max_for_inserted_leaf(leaf_pointer); - - void - erase_leaf(leaf_pointer); - - inline void - actual_erase_leaf(leaf_pointer); - - void - clear_imp(node_pointer); - - void - erase_fixup(internal_node_pointer); - - void - update_min_max_for_erased_leaf(leaf_pointer); - - static inline const_e_iterator - pref_begin(const_node_pointer); - - static inline const_e_iterator - pref_end(const_node_pointer); - - inline node_pointer - find_imp(const_key_reference); - - inline node_pointer - lower_bound_imp(const_key_reference); - - inline node_pointer - upper_bound_imp(const_key_reference); - - inline static const_leaf_pointer - leftmost_descendant(const_node_pointer); - - inline static leaf_pointer - leftmost_descendant(node_pointer); - - inline static const_leaf_pointer - rightmost_descendant(const_node_pointer); - - inline static leaf_pointer - rightmost_descendant(node_pointer); - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; - - void - assert_iterators() const; - - void - assert_reverse_iterators() const; - - static size_type - recursive_count_leafs(const_node_pointer); -#endif - -#ifdef PB_DS_PAT_TRIE_TRACE_ - static void - trace_node(const_node_pointer, size_type); - - template<typename Metadata_> - static void - trace_node_metadata(const_node_pointer, type_to_type<Metadata_>); - - static void - trace_node_metadata(const_node_pointer, type_to_type<null_node_metadata>); -#endif - - leaf_pointer - split_prep(const_key_reference, PB_DS_CLASS_C_DEC&, - split_join_branch_bag&); - - node_pointer - rec_split(node_pointer, const_e_iterator, const_e_iterator, - PB_DS_CLASS_C_DEC&, split_join_branch_bag&); - - void - split_insert_branch(size_type, const_e_iterator, - typename internal_node::iterator, - size_type, split_join_branch_bag&); - - static head_allocator s_head_allocator; - static internal_node_allocator s_internal_node_allocator; - static leaf_allocator s_leaf_allocator; - - head_pointer m_p_head; - size_type m_size; - }; - -#include <ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp> -#include <ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp> -#include <ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp> -#include <ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp> -#include <ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp> -#include <ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp> -#include <ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp> -#include <ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp> - -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_NAME -#undef PB_DS_TYPES_TRAITS_C_DEC -#undef PB_DS_DEBUG_MAP_BASE_C_DEC -#undef PB_DS_V2F -#undef PB_DS_EP2VP -#undef PB_DS_V2S - - } // namespace detail -} // namespace __gnu_pbds diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp deleted file mode 100644 index cada9071c..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp +++ /dev/null @@ -1,484 +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 point_iterators.hpp - * Contains an implementation class for bin_search_tree_. - */ - -#ifndef PB_DS_PAT_TRIE_FIND_ITERATORS_HPP -#define PB_DS_PAT_TRIE_FIND_ITERATORS_HPP - -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CONST_IT_C_DEC \ - pat_trie_const_it_< \ - Type_Traits, \ - Node, \ - Leaf, \ - Head, \ - Internal_Node, \ - Is_Forward_Iterator, \ - Allocator> - -#define PB_DS_CONST_ODIR_IT_C_DEC \ - pat_trie_const_it_< \ - Type_Traits, \ - Node, \ - Leaf, \ - Head, \ - Internal_Node, \ - !Is_Forward_Iterator, \ - Allocator> - -#define PB_DS_IT_C_DEC \ - pat_trie_it_< \ - Type_Traits, \ - Node, \ - Leaf, \ - Head, \ - Internal_Node, \ - Is_Forward_Iterator, \ - Allocator> - -#define PB_DS_ODIR_IT_C_DEC \ - pat_trie_it_< \ - Type_Traits, \ - Node, \ - Leaf, \ - Head, \ - Internal_Node, \ - !Is_Forward_Iterator, \ - Allocator> - - - // Const iterator. - template<typename Type_Traits, - class Node, - class Leaf, - class Head, - class Internal_Node, - bool Is_Forward_Iterator, - class Allocator> - class pat_trie_const_it_ - { - - private: - typedef - typename Allocator::template rebind< - Node>::other::pointer - node_pointer; - - typedef - typename Allocator::template rebind< - Leaf>::other::const_pointer - const_leaf_pointer; - - typedef - typename Allocator::template rebind< - Leaf>::other::pointer - leaf_pointer; - - typedef - typename Allocator::template rebind< - Head>::other::pointer - head_pointer; - - typedef - typename Allocator::template rebind< - Internal_Node>::other::pointer - internal_node_pointer; - - public: - - typedef std::bidirectional_iterator_tag iterator_category; - - typedef typename Allocator::difference_type difference_type; - - typedef typename Type_Traits::value_type value_type; - - typedef typename Type_Traits::pointer pointer; - - typedef typename Type_Traits::const_pointer const_pointer; - - typedef typename Type_Traits::reference reference; - - typedef typename Type_Traits::const_reference const_reference; - - public: - - inline - pat_trie_const_it_(node_pointer p_nd = NULL) : m_p_nd(p_nd) - { } - - inline - pat_trie_const_it_(const PB_DS_CONST_ODIR_IT_C_DEC& other) - : m_p_nd(other.m_p_nd) - { } - - inline - PB_DS_CONST_IT_C_DEC& - operator=(const PB_DS_CONST_IT_C_DEC& other) - { - m_p_nd = other.m_p_nd; - return *this; - } - - inline - PB_DS_CONST_IT_C_DEC& - operator=(const PB_DS_CONST_ODIR_IT_C_DEC& other) - { - m_p_nd = other.m_p_nd; - return *this; - } - - inline const_pointer - operator->() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_leaf_node_type); - return &static_cast<leaf_pointer>(m_p_nd)->value(); - } - - inline const_reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_leaf_node_type); - return static_cast<leaf_pointer>(m_p_nd)->value(); - } - - inline bool - operator==(const PB_DS_CONST_IT_C_DEC& other) const - { return (m_p_nd == other.m_p_nd); } - - inline bool - operator==(const PB_DS_CONST_ODIR_IT_C_DEC& other) const - { return (m_p_nd == other.m_p_nd); } - - inline bool - operator!=(const PB_DS_CONST_IT_C_DEC& other) const - { return (m_p_nd != other.m_p_nd); } - - inline bool - operator!=(const PB_DS_CONST_ODIR_IT_C_DEC& other) const - { return (m_p_nd != other.m_p_nd); } - - inline PB_DS_CONST_IT_C_DEC& - operator++() - { - inc(integral_constant<int,Is_Forward_Iterator>()); - return *this; - } - - inline PB_DS_CONST_IT_C_DEC - operator++(int) - { - PB_DS_CONST_IT_C_DEC ret_it(m_p_nd); - operator++(); - return ret_it; - } - - inline PB_DS_CONST_IT_C_DEC& - operator--() - { - dec(integral_constant<int,Is_Forward_Iterator>()); - return *this; - } - - inline PB_DS_CONST_IT_C_DEC - operator--(int) - { - PB_DS_CONST_IT_C_DEC ret_it(m_p_nd); - operator--(); - return ret_it; - } - - protected: - inline void - inc(false_type) - { dec(true_type()); } - - void - inc(true_type) - { - if (m_p_nd->m_type == pat_trie_head_node_type) - { - m_p_nd = static_cast<head_pointer>(m_p_nd)->m_p_min; - return; - } - - node_pointer p_y = m_p_nd->m_p_parent; - while (p_y->m_type != pat_trie_head_node_type && - get_larger_sibling(m_p_nd) == NULL) - { - m_p_nd = p_y; - p_y = p_y->m_p_parent; - } - - if (p_y->m_type == pat_trie_head_node_type) - { - m_p_nd = p_y; - return; - } - m_p_nd = leftmost_descendant(get_larger_sibling(m_p_nd)); - } - - inline void - dec(false_type) - { inc(true_type()); } - - void - dec(true_type) - { - if (m_p_nd->m_type == pat_trie_head_node_type) - { - m_p_nd = static_cast<head_pointer>(m_p_nd)->m_p_max; - return; - } - - node_pointer p_y = m_p_nd->m_p_parent; - while (p_y->m_type != pat_trie_head_node_type && - get_smaller_sibling(m_p_nd) == NULL) - { - m_p_nd = p_y; - p_y = p_y->m_p_parent; - } - - if (p_y->m_type == pat_trie_head_node_type) - { - m_p_nd = p_y; - return; - } - m_p_nd = rightmost_descendant(get_smaller_sibling(m_p_nd)); - } - - inline static node_pointer - get_larger_sibling(node_pointer p_nd) - { - internal_node_pointer p_parent = - static_cast<internal_node_pointer>(p_nd->m_p_parent); - - typename Internal_Node::iterator it = p_parent->begin(); - while (*it != p_nd) - ++it; - - typename Internal_Node::iterator next_it = it; - ++next_it; - return ((next_it == p_parent->end())? NULL :* next_it); - } - - inline static node_pointer - get_smaller_sibling(node_pointer p_nd) - { - internal_node_pointer p_parent = - static_cast<internal_node_pointer>(p_nd->m_p_parent); - - typename Internal_Node::iterator it = p_parent->begin(); - - if (*it == p_nd) - return (NULL); - typename Internal_Node::iterator prev_it; - do - { - prev_it = it; - ++it; - if (*it == p_nd) - return (*prev_it); - } - while (true); - - _GLIBCXX_DEBUG_ASSERT(false); - return (NULL); - } - - inline static leaf_pointer - leftmost_descendant(node_pointer p_nd) - { - if (p_nd->m_type == pat_trie_leaf_node_type) - return static_cast<leaf_pointer>(p_nd); - return static_cast<internal_node_pointer>(p_nd)->leftmost_descendant(); - } - - inline static leaf_pointer - rightmost_descendant(node_pointer p_nd) - { - if (p_nd->m_type == pat_trie_leaf_node_type) - return static_cast<leaf_pointer>(p_nd); - return static_cast<internal_node_pointer>(p_nd)->rightmost_descendant(); - } - - public: - node_pointer m_p_nd; - }; - - // Iterator. - template<typename Type_Traits, - class Node, - class Leaf, - class Head, - class Internal_Node, - bool Is_Forward_Iterator, - class Allocator> - class pat_trie_it_ : - public PB_DS_CONST_IT_C_DEC - - { - private: - typedef - typename Allocator::template rebind< - Node>::other::pointer - node_pointer; - - typedef - typename Allocator::template rebind< - Leaf>::other::const_pointer - const_leaf_pointer; - - typedef - typename Allocator::template rebind< - Leaf>::other::pointer - leaf_pointer; - - typedef - typename Allocator::template rebind< - Head>::other::pointer - head_pointer; - - typedef - typename Allocator::template rebind< - Internal_Node>::other::pointer - internal_node_pointer; - - public: - typedef typename Type_Traits::value_type value_type; - - typedef typename Type_Traits::const_pointer const_pointer; - - typedef typename Type_Traits::pointer pointer; - - typedef typename Type_Traits::const_reference const_reference; - - typedef typename Type_Traits::reference reference; - - inline - pat_trie_it_(node_pointer p_nd = NULL) : PB_DS_CONST_IT_C_DEC((node_pointer)p_nd) - { } - - inline - pat_trie_it_(const PB_DS_ODIR_IT_C_DEC& other) : PB_DS_CONST_IT_C_DEC(other.m_p_nd) - { } - - inline - PB_DS_IT_C_DEC& - operator=(const PB_DS_IT_C_DEC& other) - { - base_it_type::m_p_nd = other.m_p_nd; - return *this; - } - - inline - PB_DS_IT_C_DEC& - operator=(const PB_DS_ODIR_IT_C_DEC& other) - { - base_it_type::m_p_nd = other.m_p_nd; - return *this; - } - - inline pointer - operator->() const - { - _GLIBCXX_DEBUG_ASSERT(base_it_type::m_p_nd->m_type == pat_trie_leaf_node_type); - - return &static_cast<leaf_pointer>(base_it_type::m_p_nd)->value(); - } - - inline reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(base_it_type::m_p_nd->m_type == pat_trie_leaf_node_type); - return static_cast<leaf_pointer>(base_it_type::m_p_nd)->value(); - } - - inline PB_DS_IT_C_DEC& - operator++() - { - PB_DS_CONST_IT_C_DEC:: - operator++(); - return *this; - } - - inline PB_DS_IT_C_DEC - operator++(int) - { - PB_DS_IT_C_DEC ret_it(base_it_type::m_p_nd); - operator++(); - return ret_it; - } - - inline PB_DS_IT_C_DEC& - operator--() - { - PB_DS_CONST_IT_C_DEC::operator--(); - return *this; - } - - inline PB_DS_IT_C_DEC - operator--(int) - { - PB_DS_IT_C_DEC ret_it(base_it_type::m_p_nd); - operator--(); - return ret_it; - } - - protected: - typedef PB_DS_CONST_IT_C_DEC base_it_type; - - friend class PB_DS_CLASS_C_DEC; - }; - -#undef PB_DS_CONST_IT_C_DEC -#undef PB_DS_CONST_ODIR_IT_C_DEC -#undef PB_DS_IT_C_DEC -#undef PB_DS_ODIR_IT_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp deleted file mode 100644 index 79bfe4283..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_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 policy_access_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::e_access_traits& -PB_DS_CLASS_C_DEC:: -get_e_access_traits() -{ return *this; } - -PB_DS_CLASS_T_DEC -const typename PB_DS_CLASS_C_DEC::e_access_traits& -PB_DS_CLASS_C_DEC:: -get_e_access_traits() const -{ return *this; } - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_update& -PB_DS_CLASS_C_DEC:: -get_node_update() -{ return *this; } - -PB_DS_CLASS_T_DEC -const typename PB_DS_CLASS_C_DEC::node_update& -PB_DS_CLASS_C_DEC:: -get_node_update() const -{ return *this; } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp deleted file mode 100644 index 52edf2506..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_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 r_erase_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -actual_erase_node(node_pointer p_z) -{ - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_z->m_value))); - p_z->~node(); - s_node_allocator.deallocate(p_z, 1); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update_min_max_for_erased_node(node_pointer p_z) -{ - if (m_size == 1) - { - m_p_head->m_p_left = m_p_head->m_p_right = m_p_head; - return; - } - - if (m_p_head->m_p_left == p_z) - { - iterator it(p_z); - ++it; - m_p_head->m_p_left = it.m_p_nd; - } - else if (m_p_head->m_p_right == p_z) - { - iterator it(p_z); - --it; - m_p_head->m_p_right = it.m_p_nd; - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(true, true);) - clear_imp(m_p_head->m_p_parent); - m_size = 0; - initialize(); - _GLIBCXX_DEBUG_ONLY(debug_base::clear();) - _GLIBCXX_DEBUG_ONLY(assert_valid(true, true);) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear_imp(node_pointer p_nd) -{ - if (p_nd == NULL) - return; - clear_imp(p_nd->m_p_left); - clear_imp(p_nd->m_p_right); - p_nd->~Node(); - s_node_allocator.deallocate(p_nd, 1); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp deleted file mode 100644 index c0809fa48..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp +++ /dev/null @@ -1,150 +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 rotate_fn_imps.hpp - * Contains imps for rotating nodes. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rotate_left(node_pointer p_x) -{ - node_pointer p_y = p_x->m_p_right; - p_x->m_p_right = p_y->m_p_left; - - if (p_y->m_p_left != NULL) - p_y->m_p_left->m_p_parent = p_x; - - p_y->m_p_parent = p_x->m_p_parent; - if (p_x == m_p_head->m_p_parent) - m_p_head->m_p_parent = p_y; - else if (p_x == p_x->m_p_parent->m_p_left) - p_x->m_p_parent->m_p_left = p_y; - else - p_x->m_p_parent->m_p_right = p_y; - - p_y->m_p_left = p_x; - p_x->m_p_parent = p_y; - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);) - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);) - - apply_update(p_x, (Node_Update* )this); - apply_update(p_x->m_p_parent, (Node_Update* )this); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rotate_right(node_pointer p_x) -{ - node_pointer p_y = p_x->m_p_left; - p_x->m_p_left = p_y->m_p_right; - - if (p_y->m_p_right != NULL) - p_y->m_p_right->m_p_parent = p_x; - - p_y->m_p_parent = p_x->m_p_parent; - if (p_x == m_p_head->m_p_parent) - m_p_head->m_p_parent = p_y; - else if (p_x == p_x->m_p_parent->m_p_right) - p_x->m_p_parent->m_p_right = p_y; - else - p_x->m_p_parent->m_p_left = p_y; - - p_y->m_p_right = p_x; - p_x->m_p_parent = p_y; - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);) - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);) - - apply_update(p_x, (Node_Update* )this); - apply_update(p_x->m_p_parent, (Node_Update* )this); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rotate_parent(node_pointer p_nd) -{ - node_pointer p_parent = p_nd->m_p_parent; - if (p_nd == p_parent->m_p_left) - rotate_right(p_parent); - else - rotate_left(p_parent); - _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_parent = p_nd); - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == p_parent || p_nd->m_p_right == p_parent); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -apply_update(node_pointer /*p_nd*/, __gnu_pbds::null_node_update* /*p_update*/) -{ } - -PB_DS_CLASS_T_DEC -template<typename Node_Update_> -inline void -PB_DS_CLASS_C_DEC:: -apply_update(node_pointer p_nd, Node_Update_* p_update) -{ - p_update->operator()(& PB_DS_V2F(p_nd->m_value),(p_nd->m_p_left == NULL) ? - NULL : - & PB_DS_V2F(p_nd->m_p_left->m_value),(p_nd->m_p_right == NULL) ? - NULL : - & PB_DS_V2F(p_nd->m_p_right->m_value)); -} - -PB_DS_CLASS_T_DEC -template<typename Node_Update_> -inline void -PB_DS_CLASS_C_DEC:: -update_to_top(node_pointer p_nd, Node_Update_* p_update) -{ - while (p_nd != m_p_head) - { - apply_update(p_nd, p_update); - p_nd = p_nd->m_p_parent; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update_to_top(node_pointer /*p_nd*/, __gnu_pbds::null_node_update* /*p_update*/) -{ } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp deleted file mode 100644 index 9779a4bcd..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp +++ /dev/null @@ -1,254 +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_fn_imps.hpp - * Contains an implementation class for bin_search_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();); - split_join_branch_bag bag; - leaf_pointer p_split_lf = split_prep(r_key, other, bag); - if (p_split_lf == NULL) - { - _GLIBCXX_DEBUG_ASSERT(bag.empty()); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - return; - } - - _GLIBCXX_DEBUG_ASSERT(!bag.empty()); - other.clear(); - m_p_head->m_p_parent = rec_split(m_p_head->m_p_parent, - pref_begin(p_split_lf), - pref_end(p_split_lf), - other, - bag); - - m_p_head->m_p_parent->m_p_parent = m_p_head; - - other.m_p_head->m_p_max = m_p_head->m_p_max; - m_p_head->m_p_max = rightmost_descendant(m_p_head->m_p_parent); - other.m_p_head->m_p_min = - other.leftmost_descendant(other.m_p_head->m_p_parent); - - other.m_size = std::distance(other.PB_DS_CLASS_C_DEC::begin(), - other.PB_DS_CLASS_C_DEC::end()); - m_size -= other.m_size; - _GLIBCXX_DEBUG_ONLY(assert_valid();); - _GLIBCXX_DEBUG_ONLY(other.assert_valid();); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::leaf_pointer -PB_DS_CLASS_C_DEC:: -split_prep(const_key_reference r_key, PB_DS_CLASS_C_DEC& other, split_join_branch_bag& r_bag) -{ - _GLIBCXX_DEBUG_ASSERT(r_bag.empty()); - if (m_size == 0) - { - other.clear(); - _GLIBCXX_DEBUG_ONLY(assert_valid();); - _GLIBCXX_DEBUG_ONLY(other.assert_valid();); - return (NULL); - } - - if (synth_e_access_traits::cmp_keys(r_key, - PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_min)->value()))) - { - other.clear(); - value_swap(other); - _GLIBCXX_DEBUG_ONLY(assert_valid();); - _GLIBCXX_DEBUG_ONLY(other.assert_valid();); - return (NULL); - } - - if (!synth_e_access_traits::cmp_keys(r_key, - PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_max)->value()))) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();); - _GLIBCXX_DEBUG_ONLY(other.assert_valid();); - return (NULL); - } - - iterator it = lower_bound(r_key); - - if (!synth_e_access_traits::equal_keys(PB_DS_V2F(*it), r_key)) - --it; - - node_pointer p_nd = it.m_p_nd; - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_leaf_node_type); - leaf_pointer p_ret_l = static_cast<leaf_pointer>(p_nd); - while (p_nd->m_type != pat_trie_head_node_type) - { - r_bag.add_branch(); - p_nd = p_nd->m_p_parent; - } - _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(synth_e_access_traits& )(*this), other);) - - return (p_ret_l); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -rec_split(node_pointer p_nd, const_e_iterator b_it, const_e_iterator e_it, PB_DS_CLASS_C_DEC& other, split_join_branch_bag& r_bag) -{ - if (p_nd->m_type == pat_trie_leaf_node_type) - { - _GLIBCXX_DEBUG_ASSERT(other.m_p_head->m_p_parent == NULL); - return (p_nd); - } - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type); - internal_node_pointer p_internal_nd = static_cast<internal_node_pointer>(p_nd); - - node_pointer p_child_ret = rec_split(p_internal_nd->get_child_node(b_it, e_it, this), b_it, e_it, other, r_bag); - - _GLIBCXX_DEBUG_ONLY(p_child_ret->assert_valid(this);) - p_internal_nd->replace_child(p_child_ret, b_it, e_it, this); - apply_update(p_internal_nd, (node_update* )this); - - typename internal_node::iterator child_it = - p_internal_nd->get_child_it(b_it, e_it, this); - - const size_type lhs_num_children = - std::distance(p_internal_nd->begin(), child_it) + 1; - - _GLIBCXX_DEBUG_ASSERT(lhs_num_children > 0); - - size_type rhs_num_children = - std::distance(p_internal_nd->begin(), p_internal_nd->end()) - - lhs_num_children; - - if (rhs_num_children == 0) - { - apply_update(p_internal_nd, (node_update* )this); - return (p_internal_nd); - } - - ++child_it; - other.split_insert_branch(p_internal_nd->get_e_ind(), - b_it, child_it, rhs_num_children, r_bag); - - child_it = p_internal_nd->get_child_it(b_it, e_it, this); - ++child_it; - while (rhs_num_children != 0) - { - child_it = p_internal_nd->remove_child(child_it); - --rhs_num_children; - } - - apply_update(p_internal_nd, (node_update* )this); - _GLIBCXX_DEBUG_ASSERT(std::distance(p_internal_nd->begin(), - p_internal_nd->end()) >= 1); - - if (std::distance(p_internal_nd->begin(), p_internal_nd->end()) > 1) - { - p_internal_nd->update_prefixes(this); - _GLIBCXX_DEBUG_ONLY(p_internal_nd->assert_valid(this);) - apply_update(p_internal_nd, (node_update* )this); - return (p_internal_nd); - } - - node_pointer p_ret =* p_internal_nd->begin(); - p_internal_nd->~internal_node(); - s_internal_node_allocator.deallocate(p_internal_nd, 1); - apply_update(p_ret, (node_update* )this); - return (p_ret); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -split_insert_branch(size_type e_ind, const_e_iterator b_it, typename internal_node::iterator child_b_it, size_type num_children, split_join_branch_bag& r_bag) -{ -#ifdef _GLIBCXX_DEBUG - if (m_p_head->m_p_parent != NULL) - m_p_head->m_p_parent->assert_valid(this); -#endif - - const size_type total_num_children =((m_p_head->m_p_parent == NULL)? 0 : 1) + num_children; - - if (total_num_children == 0) - { - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_parent == NULL); - return; - } - - if (total_num_children == 1) - { - if (m_p_head->m_p_parent != NULL) - { - _GLIBCXX_DEBUG_ONLY(m_p_head->m_p_parent->assert_valid(this);) - return; - } - - _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_parent == NULL); - m_p_head->m_p_parent =* child_b_it; - m_p_head->m_p_parent->m_p_parent = m_p_head; - apply_update(m_p_head->m_p_parent, (node_update* )this); - _GLIBCXX_DEBUG_ONLY(m_p_head->m_p_parent->assert_valid(this);) - return; - } - - _GLIBCXX_DEBUG_ASSERT(total_num_children > 1); - internal_node_pointer p_new_root = r_bag.get_branch(); - new (p_new_root) internal_node(e_ind, b_it); - size_type num_inserted = 0; - while (num_inserted++ < num_children) - { - _GLIBCXX_DEBUG_ONLY((*child_b_it)->assert_valid(this);) - p_new_root->add_child(*child_b_it, pref_begin(*child_b_it), - pref_end(*child_b_it), this); - ++child_b_it; - } - - if (m_p_head->m_p_parent != NULL) - p_new_root->add_child(m_p_head->m_p_parent, - pref_begin(m_p_head->m_p_parent), - pref_end(m_p_head->m_p_parent), this); - - m_p_head->m_p_parent = p_new_root; - p_new_root->m_p_parent = m_p_head; - apply_update(m_p_head->m_p_parent, (node_update* )this); - _GLIBCXX_DEBUG_ONLY(m_p_head->m_p_parent->assert_valid(this);) -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp deleted file mode 100644 index 9cecae517..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp +++ /dev/null @@ -1,93 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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_branch_bag.hpp - * Contains an implementation class for pat_trie_. - */ - -class split_join_branch_bag -{ -private: - typedef - std::list< - internal_node_pointer, - typename Allocator::template rebind< - internal_node_pointer>::other> - bag_t; - -public: - - void - add_branch() - { - internal_node_pointer p_nd = s_internal_node_allocator.allocate(1); - __try - { - m_bag.push_back(p_nd); - } - __catch(...) - { - s_internal_node_allocator.deallocate(p_nd, 1); - __throw_exception_again; - } - } - - internal_node_pointer - get_branch() - { - _GLIBCXX_DEBUG_ASSERT(!m_bag.empty()); - internal_node_pointer p_nd =* m_bag.begin(); - m_bag.pop_front(); - return p_nd; - } - - ~split_join_branch_bag() - { - while (!m_bag.empty()) - { - internal_node_pointer p_nd =* m_bag.begin(); - s_internal_node_allocator.deallocate(p_nd, 1); - m_bag.pop_front(); - } - } - - inline bool - empty() const - { return m_bag.empty(); } - -private: - bag_t m_bag; -}; diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp deleted file mode 100644 index abf5f1185..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp +++ /dev/null @@ -1,229 +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 synth_e_access_traits.hpp - * Contains an implementation class for a patricia tree. - */ - -#ifndef PB_DS_SYNTH_E_ACCESS_TRAITS_HPP -#define PB_DS_SYNTH_E_ACCESS_TRAITS_HPP - -#include <ext/pb_ds/detail/type_utils.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC \ - template<typename Type_Traits, bool Set, class E_Access_Traits> - -#define PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC \ - synth_e_access_traits< \ - Type_Traits, \ - Set, \ - E_Access_Traits> - - template<typename Type_Traits, bool Set, class E_Access_Traits> - struct synth_e_access_traits : public E_Access_Traits - { - - private: - typedef E_Access_Traits base_type; - - typedef Type_Traits type_traits; - - typedef typename type_traits::const_key_reference const_key_reference; - - typedef typename type_traits::const_reference const_reference; - - public: - synth_e_access_traits(); - - synth_e_access_traits(const E_Access_Traits& r_traits); - - inline bool - equal_prefixes(typename base_type::const_iterator b_l, typename base_type::const_iterator e_l, typename base_type::const_iterator b_r, typename base_type::const_iterator e_r, bool compare_after = true) const; - - bool - equal_keys(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const; - - bool - cmp_prefixes(typename base_type::const_iterator b_l, typename base_type::const_iterator e_l, typename base_type::const_iterator b_r, typename base_type::const_iterator e_r, bool compare_after = false) const; - - bool - cmp_keys(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const; - - inline static const_key_reference - extract_key(const_reference r_val); - -#ifdef _GLIBCXX_DEBUG - bool - operator()(const_key_reference r_lhs, const_key_reference r_rhs); -#endif - - private: - inline static const_key_reference - extract_key(const_reference r_val, true_type); - - inline static const_key_reference - extract_key(const_reference r_val, false_type); - - private: - static integral_constant<int,Set> s_set_ind; - }; - - PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC - integral_constant<int,Set> - PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::s_set_ind; - - PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC - PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC:: - synth_e_access_traits() - { } - - PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC - PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC:: - synth_e_access_traits(const E_Access_Traits& r_traits) : - E_Access_Traits(r_traits) - { } - - PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC - inline bool - PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC:: - equal_prefixes(typename base_type::const_iterator b_l, typename base_type::const_iterator e_l, typename base_type::const_iterator b_r, typename base_type::const_iterator e_r, bool compare_after /*= false */) const - { - while (b_l != e_l) - { - if (b_r == e_r) - return (false); - if (base_type::e_pos(*b_l) != base_type::e_pos(*b_r)) - return (false); - ++b_l; - ++b_r; - } - return (!compare_after || b_r == e_r); - } - - PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC - bool - PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC:: - equal_keys(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const - { - return (equal_prefixes(base_type::begin(r_lhs_key), - base_type::end(r_lhs_key), - base_type::begin(r_rhs_key), - base_type::end(r_rhs_key), - true)); - } - - PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC - bool - PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC:: - cmp_prefixes(typename base_type::const_iterator b_l, typename base_type::const_iterator e_l, typename base_type::const_iterator b_r, typename base_type::const_iterator e_r, bool compare_after /* = false*/) const - { - while (b_l != e_l) - { - if (b_r == e_r) - return (false); - const typename base_type::size_type l_pos = - base_type::e_pos(*b_l); - const typename base_type::size_type r_pos = - base_type::e_pos(*b_r); - if (l_pos != r_pos) - return (l_pos < r_pos); - ++b_l; - ++b_r; - } - - if (!compare_after) - return (false); - return (b_r != e_r); - } - - PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC - bool - PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC:: - cmp_keys(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const - { - return (cmp_prefixes(base_type::begin(r_lhs_key), - base_type::end(r_lhs_key), - base_type::begin(r_rhs_key), - base_type::end(r_rhs_key), - true)); - } - - PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC - inline typename PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::const_key_reference - PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC:: - extract_key(const_reference r_val) - { - return (extract_key(r_val, s_set_ind)); - } - - PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC - inline typename PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::const_key_reference - PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC:: - extract_key(const_reference r_val, true_type) - { - return (r_val); - } - - PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC - inline typename PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::const_key_reference - PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC:: - extract_key(const_reference r_val, false_type) - { - return (r_val.first); - } - -#ifdef _GLIBCXX_DEBUG - PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC - bool - PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC:: - operator()(const_key_reference r_lhs, const_key_reference r_rhs) - { - return (cmp_keys(r_lhs, r_rhs)); - } -#endif - -#undef PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC -#undef PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp deleted file mode 100644 index e4b20943b..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp +++ /dev/null @@ -1,113 +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 trace_fn_imps.hpp - * Contains an implementation class for pat_trie_. - */ - -#ifdef PB_DS_PAT_TRIE_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << std::endl; - if (m_p_head->m_p_parent == NULL) - return; - trace_node(m_p_head->m_p_parent, 0); - std::cerr << std::endl; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_node(const_node_pointer p_nd, size_type level) -{ - for (size_type i = 0; i < level; ++i) - std::cerr << ' '; - std::cerr << p_nd << " "; - std::cerr << ((p_nd->m_type == pat_trie_leaf_node_type) ? "l " : "i "); - - trace_node_metadata(p_nd, type_to_type<typename node::metadata_type>()); - typename e_access_traits::const_iterator el_it = pref_begin(p_nd); - while (el_it != pref_end(p_nd)) - { - std::cerr <<* el_it; - ++el_it; - } - - if (p_nd->m_type == pat_trie_leaf_node_type) - { - std::cerr << std::endl; - return; - } - - const_internal_node_pointer p_internal = - static_cast<const_internal_node_pointer>(p_nd); - - std::cerr << " " << - static_cast<unsigned long>(p_internal->get_e_ind()) << std::endl; - - const size_type num_children = std::distance(p_internal->begin(), - p_internal->end()); - - for (size_type child_i = 0; child_i < num_children; ++child_i) - { - typename internal_node::const_iterator child_it = - p_internal->begin(); - std::advance(child_it, num_children - child_i - 1); - trace_node(*child_it, level + 1); - } -} - -PB_DS_CLASS_T_DEC -template<typename Metadata_> -void -PB_DS_CLASS_C_DEC:: -trace_node_metadata(const_node_pointer p_nd, type_to_type<Metadata_>) -{ - std::cerr << "(" << static_cast<unsigned long>(p_nd->get_metadata()) << ") "; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_node_metadata(const_node_pointer, type_to_type<null_node_metadata>) -{ } - -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp deleted file mode 100644 index c8e7f587b..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp +++ /dev/null @@ -1,350 +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 pat_trie_. - */ - -#ifndef PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP -#define PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP - -#include <ext/pb_ds/detail/pat_trie_/node_base.hpp> -#include <ext/pb_ds/detail/pat_trie_/head.hpp> -#include <ext/pb_ds/detail/pat_trie_/leaf.hpp> -#include <ext/pb_ds/detail/pat_trie_/internal_node.hpp> -#include <ext/pb_ds/detail/pat_trie_/point_iterators.hpp> -#include <ext/pb_ds/detail/pat_trie_/node_iterators.hpp> -#include <ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - - template<typename Key, - typename Mapped, - class E_Access_Traits, - template<typename Const_Node_Iterator, - class Node_Iterator, - class Cmp_Fn_, - class Allocator_> - class Node_Update, - class Allocator> - struct trie_traits< - Key, - Mapped, - E_Access_Traits, - Node_Update, - pat_trie_tag, - Allocator> - { - private: - typedef types_traits< Key, Mapped, Allocator, false> type_traits; - - public: - typedef - typename trie_node_metadata_selector< - Key, - Mapped, - E_Access_Traits, - Node_Update, - Allocator>::type - metadata_type; - - typedef E_Access_Traits e_access_traits; - - typedef - __gnu_pbds::detail::synth_e_access_traits< - type_traits, - false, - e_access_traits> - synth_e_access_traits; - - typedef - pat_trie_node_base< - type_traits, - synth_e_access_traits, - metadata_type, - Allocator> - node; - - typedef - pat_trie_leaf< - type_traits, - synth_e_access_traits, - metadata_type, - Allocator> - leaf; - - typedef - pat_trie_head< - type_traits, - synth_e_access_traits, - metadata_type, - Allocator> - head; - - typedef - pat_trie_internal_node< - type_traits, - synth_e_access_traits, - metadata_type, - Allocator> - internal_node; - - typedef - pat_trie_const_it_< - type_traits, - node, - leaf, - head, - internal_node, - true, - Allocator> - const_iterator; - - typedef - pat_trie_it_< - type_traits, - node, - leaf, - head, - internal_node, - true, - Allocator> - iterator; - - typedef - pat_trie_const_it_< - type_traits, - node, - leaf, - head, - internal_node, - false, - Allocator> - const_reverse_iterator; - - typedef - pat_trie_it_< - type_traits, - node, - leaf, - head, - internal_node, - false, - Allocator> - reverse_iterator; - - typedef - pat_trie_const_node_it_< - node, - leaf, - head, - internal_node, - const_iterator, - iterator, - synth_e_access_traits, - Allocator> - const_node_iterator; - - typedef - pat_trie_node_it_< - node, - leaf, - head, - internal_node, - const_iterator, - iterator, - synth_e_access_traits, - Allocator> - node_iterator; - - typedef - Node_Update< - const_node_iterator, - node_iterator, - E_Access_Traits, - Allocator> - node_update; - - typedef - __gnu_pbds::null_trie_node_update< - const_node_iterator, - node_iterator, - E_Access_Traits, - Allocator>* - null_node_update_pointer; - }; - - template<typename Key, - class E_Access_Traits, - template<typename Const_Node_Iterator, - class Node_Iterator, - class Cmp_Fn_, - class Allocator_> - class Node_Update, - class Allocator> - struct trie_traits< - Key, - null_mapped_type, - E_Access_Traits, - Node_Update, - pat_trie_tag, - Allocator> - { - private: - typedef - types_traits< - Key, - null_mapped_type, - Allocator, - false> - type_traits; - - public: - typedef - typename trie_node_metadata_selector< - Key, - null_mapped_type, - E_Access_Traits, - Node_Update, - Allocator>::type - metadata_type; - - typedef E_Access_Traits e_access_traits; - - typedef - __gnu_pbds::detail::synth_e_access_traits< - type_traits, - true, - e_access_traits> - synth_e_access_traits; - - typedef - pat_trie_node_base< - type_traits, - synth_e_access_traits, - metadata_type, - Allocator> - node; - - typedef - pat_trie_leaf< - type_traits, - synth_e_access_traits, - metadata_type, - Allocator> - leaf; - - typedef - pat_trie_head< - type_traits, - synth_e_access_traits, - metadata_type, - Allocator> - head; - - typedef - pat_trie_internal_node< - type_traits, - synth_e_access_traits, - metadata_type, - Allocator> - internal_node; - - typedef - pat_trie_const_it_< - type_traits, - node, - leaf, - head, - internal_node, - true, - Allocator> - const_iterator; - - typedef const_iterator iterator; - - typedef - pat_trie_const_it_< - type_traits, - node, - leaf, - head, - internal_node, - false, - Allocator> - const_reverse_iterator; - - typedef const_reverse_iterator reverse_iterator; - - typedef - pat_trie_const_node_it_< - node, - leaf, - head, - internal_node, - const_iterator, - iterator, - synth_e_access_traits, - Allocator> - const_node_iterator; - - typedef const_node_iterator node_iterator; - - typedef - Node_Update< - const_node_iterator, - node_iterator, - E_Access_Traits, - Allocator> - node_update; - - typedef - __gnu_pbds::null_trie_node_update< - const_node_iterator, - const_node_iterator, - E_Access_Traits, - Allocator>* - null_node_update_pointer; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp deleted file mode 100644 index 6d275e731..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp +++ /dev/null @@ -1,55 +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 update_fn_imps.hpp - * Contains an implementation class for pat_trie_. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -apply_update(node_pointer /*p_nd*/, null_node_update_pointer) -{ } - -PB_DS_CLASS_T_DEC -template<typename Node_Update_> -inline void -PB_DS_CLASS_C_DEC:: -apply_update(node_pointer p_nd, Node_Update_* /*p_update*/) -{ - Node_Update_::operator()(node_iterator(p_nd, this), - const_node_iterator(NULL, this)); -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp deleted file mode 100644 index ad05c4f57..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp +++ /dev/null @@ -1,91 +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 priority_queue_base_dispatch.hpp - * Contains an pqiative container dispatching base. - */ - -#ifndef PB_DS_PRIORITY_QUEUE_BASE_DS_DISPATCHER_HPP -#define PB_DS_PRIORITY_QUEUE_BASE_DS_DISPATCHER_HPP - -#include <ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp> -#include <ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp> -#include <ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp> -#include <ext/pb_ds/detail/binary_heap_/binary_heap_.hpp> -#include <ext/pb_ds/detail/thin_heap_/thin_heap_.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - - template<typename Value_Type, typename Cmp_Fn, typename Tag, typename Allocator> - struct priority_queue_base_dispatch; - - template<typename Value_Type, typename Cmp_Fn, typename Allocator> - struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, pairing_heap_tag, Allocator> - { - typedef pairing_heap_< Value_Type, Cmp_Fn, Allocator> type; - }; - - template<typename Value_Type, typename Cmp_Fn, typename Allocator> - struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, binomial_heap_tag, Allocator> - { - typedef binomial_heap_< Value_Type, Cmp_Fn, Allocator> type; - }; - - template<typename Value_Type, typename Cmp_Fn, typename Allocator> - struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, rc_binomial_heap_tag, Allocator> - { - typedef rc_binomial_heap_< Value_Type, Cmp_Fn, Allocator> type; - }; - - template<typename Value_Type, typename Cmp_Fn, typename Allocator> - struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, binary_heap_tag, Allocator> - { - typedef binary_heap_< Value_Type, Cmp_Fn, Allocator> type; - }; - - template<typename Value_Type, typename Cmp_Fn, typename Allocator> - struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, thin_heap_tag, Allocator> - { - typedef thin_heap_< Value_Type, Cmp_Fn, Allocator> type; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_PRIORITY_QUEUE_BASE_DS_DISPATCHER_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 1abfe21de..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,100 +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 for rb_tree_. - */ - -PB_DS_CLASS_T_DEC -template<typename It> -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - insert(*(first_it++)); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME() -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn) : - base_type(r_cmp_fn) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) : - base_type(r_cmp_fn, r_node_update) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) : - base_type(other) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - base_type::swap(other); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ base_type::m_p_head->m_red = true; } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp deleted file mode 100644 index 18ecc4230..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp +++ /dev/null @@ -1,78 +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 for rb_tree_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -assert_node_consistent(const node_pointer p_nd) const -{ - if (p_nd == NULL) - return 1; - - const size_type l_height = assert_node_consistent(p_nd->m_p_left); - const size_type r_height = assert_node_consistent(p_nd->m_p_right); - if (p_nd->m_red) - { - _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_nd->m_p_left)); - _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_nd->m_p_right)); - } - _GLIBCXX_DEBUG_ASSERT(l_height == r_height); - return (p_nd->m_red ? 0 : 1) + l_height; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ - base_type::assert_valid(); - const node_pointer p_head = base_type::m_p_head; - _GLIBCXX_DEBUG_ASSERT(p_head->m_red); - if (p_head->m_p_parent != NULL) - { - _GLIBCXX_DEBUG_ASSERT(!p_head->m_p_parent->m_red); - assert_node_consistent(p_head->m_p_parent); - } -} - -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp deleted file mode 100644 index 685b8a51b..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp +++ /dev/null @@ -1,289 +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 for rb_tree_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase(const_key_reference r_key) -{ - point_iterator it = find(r_key); - if (it == base_type::end()) - return false; - erase(it); - return true; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -erase(iterator it) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid()); - if (it == base_type::end()) - return it; - - iterator ret_it = it; - ++ret_it; - erase_node(it.m_p_nd); - _GLIBCXX_DEBUG_ONLY(assert_valid()); - return ret_it; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -erase(reverse_iterator it) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid()); - if (it.m_p_nd == base_type::m_p_head) - return it; - - reverse_iterator ret_it = it; - ++ret_it; - erase_node(it.m_p_nd); - _GLIBCXX_DEBUG_ONLY(assert_valid()); - return ret_it; -} - -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();) - size_type num_ersd = 0; - iterator it = base_type::begin(); - while (it != base_type::end()) - { - if (pred(*it)) - { - ++num_ersd; - it = erase(it); - } - else - ++it; - } - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return num_ersd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_node(node_pointer p_nd) -{ - remove_node(p_nd); - base_type::actual_erase_node(p_nd); - _GLIBCXX_DEBUG_ONLY(assert_valid()); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -remove_node(node_pointer p_z) -{ - update_min_max_for_erased_node(p_z); - node_pointer p_y = p_z; - node_pointer p_x = NULL; - node_pointer p_new_x_parent = NULL; - - if (p_y->m_p_left == NULL) - p_x = p_y->m_p_right; - else if (p_y->m_p_right == NULL) - p_x = p_y->m_p_left; - else - { - p_y = p_y->m_p_right; - while (p_y->m_p_left != NULL) - p_y = p_y->m_p_left; - p_x = p_y->m_p_right; - } - - if (p_y == p_z) - { - p_new_x_parent = p_y->m_p_parent; - if (p_x != NULL) - p_x->m_p_parent = p_y->m_p_parent; - - if (base_type::m_p_head->m_p_parent == p_z) - base_type::m_p_head->m_p_parent = p_x; - else if (p_z->m_p_parent->m_p_left == p_z) - { - p_y->m_p_left = p_z->m_p_parent; - p_z->m_p_parent->m_p_left = p_x; - } - else - { - p_y->m_p_left = NULL; - p_z->m_p_parent->m_p_right = p_x; - } - } - else - { - p_z->m_p_left->m_p_parent = p_y; - p_y->m_p_left = p_z->m_p_left; - if (p_y != p_z->m_p_right) - { - p_new_x_parent = p_y->m_p_parent; - if (p_x != NULL) - p_x->m_p_parent = p_y->m_p_parent; - p_y->m_p_parent->m_p_left = p_x; - p_y->m_p_right = p_z->m_p_right; - p_z->m_p_right->m_p_parent = p_y; - } - else - p_new_x_parent = p_y; - - if (base_type::m_p_head->m_p_parent == p_z) - base_type::m_p_head->m_p_parent = p_y; - else if (p_z->m_p_parent->m_p_left == p_z) - p_z->m_p_parent->m_p_left = p_y; - else - p_z->m_p_parent->m_p_right = p_y; - - p_y->m_p_parent = p_z->m_p_parent; - std::swap(p_y->m_red, p_z->m_red); - p_y = p_z; - } - - update_to_top(p_new_x_parent, (node_update* )this); - - if (p_y->m_red) - return; - - remove_fixup(p_x, p_new_x_parent); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -remove_fixup(node_pointer p_x, node_pointer p_new_x_parent) -{ - _GLIBCXX_DEBUG_ASSERT(p_x == NULL || p_x->m_p_parent == p_new_x_parent); - - while (p_x != base_type::m_p_head->m_p_parent && is_effectively_black(p_x)) - if (p_x == p_new_x_parent->m_p_left) - { - node_pointer p_w = p_new_x_parent->m_p_right; - if (p_w->m_red) - { - p_w->m_red = false; - p_new_x_parent->m_red = true; - base_type::rotate_left(p_new_x_parent); - p_w = p_new_x_parent->m_p_right; - } - - if (is_effectively_black(p_w->m_p_left) - && is_effectively_black(p_w->m_p_right)) - { - p_w->m_red = true; - p_x = p_new_x_parent; - p_new_x_parent = p_new_x_parent->m_p_parent; - } - else - { - if (is_effectively_black(p_w->m_p_right)) - { - if (p_w->m_p_left != NULL) - p_w->m_p_left->m_red = false; - - p_w->m_red = true; - base_type::rotate_right(p_w); - p_w = p_new_x_parent->m_p_right; - } - - p_w->m_red = p_new_x_parent->m_red; - p_new_x_parent->m_red = false; - - if (p_w->m_p_right != NULL) - p_w->m_p_right->m_red = false; - - base_type::rotate_left(p_new_x_parent); - update_to_top(p_new_x_parent, (node_update* )this); - break; - } - } - else - { - node_pointer p_w = p_new_x_parent->m_p_left; - if (p_w->m_red == true) - { - p_w->m_red = false; - p_new_x_parent->m_red = true; - base_type::rotate_right(p_new_x_parent); - p_w = p_new_x_parent->m_p_left; - } - - if (is_effectively_black(p_w->m_p_right) - && is_effectively_black(p_w->m_p_left)) - { - p_w->m_red = true; - p_x = p_new_x_parent; - p_new_x_parent = p_new_x_parent->m_p_parent; - } - else - { - if (is_effectively_black(p_w->m_p_left)) - { - if (p_w->m_p_right != NULL) - p_w->m_p_right->m_red = false; - - p_w->m_red = true; - base_type::rotate_left(p_w); - p_w = p_new_x_parent->m_p_left; - } - - p_w->m_red = p_new_x_parent->m_red; - p_new_x_parent->m_red = false; - - if (p_w->m_p_left != NULL) - p_w->m_p_left->m_red = false; - - base_type::rotate_right(p_new_x_parent); - update_to_top(p_new_x_parent, (node_update* )this); - break; - } - } - - if (p_x != NULL) - p_x->m_red = false; -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp deleted file mode 100644 index 9378e1565..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp +++ /dev/null @@ -1,39 +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 find_fn_imps.hpp - * Contains an implementation for rb_tree_. - */ diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp deleted file mode 100644 index 6b43b1a99..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp +++ /dev/null @@ -1,46 +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 for rb_tree_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -is_effectively_black(const node_pointer p_nd) -{ return (p_nd == NULL || !p_nd->m_red); } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp deleted file mode 100644 index 16a5d1edb..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp +++ /dev/null @@ -1,115 +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 for rb_tree_. - */ - -PB_DS_CLASS_T_DEC -inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool> -PB_DS_CLASS_C_DEC:: -insert(const_reference r_value) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - std::pair<point_iterator, bool> ins_pair = base_type::insert_leaf(r_value); - if (ins_pair.second == true) - { - ins_pair.first.m_p_nd->m_red = true; - _GLIBCXX_DEBUG_ONLY(this->structure_only_assert_valid();) - insert_fixup(ins_pair.first.m_p_nd); - } - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return ins_pair; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -insert_fixup(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd->m_red == true); - while (p_nd != base_type::m_p_head->m_p_parent && p_nd->m_p_parent->m_red) - { - if (p_nd->m_p_parent == p_nd->m_p_parent->m_p_parent->m_p_left) - { - node_pointer p_y = p_nd->m_p_parent->m_p_parent->m_p_right; - if (p_y != NULL && p_y->m_red) - { - p_nd->m_p_parent->m_red = false; - p_y->m_red = false; - p_nd->m_p_parent->m_p_parent->m_red = true; - p_nd = p_nd->m_p_parent->m_p_parent; - } - else - { - if (p_nd == p_nd->m_p_parent->m_p_right) - { - p_nd = p_nd->m_p_parent; - base_type::rotate_left(p_nd); - } - p_nd->m_p_parent->m_red = false; - p_nd->m_p_parent->m_p_parent->m_red = true; - base_type::rotate_right(p_nd->m_p_parent->m_p_parent); - } - } - else - { - node_pointer p_y = p_nd->m_p_parent->m_p_parent->m_p_left; - if (p_y != NULL && p_y->m_red) - { - p_nd->m_p_parent->m_red = false; - p_y->m_red = false; - p_nd->m_p_parent->m_p_parent->m_red = true; - p_nd = p_nd->m_p_parent->m_p_parent; - } - else - { - if (p_nd == p_nd->m_p_parent->m_p_left) - { - p_nd = p_nd->m_p_parent; - base_type::rotate_right(p_nd); - } - p_nd->m_p_parent->m_red = false; - p_nd->m_p_parent->m_p_parent->m_red = true; - base_type::rotate_left(p_nd->m_p_parent->m_p_parent); - } - } - } - - base_type::update_to_top(p_nd, (node_update* )this); - base_type::m_p_head->m_p_parent->m_red = false; -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp deleted file mode 100644 index 3f24c762c..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp +++ /dev/null @@ -1,138 +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 node.hpp - * Contains an implementation for rb_tree_. - */ - -#ifndef PB_DS_RB_TREE_NODE_HPP -#define PB_DS_RB_TREE_NODE_HPP - -#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Value_Type, class Metadata, class Allocator> - struct rb_tree_node_ - { - public: - typedef Value_Type value_type; - typedef Metadata metadata_type; - - typedef - typename Allocator::template rebind< - rb_tree_node_< - Value_Type, - Metadata, - Allocator> >::other::pointer - node_pointer; - - typedef - typename Allocator::template rebind< - metadata_type>::other::reference - metadata_reference; - - typedef - typename Allocator::template rebind< - metadata_type>::other::const_reference - const_metadata_reference; - - inline bool - special() const - { return m_red; } - - inline const_metadata_reference - get_metadata() const - { return m_metadata; } - - inline metadata_reference - get_metadata() - { return m_metadata; } - -#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_ - void - trace() const - { - std::cout << PB_DS_V2F(m_value) <<(m_red? " <r> " : " <b> ") - << "(" << m_metadata << ")"; - } -#endif - - node_pointer m_p_left; - node_pointer m_p_right; - node_pointer m_p_parent; - value_type m_value; - bool m_red; - metadata_type m_metadata; - }; - - template<typename Value_Type, class Allocator> - struct rb_tree_node_<Value_Type, null_node_metadata, Allocator> - { - public: - typedef Value_Type value_type; - typedef null_node_metadata metadata_type; - - typedef - typename Allocator::template rebind< - rb_tree_node_< - Value_Type, - null_node_metadata, - Allocator> >::other::pointer - node_pointer; - - inline bool - special() const - { return m_red; } - -#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_ - void - trace() const - { std::cout << PB_DS_V2F(m_value) <<(m_red? " <r> " : " <b> "); } -#endif - - node_pointer m_p_left; - node_pointer m_p_right; - node_pointer m_p_parent; - value_type m_value; - bool m_red; - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp deleted file mode 100644 index 9010def74..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp +++ /dev/null @@ -1,280 +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 rb_tree_.hpp - * Contains an implementation for rb_tree_. - */ -/* - * This implementation uses an idea from the SGI STL (using a "header" node - * which is needed for efficient iteration). - */ - -#ifdef PB_DS_DATA_TRUE_INDICATOR -#ifndef PB_DS_BIN_SEARCH_TREE_HPP__DATA_TRUE_INDICATOR -#define PB_DS_BIN_SEARCH_TREE_HPP__DATA_TRUE_INDICATOR -#include <ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp> -#endif -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#ifndef PB_DS_BIN_SEARCH_TREE_HPP__DATA_FALSE_INDICATOR -#define PB_DS_BIN_SEARCH_TREE_HPP__DATA_FALSE_INDICATOR -#include <ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp> -#endif -#endif - -#include <ext/pb_ds/detail/standard_policies.hpp> -#include <ext/pb_ds/detail/basic_types.hpp> -#include <utility> -#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, typename Cmp_Fn, \ - typename Node_And_It_Traits, typename Allocator> - -#ifdef PB_DS_DATA_TRUE_INDICATOR -#define PB_DS_CLASS_NAME rb_tree_data_ -#endif - -#ifdef PB_DS_DATA_TRUE_INDICATOR -#define PB_DS_BASE_CLASS_NAME bin_search_tree_data_ -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#define PB_DS_CLASS_NAME rb_tree_no_data_ -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#define PB_DS_BASE_CLASS_NAME bin_search_tree_no_data_ -#endif - -#define PB_DS_CLASS_C_DEC \ - PB_DS_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator> - -#define PB_DS_BASE_C_DEC \ - PB_DS_BASE_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator> - -#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 - - template<typename Key, - typename Mapped, - typename Cmp_Fn, - typename Node_And_It_Traits, - typename Allocator> - class PB_DS_CLASS_NAME : public PB_DS_BASE_C_DEC - { - private: - typedef PB_DS_BASE_C_DEC base_type; - typedef typename base_type::node_pointer node_pointer; - - public: - typedef Cmp_Fn cmp_fn; - typedef Allocator allocator_type; - typedef typename Allocator::size_type size_type; - typedef typename Allocator::difference_type difference_type; - typedef typename base_type::key_type key_type; - typedef typename base_type::key_pointer key_pointer; - typedef typename base_type::const_key_pointer const_key_pointer; - typedef typename base_type::key_reference key_reference; - typedef typename base_type::const_key_reference const_key_reference; - typedef typename base_type::mapped_type mapped_type; - typedef typename base_type::mapped_pointer mapped_pointer; - typedef typename base_type::const_mapped_pointer const_mapped_pointer; - typedef typename base_type::mapped_reference mapped_reference; - typedef typename base_type::const_mapped_reference const_mapped_reference; - typedef typename base_type::value_type value_type; - typedef typename base_type::pointer pointer; - typedef typename base_type::const_pointer const_pointer; - typedef typename base_type::reference reference; - typedef typename base_type::const_reference const_reference; - typedef typename base_type::point_iterator point_iterator; - typedef typename base_type::const_iterator const_point_iterator; - typedef typename base_type::iterator iterator; - typedef typename base_type::const_iterator const_iterator; - typedef typename base_type::reverse_iterator reverse_iterator; - typedef typename base_type::const_reverse_iterator const_reverse_iterator; - typedef typename base_type::node_update node_update; - - - PB_DS_CLASS_NAME(); - - PB_DS_CLASS_NAME(const Cmp_Fn&); - - PB_DS_CLASS_NAME(const Cmp_Fn&, const node_update&); - - PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&); - - void - swap(PB_DS_CLASS_C_DEC&); - - template<typename It> - void - copy_from_range(It, It); - - inline std::pair<point_iterator, bool> - insert(const_reference); - - inline mapped_reference - operator[](const_key_reference r_key) - { -#ifdef PB_DS_DATA_TRUE_INDICATOR - _GLIBCXX_DEBUG_ONLY(assert_valid();) - std::pair<point_iterator, bool> ins_pair = - base_type::insert_leaf(value_type(r_key, mapped_type())); - - if (ins_pair.second == true) - { - ins_pair.first.m_p_nd->m_red = true; - _GLIBCXX_DEBUG_ONLY(this->structure_only_assert_valid();) - insert_fixup(ins_pair.first.m_p_nd); - } - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return ins_pair.first.m_p_nd->m_value.second; -#else - insert(r_key); - return base_type::s_null_mapped; -#endif - } - - inline bool - erase(const_key_reference); - - inline iterator - erase(iterator); - - inline reverse_iterator - erase(reverse_iterator); - - template<typename Pred> - inline size_type - erase_if(Pred); - - void - join(PB_DS_CLASS_C_DEC&); - - void - split(const_key_reference, PB_DS_CLASS_C_DEC&); - - protected: - - private: - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; - - size_type - assert_node_consistent(const node_pointer) const; -#endif - - inline static bool - is_effectively_black(const node_pointer); - - void - initialize(); - - void - insert_fixup(node_pointer); - - void - erase_node(node_pointer); - - void - remove_node(node_pointer); - - void - remove_fixup(node_pointer, node_pointer); - - void - split_imp(node_pointer, PB_DS_CLASS_C_DEC&); - - inline node_pointer - split_min(); - - std::pair<node_pointer, node_pointer> - split_min_imp(); - - void - join_imp(node_pointer, node_pointer); - - std::pair<node_pointer, node_pointer> - find_join_pos_right(node_pointer, size_type, size_type); - - std::pair<node_pointer, node_pointer> - find_join_pos_left(node_pointer, size_type, size_type); - - inline size_type - black_height(node_pointer); - - void - split_at_node(node_pointer, PB_DS_CLASS_C_DEC&); - }; - -#include <ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp> -#include <ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp> -#include <ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp> - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_CLASS_NAME -#undef PB_DS_BASE_CLASS_NAME -#undef PB_DS_BASE_C_DEC -#undef PB_DS_V2F -#undef PB_DS_EP2VP -#undef PB_DS_V2S - - } // namespace detail -} // namespace __gnu_pbds - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp deleted file mode 100644 index 9776a8d9a..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp +++ /dev/null @@ -1,313 +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 for rb_tree_. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.base_type::assert_valid();) - if (base_type::join_prep(other) == false) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - return; - } - - const node_pointer p_x = other.split_min(); - join_imp(p_x, other.m_p_head->m_p_parent); - base_type::join_finish(other); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(base_type::assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.base_type::assert_valid();) - } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -join_imp(node_pointer p_x, node_pointer p_r) -{ - _GLIBCXX_DEBUG_ASSERT(p_x != NULL); - if (p_r != NULL) - p_r->m_red = false; - - const size_type h = black_height(base_type::m_p_head->m_p_parent); - const size_type other_h = black_height(p_r); - node_pointer p_x_l; - node_pointer p_x_r; - std::pair<node_pointer, node_pointer> join_pos; - const bool right_join = h >= other_h; - if (right_join) - { - join_pos = find_join_pos_right(base_type::m_p_head->m_p_parent, - h, other_h); - p_x_l = join_pos.first; - p_x_r = p_r; - } - else - { - p_x_l = base_type::m_p_head->m_p_parent; - base_type::m_p_head->m_p_parent = p_r; - if (p_r != NULL) - p_r->m_p_parent = base_type::m_p_head; - - join_pos = find_join_pos_left(base_type::m_p_head->m_p_parent, - h, other_h); - p_x_r = join_pos.first; - } - - node_pointer p_parent = join_pos.second; - if (p_parent == base_type::m_p_head) - { - base_type::m_p_head->m_p_parent = p_x; - p_x->m_p_parent = base_type::m_p_head; - } - else - { - p_x->m_p_parent = p_parent; - if (right_join) - p_x->m_p_parent->m_p_right = p_x; - else - p_x->m_p_parent->m_p_left = p_x; - } - - p_x->m_p_left = p_x_l; - if (p_x_l != NULL) - p_x_l->m_p_parent = p_x; - - p_x->m_p_right = p_x_r; - if (p_x_r != NULL) - p_x_r->m_p_parent = p_x; - - p_x->m_red = true; - - base_type::initialize_min_max(); - _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();) - base_type::update_to_top(p_x, (node_update* )this); - insert_fixup(p_x); - _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid()); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -split_min() -{ - node_pointer p_min = base_type::m_p_head->m_p_left; - -#ifdef _GLIBCXX_DEBUG - const node_pointer p_head = base_type::m_p_head; - _GLIBCXX_DEBUG_ASSERT(p_min != p_head); -#endif - - remove_node(p_min); - return p_min; -} - -PB_DS_CLASS_T_DEC -std::pair< - typename PB_DS_CLASS_C_DEC::node_pointer, - typename PB_DS_CLASS_C_DEC::node_pointer> -PB_DS_CLASS_C_DEC:: -find_join_pos_right(node_pointer p_l, size_type h_l, size_type h_r) -{ - _GLIBCXX_DEBUG_ASSERT(h_l >= h_r); - - if (base_type::m_p_head->m_p_parent == NULL) - return (std::make_pair((node_pointer)NULL, base_type::m_p_head)); - - node_pointer p_l_parent = base_type::m_p_head; - while (h_l > h_r) - { - if (p_l->m_red == false) - { - _GLIBCXX_DEBUG_ASSERT(h_l > 0); - --h_l; - } - - p_l_parent = p_l; - p_l = p_l->m_p_right; - } - - if (!is_effectively_black(p_l)) - { - p_l_parent = p_l; - p_l = p_l->m_p_right; - } - - _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_l)); - _GLIBCXX_DEBUG_ASSERT(black_height(p_l) == h_r); - _GLIBCXX_DEBUG_ASSERT(p_l == NULL || p_l->m_p_parent == p_l_parent); - return std::make_pair(p_l, p_l_parent); -} - -PB_DS_CLASS_T_DEC -std::pair< - typename PB_DS_CLASS_C_DEC::node_pointer, - typename PB_DS_CLASS_C_DEC::node_pointer> -PB_DS_CLASS_C_DEC:: -find_join_pos_left(node_pointer p_r, size_type h_l, size_type h_r) -{ - _GLIBCXX_DEBUG_ASSERT(h_r > h_l); - if (base_type::m_p_head->m_p_parent == NULL) - return (std::make_pair((node_pointer)NULL, - base_type::m_p_head)); - node_pointer p_r_parent = base_type::m_p_head; - while (h_r > h_l) - { - if (p_r->m_red == false) - { - _GLIBCXX_DEBUG_ASSERT(h_r > 0); - --h_r; - } - - p_r_parent = p_r; - p_r = p_r->m_p_left; - } - - if (!is_effectively_black(p_r)) - { - p_r_parent = p_r; - p_r = p_r->m_p_left; - } - - _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_r)); - _GLIBCXX_DEBUG_ASSERT(black_height(p_r) == h_l); - _GLIBCXX_DEBUG_ASSERT(p_r == NULL || p_r->m_p_parent == p_r_parent); - return std::make_pair(p_r, p_r_parent); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -black_height(node_pointer p_nd) -{ - size_type h = 1; - while (p_nd != NULL) - { - if (p_nd->m_red == false) - ++h; - p_nd = p_nd->m_p_left; - } - return h; -} - -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(base_type::assert_valid();) - - _GLIBCXX_DEBUG_ONLY(other.assert_valid()); - _GLIBCXX_DEBUG_ONLY(other.base_type::assert_valid();) - - if (base_type::split_prep(r_key, other) == false) - { - _GLIBCXX_DEBUG_ONLY(assert_valid()); - _GLIBCXX_DEBUG_ONLY(other.assert_valid()); - return; - } - - _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.base_type::structure_only_assert_valid();) - node_pointer p_nd = upper_bound(r_key).m_p_nd; - do - { - node_pointer p_next_nd = p_nd->m_p_parent; - if (Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) - split_at_node(p_nd, other); - - _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.base_type::structure_only_assert_valid();) - p_nd = p_next_nd; - } - while (p_nd != base_type::m_p_head); - - base_type::split_finish(other); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -split_at_node(node_pointer p_nd, PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - - node_pointer p_l = p_nd->m_p_left; - node_pointer p_r = p_nd->m_p_right; - node_pointer p_parent = p_nd->m_p_parent; - if (p_parent == base_type::m_p_head) - { - base_type::m_p_head->m_p_parent = p_l; - if (p_l != NULL) - { - p_l->m_p_parent = base_type::m_p_head; - p_l->m_red = false; - } - } - else - { - if (p_parent->m_p_left == p_nd) - p_parent->m_p_left = p_l; - else - p_parent->m_p_right = p_l; - - if (p_l != NULL) - p_l->m_p_parent = p_parent; - - update_to_top(p_parent, (node_update* )this); - - if (!p_nd->m_red) - remove_fixup(p_l, p_parent); - } - - base_type::initialize_min_max(); - other.join_imp(p_nd, p_r); - _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid()); - _GLIBCXX_DEBUG_ONLY(other.base_type::structure_only_assert_valid()); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp deleted file mode 100644 index 531d8e46e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp +++ /dev/null @@ -1,124 +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 for rb_tree_. - */ - -#ifndef PB_DS_RB_TREE_NODE_AND_IT_TRAITS_HPP -#define PB_DS_RB_TREE_NODE_AND_IT_TRAITS_HPP - -#include <ext/pb_ds/detail/rb_tree_map_/node.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Key, - typename Mapped, - typename Cmp_Fn, - template<typename Const_Node_Iterator, - class Node_Iterator, - class Cmp_Fn_, - class Allocator_> - class Node_Update, - typename Allocator> - struct tree_traits< - Key, - Mapped, - Cmp_Fn, - Node_Update, - rb_tree_tag, - Allocator> : public bin_search_tree_traits< - Key, - Mapped, - Cmp_Fn, - Node_Update, - rb_tree_node_< - typename types_traits< - Key, - Mapped, - Allocator, - false>::value_type, - typename tree_node_metadata_selector< - Key, - Mapped, - Cmp_Fn, - Node_Update, - Allocator>::type, - Allocator>, - Allocator> - { }; - - 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, - rb_tree_tag, - Allocator> : public bin_search_tree_traits< - Key, - null_mapped_type, - Cmp_Fn, - Node_Update, - rb_tree_node_< - typename types_traits< - Key, - null_mapped_type, - Allocator, - false>::value_type, - typename tree_node_metadata_selector< - Key, - null_mapped_type, - Cmp_Fn, - Node_Update, - Allocator>::type, - Allocator>, - Allocator> - { }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index bf4dcfefd..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,88 +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 for rc_binomial_heap_. - */ - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -rc_binomial_heap_() -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -rc_binomial_heap_(const Cmp_Fn& r_cmp_fn) : - PB_DS_BASE_C_DEC(r_cmp_fn) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -rc_binomial_heap_(const PB_DS_CLASS_C_DEC& other) : - PB_DS_BASE_C_DEC(other) -{ - make_binomial_heap(); - - base_type::find_max(); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~rc_binomial_heap_() -{ } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - base_type::swap(other); - - m_rc.swap(other.m_rc); - - _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/rc_binomial_heap_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp deleted file mode 100644 index 0194905c4..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp +++ /dev/null @@ -1,121 +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 for rc_binomial_heap_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ - base_type::assert_valid(false); - if (!base_type::empty()) - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_p_max != NULL); - base_type::assert_max(); - } - - m_rc.assert_valid(); - - if (m_rc.empty()) - { - base_type::assert_valid(true); - _GLIBCXX_DEBUG_ASSERT(next_2_pointer(base_type::m_p_root) == NULL); - return; - } - - const_node_pointer p_nd = next_2_pointer(base_type::m_p_root); - typename rc_t::const_iterator it = m_rc.end(); - --it; - - while (p_nd != NULL) - { - _GLIBCXX_DEBUG_ASSERT(*it == p_nd); - const_node_pointer p_next = p_nd->m_p_next_sibling; - _GLIBCXX_DEBUG_ASSERT(p_next != NULL); - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_next->m_metadata); - _GLIBCXX_DEBUG_ASSERT(p_next->m_p_next_sibling == NULL || - p_next->m_metadata < p_next->m_p_next_sibling->m_metadata); - - --it; - p_nd = next_2_pointer(next_after_0_pointer(p_nd)); - } - _GLIBCXX_DEBUG_ASSERT(it + 1 == m_rc.begin()); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::const_node_pointer -PB_DS_CLASS_C_DEC:: -next_2_pointer(const_node_pointer p_nd) -{ - if (p_nd == NULL) - return NULL; - - node_pointer p_next = p_nd->m_p_next_sibling; - - if (p_next == NULL) - return NULL; - - if (p_nd->m_metadata == p_next->m_metadata) - return p_nd; - - return next_2_pointer(p_next); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::const_node_pointer -PB_DS_CLASS_C_DEC:: -next_after_0_pointer(const_node_pointer p_nd) -{ - if (p_nd == NULL) - return NULL; - - node_pointer p_next = p_nd->m_p_next_sibling; - - if (p_next == NULL) - return NULL; - - if (p_nd->m_metadata < p_next->m_metadata) - return p_next; - - return next_after_0_pointer(p_next); -} - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp deleted file mode 100644 index 1113ffa66..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp +++ /dev/null @@ -1,107 +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 for rc_binomial_heap_. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -pop() -{ - make_binomial_heap(); - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - base_type::pop(); - base_type::find_max(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - base_type::clear(); - m_rc.clear(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -make_binomial_heap() -{ - node_pointer p_nd = base_type::m_p_root; - while (p_nd != NULL) - { - node_pointer p_next = p_nd->m_p_next_sibling; - if (p_next == NULL) - p_nd = p_next; - else if (p_nd->m_metadata == p_next->m_metadata) - p_nd = link_with_next_sibling(p_nd); - else if (p_nd->m_metadata < p_next->m_metadata) - p_nd = p_next; -#ifdef _GLIBCXX_DEBUG - else - _GLIBCXX_DEBUG_ASSERT(0); -#endif - } - - m_rc.clear(); -} - -PB_DS_CLASS_T_DEC -template<typename Pred> -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - make_binomial_heap(); - const size_type ersd = base_type::erase_if(pred); - base_type::find_max(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return ersd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase(point_iterator it) -{ - make_binomial_heap(); - base_type::erase(it); - base_type::find_max(); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp deleted file mode 100644 index aef4b928e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp +++ /dev/null @@ -1,154 +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 for rc_binomial_heap_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -push(const_reference r_val) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - make_0_exposed(); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - node_pointer p_nd = base_type::get_new_node_for_insert(r_val); - - p_nd->m_p_l_child = p_nd->m_p_prev_or_parent = NULL; - p_nd->m_metadata = 0; - - if (base_type::m_p_max == NULL || Cmp_Fn::operator()(base_type::m_p_max->m_value, r_val)) - base_type::m_p_max = p_nd; - - p_nd->m_p_next_sibling = base_type::m_p_root; - - if (base_type::m_p_root != NULL) - base_type::m_p_root->m_p_prev_or_parent = p_nd; - - base_type::m_p_root = p_nd; - - if (p_nd->m_p_next_sibling != NULL&& p_nd->m_p_next_sibling->m_metadata == 0) - m_rc.push(p_nd); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - return point_iterator(p_nd); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -modify(point_iterator it, const_reference r_new_val) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - make_binomial_heap(); - - base_type::modify(it, r_new_val); - - base_type::find_max(); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -link_with_next_sibling(node_pointer p_nd) -{ - node_pointer p_next = p_nd->m_p_next_sibling; - - _GLIBCXX_DEBUG_ASSERT(p_next != NULL); - _GLIBCXX_DEBUG_ASSERT(p_next->m_p_prev_or_parent == p_nd); - - if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value)) - { - p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - - if (p_next->m_p_prev_or_parent == NULL) - base_type::m_p_root = p_next; - else - p_next->m_p_prev_or_parent->m_p_next_sibling = p_next; - - if (base_type::m_p_max == p_nd) - base_type::m_p_max = p_next; - - base_type::make_child_of(p_nd, p_next); - - ++p_next->m_metadata; - - return p_next; - } - - p_nd->m_p_next_sibling = p_next->m_p_next_sibling; - - if (p_nd->m_p_next_sibling != NULL) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd; - - if (base_type::m_p_max == p_next) - base_type::m_p_max = p_nd; - - base_type::make_child_of(p_next, p_nd); - - ++p_nd->m_metadata; - - return p_nd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -make_0_exposed() -{ - if (m_rc.empty()) - return; - - node_pointer p_nd = m_rc.top(); - - m_rc.pop(); - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling != NULL); - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata); - - node_pointer p_res = link_with_next_sibling(p_nd); - - if (p_res->m_p_next_sibling != NULL&& p_res->m_metadata == p_res->m_p_next_sibling->m_metadata) - m_rc.push(p_res); -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp deleted file mode 100644 index 9b70accd9..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp +++ /dev/null @@ -1,262 +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 rc.hpp - * Contains a redundant (binary counter). - */ - -#ifndef PB_DS_RC_HPP -#define PB_DS_RC_HPP - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_T_DEC \ - template<typename Node, class Allocator> - -#define PB_DS_CLASS_C_DEC \ - rc<Node, Allocator> - - template<typename Node, class Allocator> - class rc - { - private: - typedef Allocator allocator_type; - - typedef typename allocator_type::size_type size_type; - - typedef Node node; - - typedef - typename allocator_type::template rebind< - node>::other::pointer - node_pointer; - - typedef - typename allocator_type::template rebind< - node_pointer>::other::pointer - entry_pointer; - - typedef - typename allocator_type::template rebind< - node_pointer>::other::const_pointer - const_entry_pointer; - - enum - { - max_entries = sizeof(size_type) << 3 - }; - - public: - typedef node_pointer entry; - - typedef const_entry_pointer const_iterator; - - public: - rc(); - - rc(const PB_DS_CLASS_C_DEC& other); - - inline void - swap(PB_DS_CLASS_C_DEC& other); - - inline void - push(entry p_nd); - - inline node_pointer - top() const; - - inline void - pop(); - - inline bool - empty() const; - - inline size_type - size() const; - - void - clear(); - - const const_iterator - begin() const; - - const const_iterator - end() const; - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; -#endif - -#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_ - void - trace() const; -#endif - - private: - node_pointer m_a_entries[max_entries]; - - size_type m_over_top; - }; - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - rc() : m_over_top(0) - { _GLIBCXX_DEBUG_ONLY(assert_valid();) } - - PB_DS_CLASS_T_DEC - PB_DS_CLASS_C_DEC:: - rc(const PB_DS_CLASS_C_DEC& other) : m_over_top(0) - { _GLIBCXX_DEBUG_ONLY(assert_valid();) } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - swap(PB_DS_CLASS_C_DEC& other) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - const size_type over_top = std::max(m_over_top, other.m_over_top); - - for (size_type i = 0; i < over_top; ++i) - std::swap(m_a_entries[i], other.m_a_entries[i]); - - std::swap(m_over_top, other.m_over_top); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - push(entry p_nd) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(m_over_top < max_entries); - m_a_entries[m_over_top++] = p_nd; - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - - PB_DS_CLASS_T_DEC - inline void - PB_DS_CLASS_C_DEC:: - pop() - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!empty()); - --m_over_top; - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::node_pointer - PB_DS_CLASS_C_DEC:: - top() const - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!empty()); - return *(m_a_entries + m_over_top - 1); - } - - PB_DS_CLASS_T_DEC - inline bool - PB_DS_CLASS_C_DEC:: - empty() const - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return m_over_top == 0; - } - - PB_DS_CLASS_T_DEC - inline typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - size() const - { return m_over_top; } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - clear() - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - m_over_top = 0; - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - - PB_DS_CLASS_T_DEC - const typename PB_DS_CLASS_C_DEC::const_iterator - PB_DS_CLASS_C_DEC:: - begin() const - { return& m_a_entries[0]; } - - PB_DS_CLASS_T_DEC - const typename PB_DS_CLASS_C_DEC::const_iterator - PB_DS_CLASS_C_DEC:: - end() const - { return& m_a_entries[m_over_top]; } - -#ifdef _GLIBCXX_DEBUG - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - assert_valid() const - { _GLIBCXX_DEBUG_ASSERT(m_over_top < max_entries); } -#endif - -#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_ - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - trace() const - { - std::cout << "rc" << std::endl; - for (size_type i = 0; i < m_over_top; ++i) - std::cerr << m_a_entries[i] << std::endl; - std::cout << std::endl; - } -#endif - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - -} // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp deleted file mode 100644 index 762e29b39..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp +++ /dev/null @@ -1,198 +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 rc_binomial_heap_.hpp - * Contains an implementation for rc_binomial_heap_. - */ - -/* - * Redundant-counter binomial heap. - */ - -#include <ext/pb_ds/detail/cond_dealtor.hpp> -#include <ext/pb_ds/detail/type_utils.hpp> -#include <ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp> -#include <ext/pb_ds/detail/rc_binomial_heap_/rc.hpp> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_CLASS_T_DEC \ - template<typename Value_Type, class Cmp_Fn, class Allocator> - -#define PB_DS_CLASS_C_DEC \ - rc_binomial_heap_<Value_Type, Cmp_Fn, Allocator> - -#define PB_DS_BASE_C_DEC \ - binomial_heap_base_<Value_Type, Cmp_Fn, Allocator> - -#define PB_DS_RC_C_DEC \ - rc<typename PB_DS_BASE_C_DEC::node, Allocator> - - /** - * class description = "8y|\|0|\/|i41 h34p 74813"> - **/ - template<typename Value_Type, class Cmp_Fn, class Allocator> - class rc_binomial_heap_ : public PB_DS_BASE_C_DEC - { - - private: - typedef PB_DS_BASE_C_DEC base_type; - - typedef typename base_type::node_pointer node_pointer; - - typedef typename base_type::const_node_pointer const_node_pointer; - - typedef PB_DS_RC_C_DEC rc_t; - - public: - - typedef typename Allocator::size_type size_type; - - typedef typename Allocator::difference_type difference_type; - - typedef Value_Type value_type; - - typedef typename base_type::pointer pointer; - - typedef typename base_type::const_pointer const_pointer; - - typedef typename base_type::reference reference; - - typedef typename base_type::const_reference const_reference; - - typedef typename base_type::const_point_iterator const_point_iterator; - - typedef typename base_type::point_iterator point_iterator; - - typedef typename base_type::const_iterator const_iterator; - - typedef typename base_type::iterator iterator; - - typedef typename base_type::cmp_fn cmp_fn; - - typedef typename base_type::allocator_type allocator_type; - - public: - - rc_binomial_heap_(); - - rc_binomial_heap_(const Cmp_Fn& r_cmp_fn); - - rc_binomial_heap_(const PB_DS_CLASS_C_DEC& other); - - ~rc_binomial_heap_(); - - void - swap(PB_DS_CLASS_C_DEC& other); - - inline point_iterator - push(const_reference r_val); - - void - modify(point_iterator it, const_reference r_new_val); - - inline void - pop(); - - void - erase(point_iterator it); - - inline void - clear(); - - template<typename Pred> - size_type - erase_if(Pred pred); - - template<typename Pred> - void - split(Pred pred, PB_DS_CLASS_C_DEC& other); - - void - join(PB_DS_CLASS_C_DEC& other); - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; -#endif - -#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_ - void - trace() const; -#endif - - private: - - inline node_pointer - link_with_next_sibling(node_pointer p_nd); - - void - make_0_exposed(); - - void - make_binomial_heap(); - -#ifdef _GLIBCXX_DEBUG - static const_node_pointer - next_2_pointer(const_node_pointer p_nd); - - static const_node_pointer - next_after_0_pointer(const_node_pointer p_nd); -#endif - - private: - rc_t m_rc; - }; - -#include <ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp> -#include <ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp> -#include <ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp> - -#undef PB_DS_CLASS_C_DEC - -#undef PB_DS_CLASS_T_DEC - -#undef PB_DS_BASE_C_DEC - -#undef PB_DS_RC_C_DEC - } // namespace detail -} // namespace __gnu_pbds diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp deleted file mode 100644 index 26965aec8..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp +++ /dev/null @@ -1,81 +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 for rc_binomial_heap_. - */ - -PB_DS_CLASS_T_DEC -template<typename Pred> -void -PB_DS_CLASS_C_DEC:: -split(Pred pred, PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - make_binomial_heap(); - other.make_binomial_heap(); - - base_type::split(pred, other); - - base_type::find_max(); - other.find_max(); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - make_binomial_heap(); - other.make_binomial_heap(); - - base_type::join(other); - - base_type::find_max(); - other.find_max(); - - _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/rc_binomial_heap_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp deleted file mode 100644 index 1fb3b8bd4..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp +++ /dev/null @@ -1,53 +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 trace_fn_imps.hpp - * Contains an implementation for rc_binomial_heap_. - */ - -#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - base_type::trace(); - - m_rc.trace(); -} - -#endif // #ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_ diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp deleted file mode 100644 index 94cd515e3..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp +++ /dev/null @@ -1,211 +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 cc_hash_max_collision_check_resize_trigger_imp.hpp - * Contains a resize trigger implementation. - */ - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -cc_hash_max_collision_check_resize_trigger(float load) : - m_load(load), - m_size(0), - m_num_col(0), - m_max_col(0), - m_resize_needed(false) -{ } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_find_search_start() -{ } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_find_search_collision() -{ } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_find_search_end() -{ } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_insert_search_start() -{ m_num_col = 0; } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_insert_search_collision() -{ ++m_num_col; } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_insert_search_end() -{ calc_resize_needed(); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_erase_search_start() -{ } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_erase_search_collision() -{ } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_erase_search_end() -{ } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_inserted(size_type) -{ } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_erased(size_type) -{ m_resize_needed = true; } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -notify_cleared() -{ m_resize_needed = false; } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -is_resize_needed() const -{ return m_resize_needed; } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -is_grow_needed(size_type /*size*/, size_type /*num_used_e*/) const -{ return m_num_col >= m_max_col; } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -notify_resized(size_type new_size) -{ - m_size = new_size; - -#ifdef PB_DS_HT_MAP_RESIZE_TRACE_ - std::cerr << "chmccrt::notify_resized " - << static_cast<unsigned long>(new_size) << std::endl; -#endif - - calc_max_num_coll(); - calc_resize_needed(); - m_num_col = 0; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -calc_max_num_coll() -{ - // max_col <-- \sqrt{2 load \ln( 2 m \ln( m ) ) } - const double ln_arg = 2 * m_size * std::log(double(m_size)); - m_max_col = size_type(std::ceil(std::sqrt(2 * m_load * std::log(ln_arg)))); - -#ifdef PB_DS_HT_MAP_RESIZE_TRACE_ - std::cerr << "chmccrt::calc_max_num_coll " - << static_cast<unsigned long>(m_size) << " " - << static_cast<unsigned long>(m_max_col) << std::endl; -#endif -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -notify_externally_resized(size_type new_size) -{ notify_resized(new_size); } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - std::swap(m_load, other.m_load); - std::swap(m_size, other.m_size); - std::swap(m_num_col, other.m_num_col); - std::swap(m_max_col, other.m_max_col); - std::swap(m_resize_needed, other.m_resize_needed); -} - -PB_DS_CLASS_T_DEC -inline float -PB_DS_CLASS_C_DEC:: -get_load() const -{ - PB_DS_STATIC_ASSERT(access, external_load_access); - return m_load; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -calc_resize_needed() -{ m_resize_needed = m_resize_needed || m_num_col >= m_max_col; } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -set_load(float load) -{ - PB_DS_STATIC_ASSERT(access, external_load_access); - m_load = load; - calc_max_num_coll(); - calc_resize_needed(); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp deleted file mode 100644 index b58f2ec9d..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp +++ /dev/null @@ -1,90 +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 hash_exponential_size_policy_imp.hpp - * Contains a resize size policy implementation. - */ - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -hash_exponential_size_policy(size_type start_size, size_type grow_factor) : - m_start_size(start_size), - m_grow_factor(grow_factor) -{ } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - std::swap(m_start_size, other.m_start_size); - std::swap(m_grow_factor, other.m_grow_factor); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -get_nearest_larger_size(size_type size) const -{ - size_type ret = m_start_size; - while (ret <= size) - { - const size_type next_ret = ret* m_grow_factor; - if (next_ret < ret) - __throw_insert_error(); - ret = next_ret; - } - return ret; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -get_nearest_smaller_size(size_type size) const -{ - size_type ret = m_start_size; - while (true) - { - const size_type next_ret = ret* m_grow_factor; - if (next_ret < ret) - __throw_resize_error(); - if (next_ret >= size) - return (ret); - ret = next_ret; - } - return ret; -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp deleted file mode 100644 index 3403b0976..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp +++ /dev/null @@ -1,289 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 hash_load_check_resize_trigger_imp.hpp - * Contains a resize trigger implementation. - */ - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -hash_load_check_resize_trigger(float load_min, float load_max) -: m_load_min(load_min), m_load_max(load_max), m_next_shrink_size(0), - m_next_grow_size(0), m_resize_needed(false) -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_find_search_start() -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_find_search_collision() -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_find_search_end() -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_insert_search_start() -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_insert_search_collision() -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_insert_search_end() -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_erase_search_start() -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_erase_search_collision() -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_erase_search_end() -{ _GLIBCXX_DEBUG_ONLY(assert_valid();) } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_inserted(size_type num_entries) -{ - m_resize_needed = (num_entries >= m_next_grow_size); - size_base::set_size(num_entries); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_erased(size_type num_entries) -{ - size_base::set_size(num_entries); - m_resize_needed = num_entries <= m_next_shrink_size; - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -is_resize_needed() const -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return m_resize_needed; -} - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -is_grow_needed(size_type /*size*/, size_type num_entries) const -{ - _GLIBCXX_DEBUG_ASSERT(m_resize_needed); - return num_entries >= m_next_grow_size; -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~hash_load_check_resize_trigger() { } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -notify_resized(size_type new_size) -{ - m_resize_needed = false; - m_next_grow_size = size_type(m_load_max * new_size - 1); - m_next_shrink_size = size_type(m_load_min * new_size); - -#ifdef PB_DS_HT_MAP_RESIZE_TRACE_ - std::cerr << "hlcrt::notify_resized " << - static_cast<unsigned long>(new_size) << " " << - static_cast<unsigned long>(m_load_min) << " " << - static_cast<unsigned long>(m_load_max) << " " << - static_cast<unsigned long>(m_next_shrink_size) << " " << - static_cast<unsigned long>(m_next_grow_size) << " " << std::endl; -#endif - - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -notify_externally_resized(size_type new_size) -{ - m_resize_needed = false; - size_type new_grow_size = size_type(m_load_max * new_size - 1); - size_type new_shrink_size = size_type(m_load_min * new_size); - if (new_grow_size >= m_next_grow_size) - { - _GLIBCXX_DEBUG_ASSERT(new_shrink_size > m_next_shrink_size); - m_next_grow_size = new_grow_size; - _GLIBCXX_DEBUG_ONLY(assert_valid();) - -#ifdef PB_DS_HT_MAP_RESIZE_TRACE_ - std::cerr << "hlcrt::notify_externally_resized1 " << - static_cast<unsigned long>(new_size) << " " << - static_cast<unsigned long>(m_load_min) << " " << - static_cast<unsigned long>(m_load_max) << " " << - static_cast<unsigned long>(m_next_shrink_size) << " " << - static_cast<unsigned long>(m_next_grow_size) << " " << std::endl; -#endif - return; - } - - _GLIBCXX_DEBUG_ASSERT(new_shrink_size <= m_next_shrink_size); - m_next_shrink_size = new_shrink_size; - -#ifdef PB_DS_HT_MAP_RESIZE_TRACE_ - std::cerr << "hlcrt::notify_externally_resized2 " << - static_cast<unsigned long>(new_size) << " " << - static_cast<unsigned long>(m_load_min) << " " << - static_cast<unsigned long>(m_load_max) << " " << - static_cast<unsigned long>(m_next_shrink_size) << " " << - static_cast<unsigned long>(m_next_grow_size) << " " << std::endl; -#endif - - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -notify_cleared() -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - size_base::set_size(0); - m_resize_needed = (0 < m_next_shrink_size); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - size_base::swap(other); - std::swap(m_load_min, other.m_load_min); - std::swap(m_load_max, other.m_load_max); - std::swap(m_resize_needed, other.m_resize_needed); - std::swap(m_next_grow_size, other.m_next_grow_size); - std::swap(m_next_shrink_size, other.m_next_shrink_size); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) -} - -PB_DS_CLASS_T_DEC -inline std::pair<float, float> -PB_DS_CLASS_C_DEC:: -get_loads() const -{ - PB_DS_STATIC_ASSERT(access, external_load_access); - return std::make_pair(m_load_min, m_load_max); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -set_loads(std::pair<float, float> load_pair) -{ - PB_DS_STATIC_ASSERT(access, external_load_access); - const float old_load_min = m_load_min; - const float old_load_max = m_load_max; - const size_type old_next_shrink_size = m_next_shrink_size; - const size_type old_next_grow_size = m_next_grow_size; - const bool old_resize_needed = m_resize_needed; - - __try - { - m_load_min = load_pair.first; - m_load_max = load_pair.second; - do_resize(static_cast<size_type>(size_base::get_size() / ((m_load_min + m_load_max) / 2))); - } - __catch(...) - { - m_load_min = old_load_min; - m_load_max = old_load_max; - m_next_shrink_size = old_next_shrink_size; - m_next_grow_size = old_next_grow_size; - m_resize_needed = old_resize_needed; - __throw_exception_again; - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -do_resize(size_type) -{ std::abort(); } - -#ifdef _GLIBCXX_DEBUG -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ - _GLIBCXX_DEBUG_ASSERT(m_load_max > m_load_min); - _GLIBCXX_DEBUG_ASSERT(m_next_grow_size >= m_next_shrink_size); -} -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp deleted file mode 100644 index c29b3d5be..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp +++ /dev/null @@ -1,94 +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 hash_load_check_resize_trigger_size_base.hpp - * Contains an base holding size for some resize policies. - */ - -#ifndef PB_DS_HASH_LOAD_CHECK_RESIZE_TRIGGER_SIZE_BASE_HPP -#define PB_DS_HASH_LOAD_CHECK_RESIZE_TRIGGER_SIZE_BASE_HPP - -namespace __gnu_pbds -{ - namespace detail - { - // Primary template. - template<typename Size_Type, bool Hold_Size> - class hash_load_check_resize_trigger_size_base; - - // Specializations. - template<typename Size_Type> - class hash_load_check_resize_trigger_size_base<Size_Type, true> - { - protected: - typedef Size_Type size_type; - - hash_load_check_resize_trigger_size_base(): m_size(0) - { } - - inline void - swap(hash_load_check_resize_trigger_size_base& other) - { std::swap(m_size, other.m_size); } - - inline void - set_size(size_type size) - { m_size = size; } - - inline size_type - get_size() const - { return m_size; } - - private: - size_type m_size; - }; - - template<typename Size_Type> - class hash_load_check_resize_trigger_size_base<Size_Type, false> - { - protected: - typedef Size_Type size_type; - - protected: - inline void - swap(hash_load_check_resize_trigger_size_base& other) { } - - inline void - set_size(size_type size) { } - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp deleted file mode 100644 index a28f5ede5..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp +++ /dev/null @@ -1,161 +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 hash_prime_size_policy_imp.hpp - * Contains a resize size policy implementation. - */ - -#pragma GCC system_header - -namespace detail -{ - enum - { - num_distinct_sizes_32_bit = 30, - num_distinct_sizes_64_bit = 62, - num_distinct_sizes = sizeof(std::size_t) != 8 ? - num_distinct_sizes_32_bit : num_distinct_sizes_64_bit, - }; - - // Originally taken from the SGI implementation; acknowledged in the docs. - // Further modified (for 64 bits) from tr1's hashtable. - static const std::size_t g_a_sizes[num_distinct_sizes_64_bit] = - { - /* 0 */ 5ul, - /* 1 */ 11ul, - /* 2 */ 23ul, - /* 3 */ 47ul, - /* 4 */ 97ul, - /* 5 */ 199ul, - /* 6 */ 409ul, - /* 7 */ 823ul, - /* 8 */ 1741ul, - /* 9 */ 3469ul, - /* 10 */ 6949ul, - /* 11 */ 14033ul, - /* 12 */ 28411ul, - /* 13 */ 57557ul, - /* 14 */ 116731ul, - /* 15 */ 236897ul, - /* 16 */ 480881ul, - /* 17 */ 976369ul, - /* 18 */ 1982627ul, - /* 19 */ 4026031ul, - /* 20 */ 8175383ul, - /* 21 */ 16601593ul, - /* 22 */ 33712729ul, - /* 23 */ 68460391ul, - /* 24 */ 139022417ul, - /* 25 */ 282312799ul, - /* 26 */ 573292817ul, - /* 27 */ 1164186217ul, - /* 28 */ 2364114217ul, - /* 29 */ 4294967291ul, - /* 30 */ (std::size_t)8589934583ull, - /* 31 */ (std::size_t)17179869143ull, - /* 32 */ (std::size_t)34359738337ull, - /* 33 */ (std::size_t)68719476731ull, - /* 34 */ (std::size_t)137438953447ull, - /* 35 */ (std::size_t)274877906899ull, - /* 36 */ (std::size_t)549755813881ull, - /* 37 */ (std::size_t)1099511627689ull, - /* 38 */ (std::size_t)2199023255531ull, - /* 39 */ (std::size_t)4398046511093ull, - /* 40 */ (std::size_t)8796093022151ull, - /* 41 */ (std::size_t)17592186044399ull, - /* 42 */ (std::size_t)35184372088777ull, - /* 43 */ (std::size_t)70368744177643ull, - /* 44 */ (std::size_t)140737488355213ull, - /* 45 */ (std::size_t)281474976710597ull, - /* 46 */ (std::size_t)562949953421231ull, - /* 47 */ (std::size_t)1125899906842597ull, - /* 48 */ (std::size_t)2251799813685119ull, - /* 49 */ (std::size_t)4503599627370449ull, - /* 50 */ (std::size_t)9007199254740881ull, - /* 51 */ (std::size_t)18014398509481951ull, - /* 52 */ (std::size_t)36028797018963913ull, - /* 53 */ (std::size_t)72057594037927931ull, - /* 54 */ (std::size_t)144115188075855859ull, - /* 55 */ (std::size_t)288230376151711717ull, - /* 56 */ (std::size_t)576460752303423433ull, - /* 57 */ (std::size_t)1152921504606846883ull, - /* 58 */ (std::size_t)2305843009213693951ull, - /* 59 */ (std::size_t)4611686018427387847ull, - /* 60 */ (std::size_t)9223372036854775783ull, - /* 61 */ (std::size_t)18446744073709551557ull, - }; - -} // namespace detail - -PB_DS_CLASS_T_DEC -inline -PB_DS_CLASS_C_DEC:: -hash_prime_size_policy(size_type n) : m_start_size(n) -{ m_start_size = get_nearest_larger_size(n); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ std::swap(m_start_size, other.m_start_size); } - -PB_DS_CLASS_T_DEC -inline PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -get_nearest_larger_size(size_type n) const -{ - const std::size_t* const p_upper = std::upper_bound(detail::g_a_sizes, - detail::g_a_sizes + detail::num_distinct_sizes, n); - - if (p_upper == detail::g_a_sizes + detail::num_distinct_sizes) - __throw_resize_error(); - return *p_upper; -} - -PB_DS_CLASS_T_DEC -inline PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -get_nearest_smaller_size(size_type n) const -{ - const size_t* p_lower = std::lower_bound(detail::g_a_sizes, - detail::g_a_sizes + detail::num_distinct_sizes, n); - - if (*p_lower >= n && p_lower != detail::g_a_sizes) - --p_lower; - if (*p_lower < m_start_size) - return m_start_size; - return *p_lower; -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp deleted file mode 100644 index 39cf7dc9e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp +++ /dev/null @@ -1,249 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 hash_standard_resize_policy_imp.hpp - * Contains a resize policy implementation. - */ - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -hash_standard_resize_policy() -: m_size(Size_Policy::get_nearest_larger_size(1)) -{ trigger_policy_base::notify_externally_resized(m_size); } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -hash_standard_resize_policy(const Size_Policy& r_size_policy) -: Size_Policy(r_size_policy), m_size(Size_Policy::get_nearest_larger_size(1)) -{ trigger_policy_base::notify_externally_resized(m_size); } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -hash_standard_resize_policy(const Size_Policy& r_size_policy, - const Trigger_Policy& r_trigger_policy) -: Size_Policy(r_size_policy), Trigger_Policy(r_trigger_policy), - m_size(Size_Policy::get_nearest_larger_size(1)) -{ trigger_policy_base::notify_externally_resized(m_size); } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~hash_standard_resize_policy() -{ } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - trigger_policy_base::swap(other); - size_policy_base::swap(other); - std::swap(m_size, other.m_size); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_find_search_start() -{ trigger_policy_base::notify_find_search_start(); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_find_search_collision() -{ trigger_policy_base::notify_find_search_collision(); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_find_search_end() -{ trigger_policy_base::notify_find_search_end(); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_insert_search_start() -{ trigger_policy_base::notify_insert_search_start(); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_insert_search_collision() -{ trigger_policy_base::notify_insert_search_collision(); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_insert_search_end() -{ trigger_policy_base::notify_insert_search_end(); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_erase_search_start() -{ trigger_policy_base::notify_erase_search_start(); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_erase_search_collision() -{ trigger_policy_base::notify_erase_search_collision(); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_erase_search_end() -{ trigger_policy_base::notify_erase_search_end(); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_inserted(size_type num_e) -{ trigger_policy_base::notify_inserted(num_e); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -notify_erased(size_type num_e) -{ trigger_policy_base::notify_erased(num_e); } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -notify_cleared() -{ trigger_policy_base::notify_cleared(); } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -is_resize_needed() const -{ return trigger_policy_base::is_resize_needed(); } - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -get_new_size(size_type size, size_type num_used_e) const -{ - if (trigger_policy_base::is_grow_needed(size, num_used_e)) - return size_policy_base::get_nearest_larger_size(size); - return size_policy_base::get_nearest_smaller_size(size); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -notify_resized(size_type new_size) -{ - trigger_policy_base::notify_resized(new_size); - m_size = new_size; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -get_actual_size() const -{ - PB_DS_STATIC_ASSERT(access, external_size_access); - return m_size; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -resize(size_type new_size) -{ - PB_DS_STATIC_ASSERT(access, external_size_access); - size_type actual_size = size_policy_base::get_nearest_larger_size(1); - while (actual_size < new_size) - { - const size_type pot = size_policy_base::get_nearest_larger_size(actual_size); - - if (pot == actual_size && pot < new_size) - __throw_resize_error(); - actual_size = pot; - } - - if (actual_size > 0) - --actual_size; - - const size_type old_size = m_size; - __try - { - do_resize(actual_size - 1); - } - __catch(insert_error& ) - { - m_size = old_size; - __throw_resize_error(); - } - __catch(...) - { - m_size = old_size; - __throw_exception_again; - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -do_resize(size_type) -{ - // Do nothing -} - -PB_DS_CLASS_T_DEC -Trigger_Policy& -PB_DS_CLASS_C_DEC:: -get_trigger_policy() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Trigger_Policy& -PB_DS_CLASS_C_DEC:: -get_trigger_policy() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Size_Policy& -PB_DS_CLASS_C_DEC:: -get_size_policy() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Size_Policy& -PB_DS_CLASS_C_DEC:: -get_size_policy() const -{ return *this; } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp deleted file mode 100644 index ed70b9511..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp +++ /dev/null @@ -1,125 +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 sample_resize_policy.hpp - * Contains a sample resize policy for hash tables. - */ - -#ifndef PB_DS_SAMPLE_RESIZE_POLICY_HPP -#define PB_DS_SAMPLE_RESIZE_POLICY_HPP - -// A sample resize policy. -class sample_resize_policy -{ -public: - - // Size type. - typedef size_t size_type; - - // Default constructor. - sample_resize_policy(); - - // Copy constructor. - sample_range_hashing(const sample_resize_policy& other); - - // Swaps content. - inline void - swap(sample_resize_policy& other); - -protected: - - // Notifies a search started. - inline void - notify_insert_search_start(); - - // Notifies a search encountered a collision. - inline void - notify_insert_search_collision(); - - // Notifies a search ended. - inline void - notify_insert_search_end(); - - // Notifies a search started. - inline void - notify_find_search_start(); - - // Notifies a search encountered a collision. - inline void - notify_find_search_collision(); - - // Notifies a search ended. - inline void - notify_find_search_end(); - - // Notifies a search started. - inline void - notify_erase_search_start(); - - // Notifies a search encountered a collision. - inline void - notify_erase_search_collision(); - - // Notifies a search ended. - inline void - notify_erase_search_end(); - - // Notifies an element was inserted. - inline void - notify_inserted(size_type num_e); - - // Notifies an element was erased. - inline void - notify_erased(size_type num_e); - - // Notifies the table was cleared. - void - notify_cleared(); - - // Notifies the table was resized to new_size. - void - notify_resized(size_type new_size); - - // Queries whether a resize is needed. - inline bool - is_resize_needed() const; - - // Queries what the new size should be. - size_type - get_new_size(size_type size, size_type num_used_e) const; -}; - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp deleted file mode 100644 index a27dd9427..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp +++ /dev/null @@ -1,137 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005, 2006, 2007, 2008, 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 sample_resize_trigger.hpp - * Contains a sample resize trigger policy class. - */ - -#ifndef PB_DS_SAMPLE_RESIZE_TRIGGER_HPP -#define PB_DS_SAMPLE_RESIZE_TRIGGER_HPP - -// A sample resize trigger policy. -class sample_resize_trigger -{ -public: - - // Size type. - typedef size_t size_type; - - // Default constructor. - sample_resize_trigger(); - - // Copy constructor. - sample_range_hashing(const sample_resize_trigger& other); - - // Swaps content. - inline void - swap(sample_resize_trigger& other); - -protected: - - // Notifies a search started. - inline void - notify_insert_search_start(); - - // Notifies a search encountered a collision. - inline void - notify_insert_search_collision(); - - // Notifies a search ended. - inline void - notify_insert_search_end(); - - // Notifies a search started. - inline void - notify_find_search_start(); - - // Notifies a search encountered a collision. - inline void - notify_find_search_collision(); - - // Notifies a search ended. - inline void - notify_find_search_end(); - - // Notifies a search started. - inline void - notify_erase_search_start(); - - // Notifies a search encountered a collision. - inline void - notify_erase_search_collision(); - - // Notifies a search ended. - inline void - notify_erase_search_end(); - - // Notifies an element was inserted. the total number of entries in - // the table is num_entries. - inline void - notify_inserted(size_type num_entries); - - // Notifies an element was erased. - inline void - notify_erased(size_type num_entries); - - // Notifies the table was cleared. - void - notify_cleared(); - - // Notifies the table was resized as a result of this object's - // signifying that a resize is needed. - void - notify_resized(size_type new_size); - - // Notifies the table was resized externally. - void - notify_externally_resized(size_type new_size); - - // Queries whether a resize is needed. - inline bool - is_resize_needed() const; - - // Queries whether a grow is needed. - inline bool - is_grow_needed(size_type size, size_type num_entries) const; - -private: - - // Resizes to new_size. - virtual void - do_resize(size_type new_size); -}; - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp deleted file mode 100644 index 1f2d3a9c1..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp +++ /dev/null @@ -1,73 +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 sample_size_policy.hpp - * Contains a sample size resize-policy. - */ - -#ifndef PB_DS_SAMPLE_SIZE_POLICY_HPP -#define PB_DS_SAMPLE_SIZE_POLICY_HPP - -// A sample size policy. -class sample_size_policy -{ -public: - - // Size type. - typedef size_t size_type; - - // Default constructor. - sample_size_policy(); - - // Copy constructor. - sample_range_hashing(const sample_size_policy& other); - - // Swaps content. - inline void - swap(sample_size_policy& other); - -protected: - - // Given a __size size, returns a __size that is larger. - inline size_type - get_nearest_larger_size(size_type size) const; - - // Given a __size size, returns a __size that is smaller. - inline size_type - get_nearest_smaller_size(size_type size) const; -}; - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 222589532..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,102 +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 splay_tree_. - */ - -PB_DS_CLASS_T_DEC -template<typename It> -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - insert(*(first_it++)); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME() -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn) : - base_type(r_cmp_fn) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) : - base_type(r_cmp_fn, r_node_update) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) : - base_type(other) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - base_type::swap(other); - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ base_type::m_p_head->m_special = true; } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp deleted file mode 100644 index 084e25d26..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.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 debug_fn_imps.hpp - * Contains an implementation class for splay_tree_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ - base_type::assert_valid(); - const node_pointer p_head = base_type::m_p_head; - assert_special_imp(p_head); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_special_imp(const node_pointer p_nd) const -{ - if (p_nd == NULL) - return; - - if (p_nd == base_type::m_p_head) - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_special); - assert_special_imp(p_nd->m_p_parent); - return; - } - - _GLIBCXX_DEBUG_ASSERT(!p_nd->m_special); - assert_special_imp(p_nd->m_p_left); - assert_special_imp(p_nd->m_p_right); -} - -#endif - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp deleted file mode 100644 index 508f586d7..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp +++ /dev/null @@ -1,157 +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 splay_tree_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase(const_key_reference r_key) -{ - point_iterator it = find(r_key); - if (it == base_type::end()) - return false; - erase(it); - return true; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -erase(iterator it) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid()); - if (it == base_type::end()) - return it; - iterator ret_it = it; - ++ret_it; - erase_node(it.m_p_nd); - _GLIBCXX_DEBUG_ONLY(assert_valid()); - return ret_it; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -erase(reverse_iterator it) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid()); - if (it.m_p_nd == base_type::m_p_head) - return (it); - reverse_iterator ret_it = it; - ++ret_it; - erase_node(it.m_p_nd); - _GLIBCXX_DEBUG_ONLY(assert_valid()); - return ret_it; -} - -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();) - size_type num_ersd = 0; - iterator it = base_type::begin(); - while (it != base_type::end()) - { - if (pred(*it)) - { - ++num_ersd; - it = erase(it); - } - else - ++it; - } - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return num_ersd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_node(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - splay(p_nd); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(p_nd == this->m_p_head->m_p_parent); - - node_pointer p_l = p_nd->m_p_left; - node_pointer p_r = p_nd->m_p_right; - - base_type::update_min_max_for_erased_node(p_nd); - base_type::actual_erase_node(p_nd); - if (p_r == NULL) - { - base_type::m_p_head->m_p_parent = p_l; - if (p_l != NULL) - p_l->m_p_parent = base_type::m_p_head; - _GLIBCXX_DEBUG_ONLY(assert_valid();) - return; - } - - node_pointer p_target_r = leftmost(p_r); - _GLIBCXX_DEBUG_ASSERT(p_target_r != NULL); - p_r->m_p_parent = base_type::m_p_head; - base_type::m_p_head->m_p_parent = p_r; - splay(p_target_r); - - _GLIBCXX_DEBUG_ONLY(p_target_r->m_p_left = NULL); - _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_parent == this->m_p_head); - _GLIBCXX_DEBUG_ASSERT(this->m_p_head->m_p_parent == p_target_r); - - p_target_r->m_p_left = p_l; - if (p_l != NULL) - p_l->m_p_parent = p_target_r; - _GLIBCXX_DEBUG_ONLY(assert_valid();) - apply_update(p_target_r, (node_update* )this); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -leftmost(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - while (p_nd->m_p_left != NULL) - p_nd = p_nd->m_p_left; - return p_nd; -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp deleted file mode 100644 index 182425a8f..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp +++ /dev/null @@ -1,99 +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 find_fn_imps.hpp - * Contains an implementation class for splay_tree_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find(const_key_reference r_key) -{ - node_pointer p_found = find_imp(r_key); - if (p_found != base_type::m_p_head) - splay(p_found); - return point_iterator(p_found); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_point_iterator -PB_DS_CLASS_C_DEC:: -find(const_key_reference r_key) const -{ - const node_pointer p_found = find_imp(r_key); - if (p_found != base_type::m_p_head) - const_cast<PB_DS_CLASS_C_DEC* >(this)->splay(p_found); - return point_iterator(p_found); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -find_imp(const_key_reference r_key) -{ - _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();) - node_pointer p_nd = base_type::m_p_head->m_p_parent; - while (p_nd != NULL) - if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) - { - if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) - return p_nd; - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - return base_type::m_p_head; -} - -PB_DS_CLASS_T_DEC -inline const typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -find_imp(const_key_reference r_key) const -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - node_pointer p_nd = base_type::m_p_head->m_p_parent; - while (p_nd != NULL) - if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) - { - if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) - return p_nd; - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - return base_type::m_p_head; -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp deleted file mode 100644 index 636b9ab25..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp +++ /dev/null @@ -1,39 +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. - */ diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp deleted file mode 100644 index e9ae987b0..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp +++ /dev/null @@ -1,93 +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 splay_tree_. - */ - -PB_DS_CLASS_T_DEC -inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool> -PB_DS_CLASS_C_DEC:: -insert(const_reference r_value) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - std::pair<point_iterator, bool> ins_pair = insert_leaf_imp(r_value); - ins_pair.first.m_p_nd->m_special = false; - _GLIBCXX_DEBUG_ONLY(assert_valid()); - splay(ins_pair.first.m_p_nd); - _GLIBCXX_DEBUG_ONLY(assert_valid()); - return ins_pair; -} - -PB_DS_CLASS_T_DEC -inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool> -PB_DS_CLASS_C_DEC:: -insert_leaf_imp(const_reference r_value) -{ - _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();) - if (base_type::m_size == 0) - return std::make_pair(base_type::insert_imp_empty(r_value), true); - - node_pointer p_nd = base_type::m_p_head->m_p_parent; - node_pointer p_pot = base_type::m_p_head; - - while (p_nd != NULL) - if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), PB_DS_V2F(r_value))) - { - if (!Cmp_Fn::operator()(PB_DS_V2F(r_value), PB_DS_V2F(p_nd->m_value))) - { - return std::make_pair(point_iterator(p_nd), false); - } - p_pot = p_nd; - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - - if (p_pot == base_type::m_p_head) - return std::make_pair(base_type::insert_leaf_new(r_value, base_type::m_p_head->m_p_right, false), true); - - _GLIBCXX_DEBUG_ONLY(base_type::check_key_does_not_exist(PB_DS_V2F(r_value))); - - p_nd = p_pot->m_p_left; - if (p_nd == NULL) - return (std::make_pair(base_type::insert_leaf_new(r_value, p_pot, true), true)); - - while (p_nd->m_p_right != NULL) - p_nd = p_nd->m_p_right; - - return std::make_pair(insert_leaf_new(r_value, p_nd, false), true); -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp deleted file mode 100644 index fbf398d04..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp +++ /dev/null @@ -1,125 +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 node.hpp - * Contains an implementation struct for splay_tree_'s node. - */ - -#ifndef PB_DS_SPLAY_TREE_NODE_HPP -#define PB_DS_SPLAY_TREE_NODE_HPP - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Value_Type, class Metadata, class Allocator> - struct splay_tree_node_ - { - public: - typedef Value_Type value_type; - typedef Metadata metadata_type; - - typedef - typename Allocator::template rebind< - splay_tree_node_<Value_Type, Metadata, Allocator> >::other::pointer - node_pointer; - - typedef - typename Allocator::template rebind<metadata_type>::other::reference - metadata_reference; - - typedef - typename Allocator::template rebind<metadata_type>::other::const_reference - const_metadata_reference; - -#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_ - void - trace() const - { std::cout << PB_DS_V2F(m_value) << "(" << m_metadata << ")"; } -#endif - - inline bool - special() const - { return m_special; } - - inline const_metadata_reference - get_metadata() const - { return m_metadata; } - - inline metadata_reference - get_metadata() - { return m_metadata; } - - value_type m_value; - bool m_special; - node_pointer m_p_left; - node_pointer m_p_right; - node_pointer m_p_parent; - metadata_type m_metadata; - }; - - template<typename Value_Type, typename Allocator> - struct splay_tree_node_<Value_Type, null_node_metadata, Allocator> - { - public: - typedef Value_Type value_type; - typedef null_node_metadata metadata_type; - - typedef - typename Allocator::template rebind< - splay_tree_node_<Value_Type, null_node_metadata, Allocator> >::other::pointer - node_pointer; - - inline bool - special() const - { return m_special; } - -#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_ - void - trace() const - { std::cout << PB_DS_V2F(m_value); } -#endif - - node_pointer m_p_left; - node_pointer m_p_right; - node_pointer m_p_parent; - value_type m_value; - bool m_special; - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp deleted file mode 100644 index e4f3556a5..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp +++ /dev/null @@ -1,283 +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 splay_fn_imps.hpp - * Contains an implementation class for splay_tree_. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -splay(node_pointer p_nd) -{ - while (p_nd->m_p_parent != base_type::m_p_head) - { -#ifdef _GLIBCXX_DEBUG - { - node_pointer p_head = base_type::m_p_head; - assert_special_imp(p_head); - } -#endif - - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd);) - - if (p_nd->m_p_parent->m_p_parent == base_type::m_p_head) - { - base_type::rotate_parent(p_nd); - _GLIBCXX_DEBUG_ASSERT(p_nd == this->m_p_head->m_p_parent); - } - else - { - const node_pointer p_parent = p_nd->m_p_parent; - const node_pointer p_grandparent = p_parent->m_p_parent; - -#ifdef _GLIBCXX_DEBUG - const size_type total = - base_type::recursive_count(p_grandparent); - _GLIBCXX_DEBUG_ASSERT(total >= 3); -#endif - - if (p_parent->m_p_left == p_nd && - p_grandparent->m_p_right == p_parent) - splay_zig_zag_left(p_nd, p_parent, p_grandparent); - else if (p_parent->m_p_right == p_nd && - p_grandparent->m_p_left == p_parent) - splay_zig_zag_right(p_nd, p_parent, p_grandparent); - else if (p_parent->m_p_left == p_nd && - p_grandparent->m_p_left == p_parent) - splay_zig_zig_left(p_nd, p_parent, p_grandparent); - else - splay_zig_zig_right(p_nd, p_parent, p_grandparent); - _GLIBCXX_DEBUG_ASSERT(total ==this->recursive_count(p_nd)); - } - - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd);) - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -splay_zig_zag_left(node_pointer p_nd, node_pointer p_parent, - node_pointer p_grandparent) -{ - _GLIBCXX_DEBUG_ASSERT(p_parent == p_nd->m_p_parent); - _GLIBCXX_DEBUG_ASSERT(p_grandparent == p_parent->m_p_parent); - - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_grandparent);) - - _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_left == p_nd && - p_grandparent->m_p_right == p_parent); - - splay_zz_start(p_nd, p_parent, p_grandparent); - - node_pointer p_b = p_nd->m_p_right; - node_pointer p_c = p_nd->m_p_left; - - p_nd->m_p_right = p_parent; - p_parent->m_p_parent = p_nd; - - p_nd->m_p_left = p_grandparent; - p_grandparent->m_p_parent = p_nd; - - p_parent->m_p_left = p_b; - if (p_b != NULL) - p_b->m_p_parent = p_parent; - - p_grandparent->m_p_right = p_c; - if (p_c != NULL) - p_c->m_p_parent = p_grandparent; - - splay_zz_end(p_nd, p_parent, p_grandparent); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -splay_zig_zag_right(node_pointer p_nd, node_pointer p_parent, - node_pointer p_grandparent) -{ - _GLIBCXX_DEBUG_ASSERT(p_parent == p_nd->m_p_parent); - _GLIBCXX_DEBUG_ASSERT(p_grandparent == p_parent->m_p_parent); - - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_grandparent);) - - _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_right == p_nd && - p_grandparent->m_p_left == p_parent); - - splay_zz_start(p_nd, p_parent, p_grandparent); - - node_pointer p_b = p_nd->m_p_left; - node_pointer p_c = p_nd->m_p_right; - - p_nd->m_p_left = p_parent; - p_parent->m_p_parent = p_nd; - - p_nd->m_p_right = p_grandparent; - p_grandparent->m_p_parent = p_nd; - - p_parent->m_p_right = p_b; - if (p_b != NULL) - p_b->m_p_parent = p_parent; - - p_grandparent->m_p_left = p_c; - if (p_c != NULL) - p_c->m_p_parent = p_grandparent; - - splay_zz_end(p_nd, p_parent, p_grandparent); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -splay_zig_zig_left(node_pointer p_nd, node_pointer p_parent, - node_pointer p_grandparent) -{ - _GLIBCXX_DEBUG_ASSERT(p_parent == p_nd->m_p_parent); - _GLIBCXX_DEBUG_ASSERT(p_grandparent == p_parent->m_p_parent); - - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_grandparent);) - - _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_left == p_nd && - p_nd->m_p_parent->m_p_parent->m_p_left == p_nd->m_p_parent); - - splay_zz_start(p_nd, p_parent, p_grandparent); - - node_pointer p_b = p_nd->m_p_right; - node_pointer p_c = p_parent->m_p_right; - - p_nd->m_p_right = p_parent; - p_parent->m_p_parent = p_nd; - - p_parent->m_p_right = p_grandparent; - p_grandparent->m_p_parent = p_parent; - - p_parent->m_p_left = p_b; - if (p_b != NULL) - p_b->m_p_parent = p_parent; - - p_grandparent->m_p_left = p_c; - if (p_c != NULL) - p_c->m_p_parent = p_grandparent; - - splay_zz_end(p_nd, p_parent, p_grandparent); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -splay_zig_zig_right(node_pointer p_nd, node_pointer p_parent, - node_pointer p_grandparent) -{ - _GLIBCXX_DEBUG_ASSERT(p_parent == p_nd->m_p_parent); - _GLIBCXX_DEBUG_ASSERT(p_grandparent == p_parent->m_p_parent); - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_grandparent);) - _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_right == p_nd && - p_nd->m_p_parent->m_p_parent->m_p_right == p_nd->m_p_parent); - - splay_zz_start(p_nd, p_parent, p_grandparent); - - node_pointer p_b = p_nd->m_p_left; - node_pointer p_c = p_parent->m_p_left; - - p_nd->m_p_left = p_parent; - p_parent->m_p_parent = p_nd; - - p_parent->m_p_left = p_grandparent; - p_grandparent->m_p_parent = p_parent; - - p_parent->m_p_right = p_b; - if (p_b != NULL) - p_b->m_p_parent = p_parent; - - p_grandparent->m_p_right = p_c; - if (p_c != NULL) - p_c->m_p_parent = p_grandparent; - - base_type::update_to_top(p_grandparent, (node_update* )this); - splay_zz_end(p_nd, p_parent, p_grandparent); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -splay_zz_start(node_pointer p_nd, -#ifdef _GLIBCXX_DEBUG - node_pointer p_parent, -#else - node_pointer /*p_parent*/, -#endif - node_pointer p_grandparent) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - _GLIBCXX_DEBUG_ASSERT(p_parent != NULL); - _GLIBCXX_DEBUG_ASSERT(p_grandparent != NULL); - - const bool grandparent_head = p_grandparent->m_p_parent == base_type::m_p_head; - - if (grandparent_head) - { - base_type::m_p_head->m_p_parent = base_type::m_p_head->m_p_parent; - p_nd->m_p_parent = base_type::m_p_head; - return; - } - - node_pointer p_greatgrandparent = p_grandparent->m_p_parent; - - p_nd->m_p_parent = p_greatgrandparent; - - if (p_grandparent == p_greatgrandparent->m_p_left) - p_greatgrandparent->m_p_left = p_nd; - else - p_greatgrandparent->m_p_right = p_nd; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -splay_zz_end(node_pointer p_nd, node_pointer p_parent, - node_pointer p_grandparent) -{ - if (p_nd->m_p_parent == base_type::m_p_head) - base_type::m_p_head->m_p_parent = p_nd; - - apply_update(p_grandparent, (node_update* )this); - apply_update(p_parent, (node_update* )this); - apply_update(p_nd, (node_update* )this); - - _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd);) -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp deleted file mode 100644 index 959893ec7..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp +++ /dev/null @@ -1,298 +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 splay_tree_.hpp - * Contains an implementation class for splay_tree_. - */ -/* - * This implementation uses an idea from the SGI STL (using a "header" node - * which is needed for efficient iteration). Following is the SGI STL - * copyright. - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Hewlett-Packard Company makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * - */ - -#ifdef PB_DS_DATA_TRUE_INDICATOR -#ifndef PB_DS_BIN_SEARCH_TREE_HPP__DATA_TRUE_INDICATOR -#define PB_DS_BIN_SEARCH_TREE_HPP__DATA_TRUE_INDICATOR -#include <ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp> -#endif -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#ifndef PB_DS_BIN_SEARCH_TREE_HPP__DATA_FALSE_INDICATOR -#define PB_DS_BIN_SEARCH_TREE_HPP__DATA_FALSE_INDICATOR -#include <ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp> -#endif -#endif - -#include <utility> -#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, typename Cmp_Fn, \ - typename Node_And_It_Traits, typename Allocator> - -#ifdef PB_DS_DATA_TRUE_INDICATOR -#define PB_DS_CLASS_NAME splay_tree_data_ -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#define PB_DS_CLASS_NAME splay_tree_no_data_ -#endif - -#ifdef PB_DS_DATA_TRUE_INDICATOR -#define PB_DS_BASE_CLASS_NAME bin_search_tree_data_ -#endif - -#ifdef PB_DS_DATA_FALSE_INDICATOR -#define PB_DS_BASE_CLASS_NAME bin_search_tree_no_data_ -#endif - -#define PB_DS_CLASS_C_DEC \ - PB_DS_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator> - -#define PB_DS_BASE_C_DEC \ - PB_DS_BASE_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator> - -#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 - - // $p14y 7r33 7481. - template<typename Key, typename Mapped, typename Cmp_Fn, - typename Node_And_It_Traits, typename Allocator> - class PB_DS_CLASS_NAME : public PB_DS_BASE_C_DEC - { - private: - typedef PB_DS_BASE_C_DEC base_type; - typedef typename base_type::node_pointer node_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 base_type::key_type key_type; - typedef typename base_type::key_pointer key_pointer; - typedef typename base_type::const_key_pointer const_key_pointer; - typedef typename base_type::key_reference key_reference; - typedef typename base_type::const_key_reference const_key_reference; - typedef typename base_type::mapped_type mapped_type; - typedef typename base_type::mapped_pointer mapped_pointer; - typedef typename base_type::const_mapped_pointer const_mapped_pointer; - typedef typename base_type::mapped_reference mapped_reference; - typedef typename base_type::const_mapped_reference const_mapped_reference; - typedef typename base_type::value_type value_type; - typedef typename base_type::pointer pointer; - typedef typename base_type::const_pointer const_pointer; - typedef typename base_type::reference reference; - typedef typename base_type::const_reference const_reference; - typedef typename base_type::point_iterator point_iterator; - typedef typename base_type::const_iterator const_point_iterator; - typedef typename base_type::iterator iterator; - typedef typename base_type::const_iterator const_iterator; - typedef typename base_type::reverse_iterator reverse_iterator; - typedef typename base_type::const_reverse_iterator const_reverse_iterator; - typedef typename base_type::node_update node_update; - - PB_DS_CLASS_NAME(); - - PB_DS_CLASS_NAME(const Cmp_Fn&); - - PB_DS_CLASS_NAME(const Cmp_Fn&, const node_update&); - - PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&); - - void - swap(PB_DS_CLASS_C_DEC&); - - template<typename It> - void - copy_from_range(It, It); - - void - initialize(); - - inline std::pair<point_iterator, bool> - insert(const_reference r_value); - - inline mapped_reference - operator[](const_key_reference r_key) - { -#ifdef PB_DS_DATA_TRUE_INDICATOR - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) - std::pair<point_iterator, bool> ins_pair = - insert_leaf_imp(value_type(r_key, mapped_type())); - - ins_pair.first.m_p_nd->m_special = false; - _GLIBCXX_DEBUG_ONLY(base_type::assert_valid()); - splay(ins_pair.first.m_p_nd); - _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) - return ins_pair.first.m_p_nd->m_value.second; -#else - insert(r_key); - return base_type::s_null_mapped; -#endif - } - - inline point_iterator - find(const_key_reference); - - inline const_point_iterator - find(const_key_reference) const; - - inline bool - erase(const_key_reference); - - inline iterator - erase(iterator it); - - inline reverse_iterator - erase(reverse_iterator); - - template<typename Pred> - inline size_type - erase_if(Pred); - - void - join(PB_DS_CLASS_C_DEC&); - - void - split(const_key_reference, PB_DS_CLASS_C_DEC&); - - private: - inline std::pair<point_iterator, bool> - insert_leaf_imp(const_reference); - - inline node_pointer - find_imp(const_key_reference); - - inline const node_pointer - find_imp(const_key_reference) const; - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; - - void - assert_special_imp(const node_pointer) const; -#endif - - void - splay(node_pointer); - - inline void - splay_zig_zag_left(node_pointer, node_pointer, node_pointer); - - inline void - splay_zig_zag_right(node_pointer, node_pointer, node_pointer); - - inline void - splay_zig_zig_left(node_pointer, node_pointer, node_pointer); - - inline void - splay_zig_zig_right(node_pointer, node_pointer, node_pointer); - - inline void - splay_zz_start(node_pointer, node_pointer, node_pointer); - - inline void - splay_zz_end(node_pointer, node_pointer, node_pointer); - - inline node_pointer - leftmost(node_pointer); - - void - erase_node(node_pointer); - }; - -#include <ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp> -#include <ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp> -#include <ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp> -#include <ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp> - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_CLASS_NAME -#undef PB_DS_BASE_CLASS_NAME -#undef PB_DS_BASE_C_DEC -#undef PB_DS_V2F -#undef PB_DS_EP2VP -#undef PB_DS_V2S - } // namespace detail -} // namespace __gnu_pbds - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp deleted file mode 100644 index 7f0b2cb20..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp +++ /dev/null @@ -1,112 +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 splay_tree_. - */ - -PB_DS_CLASS_T_DEC -inline 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 (base_type::join_prep(other) == false) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - return; - } - - node_pointer p_target_r = other.leftmost(other.m_p_head); - _GLIBCXX_DEBUG_ASSERT(p_target_r != NULL); - other.splay(p_target_r); - - _GLIBCXX_DEBUG_ASSERT(p_target_r == other.m_p_head->m_p_parent); - _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_left == NULL); - - p_target_r->m_p_left = base_type::m_p_head->m_p_parent; - - _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_left != NULL); - p_target_r->m_p_left->m_p_parent = p_target_r; - - base_type::m_p_head->m_p_parent = p_target_r; - p_target_r->m_p_parent = base_type::m_p_head; - apply_update(p_target_r, (node_update* )this); - - base_type::join_finish(other); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) -} - -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 (base_type::split_prep(r_key, other) == false) - { - _GLIBCXX_DEBUG_ONLY(assert_valid()); - _GLIBCXX_DEBUG_ONLY(other.assert_valid()); - return; - } - - node_pointer p_upper_bound = upper_bound(r_key).m_p_nd; - _GLIBCXX_DEBUG_ASSERT(p_upper_bound != NULL); - - splay(p_upper_bound); - _GLIBCXX_DEBUG_ASSERT(p_upper_bound->m_p_parent == this->m_p_head); - - node_pointer p_new_root = p_upper_bound->m_p_left; - _GLIBCXX_DEBUG_ASSERT(p_new_root != NULL); - - base_type::m_p_head->m_p_parent = p_new_root; - p_new_root->m_p_parent = base_type::m_p_head; - other.m_p_head->m_p_parent = p_upper_bound; - p_upper_bound->m_p_parent = other.m_p_head; - p_upper_bound->m_p_left = NULL; - apply_update(p_upper_bound, (node_update* )this); - base_type::split_finish(other); - - _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/splay_tree_/traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp deleted file mode 100644 index cfedc35c8..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp +++ /dev/null @@ -1,113 +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 for splay_tree_. - */ - -#ifndef PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP -#define PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP - -#include <ext/pb_ds/detail/splay_tree_/node.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, - splay_tree_tag, - Allocator> : public bin_search_tree_traits< - Key, - Mapped, - Cmp_Fn, - Node_Update, - splay_tree_node_< - typename types_traits< - Key, - Mapped, - Allocator, - false>::value_type, - typename tree_node_metadata_selector< - Key, - Mapped, - Cmp_Fn, - Node_Update, - Allocator>::type, - Allocator>, - Allocator> - { }; - - 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, - splay_tree_tag, Allocator> - : public bin_search_tree_traits<Key, null_mapped_type, Cmp_Fn, - Node_Update, - splay_tree_node_<typename types_traits<Key, null_mapped_type, Allocator, false>::value_type, - typename tree_node_metadata_selector< - Key, - null_mapped_type, - Cmp_Fn, - Node_Update, - Allocator>::type, - Allocator>, - Allocator> - { }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp deleted file mode 100644 index cfbfbb072..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp +++ /dev/null @@ -1,136 +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 standard_policies.hpp - * Contains standard policies for containers. - */ - -#ifndef PB_DS_STANDARD_POLICIES_HPP -#define PB_DS_STANDARD_POLICIES_HPP - -#include <memory> -#include <ext/pb_ds/hash_policy.hpp> -#include <ext/pb_ds/list_update_policy.hpp> -#include <ext/pb_ds/tree_policy.hpp> -#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp> -#include <ext/pb_ds/trie_policy.hpp> -#include <ext/pb_ds/tag_and_trait.hpp> -#include <tr1/functional> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Key> - struct default_hash_fn - { - typedef std::tr1::hash<Key> type; - }; - - template<typename Key> - struct default_eq_fn - { - typedef std::equal_to<Key> type; - }; - - enum - { - default_store_hash = false - }; - - struct default_comb_hash_fn - { - typedef __gnu_pbds::direct_mask_range_hashing<> type; - }; - - template<typename Comb_Hash_Fn> - struct default_resize_policy - { - private: - typedef typename Comb_Hash_Fn::size_type size_type; - - typedef __gnu_pbds::direct_mask_range_hashing<size_type> default_fn; - typedef is_same<default_fn, Comb_Hash_Fn> same_type; - typedef __gnu_pbds::hash_exponential_size_policy<size_type> iftrue; - typedef __gnu_pbds::hash_prime_size_policy iffalse; - typedef __conditional_type<same_type::value, iftrue, iffalse> cond_type; - typedef typename cond_type::__type size_policy_type; - - typedef __gnu_pbds::hash_load_check_resize_trigger<false, size_type> trigger; - - public: - typedef __gnu_pbds::hash_standard_resize_policy<size_policy_type, trigger, false, size_type> type; - }; - - struct default_update_policy - { - typedef __gnu_pbds::move_to_front_lu_policy<> type; - }; - - template<typename Comb_Probe_Fn> - struct default_probe_fn - { - private: - typedef typename Comb_Probe_Fn::size_type size_type; - - typedef __gnu_pbds::direct_mask_range_hashing<size_type> default_fn; - typedef is_same<default_fn, Comb_Probe_Fn> same_type; - typedef __gnu_pbds::linear_probe_fn<size_type> iftrue; - typedef __gnu_pbds::quadratic_probe_fn<size_type> iffalse; - typedef __conditional_type<same_type::value, iftrue, iffalse> cond_type; - - public: - typedef typename cond_type::__type type; - }; - - template<typename Key> - struct default_trie_e_access_traits; - - template<typename Char, class Char_Traits> - struct default_trie_e_access_traits<std::basic_string<Char, Char_Traits, std::allocator<char> > > - { - private: - typedef std::basic_string<Char, Char_Traits, std::allocator<char> > string_type; - - public: - typedef __gnu_pbds::string_trie_e_access_traits<string_type> type; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_STANDARD_POLICIES_HPP - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 4d2c45ce0..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,106 +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 for thin_heap_. - */ - -PB_DS_CLASS_T_DEC -template<typename It> -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - push(*(first_it++)); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -thin_heap_() : - m_p_max(NULL) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -thin_heap_(const Cmp_Fn& r_cmp_fn) : - PB_DS_BASE_C_DEC(r_cmp_fn), - m_p_max(NULL) -{ - initialize(); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -thin_heap_(const PB_DS_CLASS_C_DEC& other) : - PB_DS_BASE_C_DEC(other) -{ - initialize(); - m_p_max = base_type::m_p_root; - for (node_pointer p_nd = base_type::m_p_root; p_nd != NULL; p_nd = p_nd->m_p_next_sibling) - if (Cmp_Fn::operator()(m_p_max->m_value, p_nd->m_value)) - m_p_max = p_nd; - - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - base_type::swap(other); - std::swap(m_p_max, other.m_p_max); - _GLIBCXX_DEBUG_ONLY(assert_valid();) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~thin_heap_() -{ } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ std::fill(m_a_aux, m_a_aux + max_rank, static_cast<node_pointer>(NULL)); } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp deleted file mode 100644 index f7abe3527..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp +++ /dev/null @@ -1,112 +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 for thin_heap_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid() const -{ - base_type::assert_valid(); - assert_node_consistent(base_type::m_p_root, true); - assert_max(); - assert_aux_null(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_aux_null() const -{ - for (size_type i = 0; i < max_rank; ++i) - _GLIBCXX_DEBUG_ASSERT(m_a_aux[i] == NULL); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_max() const -{ - if (m_p_max == NULL) - { - _GLIBCXX_DEBUG_ASSERT(base_type::empty()); - return; - } - - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - _GLIBCXX_DEBUG_ASSERT(base_type::parent(m_p_max) == NULL); - _GLIBCXX_DEBUG_ASSERT(m_p_max->m_p_prev_or_parent == NULL); - for (const_iterator it = base_type::begin(); it != base_type::end(); ++it) - _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(m_p_max->m_value, it.m_p_nd->m_value)); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_node_consistent(const_node_pointer p_nd, bool root) const -{ - base_type::assert_node_consistent(p_nd, root); - if (p_nd == NULL) - return; - - assert_node_consistent(p_nd->m_p_next_sibling, root); - assert_node_consistent(p_nd->m_p_l_child, false); - if (!root) - { - if (p_nd->m_metadata == 0) - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling == NULL); - else - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata + 1); - } - - if (p_nd->m_p_l_child != NULL) - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child->m_metadata + 1 == base_type::degree(p_nd)); - - const bool unmarked_valid =(p_nd->m_p_l_child == NULL&& p_nd->m_metadata == 0) ||(p_nd->m_p_l_child != NULL&& p_nd->m_metadata == p_nd->m_p_l_child->m_metadata + 1); - - const bool marked_valid =(p_nd->m_p_l_child == NULL&& p_nd->m_metadata == 1) ||(p_nd->m_p_l_child != NULL&& p_nd->m_metadata == p_nd->m_p_l_child->m_metadata + 2); - - _GLIBCXX_DEBUG_ASSERT(unmarked_valid || marked_valid); - if (root) - _GLIBCXX_DEBUG_ASSERT(unmarked_valid); -} - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp deleted file mode 100644 index 69afcd39f..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp +++ /dev/null @@ -1,296 +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 for thin_heap_. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -pop() -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - _GLIBCXX_DEBUG_ASSERT(m_p_max != NULL); - - node_pointer p_nd = m_p_max; - - remove_max_node(); - - base_type::actual_erase_node(p_nd); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -remove_max_node() -{ - to_aux_except_max(); - - make_from_aux(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -to_aux_except_max() -{ - node_pointer p_add = base_type::m_p_root; - - while (p_add != m_p_max) - { - node_pointer p_next_add = p_add->m_p_next_sibling; - - add_to_aux(p_add); - - p_add = p_next_add; - } - - p_add = m_p_max->m_p_l_child; - - while (p_add != NULL) - { - node_pointer p_next_add = p_add->m_p_next_sibling; - - p_add->m_metadata = p_add->m_p_l_child == NULL? - 0 : - p_add->m_p_l_child->m_metadata + 1; - - add_to_aux(p_add); - - p_add = p_next_add; - } - - p_add = m_p_max->m_p_next_sibling; - - while (p_add != NULL) - { - node_pointer p_next_add = p_add->m_p_next_sibling; - - add_to_aux(p_add); - - p_add = p_next_add; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -add_to_aux(node_pointer p_nd) -{ - size_type r = p_nd->m_metadata; - - while (m_a_aux[r] != NULL) - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata < rank_bound()); - - if (Cmp_Fn::operator()(m_a_aux[r]->m_value, p_nd->m_value)) - make_child_of(m_a_aux[r], p_nd); - else - { - make_child_of(p_nd, m_a_aux[r]); - - p_nd = m_a_aux[r]; - } - - m_a_aux[r] = NULL; - - ++r; - } - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata < rank_bound()); - - m_a_aux[r] = p_nd; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -make_child_of(node_pointer p_nd, node_pointer p_new_parent) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_new_parent->m_metadata); - _GLIBCXX_DEBUG_ASSERT(m_a_aux[p_nd->m_metadata] == p_nd || - m_a_aux[p_nd->m_metadata] == p_new_parent); - - ++p_new_parent->m_metadata; - - base_type::make_child_of(p_nd, p_new_parent); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -make_from_aux() -{ - base_type::m_p_root = m_p_max = NULL; - - const size_type rnk_bnd = rank_bound(); - - size_type i = 0; - - while (i < rnk_bnd) - { - if (m_a_aux[i] != NULL) - { - make_root_and_link(m_a_aux[i]); - - m_a_aux[i] = NULL; - } - - ++i; - } - - _GLIBCXX_DEBUG_ONLY(assert_aux_null();) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -remove_node(node_pointer p_nd) -{ - node_pointer p_parent = p_nd; - while (base_type::parent(p_parent) != NULL) - p_parent = base_type::parent(p_parent); - - base_type::bubble_to_top(p_nd); - - m_p_max = p_nd; - - node_pointer p_fix = base_type::m_p_root; - while (p_fix != NULL&& p_fix->m_p_next_sibling != p_parent) - p_fix = p_fix->m_p_next_sibling; - - if (p_fix != NULL) - p_fix->m_p_next_sibling = p_nd; - - remove_max_node(); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -clear() -{ - base_type::clear(); - - m_p_max = NULL; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase(point_iterator it) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - node_pointer p_nd = it.m_p_nd; - - remove_node(p_nd); - - base_type::actual_erase_node(p_nd); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -template<typename Pred> -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - if (base_type::empty()) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - return 0; - } - - base_type::to_linked_list(); - - node_pointer p_out = base_type::prune(pred); - - size_type ersd = 0; - - while (p_out != NULL) - { - ++ersd; - - node_pointer p_next = p_out->m_p_next_sibling; - - base_type::actual_erase_node(p_out); - - p_out = p_next; - } - - node_pointer p_cur = base_type::m_p_root; - - m_p_max = base_type::m_p_root = NULL; - - while (p_cur != NULL) - { - node_pointer p_next = p_cur->m_p_next_sibling; - - make_root_and_link(p_cur); - - p_cur = p_next; - } - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - return ersd; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -rank_bound() -{ - const std::size_t* const p_upper = - std::upper_bound( g_a_rank_bounds, g_a_rank_bounds + num_distinct_rank_bounds, base_type::m_size); - - if (p_upper == g_a_rank_bounds + num_distinct_rank_bounds) - return max_rank; - - return (p_upper - g_a_rank_bounds); -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp deleted file mode 100644 index 52407e6d0..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_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 find_fn_imps.hpp - * Contains an implementation for thin_heap_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reference -PB_DS_CLASS_C_DEC:: -top() const -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - _GLIBCXX_DEBUG_ASSERT(m_p_max != NULL); - return m_p_max->m_value; -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp deleted file mode 100644 index 7a6952fda..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp +++ /dev/null @@ -1,326 +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 for thin_heap_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -push(const_reference r_val) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - node_pointer p_nd = base_type::get_new_node_for_insert(r_val); - - p_nd->m_metadata = 0; - - p_nd->m_p_prev_or_parent = p_nd->m_p_l_child = NULL; - - if (base_type::m_p_root == NULL) - { - p_nd->m_p_next_sibling = NULL; - - m_p_max = base_type::m_p_root = p_nd; - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - return point_iterator(p_nd); - } - - p_nd->m_p_next_sibling = base_type::m_p_root; - - base_type::m_p_root->m_p_prev_or_parent = NULL; - - base_type::m_p_root = p_nd; - - update_max(p_nd); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - return point_iterator(p_nd); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -make_root(node_pointer p_nd) -{ - p_nd->m_metadata = - p_nd->m_p_l_child == NULL? - 0 : - 1 + p_nd->m_p_l_child->m_metadata; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -make_root_and_link(node_pointer p_nd) -{ - make_root(p_nd); - - p_nd->m_p_prev_or_parent = NULL; - - p_nd->m_p_next_sibling = base_type::m_p_root; - - if (base_type::m_p_root != NULL) - base_type::m_p_root->m_p_prev_or_parent = NULL; - - base_type::m_p_root = p_nd; - - update_max(p_nd); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix(node_pointer p_y) -{ - while (true) - { - if (p_y->m_p_prev_or_parent == NULL) - { - fix_root(p_y); - - return; - } - else if (p_y->m_metadata == 1&& p_y->m_p_next_sibling == NULL) - { - if (p_y->m_p_l_child != NULL) - { - fix_sibling_rank_1_unmarked(p_y); - - return; - } - - fix_sibling_rank_1_marked(p_y); - - p_y = p_y->m_p_prev_or_parent; - } - else if (p_y->m_metadata > p_y->m_p_next_sibling->m_metadata + 1) - { - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_l_child != NULL); - - if (p_y->m_metadata != p_y->m_p_l_child->m_metadata + 2) - { - fix_sibling_general_unmarked(p_y); - - return; - } - - fix_sibling_general_marked(p_y); - - p_y = p_y->m_p_prev_or_parent; - } - else if ((p_y->m_p_l_child == NULL&& - p_y->m_metadata == 2) ||(p_y->m_p_l_child != NULL&& - p_y->m_metadata == p_y->m_p_l_child->m_metadata + 3)) - { - node_pointer p_z = p_y->m_p_prev_or_parent; - - fix_child(p_y); - - p_y = p_z; - } - else - return; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix_root(node_pointer p_y) -{ - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent == NULL); - - make_root(p_y); - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, true);) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix_sibling_rank_1_unmarked(node_pointer p_y) -{ - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != NULL); - - _GLIBCXX_DEBUG_ONLY(node_pointer p_w = p_y->m_p_l_child;) - _GLIBCXX_DEBUG_ASSERT(p_w != NULL); - _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling == NULL); - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_next_sibling == NULL); - - p_y->m_p_next_sibling = p_y->m_p_l_child; - - p_y->m_p_next_sibling->m_p_prev_or_parent = p_y; - - p_y->m_p_l_child = NULL; - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, false);) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix_sibling_rank_1_marked(node_pointer p_y) -{ - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != NULL); - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_l_child == NULL); - - p_y->m_metadata = 0; - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, false);) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix_sibling_general_unmarked(node_pointer p_y) -{ - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != NULL); - - node_pointer p_w = p_y->m_p_l_child; - _GLIBCXX_DEBUG_ASSERT(p_w != NULL); - _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling != NULL); - - p_y->m_p_l_child = p_w->m_p_next_sibling; - p_w->m_p_next_sibling->m_p_prev_or_parent = p_y; - - p_w->m_p_next_sibling = p_y->m_p_next_sibling; - _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling != NULL); - p_w->m_p_next_sibling->m_p_prev_or_parent = p_w; - - p_y->m_p_next_sibling = p_w; - p_w->m_p_prev_or_parent = p_y; - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, false);) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix_sibling_general_marked(node_pointer p_y) -{ - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != NULL); - - --p_y->m_metadata; - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, false);) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix_child(node_pointer p_y) -{ - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != NULL); - - if (p_y->m_p_next_sibling != NULL) - p_y->m_p_next_sibling->m_p_prev_or_parent = p_y->m_p_prev_or_parent; - - if (p_y->m_p_prev_or_parent->m_p_l_child == p_y) - p_y->m_p_prev_or_parent->m_p_l_child = p_y->m_p_next_sibling; - else - p_y->m_p_prev_or_parent->m_p_next_sibling = p_y->m_p_next_sibling; - - make_root_and_link(p_y); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -modify(point_iterator it, const_reference r_new_val) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - node_pointer p_nd = it.m_p_nd; - - _GLIBCXX_DEBUG_ASSERT(p_nd != NULL); - - const bool smaller = Cmp_Fn::operator()(r_new_val, p_nd->m_value); - - p_nd->m_value = r_new_val; - - if (smaller) - { - remove_node(p_nd); - - p_nd->m_p_l_child = NULL; - - make_root_and_link(p_nd); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - return; - } - - if (p_nd->m_p_prev_or_parent == NULL) - { - update_max(p_nd); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - - return; - } - - node_pointer p_y = p_nd->m_p_prev_or_parent; - _GLIBCXX_DEBUG_ASSERT(p_y != NULL); - - if (p_nd->m_p_next_sibling != NULL) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_y; - - if (p_y->m_p_l_child == p_nd) - p_y->m_p_l_child = p_nd->m_p_next_sibling; - else - p_y->m_p_next_sibling = p_nd->m_p_next_sibling; - - fix(p_y); - - make_root_and_link(p_nd); - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update_max(node_pointer p_nd) -{ - if (m_p_max == NULL || Cmp_Fn::operator()(m_p_max->m_value, p_nd->m_value)) - m_p_max = p_nd; -} - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp deleted file mode 100644 index 6acb7bd75..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp +++ /dev/null @@ -1,126 +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 for thin_heap_. - */ - -PB_DS_CLASS_T_DEC -template<typename Pred> -void -PB_DS_CLASS_C_DEC:: -split(Pred pred, PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - other.clear(); - - if (base_type::empty()) - { - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - return; - } - - base_type::to_linked_list(); - - node_pointer p_out = base_type::prune(pred); - - while (p_out != NULL) - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0); - --base_type::m_size; - - ++other.m_size; - - node_pointer p_next = p_out->m_p_next_sibling; - - other.make_root_and_link(p_out); - - p_out = p_next; - } - - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - node_pointer p_cur = base_type::m_p_root; - - m_p_max = NULL; - - base_type::m_p_root = NULL; - - while (p_cur != NULL) - { - node_pointer p_next = p_cur->m_p_next_sibling; - - make_root_and_link(p_cur); - - p_cur = p_next; - } - - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(assert_valid();) - _GLIBCXX_DEBUG_ONLY(other.assert_valid();) - - node_pointer p_other = other.m_p_root; - - while (p_other != NULL) - { - node_pointer p_next = p_other->m_p_next_sibling; - - make_root_and_link(p_other); - - p_other = p_next; - } - - base_type::m_size += other.m_size; - - other.m_p_root = NULL; - other.m_size = 0; - other.m_p_max = NULL; - - _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/thin_heap_/thin_heap_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp deleted file mode 100644 index 88fa04b3c..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp +++ /dev/null @@ -1,351 +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 thin_heap_.hpp - * Contains an implementation class for a thin heap. - */ - -#ifndef PB_DS_THIN_HEAP_HPP -#define PB_DS_THIN_HEAP_HPP - -/* - * Thin heaps. - * Tarjan and Kaplan. - */ - -#include <algorithm> -#include <ext/pb_ds/detail/cond_dealtor.hpp> -#include <ext/pb_ds/detail/type_utils.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp> -#include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp> -#include <debug/debug.h> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_T_DEC \ - template<typename Value_Type, class Cmp_Fn, class Allocator> - -#define PB_DS_CLASS_C_DEC \ - thin_heap_<Value_Type, Cmp_Fn, Allocator> - -#ifdef _GLIBCXX_DEBUG -#define PB_DS_BASE_C_DEC \ - left_child_next_sibling_heap_<Value_Type, Cmp_Fn, \ - typename Allocator::size_type, Allocator, true> -#else -#define PB_DS_BASE_C_DEC \ - left_child_next_sibling_heap_<Value_Type, Cmp_Fn, \ - typename Allocator::size_type, Allocator> -#endif - - /** - * class description = "t|-|i|\| h34p"> - **/ - template<typename Value_Type, class Cmp_Fn, class Allocator> - class thin_heap_ : public PB_DS_BASE_C_DEC - { - - private: - typedef PB_DS_BASE_C_DEC base_type; - - protected: - typedef typename base_type::node node; - - typedef typename base_type::node_pointer node_pointer; - - typedef typename base_type::const_node_pointer const_node_pointer; - - public: - - typedef typename Allocator::size_type size_type; - - typedef typename Allocator::difference_type difference_type; - - typedef Value_Type value_type; - - 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< - value_type>::other::reference - reference; - - typedef - typename Allocator::template rebind< - value_type>::other::const_reference - const_reference; - - typedef - typename PB_DS_BASE_C_DEC::const_point_iterator - const_point_iterator; - - typedef typename PB_DS_BASE_C_DEC::point_iterator point_iterator; - - typedef typename PB_DS_BASE_C_DEC::const_iterator const_iterator; - - typedef typename PB_DS_BASE_C_DEC::iterator iterator; - - typedef Cmp_Fn cmp_fn; - - typedef Allocator allocator_type; - - public: - - inline point_iterator - push(const_reference r_val); - - void - modify(point_iterator it, const_reference r_new_val); - - inline const_reference - top() const; - - void - pop(); - - void - erase(point_iterator it); - - inline void - clear(); - - template<typename Pred> - size_type - erase_if(Pred pred); - - template<typename Pred> - void - split(Pred pred, PB_DS_CLASS_C_DEC& other); - - void - join(PB_DS_CLASS_C_DEC& other); - - protected: - - thin_heap_(); - - thin_heap_(const Cmp_Fn& r_cmp_fn); - - thin_heap_(const PB_DS_CLASS_C_DEC& other); - - void - swap(PB_DS_CLASS_C_DEC& other); - - ~thin_heap_(); - - template<typename It> - void - copy_from_range(It first_it, It last_it); - -#ifdef _GLIBCXX_DEBUG - void - assert_valid() const; - - void - assert_max() const; -#endif - -#ifdef PB_DS_THIN_HEAP_TRACE_ - void - trace() const; -#endif - - private: - enum - { - max_rank = (sizeof(size_type) << 4) + 2 - }; - - private: - - void - initialize(); - - inline void - update_max(node_pointer p_nd); - - inline void - fix(node_pointer p_nd); - - inline void - fix_root(node_pointer p_y); - - inline void - fix_sibling_rank_1_unmarked(node_pointer p_y); - - inline void - fix_sibling_rank_1_marked(node_pointer p_y); - - inline void - fix_sibling_general_unmarked(node_pointer p_y); - - inline void - fix_sibling_general_marked(node_pointer p_y); - - inline void - fix_child(node_pointer p_y); - - inline static void - make_root(node_pointer p_nd); - - inline void - make_root_and_link(node_pointer p_nd); - - inline void - remove_max_node(); - - void - to_aux_except_max(); - - inline void - add_to_aux(node_pointer p_nd); - - inline void - make_from_aux(); - - inline size_type - rank_bound(); - - inline void - make_child_of(node_pointer p_nd, node_pointer p_new_parent); - - inline void - remove_node(node_pointer p_nd); - - inline node_pointer - join(node_pointer p_lhs, node_pointer p_rhs) const; - -#ifdef _GLIBCXX_DEBUG - void - assert_node_consistent(const_node_pointer p_nd, bool root) const; - - void - assert_aux_null() const; -#endif - - private: - node_pointer m_p_max; - - node_pointer m_a_aux[max_rank]; - }; - - enum - { - num_distinct_rank_bounds = 48 - }; - - // Taken from the SGI implementation; acknowledged in the docs. - static const std::size_t g_a_rank_bounds[num_distinct_rank_bounds] = - { - /* Dealing cards... */ - /* 0 */ 0ul, - /* 1 */ 1ul, - /* 2 */ 1ul, - /* 3 */ 2ul, - /* 4 */ 4ul, - /* 5 */ 6ul, - /* 6 */ 11ul, - /* 7 */ 17ul, - /* 8 */ 29ul, - /* 9 */ 46ul, - /* 10 */ 76ul, - /* 11 */ 122ul, - /* 12 */ 199ul, - /* 13 */ 321ul, - /* 14 */ 521ul, - /* 15 */ 842ul, - /* 16 */ 1364ul, - /* 17 */ 2206ul, - /* 18 */ 3571ul, - /* 19 */ 5777ul, - /* 20 */ 9349ul, - /* 21 */ 15126ul, - /* 22 */ 24476ul, - /* 23 */ 39602ul, - /* 24 */ 64079ul, - /* 25 */ 103681ul, - /* 26 */ 167761ul, - /* 27 */ 271442ul, - /* 28 */ 439204ul, - /* 29 */ 710646ul, - /* 30 */ 1149851ul, - /* 31 */ 1860497ul, - /* 32 */ 3010349ul, - /* 33 */ 4870846ul, - /* 34 */ 7881196ul, - /* 35 */ 12752042ul, - /* 36 */ 20633239ul, - /* 37 */ 33385282ul, - /* 38 */ 54018521ul, - /* 39 */ 87403803ul, - /* 40 */ 141422324ul, - /* 41 */ 228826127ul, - /* 42 */ 370248451ul, - /* 43 */ 599074578ul, - /* 44 */ 969323029ul, - /* 45 */ 1568397607ul, - /* 46 */ 2537720636ul, - /* 47 */ 4106118243ul - /* Pot's good, let's play */ - }; - -#include <ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp> -#include <ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp> -#include <ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp> -#include <ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp> -#include <ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp> -#include <ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp> -#include <ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp> - -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_BASE_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp deleted file mode 100644 index fc309d5c1..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp +++ /dev/null @@ -1,55 +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 trace_fn_imps.hpp - * Contains an implementation class for left_child_next_sibling_heap_. - */ - -#ifdef PB_DS_THIN_HEAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << std::endl; - - std::cerr << "m_p_max " << m_p_max << std::endl; - - base_type::trace(); -} - -#endif // #ifdef PB_DS_THIN_HEAP_TRACE_ diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp deleted file mode 100644 index c182886ee..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp +++ /dev/null @@ -1,116 +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 node_metadata_selector.hpp - * Contains an implementation class for trees. - */ - -#ifndef PB_DS_TREE_NODE_METADATA_SELECTOR_HPP -#define PB_DS_TREE_NODE_METADATA_SELECTOR_HPP - -#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp> -#include <ext/pb_ds/detail/types_traits.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - - template<typename Node_Update, bool Null> - struct tree_metadata_helper - { - typedef typename Node_Update::metadata_type type; - }; - - template<typename Node_Update> - struct tree_metadata_helper< - Node_Update, - true> - { - typedef null_node_metadata type; - }; - - template<typename Key, - typename Data, - class Cmp_Fn, - template<typename Const_Node_Iterator, - class Const_Iterator, - class Cmp_Fn_, - class Allocator_> - class Node_Update, - class Allocator> - struct tree_node_metadata_selector - { - private: - typedef - dumconst_node_iterator< - Key, - Data, - Allocator> - dumconst_node_it; - - enum - { - null_update = - is_same< - Node_Update< - dumconst_node_it, - dumconst_node_it, - Cmp_Fn, - Allocator>, - null_tree_node_update< - dumconst_node_it, - dumconst_node_it, - Cmp_Fn, - Allocator> >::value - }; - - public: - typedef - typename tree_metadata_helper< - Node_Update< - dumconst_node_it, - dumconst_node_it, - Cmp_Fn, - Allocator>, - null_update>::type - type; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_TREE_NODE_METADATA_SELECTOR_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp deleted file mode 100644 index 006a3eb04..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp +++ /dev/null @@ -1,50 +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 null_node_update_imp.hpp - * Contains an implementation of null_node_update. - */ - -PB_DS_CLASS_T_DEC -template<typename Const_Node_Iterator_, - typename Node_Iterator_, - class Cmp_Fn_, - typename Allocator_> -inline void -PB_DS_CLASS_C_DEC:: -swap(null_tree_node_update< Const_Node_Iterator_, Node_Iterator_, Cmp_Fn_, Allocator_>& /*other*/) -{ } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp deleted file mode 100644 index 1d33767a2..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp +++ /dev/null @@ -1,141 +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 order_statistics_imp.hpp - * Contains forward declarations for order_statistics_key - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -find_by_order(size_type order) -{ - node_iterator it = node_begin(); - - node_iterator end_it = node_end(); - - while (it != end_it) - { - node_iterator l_it = it.get_l_child(); - - const size_type o = (l_it == end_it)? - 0 : - l_it.get_metadata(); - - if (order == o) - return (*it); - else if (order < o) - it = l_it; - else - { - order -= o + 1; - - it = it.get_r_child(); - } - } - - return (PB_DS_BASE_C_DEC::end_iterator()); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -find_by_order(size_type order) const -{ - return (const_cast<PB_DS_CLASS_C_DEC* >(this)->find_by_order(order)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -order_of_key(const_key_reference r_key) const -{ - const_node_iterator it = node_begin(); - - const_node_iterator end_it = node_end(); - - const cmp_fn& r_cmp_fn = - const_cast<PB_DS_CLASS_C_DEC* >(this)->get_cmp_fn(); - - size_type ord = 0; - - while (it != end_it) - { - const_node_iterator l_it = it.get_l_child(); - - if (r_cmp_fn(r_key, extract_key(*(*it)))) - it = l_it; - else if (r_cmp_fn(extract_key(*(*it)), r_key)) - { - - ord += (l_it == end_it)? - 1 : - 1 + l_it.get_metadata(); - - it = it.get_r_child(); - } - else - { - ord += (l_it == end_it)? - 0 : - l_it.get_metadata(); - - it = end_it; - } - } - - return (ord); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -operator()(node_iterator node_it, const_node_iterator end_nd_it) const -{ - node_iterator l_child_it = node_it.get_l_child(); - const size_type l_rank =(l_child_it == end_nd_it)? 0 : l_child_it.get_metadata(); - - node_iterator r_child_it = node_it.get_r_child(); - const size_type r_rank =(r_child_it == end_nd_it)? 0 : r_child_it.get_metadata(); - - const_cast<metadata_reference>(node_it.get_metadata())= - 1 + l_rank + r_rank; -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~tree_order_statistics_node_update() -{ } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp deleted file mode 100644 index 6ea68995e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp +++ /dev/null @@ -1,72 +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 sample_tree_node_update.hpp - * Contains a samle node update functor. - */ - -#ifndef PB_DS_SAMPLE_TREE_NODE_UPDATOR_HPP -#define PB_DS_SAMPLE_TREE_NODE_UPDATOR_HPP - -// A sample node updator. -template<typename Const_Node_Iterator, - - class Node_Iterator, - - class Cmp_Fn, - - class Allocator - > -class sample_tree_node_update -{ - -public: - - // Metadata type. - typedef size_t metadata_type; - -protected: - - // Default constructor. - sample_tree_node_update(); - - // Updates the rank of a node through a node_iterator node_it; end_nd_it is the end node iterator. - inline void - operator()(node_iterator node_it, const_node_iterator end_nd_it) const; - -}; - -#endif // #ifndef PB_DS_SAMPLE_TREE_NODE_UPDATOR_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp deleted file mode 100644 index e4bd65649..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp +++ /dev/null @@ -1,209 +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 tree_trace_base.hpp - * Contains tree-related policies. - */ - -#ifndef PB_DS_TREE_TRACE_BASE_HPP -#define PB_DS_TREE_TRACE_BASE_HPP - -#ifdef PB_DS_TREE_TRACE - -#include <ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp> -#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp> - -namespace __gnu_pbds -{ - - namespace detail - { - -#ifdef PB_DS_TREE_TRACE - -#define PB_DS_CLASS_T_DEC \ - template< \ - class Const_Node_Iterator, \ - class Node_Iterator, \ - class Cmp_Fn, \ - bool Node_Based, \ - class Allocator> - -#define PB_DS_CLASS_C_DEC \ - tree_trace_base< \ - Const_Node_Iterator, \ - Node_Iterator, \ - Cmp_Fn, \ - Node_Based, \ - Allocator> - -#define PB_DS_BASE_C_DEC \ - basic_tree_policy_base< \ - Const_Node_Iterator, \ - Node_Iterator, \ - Allocator> - - template<typename Const_Node_Iterator, - class Node_Iterator, - class Cmp_Fn, - bool Node_Based, - class Allocator> - class tree_trace_base : private PB_DS_BASE_C_DEC - { - public: - void - trace() const; - - private: - typedef PB_DS_BASE_C_DEC base_type; - - typedef Const_Node_Iterator const_node_iterator; - - typedef typename Allocator::size_type size_type; - - private: - void - trace_node(const_node_iterator nd_it, size_type level) const; - - virtual bool - empty() const = 0; - - virtual const_node_iterator - node_begin() const = 0; - - virtual const_node_iterator - node_end() const = 0; - - static void - print_node_pointer(Const_Node_Iterator nd_it, integral_constant<int,true>); - - static void - print_node_pointer(Const_Node_Iterator nd_it, integral_constant<int,false>); - - template<typename Metadata_> - static void - trace_it_metadata(Const_Node_Iterator nd_it, type_to_type<Metadata_>); - - static void - trace_it_metadata(Const_Node_Iterator, type_to_type<null_node_metadata>); - }; - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - trace() const - { - if (empty()) - return; - - trace_node(node_begin(), 0); - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - trace_node(const_node_iterator nd_it, size_type level) const - { - if (nd_it.get_r_child() != node_end()) - trace_node(nd_it.get_r_child(), level + 1); - - for (size_type i = 0; i < level; ++i) - std::cerr << ' '; - - print_node_pointer(nd_it, integral_constant<int,Node_Based>()); - std::cerr << base_type::extract_key(*(*nd_it)); - - typedef - type_to_type< - typename const_node_iterator::metadata_type> - m_type_ind_t; - - trace_it_metadata(nd_it, m_type_ind_t()); - - std::cerr << std::endl; - - if (nd_it.get_l_child() != node_end()) - trace_node(nd_it.get_l_child(), level + 1); - } - - PB_DS_CLASS_T_DEC - template<typename Metadata_> - void - PB_DS_CLASS_C_DEC:: - trace_it_metadata(Const_Node_Iterator nd_it, type_to_type<Metadata_>) - { - std::cerr << " (" << - static_cast<unsigned long>(nd_it.get_metadata()) << ") "; - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - trace_it_metadata(Const_Node_Iterator, type_to_type<null_node_metadata>) - { } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - print_node_pointer(Const_Node_Iterator nd_it, integral_constant<int,true>) - { - std::cerr << nd_it.m_p_nd << " "; - } - - PB_DS_CLASS_T_DEC - void - PB_DS_CLASS_C_DEC:: - print_node_pointer(Const_Node_Iterator nd_it, integral_constant<int,false>) - { - std::cerr <<* nd_it << " "; - } - -#undef PB_DS_CLASS_T_DEC - -#undef PB_DS_CLASS_C_DEC - -#undef PB_DS_BASE_C_DEC - -#endif // #ifdef PB_DS_TREE_TRACE - - } // namespace detail - -} // namespace __gnu_pbds - -#endif // #ifdef PB_DS_TREE_TRACE - -#endif // #ifndef PB_DS_TREE_TRACE_BASE_HPP - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp deleted file mode 100644 index b4de31fd0..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp +++ /dev/null @@ -1,116 +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 node_metadata_selector.hpp - * Contains an implementation class for tries. - */ - -#ifndef PB_DS_TRIE_NODE_METADATA_SELECTOR_HPP -#define PB_DS_TRIE_NODE_METADATA_SELECTOR_HPP - -#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp> -#include <ext/pb_ds/detail/types_traits.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - - template<typename Node_Update, bool Null> - struct trie_metadata_helper - { - typedef typename Node_Update::metadata_type type; - }; - - template<typename Node_Update> - struct trie_metadata_helper< - Node_Update, - true> - { - typedef null_node_metadata type; - }; - - template<typename Key, - typename Data, - class Cmp_Fn, - template<typename Const_Node_Iterator, - class Const_Iterator, - class Cmp_Fn_, - class Allocator_> - class Node_Update, - class Allocator> - struct trie_node_metadata_selector - { - private: - typedef - dumconst_node_iterator< - Key, - Data, - Allocator> - dumconst_node_it; - - enum - { - null_update = - is_same< - Node_Update< - dumconst_node_it, - dumconst_node_it, - Cmp_Fn, - Allocator>, - null_trie_node_update< - dumconst_node_it, - dumconst_node_it, - Cmp_Fn, - Allocator> >::value - }; - - public: - typedef - typename trie_metadata_helper< - Node_Update< - dumconst_node_it, - dumconst_node_it, - Cmp_Fn, - Allocator>, - null_update>::type - type; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_TRIE_NODE_METADATA_SELECTOR_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp deleted file mode 100644 index 65245e9dc..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp +++ /dev/null @@ -1,50 +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 null_node_update_imp.hpp - * Contains an implementation of null_node_update. - */ - -PB_DS_CLASS_T_DEC -template<typename Const_Node_Iterator_, - typename Node_Iterator_, - class E_Access_Traits_, - typename Allocator_> -inline void -PB_DS_CLASS_C_DEC:: -swap(null_trie_node_update< Const_Node_Iterator_, Node_Iterator_, E_Access_Traits_, Allocator_>& /*other*/) -{ } - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp deleted file mode 100644 index 4e27ac21e..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.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 order_statistics_imp.hpp - * Contains forward declarations for order_statistics_key - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -find_by_order(size_type order) -{ - if (empty()) - return (end()); - - ++order; - - node_iterator nd_it = node_begin(); - - node_iterator end_nd_it = node_end(); - - while (true) - { - if (order > nd_it.get_metadata()) - return (++base_type::rightmost_it(nd_it)); - - const size_type num_children = nd_it.num_children(); - - if (num_children == 0) - return (*nd_it); - - for (size_type i = 0; i < num_children; ++i) - { - node_iterator child_nd_it = nd_it.get_child(i); - - if (order <= child_nd_it.get_metadata()) - { - i = num_children; - - nd_it = child_nd_it; - } - else - order -= child_nd_it.get_metadata(); - } - } -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -find_by_order(size_type order) const -{ - return (const_cast<PB_DS_CLASS_C_DEC* >(this)->find_by_order(order)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -order_of_key(const_key_reference r_key) const -{ - const E_Access_Traits& r_traits = - const_cast<PB_DS_CLASS_C_DEC* >(this)->get_e_access_traits(); - - return (order_of_prefix( - r_traits.begin(r_key), - r_traits.end(r_key))); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -order_of_prefix(typename e_access_traits::const_iterator b, typename e_access_traits::const_iterator e) const -{ - if (empty()) - return (0); - - const E_Access_Traits& r_traits = - const_cast<PB_DS_CLASS_C_DEC* >(this)->get_e_access_traits(); - - const_node_iterator nd_it = node_begin(); - - const_node_iterator end_nd_it = node_end(); - - size_type ord = 0; - - while (true) - { - const size_type num_children = nd_it.num_children(); - - if (num_children == 0) - { - const_key_reference r_key = - base_type::extract_key(*(*nd_it)); - - typename e_access_traits::const_iterator key_b = - r_traits.begin(r_key); - - typename e_access_traits::const_iterator key_e = - r_traits.end(r_key); - - return ((base_type::less( key_b, key_e, b, e, r_traits))? - ord + 1 : - ord); - } - - const_node_iterator next_nd_it = end_nd_it; - - size_type i = num_children - 1; - - do - { - const_node_iterator child_nd_it = nd_it.get_child(i); - - if (next_nd_it != end_nd_it) - ord += child_nd_it.get_metadata(); - else if (!base_type::less( - b, e, - child_nd_it.valid_prefix().first, - child_nd_it.valid_prefix().second, - r_traits)) - next_nd_it = child_nd_it; - } - while (i-- > 0); - - if (next_nd_it == end_nd_it) - return (ord); - - nd_it = next_nd_it; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -operator()(node_iterator nd_it, const_node_iterator /*end_nd_it*/) const -{ - const size_type num_children = nd_it.num_children(); - - size_type children_rank = 0; - - for (size_type i = 0; i < num_children; ++i) - children_rank += nd_it.get_child(i).get_metadata(); - - const_cast<size_type& >(nd_it.get_metadata()) =(num_children == 0)? 1 : children_rank; -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~trie_order_statistics_node_update() -{ } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp deleted file mode 100644 index cdd898929..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp +++ /dev/null @@ -1,151 +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 prefix_search_node_update_imp.hpp - * Contains an implementation of prefix_search_node_update. - */ - -PB_DS_CLASS_T_DEC -std::pair< - typename PB_DS_CLASS_C_DEC::const_iterator, - typename PB_DS_CLASS_C_DEC::const_iterator> -PB_DS_CLASS_C_DEC:: -prefix_range(const_key_reference r_key) const -{ - const e_access_traits& r_traits = get_e_access_traits(); - - return (prefix_range( - r_traits.begin(r_key), - r_traits.end(r_key))); -} - -PB_DS_CLASS_T_DEC -std::pair< - typename PB_DS_CLASS_C_DEC::iterator, - typename PB_DS_CLASS_C_DEC::iterator> -PB_DS_CLASS_C_DEC:: -prefix_range(const_key_reference r_key) -{ - return (prefix_range( - get_e_access_traits().begin(r_key), - get_e_access_traits().end(r_key))); -} - -PB_DS_CLASS_T_DEC -std::pair< - typename PB_DS_CLASS_C_DEC::const_iterator, - typename PB_DS_CLASS_C_DEC::const_iterator> -PB_DS_CLASS_C_DEC:: -prefix_range(typename e_access_traits::const_iterator b, typename e_access_traits::const_iterator e) const -{ - const std::pair<iterator, iterator> non_const_ret = - const_cast<PB_DS_CLASS_C_DEC* >(this)->prefix_range(b, e); - - return (std::make_pair( - const_iterator(non_const_ret.first), - const_iterator(non_const_ret.second))); -} - -PB_DS_CLASS_T_DEC -std::pair< - typename PB_DS_CLASS_C_DEC::iterator, - typename PB_DS_CLASS_C_DEC::iterator> -PB_DS_CLASS_C_DEC:: -prefix_range(typename e_access_traits::const_iterator b, typename e_access_traits::const_iterator e) -{ - Node_Iterator nd_it = node_begin(); - Node_Iterator end_nd_it = node_end(); - - const e_access_traits& r_traits = - get_e_access_traits(); - - const size_type given_range_length = std::distance(b, e); - - while (true) - { - if (nd_it == end_nd_it) - return (std::make_pair(end(), end())); - - const size_type common_range_length = - PB_DS_BASE_C_DEC::common_prefix_len(nd_it, b, e, r_traits); - - if (common_range_length >= given_range_length) - { - iterator ret_b = leftmost_it(nd_it); - - iterator ret_e = rightmost_it(nd_it); - - return (std::make_pair(ret_b, ++ret_e)); - } - - nd_it = next_child(nd_it, b, e, end_nd_it, r_traits); - } -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -next_child(node_iterator nd_it, typename e_access_traits::const_iterator b, typename e_access_traits::const_iterator e, node_iterator end_nd_it, const e_access_traits& r_traits) -{ - const size_type num_children = nd_it.num_children(); - - node_iterator ret = end_nd_it; - - size_type max_length = 0; - - for (size_type i = 0; i < num_children; ++i) - { - node_iterator pot = nd_it.get_child(i); - - const size_type common_range_length = - PB_DS_BASE_C_DEC::common_prefix_len( pot, b, e, r_traits); - - if (common_range_length > max_length) - { - ret = pot; - - max_length = common_range_length; - } - } - - return (ret); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -operator()(node_iterator /*nd_it*/, const_node_iterator /*end_nd_it*/) const -{ } diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp deleted file mode 100644 index 34fbe0cc3..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp +++ /dev/null @@ -1,89 +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 sample_trie_e_access_traits.hpp - * Contains a sample probe policy. - */ - -#ifndef PB_DS_SAMPLE_TRIE_E_ACCESS_TRAITS_HPP -#define PB_DS_SAMPLE_TRIE_E_ACCESS_TRAITS_HPP - -// A sample trie element-access traits. -class sample_trie_e_access_traits -{ - -public: - - // Size type. - typedef size_t size_type; - - // Key type. - typedef std::string key_type; - - // Const key reference type. - typedef - typename Allocator::template rebind< - key_type>::other::const_reference - const_key_reference; - - // Element const iterator type. - typedef std::string::const_iterator const_iterator; - - // Element type. - typedef char e_type; - - enum - { - max_size = 4 - }; - -public: - - // Returns a const_iterator to the first element of r_key. - inline static const_iterator - begin(const_key_reference r_key); - - // Returns a const_iterator to the after-last element of r_key. - inline static const_iterator - end(const_key_reference r_key); - - // Maps an element to a position. - inline static size_type - e_pos(e_type e); - -}; - -#endif // #ifndef PB_DS_SAMPLE_TRIE_E_ACCESS_TRAITS_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp deleted file mode 100644 index 55fd99787..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp +++ /dev/null @@ -1,72 +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 sample_trie_node_update.hpp - * Contains a samle node update functor. - */ - -#ifndef PB_DS_SAMPLE_TRIE_NODE_UPDATOR_HPP -#define PB_DS_SAMPLE_TRIE_NODE_UPDATOR_HPP - -// A sample node updator. -template<typename Const_Node_Iterator, - - class Node_Iterator, - - class E_Access_Traits, - - class Allocator - > -class sample_trie_node_update -{ - -public: - - // Metadata type. - typedef size_t metadata_type; - -protected: - - // Default constructor. - sample_trie_node_update(); - - // Updates the rank of a node through a node_iterator node_it; end_nd_it is the end node iterator. - inline void - operator()(node_iterator node_it, const_node_iterator end_nd_it) const; - -}; - -#endif // #ifndef PB_DS_SAMPLE_TRIE_NODE_UPDATOR_HPP diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp deleted file mode 100644 index 228a4a5dc..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp +++ /dev/null @@ -1,99 +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 string_trie_e_access_traits_imp.hpp - * Contains a policy for extracting character positions from - * a string for a vector-based PATRICIA tree - */ - -PB_DS_CLASS_T_DEC -detail::integral_constant<int, Reverse> PB_DS_CLASS_C_DEC::s_rev_ind; - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -e_pos(e_type e) -{ - return (static_cast<size_type>(e - min_e_val)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin(const_key_reference r_key) -{ - return (begin_imp(r_key, s_rev_ind)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end(const_key_reference r_key) -{ - return (end_imp(r_key, s_rev_ind)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin_imp(const_key_reference r_key, detail::false_type) -{ - return (r_key.begin()); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin_imp(const_key_reference r_key, detail::true_type) -{ - return (r_key.rbegin()); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end_imp(const_key_reference r_key, detail::false_type) -{ - return (r_key.end()); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end_imp(const_key_reference r_key, detail::true_type) -{ - return (r_key.rend()); -} diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp deleted file mode 100644 index db912a008..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp +++ /dev/null @@ -1,249 +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 trie_policy_base.hpp - * Contains an implementation of trie_policy_base. - */ - -#ifndef PB_DS_TRIE_POLICY_BASE_HPP -#define PB_DS_TRIE_POLICY_BASE_HPP - -#include <ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp> - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_T_DEC \ - template< \ - class Const_Node_Iterator, \ - class Node_Iterator, \ - class E_Access_Traits, \ - typename Allocator> - -#define PB_DS_CLASS_C_DEC \ - trie_policy_base< \ - Const_Node_Iterator, \ - Node_Iterator, \ - E_Access_Traits, \ - Allocator> - -#define PB_DS_BASE_C_DEC \ - basic_tree_policy_base< \ - Const_Node_Iterator, \ - Node_Iterator, \ - Allocator> - - template<typename Const_Node_Iterator, - class Node_Iterator, - class E_Access_Traits, - class Allocator> - class trie_policy_base : public PB_DS_BASE_C_DEC - { - - public: - - typedef E_Access_Traits e_access_traits; - - typedef Allocator allocator_type; - - typedef typename allocator_type::size_type size_type; - - typedef null_node_metadata metadata_type; - - typedef Const_Node_Iterator const_node_iterator; - - typedef Node_Iterator node_iterator; - - typedef typename const_node_iterator::value_type const_iterator; - - typedef typename node_iterator::value_type iterator; - - public: - - typedef typename PB_DS_BASE_C_DEC::key_type key_type; - - typedef - typename PB_DS_BASE_C_DEC::const_key_reference - const_key_reference; - - protected: - - virtual const_iterator - end() const = 0; - - virtual iterator - end() = 0; - - virtual const_node_iterator - node_begin() const = 0; - - virtual node_iterator - node_begin() = 0; - - virtual const_node_iterator - node_end() const = 0; - - virtual node_iterator - node_end() = 0; - - virtual const e_access_traits& - get_e_access_traits() const = 0; - - private: - typedef - std::pair< - typename e_access_traits::const_iterator, - typename e_access_traits::const_iterator> - prefix_range_t; - - typedef PB_DS_BASE_C_DEC base_type; - - protected: - static size_type - common_prefix_len(node_iterator nd_it, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r, const e_access_traits& r_traits); - - static iterator - leftmost_it(node_iterator nd_it); - - static iterator - rightmost_it(node_iterator nd_it); - - static bool - less(typename e_access_traits::const_iterator b_l, typename e_access_traits::const_iterator e_l, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r, const e_access_traits& r_traits); - }; - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::size_type - PB_DS_CLASS_C_DEC:: - common_prefix_len(node_iterator nd_it, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r, const e_access_traits& r_traits) - { - prefix_range_t pref_range = nd_it.valid_prefix(); - - typename e_access_traits::const_iterator b_l = pref_range.first; - typename e_access_traits::const_iterator e_l = pref_range.second; - - const size_type range_length_l = - std::distance(b_l, e_l); - - const size_type range_length_r = - std::distance(b_r, e_r); - - if (range_length_r < range_length_l) - { - std::swap(b_l, b_r); - - std::swap(e_l, e_r); - } - - size_type ret = 0; - - while (b_l != e_l) - { - if (r_traits.e_pos(*b_l) != r_traits.e_pos(*b_r)) - return (ret); - - ++ret; - - ++b_l; - - ++b_r; - } - - return (ret); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::iterator - PB_DS_CLASS_C_DEC:: - leftmost_it(node_iterator nd_it) - { - if (nd_it.num_children() == 0) - return (*nd_it); - - return (leftmost_it(nd_it.get_child(0))); - } - - PB_DS_CLASS_T_DEC - typename PB_DS_CLASS_C_DEC::iterator - PB_DS_CLASS_C_DEC:: - rightmost_it(node_iterator nd_it) - { - const size_type num_children = nd_it.num_children(); - - if (num_children == 0) - return (*nd_it); - - return (rightmost_it(nd_it.get_child(num_children - 1))); - } - - PB_DS_CLASS_T_DEC - bool - PB_DS_CLASS_C_DEC:: - less(typename e_access_traits::const_iterator b_l, typename e_access_traits::const_iterator e_l, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r, const e_access_traits& r_traits) - { - while (b_l != e_l) - { - if (b_r == e_r) - return (false); - - size_type l_pos = - r_traits.e_pos(*b_l); - size_type r_pos = - r_traits.e_pos(*b_r); - - if (l_pos != r_pos) - return (l_pos < r_pos); - - ++b_l; - ++b_r; - } - - return (b_r != e_r); - } - -#undef PB_DS_CLASS_T_DEC - -#undef PB_DS_CLASS_C_DEC - -#undef PB_DS_BASE_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_TRIE_POLICY_BASE_HPP - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp deleted file mode 100644 index 55f349a26..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp +++ /dev/null @@ -1,167 +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 type_utils.hpp - * Contains utilities for handnling types. All of these classes are based on - * "Modern C++" by Andrei Alxandrescu. - */ - -#ifndef PB_DS_TYPE_UTILS_HPP -#define PB_DS_TYPE_UTILS_HPP - -#include <cstddef> -#include <utility> -#include <tr1/type_traits> -#include <ext/type_traits.h> -#include <ext/numeric_traits.h> - -namespace __gnu_pbds -{ - namespace detail - { - using std::tr1::is_same; - using std::tr1::is_const; - using std::tr1::is_pointer; - using std::tr1::is_reference; - using std::tr1::is_fundamental; - using std::tr1::is_member_object_pointer; - using std::tr1::is_member_pointer; - using std::tr1::is_base_of; - using std::tr1::remove_const; - using std::tr1::remove_reference; - - // Need integral_const<bool, true> <-> integral_const<int, 1>, so - // because of this use the following typedefs instead of importing - // std::tr1's. - using std::tr1::integral_constant; - typedef std::tr1::integral_constant<int, 1> true_type; - typedef std::tr1::integral_constant<int, 0> false_type; - - using __gnu_cxx::__conditional_type; - using __gnu_cxx::__numeric_traits; - - template<typename T> - struct is_const_pointer - { - enum - { - value = is_const<T>::value && is_pointer<T>::value - }; - }; - - template<typename T> - struct is_const_reference - { - enum - { - value = is_const<T>::value && is_reference<T>::value - }; - }; - - template<typename T> - struct is_simple - { - enum - { - value = is_fundamental<typename remove_const<T>::type>::value - || is_pointer<typename remove_const<T>::type>::value - || is_member_pointer<T>::value - }; - }; - - template<typename T> - class is_pair - { - private: - template<typename U> - struct is_pair_imp - { - enum - { - value = 0 - }; - }; - - template<typename U, typename V> - struct is_pair_imp<std::pair<U,V> > - { - enum - { - value = 1 - }; - }; - - public: - enum - { - value = is_pair_imp<T>::value - }; - }; - - // Use C++0x's static_assert if possible. -#ifdef __GXX_EXPERIMENTAL_CXX0X__ -#define PB_DS_STATIC_ASSERT(UNIQUE, E) static_assert(E, #UNIQUE) -#else - template<bool> - struct __static_assert; - - template<> - struct __static_assert<true> - { }; - - template<int> - struct __static_assert_dumclass - { - enum - { - v = 1 - }; - }; - -#define PB_DS_STATIC_ASSERT(UNIQUE, E) \ - typedef __gnu_pbds::detail::__static_assert_dumclass<sizeof(__gnu_pbds::detail::__static_assert<bool(E)>)> UNIQUE##__static_assert_type - -#endif - - template<typename Type> - struct type_to_type - { - typedef Type type; - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp deleted file mode 100644 index 6d5a07838..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp +++ /dev/null @@ -1,82 +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 types_traits.hpp - * Contains a traits class of types used by containers. - */ - -#ifndef PB_DS_TYPES_TRAITS_HPP -#define PB_DS_TYPES_TRAITS_HPP - -#include <ext/pb_ds/detail/basic_types.hpp> -#include <ext/pb_ds/detail/type_utils.hpp> -#include <utility> - -namespace __gnu_pbds -{ - namespace detail - { - template<typename Key, typename Mapped, typename Alloc, bool Store_Extra> - struct vt_base_selector - { - typedef value_type_base<Key, Mapped, Alloc, Store_Extra> type; - }; - - template<typename Key, typename Mapped, typename Alloc, bool Store_Extra> - struct types_traits - : public vt_base_selector<Key, Mapped, Alloc, Store_Extra>::type - { - typedef typename Alloc::template rebind<Key>::other key_allocator; - typedef typename key_allocator::value_type key_type; - typedef typename key_allocator::pointer key_pointer; - typedef typename key_allocator::const_pointer const_key_pointer; - typedef typename key_allocator::reference key_reference; - typedef typename key_allocator::const_reference const_key_reference; - typedef typename Alloc::size_type size_type; - - // Extra value (used when the extra value is stored with each value). - typedef std::pair<size_type, size_type> comp_hash; - - typedef integral_constant<int, Store_Extra> store_extra; - store_extra m_store_extra_indicator; - - typedef typename no_throw_copies<Key, Mapped>::indicator no_throw_copies; - no_throw_copies m_no_throw_copies_indicator; - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp deleted file mode 100644 index 38d4eb1cf..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp +++ /dev/null @@ -1,129 +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 const_iterator.hpp - * Contains an iterator class used for const ranging over the elements of the - * table. - */ - -// Const range-type iterator. -class const_iterator_ : - public const_point_iterator_ - -{ - -public: - - // Category. - typedef std::forward_iterator_tag iterator_category; - - // Difference type. - typedef typename Allocator::difference_type difference_type; - - // Iterator's value type. - typedef value_type_ value_type; - - // Iterator's pointer type. - typedef pointer_ pointer; - - // Iterator's const pointer type. - typedef const_pointer_ const_pointer; - - // Iterator's reference type. - typedef reference_ reference; - - // Iterator's const reference type. - typedef const_reference_ const_reference; - -public: - - // Default constructor. - inline - const_iterator_() - - : m_p_tbl(NULL) - { } - - // Increments. - inline const_iterator_& - operator++() - { - m_p_tbl->inc_it_state(base_type::m_p_value, m_pos); - - return (*this); - } - - // Increments. - inline const_iterator_ - operator++(int) - { - const_iterator_ ret =* this; - - m_p_tbl->inc_it_state(base_type::m_p_value, m_pos); - - return (ret); - } - -protected: - - typedef const_point_iterator_ base_type; - -protected: - - /** - * Constructor used by the table to initiate the generalized - * pointer and position (e.g., this is called from within a find() - * of a table. - * */ - inline - const_iterator_(const_pointer_ p_value, PB_DS_GEN_POS pos, const PB_DS_CLASS_C_DEC* p_tbl) : const_point_iterator_(p_value), - m_p_tbl(p_tbl), - m_pos(pos) - { } - -protected: - - /** - * Pointer to the table object which created the iterator (used for - * incrementing its position. - * */ - const PB_DS_CLASS_C_DEC* m_p_tbl; - - PB_DS_GEN_POS m_pos; - - friend class PB_DS_CLASS_C_DEC; -}; - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp deleted file mode 100644 index bc0b2ad62..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp +++ /dev/null @@ -1,151 +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 const_point_iterator.hpp - * Contains an iterator class returned by the tables' const find and insert - * methods. - */ - -class point_iterator_; - -// Const point-type iterator. -class const_point_iterator_ -{ - -public: - - // Category. - typedef trivial_iterator_tag iterator_category; - - // Difference type. - typedef trivial_iterator_difference_type difference_type; - - // Iterator's value type. - typedef value_type_ value_type; - - // Iterator's pointer type. - typedef pointer_ pointer; - - // Iterator's const pointer type. - typedef const_pointer_ const_pointer; - - // Iterator's reference type. - typedef reference_ reference; - - // Iterator's const reference type. - typedef const_reference_ const_reference; - -public: - - inline - const_point_iterator_(const_pointer p_value) : m_p_value(p_value) - { } - - // Default constructor. - inline - const_point_iterator_() - - : m_p_value(NULL) - { } - - // Copy constructor. - inline - const_point_iterator_(const const_point_iterator_& other) - - : m_p_value(other.m_p_value) - { } - - // Copy constructor. - inline - const_point_iterator_(const point_iterator_& other) - - : m_p_value(other.m_p_value) - { } - - // Access. - inline const_pointer - operator->() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_value != NULL); - - return (m_p_value); - } - - // Access. - inline const_reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_value != NULL); - - return (*m_p_value); - } - - // Compares content to a different iterator object. - inline bool - operator==(const point_iterator_& other) const - { - return (m_p_value == other.m_p_value); - } - - // Compares content to a different iterator object. - inline bool - operator==(const const_point_iterator_& other) const - { - return (m_p_value == other.m_p_value); - } - - // Compares content (negatively) to a different iterator object. - inline bool - operator!=(const point_iterator_& other) const - { - return (m_p_value != other.m_p_value); - } - - // Compares content (negatively) to a different iterator object. - inline bool - operator!=(const const_point_iterator_& other) const - { - return (m_p_value != other.m_p_value); - } - -protected: - const_pointer m_p_value; - - friend class point_iterator_; - - friend class PB_DS_CLASS_C_DEC; -}; - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp deleted file mode 100644 index 3e21aba8b..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp +++ /dev/null @@ -1,150 +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 iterator.hpp - * Contains an iterator_ class used for ranging over the elements of the - * table. - */ - -// Range-type iterator. -class iterator_ : - public const_iterator_ - -{ - -public: - - // Category. - typedef std::forward_iterator_tag iterator_category; - - // Difference type. - typedef typename Allocator::difference_type difference_type; - - // Iterator's value type. - typedef value_type_ value_type; - - // Iterator's pointer type. - typedef pointer_ pointer; - - // Iterator's const pointer type. - typedef const_pointer_ const_pointer; - - // Iterator's reference type. - typedef reference_ reference; - - // Iterator's const reference type. - typedef const_reference_ const_reference; - -public: - - // Default constructor. - inline - iterator_() - - : const_iterator_(NULL, PB_DS_GEN_POS(), NULL) - { } - - // Conversion to a point-type iterator. - inline - operator point_iterator_() - { - return (point_iterator_( - const_cast<pointer>(const_iterator_::m_p_value))); - } - - // Conversion to a point-type iterator. - inline - operator const point_iterator_() const - { - return (point_iterator_( - const_cast<pointer>(const_iterator_::m_p_value))); - } - - // Access. - inline pointer - operator->() const - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_p_value != NULL); - - return (const_cast<pointer>(base_type::m_p_value)); - } - - // Access. - inline reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_p_value != NULL); - - return (const_cast<reference>(*base_type::m_p_value)); - } - - // Increments. - inline iterator_& - operator++() - { - base_type::m_p_tbl->inc_it_state(base_type::m_p_value, base_type::m_pos); - - return (*this); - } - - // Increments. - inline iterator_ - operator++(int) - { - iterator_ ret =* this; - - base_type::m_p_tbl->inc_it_state(base_type::m_p_value, base_type::m_pos); - - return (ret); - } - -protected: - typedef const_iterator_ base_type; - -protected: - - /** - * Constructor used by the table to initiate the generalized - * pointer and position (e.g., this is called from within a find() - * of a table. - * */ - inline - iterator_(pointer p_value, PB_DS_GEN_POS pos, PB_DS_CLASS_C_DEC* p_tbl) : const_iterator_(p_value, pos, p_tbl) - { } - - friend class PB_DS_CLASS_C_DEC; -}; - diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp deleted file mode 100644 index 37ce90069..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp +++ /dev/null @@ -1,143 +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 point_iterator.hpp - * Contains an iterator class returned by the tables' find and insert - * methods. - */ - -// Find type iterator. -class point_iterator_ -{ - -public: - - // Category. - typedef trivial_iterator_tag iterator_category; - - // Difference type. - typedef trivial_iterator_difference_type difference_type; - - // Iterator's value type. - typedef value_type_ value_type; - - // Iterator's pointer type. - typedef pointer_ pointer; - - // Iterator's const pointer type. - typedef const_pointer_ const_pointer; - - // Iterator's reference type. - typedef reference_ reference; - - // Iterator's const reference type. - typedef const_reference_ const_reference; - -public: - - // Default constructor. - inline - point_iterator_() - - : m_p_value(NULL) - { } - - // Copy constructor. - inline - point_iterator_(const point_iterator_& other) - - : m_p_value(other.m_p_value) - { } - - // Access. - inline pointer - operator->() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_value != NULL); - - return (m_p_value); - } - - // Access. - inline reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_value != NULL); - - return (*m_p_value); - } - - // Compares content to a different iterator object. - inline bool - operator==(const point_iterator_& other) const - { - return (m_p_value == other.m_p_value); - } - - // Compares content to a different iterator object. - inline bool - operator==(const const_point_iterator_& other) const - { - return (m_p_value == other.m_p_value); - } - - // Compares content to a different iterator object. - inline bool - operator!=(const point_iterator_& other) const - { - return (m_p_value != other.m_p_value); - } - - // Compares content (negatively) to a different iterator object. - inline bool - operator!=(const const_point_iterator_& other) const - { - return (m_p_value != other.m_p_value); - } - - inline - point_iterator_(pointer p_value) : m_p_value(p_value) - { } - -protected: - friend class const_point_iterator_; - - friend class PB_DS_CLASS_C_DEC; - -protected: - pointer m_p_value; -}; - |