Mercurial > hg > vamp-build-and-test
diff DEPENDENCIES/generic/include/boost/intrusive/treap_set.hpp @ 101:c530137014c0
Update Boost headers (1.58.0)
author | Chris Cannam |
---|---|
date | Mon, 07 Sep 2015 11:12:49 +0100 |
parents | 2665513ce2d3 |
children |
line wrap: on
line diff
--- a/DEPENDENCIES/generic/include/boost/intrusive/treap_set.hpp Fri Sep 04 12:01:02 2015 +0100 +++ b/DEPENDENCIES/generic/include/boost/intrusive/treap_set.hpp Mon Sep 07 11:12:49 2015 +0100 @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2007-2013 +// (C) Copyright Ion Gaztanaga 2007-2014 // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -9,15 +9,19 @@ // See http://www.boost.org/libs/intrusive for documentation. // ///////////////////////////////////////////////////////////////////////////// -#ifndef BOOST_INTRUSIVE_TRIE_SET_HPP -#define BOOST_INTRUSIVE_TRIE_SET_HPP +#ifndef BOOST_INTRUSIVE_TREAP_SET_HPP +#define BOOST_INTRUSIVE_TREAP_SET_HPP #include <boost/intrusive/detail/config_begin.hpp> #include <boost/intrusive/intrusive_fwd.hpp> #include <boost/intrusive/treap.hpp> #include <boost/intrusive/detail/mpl.hpp> -#include <boost/move/move.hpp> -#include <iterator> +#include <boost/move/utility_core.hpp> +#include <boost/static_assert.hpp> + +#if defined(BOOST_HAS_PRAGMA_ONCE) +# pragma once +#endif namespace boost { namespace intrusive { @@ -36,15 +40,16 @@ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template<class T, class ...Options> #else -template<class ValueTraits, class VoidOrKeyComp, class VoidOrPrioComp, class SizeType, bool ConstantTimeSize> +template<class ValueTraits, class VoidOrKeyComp, class VoidOrPrioComp, class SizeType, bool ConstantTimeSize, typename HeaderHolder> #endif class treap_set_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public treap_impl<ValueTraits, VoidOrKeyComp, VoidOrPrioComp, SizeType, ConstantTimeSize> + : public treap_impl<ValueTraits, VoidOrKeyComp, VoidOrPrioComp, SizeType, ConstantTimeSize, HeaderHolder> #endif { /// @cond - typedef treap_impl<ValueTraits, VoidOrKeyComp, VoidOrPrioComp, SizeType, ConstantTimeSize> tree_type; + public: + typedef treap_impl<ValueTraits, VoidOrKeyComp, VoidOrPrioComp, SizeType, ConstantTimeSize, HeaderHolder> tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(treap_set_impl) typedef tree_type implementation_defined; @@ -96,7 +101,7 @@ //! [b, e). //! //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using - //! comp and otherwise N * log N, where N is std::distance(last, first). + //! comp and otherwise N * log N, where N is distance(last, first). //! //! <b>Throws</b>: If value_traits::node_traits::node //! constructor throws (this does not happen with predefined Boost.Intrusive hooks) @@ -112,13 +117,13 @@ //! <b>Effects</b>: to-do //! treap_set_impl(BOOST_RV_REF(treap_set_impl) x) - : tree_type(::boost::move(static_cast<tree_type&>(x))) + : tree_type(BOOST_MOVE_BASE(tree_type, x)) {} //! <b>Effects</b>: to-do //! treap_set_impl& operator=(BOOST_RV_REF(treap_set_impl) x) - { return static_cast<treap_set_impl&>(tree_type::operator=(::boost::move(static_cast<tree_type&>(x)))); } + { return static_cast<treap_set_impl&>(tree_type::operator=(BOOST_MOVE_BASE(tree_type, x))); } #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED //! @copydoc ::boost::intrusive::treap::~treap() @@ -291,16 +296,22 @@ template<class Disposer> void clear_and_dispose(Disposer disposer); + #endif // #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED + //! @copydoc ::boost::intrusive::treap::count(const_reference)const - size_type count(const_reference value) const; + size_type count(const_reference value) const + { return static_cast<size_type>(this->tree_type::find(value) != this->tree_type::cend()); } //! @copydoc ::boost::intrusive::treap::count(const KeyType&,KeyValueCompare)const template<class KeyType, class KeyValueCompare> - size_type count(const KeyType& key, KeyValueCompare comp) const; - + size_type count(const KeyType& key, KeyValueCompare comp) const + { return static_cast<size_type>(this->tree_type::find(key, comp) != this->tree_type::cend()); } + + #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED + //! @copydoc ::boost::intrusive::treap::lower_bound(const_reference) iterator lower_bound(const_reference value); - + //! @copydoc ::boost::intrusive::treap::lower_bound(const KeyType&,KeyValueCompare) template<class KeyType, class KeyValueCompare> iterator lower_bound(const KeyType& key, KeyValueCompare comp); @@ -340,21 +351,29 @@ template<class KeyType, class KeyValueCompare> const_iterator find(const KeyType& key, KeyValueCompare comp) const; - //! @copydoc ::boost::intrusive::treap::equal_range(const_reference) - std::pair<iterator,iterator> equal_range(const_reference value); + #endif // #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED - //! @copydoc ::boost::intrusive::treap::equal_range(const KeyType&,KeyValueCompare) + //! @copydoc ::boost::intrusive::rbtree::equal_range(const_reference) + std::pair<iterator,iterator> equal_range(const_reference value) + { return this->tree_type::lower_bound_range(value); } + + //! @copydoc ::boost::intrusive::rbtree::equal_range(const KeyType&,KeyValueCompare) template<class KeyType, class KeyValueCompare> - std::pair<iterator,iterator> equal_range(const KeyType& key, KeyValueCompare comp); + std::pair<iterator,iterator> equal_range(const KeyType& key, KeyValueCompare comp) + { return this->tree_type::lower_bound_range(key, comp); } - //! @copydoc ::boost::intrusive::treap::equal_range(const_reference)const + //! @copydoc ::boost::intrusive::rbtree::equal_range(const_reference)const std::pair<const_iterator, const_iterator> - equal_range(const_reference value) const; + equal_range(const_reference value) const + { return this->tree_type::lower_bound_range(value); } - //! @copydoc ::boost::intrusive::treap::equal_range(const KeyType&,KeyValueCompare)const + //! @copydoc ::boost::intrusive::rbtree::equal_range(const KeyType&,KeyValueCompare)const template<class KeyType, class KeyValueCompare> std::pair<const_iterator, const_iterator> - equal_range(const KeyType& key, KeyValueCompare comp) const; + equal_range(const KeyType& key, KeyValueCompare comp) const + { return this->tree_type::lower_bound_range(key, comp); } + + #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED //! @copydoc ::boost::intrusive::treap::bounded_range(const_reference,const_reference,bool,bool) std::pair<iterator,iterator> bounded_range @@ -408,14 +427,15 @@ template<class T, class ...Options> #else template<class T, class O1 = void, class O2 = void - , class O3 = void, class O4 = void> + , class O3 = void, class O4 = void + , class O5 = void> #endif struct make_treap_set { typedef typename pack_options < treap_defaults, #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) - O1, O2, O3, O4 + O1, O2, O3, O4, O5 #else Options... #endif @@ -430,6 +450,7 @@ , typename packed_options::priority , typename packed_options::size_type , packed_options::constant_time_size + , typename packed_options::header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; @@ -438,14 +459,14 @@ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) -template<class T, class O1, class O2, class O3, class O4> +template<class T, class O1, class O2, class O3, class O4, class O5> #else template<class T, class ...Options> #endif class treap_set : public make_treap_set<T, #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) - O1, O2, O3, O4 + O1, O2, O3, O4, O5 #else Options... #endif @@ -454,7 +475,7 @@ typedef typename make_treap_set <T, #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) - O1, O2, O3, O4 + O1, O2, O3, O4, O5 #else Options... #endif @@ -486,11 +507,11 @@ {} treap_set(BOOST_RV_REF(treap_set) x) - : Base(::boost::move(static_cast<Base&>(x))) + : Base(BOOST_MOVE_BASE(Base, x)) {} treap_set& operator=(BOOST_RV_REF(treap_set) x) - { return static_cast<treap_set &>(this->Base::operator=(::boost::move(static_cast<Base&>(x)))); } + { return static_cast<treap_set &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); } static treap_set &container_from_end_iterator(iterator end_iterator) { return static_cast<treap_set &>(Base::container_from_end_iterator(end_iterator)); } @@ -521,15 +542,15 @@ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template<class T, class ...Options> #else -template<class ValueTraits, class VoidOrKeyComp, class VoidOrPrioComp, class SizeType, bool ConstantTimeSize> +template<class ValueTraits, class VoidOrKeyComp, class VoidOrPrioComp, class SizeType, bool ConstantTimeSize, typename HeaderHolder> #endif class treap_multiset_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public treap_impl<ValueTraits, VoidOrKeyComp, VoidOrPrioComp, SizeType, ConstantTimeSize> + : public treap_impl<ValueTraits, VoidOrKeyComp, VoidOrPrioComp, SizeType, ConstantTimeSize, HeaderHolder> #endif { /// @cond - typedef treap_impl<ValueTraits, VoidOrKeyComp, VoidOrPrioComp, SizeType, ConstantTimeSize> tree_type; + typedef treap_impl<ValueTraits, VoidOrKeyComp, VoidOrPrioComp, SizeType, ConstantTimeSize, HeaderHolder> tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(treap_multiset_impl) typedef tree_type implementation_defined; @@ -581,7 +602,7 @@ //! [b, e). //! //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using - //! comp and otherwise N * log N, where N is std::distance(last, first). + //! comp and otherwise N * log N, where N is distance(last, first). //! //! <b>Throws</b>: If value_traits::node_traits::node //! constructor throws (this does not happen with predefined Boost.Intrusive hooks) @@ -597,13 +618,13 @@ //! <b>Effects</b>: to-do //! treap_multiset_impl(BOOST_RV_REF(treap_multiset_impl) x) - : tree_type(::boost::move(static_cast<tree_type&>(x))) + : tree_type(BOOST_MOVE_BASE(tree_type, x)) {} //! <b>Effects</b>: to-do //! treap_multiset_impl& operator=(BOOST_RV_REF(treap_multiset_impl) x) - { return static_cast<treap_multiset_impl&>(tree_type::operator=(::boost::move(static_cast<tree_type&>(x)))); } + { return static_cast<treap_multiset_impl&>(tree_type::operator=(BOOST_MOVE_BASE(tree_type, x))); } #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED //! @copydoc ::boost::intrusive::treap::~treap() @@ -763,10 +784,10 @@ //! @copydoc ::boost::intrusive::treap::count(const KeyType&,KeyValueCompare)const template<class KeyType, class KeyValueCompare> size_type count(const KeyType& key, KeyValueCompare comp) const; - + //! @copydoc ::boost::intrusive::treap::lower_bound(const_reference) iterator lower_bound(const_reference value); - + //! @copydoc ::boost::intrusive::treap::lower_bound(const KeyType&,KeyValueCompare) template<class KeyType, class KeyValueCompare> iterator lower_bound(const KeyType& key, KeyValueCompare comp); @@ -874,14 +895,15 @@ template<class T, class ...Options> #else template<class T, class O1 = void, class O2 = void - , class O3 = void, class O4 = void> + , class O3 = void, class O4 = void + , class O5 = void> #endif struct make_treap_multiset { typedef typename pack_options < treap_defaults, #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) - O1, O2, O3, O4 + O1, O2, O3, O4, O5 #else Options... #endif @@ -896,6 +918,7 @@ , typename packed_options::priority , typename packed_options::size_type , packed_options::constant_time_size + , typename packed_options::header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; @@ -904,14 +927,14 @@ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) -template<class T, class O1, class O2, class O3, class O4> +template<class T, class O1, class O2, class O3, class O4, class O5> #else template<class T, class ...Options> #endif class treap_multiset : public make_treap_multiset<T, #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) - O1, O2, O3, O4 + O1, O2, O3, O4, O5 #else Options... #endif @@ -920,7 +943,7 @@ typedef typename make_treap_multiset <T, #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) - O1, O2, O3, O4 + O1, O2, O3, O4, O5 #else Options... #endif @@ -952,11 +975,11 @@ {} treap_multiset(BOOST_RV_REF(treap_multiset) x) - : Base(::boost::move(static_cast<Base&>(x))) + : Base(BOOST_MOVE_BASE(Base, x)) {} treap_multiset& operator=(BOOST_RV_REF(treap_multiset) x) - { return static_cast<treap_multiset &>(this->Base::operator=(::boost::move(static_cast<Base&>(x)))); } + { return static_cast<treap_multiset &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); } static treap_multiset &container_from_end_iterator(iterator end_iterator) { return static_cast<treap_multiset &>(Base::container_from_end_iterator(end_iterator)); } @@ -978,4 +1001,4 @@ #include <boost/intrusive/detail/config_end.hpp> -#endif //BOOST_INTRUSIVE_TRIE_SET_HPP +#endif //BOOST_INTRUSIVE_TREAP_SET_HPP