diff options
Diffstat (limited to 'boost/intrusive/avl_set.hpp')
-rw-r--r-- | boost/intrusive/avl_set.hpp | 62 |
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 }; |