summaryrefslogtreecommitdiff
path: root/boost/intrusive/avl_set.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/intrusive/avl_set.hpp')
-rw-r--r--boost/intrusive/avl_set.hpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/boost/intrusive/avl_set.hpp b/boost/intrusive/avl_set.hpp
index 2c962046e5..d150140abd 100644
--- a/boost/intrusive/avl_set.hpp
+++ b/boost/intrusive/avl_set.hpp
@@ -26,6 +26,11 @@
namespace boost {
namespace intrusive {
+#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
+template<class ValueTraits, class VoidOrKeyOfValue, class Compare, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
+class avl_multiset_impl;
+#endif
+
//! The class template avl_set is an intrusive container, that mimics most of
//! the interface of std::set as described in the C++ standard.
//!
@@ -150,6 +155,15 @@ class avl_set_impl
//! @copydoc ::boost::intrusive::avltree::crend()const
const_reverse_iterator crend() const;
+ //! @copydoc ::boost::intrusive::avltree::root()
+ iterator root();
+
+ //! @copydoc ::boost::intrusive::avltree::root()const
+ const_iterator root() const;
+
+ //! @copydoc ::boost::intrusive::avltree::croot()const
+ const_iterator croot() const;
+
//! @copydoc ::boost::intrusive::avltree::container_from_end_iterator(iterator)
static avl_set_impl &container_from_end_iterator(iterator end_iterator);
@@ -399,6 +413,26 @@ class avl_set_impl
//! @copydoc ::boost::intrusive::avltree::remove_node
void remove_node(reference value);
+
+ //! @copydoc ::boost::intrusive::avltree::merge_unique
+ template<class ...Options2>
+ void merge(avl_set<T, Options2...> &source);
+
+ //! @copydoc ::boost::intrusive::avltree::merge_unique
+ template<class ...Options2>
+ void merge(avl_multiset<T, Options2...> &source);
+
+ #else
+
+ template<class Compare2>
+ void merge(avl_set_impl<ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, HeaderHolder> &source)
+ { return tree_type::merge_unique(source); }
+
+
+ template<class Compare2>
+ void merge(avl_multiset_impl<ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, HeaderHolder> &source)
+ { return tree_type::merge_unique(source); }
+
#endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
};
@@ -658,6 +692,15 @@ class avl_multiset_impl
//! @copydoc ::boost::intrusive::avltree::crend()const
const_reverse_iterator crend() const;
+ //! @copydoc ::boost::intrusive::avltree::root()
+ iterator root();
+
+ //! @copydoc ::boost::intrusive::avltree::root()const
+ const_iterator root() const;
+
+ //! @copydoc ::boost::intrusive::avltree::croot()const
+ const_iterator croot() const;
+
//! @copydoc ::boost::intrusive::avltree::container_from_end_iterator(iterator)
static avl_multiset_impl &container_from_end_iterator(iterator end_iterator);
@@ -865,6 +908,25 @@ class avl_multiset_impl
//! @copydoc ::boost::intrusive::avltree::remove_node
void remove_node(reference value);
+
+ //! @copydoc ::boost::intrusive::avltree::merge_equal
+ template<class ...Options2>
+ void merge(avl_multiset<T, Options2...> &source);
+
+ //! @copydoc ::boost::intrusive::avltree::merge_equal
+ template<class ...Options2>
+ void merge(avl_set<T, Options2...> &source);
+
+ #else
+
+ template<class Compare2>
+ void merge(avl_multiset_impl<ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, HeaderHolder> &source)
+ { return tree_type::merge_equal(source); }
+
+ template<class Compare2>
+ void merge(avl_set_impl<ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, HeaderHolder> &source)
+ { return tree_type::merge_equal(source); }
+
#endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
};