mirror of
https://github.com/boostorg/intrusive.git
synced 2025-05-09 23:03:56 +00:00
Reduce the usage of BOOST_INTRUSIVE_FORCEINLINE due to unwanted side effects in some compilers
This commit is contained in:
parent
64b7cb317d
commit
ff11320469
@ -525,46 +525,46 @@ class avl_set
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE avl_set()
|
||||
inline avl_set()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit avl_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit avl_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE avl_set( Iterator b, Iterator e
|
||||
inline avl_set( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE avl_set(BOOST_RV_REF(avl_set) x)
|
||||
inline avl_set(BOOST_RV_REF(avl_set) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE avl_set& operator=(BOOST_RV_REF(avl_set) x)
|
||||
inline avl_set& operator=(BOOST_RV_REF(avl_set) x)
|
||||
{ return static_cast<avl_set &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const avl_set &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const avl_set &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(avl_set) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(avl_set) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static avl_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static avl_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<avl_set &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const avl_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const avl_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const avl_set &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static avl_set &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static avl_set &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<avl_set &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const avl_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const avl_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const avl_set &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
@ -1020,46 +1020,46 @@ class avl_multiset
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE avl_multiset()
|
||||
inline avl_multiset()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit avl_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit avl_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE avl_multiset( Iterator b, Iterator e
|
||||
inline avl_multiset( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE avl_multiset(BOOST_RV_REF(avl_multiset) x)
|
||||
inline avl_multiset(BOOST_RV_REF(avl_multiset) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE avl_multiset& operator=(BOOST_RV_REF(avl_multiset) x)
|
||||
inline avl_multiset& operator=(BOOST_RV_REF(avl_multiset) x)
|
||||
{ return static_cast<avl_multiset &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const avl_multiset &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const avl_multiset &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(avl_multiset) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(avl_multiset) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static avl_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static avl_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<avl_multiset &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const avl_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const avl_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const avl_multiset &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static avl_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static avl_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<avl_multiset &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const avl_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const avl_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const avl_multiset &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
|
@ -535,46 +535,46 @@ class avltree
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE avltree()
|
||||
inline avltree()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit avltree( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit avltree( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE avltree( bool unique, Iterator b, Iterator e
|
||||
inline avltree( bool unique, Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(unique, b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE avltree(BOOST_RV_REF(avltree) x)
|
||||
inline avltree(BOOST_RV_REF(avltree) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE avltree& operator=(BOOST_RV_REF(avltree) x)
|
||||
inline avltree& operator=(BOOST_RV_REF(avltree) x)
|
||||
{ return static_cast<avltree &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const avltree &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const avltree &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(avltree) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(avltree) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static avltree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static avltree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<avltree &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const avltree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const avltree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const avltree &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static avltree &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static avltree &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<avltree &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const avltree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const avltree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const avltree &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
|
@ -42,7 +42,7 @@ struct avltree_node_cloner
|
||||
typedef typename NodeTraits::node_ptr node_ptr;
|
||||
typedef detail::ebo_functor_holder<F> base_t;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE avltree_node_cloner(F f)
|
||||
inline avltree_node_cloner(F f)
|
||||
: base_t(f)
|
||||
{}
|
||||
|
||||
|
@ -522,46 +522,46 @@ class bs_set
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bs_set()
|
||||
inline bs_set()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit bs_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit bs_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE bs_set( Iterator b, Iterator e
|
||||
inline bs_set( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bs_set(BOOST_RV_REF(bs_set) x)
|
||||
inline bs_set(BOOST_RV_REF(bs_set) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bs_set& operator=(BOOST_RV_REF(bs_set) x)
|
||||
inline bs_set& operator=(BOOST_RV_REF(bs_set) x)
|
||||
{ return static_cast<bs_set &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const bs_set &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const bs_set &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(bs_set) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(bs_set) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bs_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static bs_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<bs_set &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const bs_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const bs_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const bs_set &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bs_set &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static bs_set &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<bs_set &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const bs_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const bs_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const bs_set &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
@ -1016,46 +1016,46 @@ class bs_multiset
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bs_multiset()
|
||||
inline bs_multiset()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit bs_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit bs_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE bs_multiset( Iterator b, Iterator e
|
||||
inline bs_multiset( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bs_multiset(BOOST_RV_REF(bs_multiset) x)
|
||||
inline bs_multiset(BOOST_RV_REF(bs_multiset) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bs_multiset& operator=(BOOST_RV_REF(bs_multiset) x)
|
||||
inline bs_multiset& operator=(BOOST_RV_REF(bs_multiset) x)
|
||||
{ return static_cast<bs_multiset &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const bs_multiset &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const bs_multiset &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(bs_multiset) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(bs_multiset) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bs_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static bs_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<bs_multiset &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const bs_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const bs_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const bs_multiset &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bs_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static bs_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<bs_multiset &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const bs_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const bs_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const bs_multiset &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
|
@ -105,7 +105,7 @@ struct bstbase3
|
||||
|
||||
struct holder_t : public ValueTraits
|
||||
{
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit holder_t(const ValueTraits &vtraits)
|
||||
inline explicit holder_t(const ValueTraits &vtraits)
|
||||
: ValueTraits(vtraits)
|
||||
{}
|
||||
header_holder_type root;
|
||||
@ -121,73 +121,73 @@ struct bstbase3
|
||||
return *base;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bstbase3(const ValueTraits &vtraits)
|
||||
inline bstbase3(const ValueTraits &vtraits)
|
||||
: holder(vtraits)
|
||||
{
|
||||
node_algorithms::init_header(this->header_ptr());
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr header_ptr()
|
||||
inline node_ptr header_ptr()
|
||||
{ return holder.root.get_node(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_node_ptr header_ptr() const
|
||||
inline const_node_ptr header_ptr() const
|
||||
{ return holder.root.get_node(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const value_traits &get_value_traits() const
|
||||
inline const value_traits &get_value_traits() const
|
||||
{ return this->holder; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE value_traits &get_value_traits()
|
||||
inline value_traits &get_value_traits()
|
||||
{ return this->holder; }
|
||||
|
||||
typedef typename boost::intrusive::value_traits_pointers
|
||||
<ValueTraits>::const_value_traits_ptr const_value_traits_ptr;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_value_traits_ptr priv_value_traits_ptr() const
|
||||
inline const_value_traits_ptr priv_value_traits_ptr() const
|
||||
{ return pointer_traits<const_value_traits_ptr>::pointer_to(this->get_value_traits()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator begin() BOOST_NOEXCEPT
|
||||
inline iterator begin() BOOST_NOEXCEPT
|
||||
{ return iterator(node_algorithms::begin_node(this->header_ptr()), this->priv_value_traits_ptr()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator begin() const BOOST_NOEXCEPT
|
||||
inline const_iterator begin() const BOOST_NOEXCEPT
|
||||
{ return cbegin(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator cbegin() const BOOST_NOEXCEPT
|
||||
inline const_iterator cbegin() const BOOST_NOEXCEPT
|
||||
{ return const_iterator(node_algorithms::begin_node(this->header_ptr()), this->priv_value_traits_ptr()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator end() BOOST_NOEXCEPT
|
||||
inline iterator end() BOOST_NOEXCEPT
|
||||
{ return iterator(node_algorithms::end_node(this->header_ptr()), this->priv_value_traits_ptr()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator end() const BOOST_NOEXCEPT
|
||||
inline const_iterator end() const BOOST_NOEXCEPT
|
||||
{ return cend(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator cend() const BOOST_NOEXCEPT
|
||||
inline const_iterator cend() const BOOST_NOEXCEPT
|
||||
{ return const_iterator(node_algorithms::end_node(this->header_ptr()), this->priv_value_traits_ptr()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator root()
|
||||
inline iterator root()
|
||||
{ return iterator(node_algorithms::root_node(this->header_ptr()), this->priv_value_traits_ptr()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator root() const
|
||||
inline const_iterator root() const
|
||||
{ return croot(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator croot() const
|
||||
inline const_iterator croot() const
|
||||
{ return const_iterator(node_algorithms::root_node(this->header_ptr()), this->priv_value_traits_ptr()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE reverse_iterator rbegin()
|
||||
inline reverse_iterator rbegin()
|
||||
{ return reverse_iterator(end()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator rbegin() const
|
||||
inline const_reverse_iterator rbegin() const
|
||||
{ return const_reverse_iterator(end()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator crbegin() const
|
||||
inline const_reverse_iterator crbegin() const
|
||||
{ return const_reverse_iterator(end()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE reverse_iterator rend()
|
||||
inline reverse_iterator rend()
|
||||
{ return reverse_iterator(begin()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator rend() const
|
||||
inline const_reverse_iterator rend() const
|
||||
{ return const_reverse_iterator(begin()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator crend() const
|
||||
inline const_reverse_iterator crend() const
|
||||
{ return const_reverse_iterator(begin()); }
|
||||
|
||||
void replace_node(iterator replace_this, reference with_this)
|
||||
@ -199,7 +199,7 @@ struct bstbase3
|
||||
node_algorithms::init(replace_this.pointed_node());
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void rebalance() BOOST_NOEXCEPT
|
||||
inline void rebalance() BOOST_NOEXCEPT
|
||||
{ node_algorithms::rebalance(this->header_ptr()); }
|
||||
|
||||
iterator rebalance_subtree(iterator r) BOOST_NOEXCEPT
|
||||
@ -223,7 +223,7 @@ struct bstbase3
|
||||
const_iterator iterator_to(const_reference value) const BOOST_NOEXCEPT
|
||||
{ return const_iterator (this->get_value_traits().to_node_ptr(*pointer_traits<pointer>::const_cast_from(pointer_traits<const_pointer>::pointer_to(value))), this->priv_value_traits_ptr()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void init_node(reference value)
|
||||
inline static void init_node(reference value)
|
||||
{ node_algorithms::init(value_traits::to_node_ptr(value)); }
|
||||
|
||||
};
|
||||
@ -314,17 +314,17 @@ struct bstbase2
|
||||
typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<const_pointer>::difference_type) difference_type;
|
||||
typedef typename node_algorithms::insert_commit_data insert_commit_data;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE value_compare value_comp() const
|
||||
inline value_compare value_comp() const
|
||||
{ return this->get_comp(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE key_compare key_comp() const
|
||||
inline key_compare key_comp() const
|
||||
{ return this->get_comp().key_comp(); }
|
||||
|
||||
//lower_bound
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator lower_bound(const key_type &key)
|
||||
inline iterator lower_bound(const key_type &key)
|
||||
{ return this->lower_bound(key, this->key_comp()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator lower_bound(const key_type &key) const
|
||||
inline const_iterator lower_bound(const key_type &key) const
|
||||
{ return this->lower_bound(key, this->key_comp()); }
|
||||
|
||||
template<class KeyType, class KeyTypeKeyCompare>
|
||||
@ -342,7 +342,7 @@ struct bstbase2
|
||||
}
|
||||
|
||||
//upper_bound
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator upper_bound(const key_type &key)
|
||||
inline iterator upper_bound(const key_type &key)
|
||||
{ return this->upper_bound(key, this->key_comp()); }
|
||||
|
||||
template<class KeyType, class KeyTypeKeyCompare>
|
||||
@ -352,7 +352,7 @@ struct bstbase2
|
||||
(this->header_ptr(), key, this->key_node_comp(comp)), this->priv_value_traits_ptr());
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator upper_bound(const key_type &key) const
|
||||
inline const_iterator upper_bound(const key_type &key) const
|
||||
{ return this->upper_bound(key, this->key_comp()); }
|
||||
|
||||
template<class KeyType, class KeyTypeKeyCompare>
|
||||
@ -367,13 +367,13 @@ struct bstbase2
|
||||
{ typedef detail::key_nodeptr_comp<KeyTypeKeyCompare, value_traits, key_of_value> type; };
|
||||
|
||||
template<class KeyTypeKeyCompare>
|
||||
BOOST_INTRUSIVE_FORCEINLINE typename key_node_comp_ret<KeyTypeKeyCompare>::type key_node_comp(KeyTypeKeyCompare comp) const
|
||||
inline typename key_node_comp_ret<KeyTypeKeyCompare>::type key_node_comp(KeyTypeKeyCompare comp) const
|
||||
{
|
||||
return detail::key_nodeptr_comp<KeyTypeKeyCompare, value_traits, key_of_value>(comp, &this->get_value_traits());
|
||||
}
|
||||
|
||||
//find
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator find(const key_type &key)
|
||||
inline iterator find(const key_type &key)
|
||||
{ return this->find(key, this->key_comp()); }
|
||||
|
||||
template<class KeyType, class KeyTypeKeyCompare>
|
||||
@ -383,7 +383,7 @@ struct bstbase2
|
||||
(node_algorithms::find(this->header_ptr(), key, this->key_node_comp(comp)), this->priv_value_traits_ptr());
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator find(const key_type &key) const
|
||||
inline const_iterator find(const key_type &key) const
|
||||
{ return this->find(key, this->key_comp()); }
|
||||
|
||||
template<class KeyType, class KeyTypeKeyCompare>
|
||||
@ -394,7 +394,7 @@ struct bstbase2
|
||||
}
|
||||
|
||||
//equal_range
|
||||
BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator,iterator> equal_range(const key_type &key)
|
||||
inline std::pair<iterator,iterator> equal_range(const key_type &key)
|
||||
{ return this->equal_range(key, this->key_comp()); }
|
||||
|
||||
template<class KeyType, class KeyTypeKeyCompare>
|
||||
@ -406,7 +406,7 @@ struct bstbase2
|
||||
, iterator(ret.second, this->priv_value_traits_ptr()));
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE std::pair<const_iterator, const_iterator>
|
||||
inline std::pair<const_iterator, const_iterator>
|
||||
equal_range(const key_type &key) const
|
||||
{ return this->equal_range(key, this->key_comp()); }
|
||||
|
||||
@ -421,7 +421,7 @@ struct bstbase2
|
||||
}
|
||||
|
||||
//lower_bound_range
|
||||
BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator,iterator> lower_bound_range(const key_type &key)
|
||||
inline std::pair<iterator,iterator> lower_bound_range(const key_type &key)
|
||||
{ return this->lower_bound_range(key, this->key_comp()); }
|
||||
|
||||
template<class KeyType, class KeyTypeKeyCompare>
|
||||
@ -433,7 +433,7 @@ struct bstbase2
|
||||
, iterator(ret.second, this->priv_value_traits_ptr()));
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE std::pair<const_iterator, const_iterator>
|
||||
inline std::pair<const_iterator, const_iterator>
|
||||
lower_bound_range(const key_type &key) const
|
||||
{ return this->lower_bound_range(key, this->key_comp()); }
|
||||
|
||||
@ -448,7 +448,7 @@ struct bstbase2
|
||||
}
|
||||
|
||||
//bounded_range
|
||||
BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator,iterator> bounded_range
|
||||
inline std::pair<iterator,iterator> bounded_range
|
||||
(const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed)
|
||||
{ return this->bounded_range(lower_key, upper_key, this->key_comp(), left_closed, right_closed); }
|
||||
|
||||
@ -463,7 +463,7 @@ struct bstbase2
|
||||
, iterator(ret.second, this->priv_value_traits_ptr()));
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE std::pair<const_iterator,const_iterator> bounded_range
|
||||
inline std::pair<const_iterator,const_iterator> bounded_range
|
||||
(const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed) const
|
||||
{ return this->bounded_range(lower_key, upper_key, this->key_comp(), left_closed, right_closed); }
|
||||
|
||||
@ -479,11 +479,11 @@ struct bstbase2
|
||||
}
|
||||
|
||||
//insert_unique_check
|
||||
BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator, bool> insert_unique_check
|
||||
inline std::pair<iterator, bool> insert_unique_check
|
||||
(const key_type &key, insert_commit_data &commit_data)
|
||||
{ return this->insert_unique_check(key, this->key_comp(), commit_data); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator, bool> insert_unique_check
|
||||
inline std::pair<iterator, bool> insert_unique_check
|
||||
(const_iterator hint, const key_type &key, insert_commit_data &commit_data)
|
||||
{ return this->insert_unique_check(hint, key, this->key_comp(), commit_data); }
|
||||
|
||||
@ -528,7 +528,7 @@ struct bstbase_hack
|
||||
typedef typename get_algo
|
||||
<AlgoType, node_traits>::type algo_type;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bstbase_hack(const key_compare & comp, const ValueTraits &vtraits)
|
||||
inline bstbase_hack(const key_compare & comp, const ValueTraits &vtraits)
|
||||
: base_type(comp, vtraits)
|
||||
{
|
||||
this->sz_traits().set_size(size_type(0));
|
||||
@ -536,10 +536,10 @@ struct bstbase_hack
|
||||
|
||||
typedef detail::size_holder<ConstantTimeSize, SizeType> size_traits;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE size_traits &sz_traits()
|
||||
inline size_traits &sz_traits()
|
||||
{ return static_cast<size_traits &>(*this); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const size_traits &sz_traits() const
|
||||
inline const size_traits &sz_traits() const
|
||||
{ return static_cast<const size_traits &>(*this); }
|
||||
};
|
||||
|
||||
@ -551,13 +551,13 @@ struct bstbase_hack<ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, false, SizeTyp
|
||||
typedef bstbase2< ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, AlgoType, HeaderHolder> base_type;
|
||||
typedef typename base_type::value_compare value_compare;
|
||||
typedef typename base_type::key_compare key_compare;
|
||||
BOOST_INTRUSIVE_FORCEINLINE bstbase_hack(const key_compare & comp, const ValueTraits &vtraits)
|
||||
inline bstbase_hack(const key_compare & comp, const ValueTraits &vtraits)
|
||||
: base_type(comp, vtraits)
|
||||
{}
|
||||
|
||||
typedef detail::size_holder<false, SizeType> size_traits;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE size_traits sz_traits() const
|
||||
inline size_traits sz_traits() const
|
||||
{ return size_traits(); }
|
||||
};
|
||||
|
||||
@ -579,7 +579,7 @@ struct bstbase
|
||||
<AlgoType, node_traits>::type node_algorithms;
|
||||
typedef SizeType size_type;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bstbase(const key_compare & comp, const ValueTraits &vtraits)
|
||||
inline bstbase(const key_compare & comp, const ValueTraits &vtraits)
|
||||
: base_type(comp, vtraits)
|
||||
{}
|
||||
|
||||
@ -742,7 +742,7 @@ class bstree_impl
|
||||
|
||||
//! <b>Effects</b>: Equivalent to swap
|
||||
//!
|
||||
BOOST_INTRUSIVE_FORCEINLINE bstree_impl& operator=(BOOST_RV_REF(bstree_impl) x)
|
||||
inline bstree_impl& operator=(BOOST_RV_REF(bstree_impl) x)
|
||||
{ this->swap(x); return *this; }
|
||||
|
||||
#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
@ -2186,46 +2186,46 @@ class bstree
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bstree()
|
||||
inline bstree()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit bstree( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit bstree( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE bstree( bool unique, Iterator b, Iterator e
|
||||
inline bstree( bool unique, Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(unique, b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bstree(BOOST_RV_REF(bstree) x)
|
||||
inline bstree(BOOST_RV_REF(bstree) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bstree& operator=(BOOST_RV_REF(bstree) x)
|
||||
inline bstree& operator=(BOOST_RV_REF(bstree) x)
|
||||
{ return static_cast<bstree &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const bstree &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const bstree &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(bstree) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(bstree) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bstree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static bstree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<bstree &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const bstree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const bstree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const bstree &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bstree &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static bstree &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<bstree &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const bstree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const bstree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const bstree &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
|
@ -38,7 +38,7 @@ namespace intrusive {
|
||||
template <class NodePtr>
|
||||
struct insert_commit_data_t
|
||||
{
|
||||
BOOST_INTRUSIVE_FORCEINLINE insert_commit_data_t()
|
||||
inline insert_commit_data_t()
|
||||
: link_left(false), node()
|
||||
{}
|
||||
bool link_left;
|
||||
@ -67,7 +67,7 @@ struct bstree_node_checker
|
||||
struct return_type
|
||||
: public base_checker_t::return_type
|
||||
{
|
||||
BOOST_INTRUSIVE_FORCEINLINE return_type()
|
||||
inline return_type()
|
||||
: min_key_node_ptr(const_node_ptr()), max_key_node_ptr(const_node_ptr()), node_count(0)
|
||||
{}
|
||||
|
||||
@ -76,7 +76,7 @@ struct bstree_node_checker
|
||||
size_t node_count;
|
||||
};
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bstree_node_checker(const NodePtrCompare& comp, ExtraChecker extra_checker)
|
||||
inline bstree_node_checker(const NodePtrCompare& comp, ExtraChecker extra_checker)
|
||||
: base_checker_t(extra_checker), comp_(comp)
|
||||
{}
|
||||
|
||||
@ -186,14 +186,14 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
template<class Disposer>
|
||||
struct dispose_subtree_disposer
|
||||
{
|
||||
BOOST_INTRUSIVE_FORCEINLINE dispose_subtree_disposer(Disposer &disp, node_ptr subtree)
|
||||
inline dispose_subtree_disposer(Disposer &disp, node_ptr subtree)
|
||||
: disposer_(&disp), subtree_(subtree)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void release()
|
||||
inline void release()
|
||||
{ disposer_ = 0; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ~dispose_subtree_disposer()
|
||||
inline ~dispose_subtree_disposer()
|
||||
{
|
||||
if(disposer_){
|
||||
dispose_subtree(subtree_, *disposer_);
|
||||
@ -213,7 +213,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//! <b>Complexity</b>: Constant time.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr begin_node(const_node_ptr header) BOOST_NOEXCEPT
|
||||
inline static node_ptr begin_node(const_node_ptr header) BOOST_NOEXCEPT
|
||||
{ return node_traits::get_left(header); }
|
||||
|
||||
//! <b>Requires</b>: 'header' is the header node of a tree.
|
||||
@ -223,7 +223,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//! <b>Complexity</b>: Constant time.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr end_node(const_node_ptr header) BOOST_NOEXCEPT
|
||||
inline static node_ptr end_node(const_node_ptr header) BOOST_NOEXCEPT
|
||||
{ return detail::uncast(header); }
|
||||
|
||||
//! <b>Requires</b>: 'header' is the header node of a tree.
|
||||
@ -233,7 +233,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//! <b>Complexity</b>: Constant time.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr root_node(const_node_ptr header) BOOST_NOEXCEPT
|
||||
inline static node_ptr root_node(const_node_ptr header) BOOST_NOEXCEPT
|
||||
{
|
||||
node_ptr p = node_traits::get_parent(header);
|
||||
return p ? p : detail::uncast(header);
|
||||
@ -247,7 +247,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//! <b>Complexity</b>: Constant time.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool unique(const_node_ptr n) BOOST_NOEXCEPT
|
||||
inline static bool unique(const_node_ptr n) BOOST_NOEXCEPT
|
||||
{ return !NodeTraits::get_parent(n); }
|
||||
|
||||
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
||||
@ -456,7 +456,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//! new_node is not equivalent to node_to_be_replaced according to the
|
||||
//! ordering rules. This function is faster than erasing and inserting
|
||||
//! the node, since no rebalancing and comparison is needed. Experimental function
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void replace_node(node_ptr node_to_be_replaced, node_ptr new_node) BOOST_NOEXCEPT
|
||||
inline static void replace_node(node_ptr node_to_be_replaced, node_ptr new_node) BOOST_NOEXCEPT
|
||||
{
|
||||
replace_node(node_to_be_replaced, base_type::get_header(node_to_be_replaced), new_node);
|
||||
}
|
||||
@ -875,7 +875,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//!
|
||||
//! <b>Throws</b>: If "comp" throws.
|
||||
template<class KeyType, class KeyNodePtrCompare>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static std::pair<node_ptr, node_ptr> equal_range
|
||||
inline static std::pair<node_ptr, node_ptr> equal_range
|
||||
(const_node_ptr header, const KeyType &key, KeyNodePtrCompare comp)
|
||||
{
|
||||
return bounded_range(header, key, key, comp, true, true);
|
||||
@ -919,7 +919,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//!
|
||||
//! <b>Throws</b>: If "comp" throws.
|
||||
template<class KeyType, class KeyNodePtrCompare>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr lower_bound
|
||||
inline static node_ptr lower_bound
|
||||
(const_node_ptr header, const KeyType &key, KeyNodePtrCompare comp)
|
||||
{
|
||||
return lower_bound_loop(NodeTraits::get_parent(header), detail::uncast(header), key, comp);
|
||||
@ -937,7 +937,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//!
|
||||
//! <b>Throws</b>: If "comp" throws.
|
||||
template<class KeyType, class KeyNodePtrCompare>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr upper_bound
|
||||
inline static node_ptr upper_bound
|
||||
(const_node_ptr header, const KeyType &key, KeyNodePtrCompare comp)
|
||||
{
|
||||
return upper_bound_loop(NodeTraits::get_parent(header), detail::uncast(header), key, comp);
|
||||
@ -960,7 +960,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//! <b>Notes</b>: This function has only sense if a "insert_unique_check" has been
|
||||
//! previously executed to fill "commit_data". No value should be inserted or
|
||||
//! erased between the "insert_check" and "insert_commit" calls.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void insert_unique_commit
|
||||
inline static void insert_unique_commit
|
||||
(node_ptr header, node_ptr new_value, const insert_commit_data &commit_data) BOOST_NOEXCEPT
|
||||
{ return insert_commit(header, new_value, commit_data); }
|
||||
|
||||
@ -1322,7 +1322,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//! <b>Complexity</b>: Amortized constant time.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void erase(node_ptr header, node_ptr z) BOOST_NOEXCEPT
|
||||
inline static void erase(node_ptr header, node_ptr z) BOOST_NOEXCEPT
|
||||
{
|
||||
data_for_rebalance ignored;
|
||||
erase(header, z, ignored);
|
||||
@ -1341,7 +1341,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//!
|
||||
//! <b>Throws</b>: If the comparison throws.
|
||||
template<class NodePtrCompare>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool transfer_unique
|
||||
inline static bool transfer_unique
|
||||
(node_ptr header1, NodePtrCompare comp, node_ptr header2, node_ptr z)
|
||||
{
|
||||
data_for_rebalance ignored;
|
||||
@ -1358,7 +1358,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//!
|
||||
//! <b>Throws</b>: If the comparison throws.
|
||||
template<class NodePtrCompare>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void transfer_equal
|
||||
inline static void transfer_equal
|
||||
(node_ptr header1, NodePtrCompare comp, node_ptr header2, node_ptr z)
|
||||
{
|
||||
data_for_rebalance ignored;
|
||||
@ -1635,7 +1635,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool is_left_child(node_ptr p) BOOST_NOEXCEPT
|
||||
inline static bool is_left_child(node_ptr p) BOOST_NOEXCEPT
|
||||
{ return NodeTraits::get_left(NodeTraits::get_parent(p)) == p; }
|
||||
|
||||
//! <b>Requires</b>: p is a node of a tree.
|
||||
@ -1645,7 +1645,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool is_right_child(node_ptr p) BOOST_NOEXCEPT
|
||||
inline static bool is_right_child(node_ptr p) BOOST_NOEXCEPT
|
||||
{ return NodeTraits::get_right(NodeTraits::get_parent(p)) == p; }
|
||||
|
||||
static void insert_before_check
|
||||
|
@ -80,7 +80,7 @@ class circular_list_algorithms
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool inited(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static bool inited(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ return !NodeTraits::get_next(this_node); }
|
||||
|
||||
//! <b>Effects</b>: Constructs an empty list, making this_node the only
|
||||
@ -102,7 +102,7 @@ class circular_list_algorithms
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool is_empty(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static bool is_empty(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
{
|
||||
return NodeTraits::get_next(this_node) == this_node;
|
||||
}
|
||||
|
@ -146,7 +146,7 @@ class circular_slist_algorithms
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void init_header(node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static void init_header(node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ NodeTraits::set_next(this_node, this_node); }
|
||||
|
||||
//! <b>Requires</b>: 'p' is the first node of a list.
|
||||
@ -156,7 +156,7 @@ class circular_slist_algorithms
|
||||
//! <b>Complexity</b>: Constant time.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr end_node(const_node_ptr p) BOOST_NOEXCEPT
|
||||
inline static node_ptr end_node(const_node_ptr p) BOOST_NOEXCEPT
|
||||
{ return detail::uncast(p); }
|
||||
|
||||
//! <b>Effects</b>: Returns true if this_node_points to an empty list.
|
||||
@ -164,7 +164,7 @@ class circular_slist_algorithms
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool is_empty(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static bool is_empty(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ return NodeTraits::get_next(this_node) == this_node; }
|
||||
|
||||
//! <b>Effects</b>: Returns true if this_node points to a sentinel node.
|
||||
@ -172,7 +172,7 @@ class circular_slist_algorithms
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool is_sentinel(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static bool is_sentinel(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ return NodeTraits::get_next(this_node) == node_ptr(); }
|
||||
|
||||
//! <b>Effects</b>: Marks this node as a "sentinel" node, a special state that is different from "empty",
|
||||
@ -181,7 +181,7 @@ class circular_slist_algorithms
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void set_sentinel(node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static void set_sentinel(node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ NodeTraits::set_next(this_node, node_ptr()); }
|
||||
|
||||
//! <b>Requires</b>: this_node and prev_init_node must be in the same circular list.
|
||||
@ -193,7 +193,7 @@ class circular_slist_algorithms
|
||||
//! <b>Complexity</b>: Linear to the number of elements between prev_init_node and this_node.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_previous_node(node_ptr prev_init_node, node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static node_ptr get_previous_node(node_ptr prev_init_node, node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ return base_t::get_previous_node(prev_init_node, this_node); }
|
||||
|
||||
//! <b>Requires</b>: this_node must be in a circular list or be an empty circular list.
|
||||
@ -203,7 +203,7 @@ class circular_slist_algorithms
|
||||
//! <b>Complexity</b>: Linear to the number of elements in the circular list.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_previous_node(node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static node_ptr get_previous_node(node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ return base_t::get_previous_node(this_node, this_node); }
|
||||
|
||||
//! <b>Requires</b>: this_node must be in a circular list or be an empty circular list.
|
||||
@ -213,7 +213,7 @@ class circular_slist_algorithms
|
||||
//! <b>Complexity</b>: Linear to the number of elements in the circular list.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_previous_previous_node(node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static node_ptr get_previous_previous_node(node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ return get_previous_previous_node(this_node, this_node); }
|
||||
|
||||
//! <b>Requires</b>: this_node and p must be in the same circular list.
|
||||
@ -276,7 +276,7 @@ class circular_slist_algorithms
|
||||
//! <b>Complexity</b>: Linear to the number of elements in the circular list.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void link_before (node_ptr nxt_node, node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static void link_before (node_ptr nxt_node, node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ base_t::link_after(get_previous_node(nxt_node), this_node); }
|
||||
|
||||
//! <b>Requires</b>: this_node and other_node must be nodes inserted
|
||||
@ -453,7 +453,7 @@ class circular_slist_algorithms
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
template<class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static std::size_t detach_and_dispose(node_ptr p, Disposer disposer) BOOST_NOEXCEPT
|
||||
inline static std::size_t detach_and_dispose(node_ptr p, Disposer disposer) BOOST_NOEXCEPT
|
||||
{ return base_t::unlink_after_and_dispose(p, p, disposer); }
|
||||
};
|
||||
|
||||
|
@ -252,7 +252,7 @@ class any_algorithms
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void init(node_ptr n) BOOST_NOEXCEPT
|
||||
inline static void init(node_ptr n) BOOST_NOEXCEPT
|
||||
{ n->node_ptr_1 = node_ptr(); };
|
||||
|
||||
//! <b>Effects</b>: Returns true if 'n' is in the same state as if called init(node)
|
||||
@ -260,10 +260,10 @@ class any_algorithms
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool inited(const_node_ptr n)
|
||||
inline static bool inited(const_node_ptr n)
|
||||
{ return !n->node_ptr_1; };
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool unique(const_node_ptr n) BOOST_NOEXCEPT
|
||||
inline static bool unique(const_node_ptr n) BOOST_NOEXCEPT
|
||||
{ return !n->node_ptr_1; }
|
||||
|
||||
static void unlink(node_ptr)
|
||||
|
@ -52,7 +52,7 @@ class common_slist_algorithms
|
||||
return p;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void init(node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static void init(node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ NodeTraits::set_next(this_node, node_ptr()); }
|
||||
|
||||
static bool unique(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
@ -61,16 +61,16 @@ class common_slist_algorithms
|
||||
return !next || next == this_node;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool inited(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static bool inited(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ return !NodeTraits::get_next(this_node); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void unlink_after(node_ptr prev_node) BOOST_NOEXCEPT
|
||||
inline static void unlink_after(node_ptr prev_node) BOOST_NOEXCEPT
|
||||
{
|
||||
const_node_ptr this_node(NodeTraits::get_next(prev_node));
|
||||
NodeTraits::set_next(prev_node, NodeTraits::get_next(this_node));
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void unlink_after(node_ptr prev_node, node_ptr last_node) BOOST_NOEXCEPT
|
||||
inline static void unlink_after(node_ptr prev_node, node_ptr last_node) BOOST_NOEXCEPT
|
||||
{ NodeTraits::set_next(prev_node, last_node); }
|
||||
|
||||
static void link_after(node_ptr prev_node, node_ptr this_node) BOOST_NOEXCEPT
|
||||
@ -216,7 +216,7 @@ class common_slist_algorithms
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
template<class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void unlink_after_and_dispose(node_ptr bb, Disposer disposer) BOOST_NOEXCEPT
|
||||
inline static void unlink_after_and_dispose(node_ptr bb, Disposer disposer) BOOST_NOEXCEPT
|
||||
{
|
||||
node_ptr i = node_traits::get_next(bb);
|
||||
node_traits::set_next(bb, node_traits::get_next(i));
|
||||
|
@ -40,14 +40,14 @@ struct default_header_holder : public NodeTraits::node
|
||||
|
||||
default_header_holder() : node() {}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_node_ptr get_node() const
|
||||
inline const_node_ptr get_node() const
|
||||
{ return pointer_traits< const_node_ptr >::pointer_to(*static_cast< const node* >(this)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr get_node()
|
||||
inline node_ptr get_node()
|
||||
{ return pointer_traits< node_ptr >::pointer_to(*static_cast< node* >(this)); }
|
||||
|
||||
// (unsafe) downcast used to implement container-from-iterator
|
||||
BOOST_INTRUSIVE_FORCEINLINE static default_header_holder* get_holder(node_ptr p)
|
||||
inline static default_header_holder* get_holder(node_ptr p)
|
||||
{ return static_cast< default_header_holder* >(boost::movelib::to_raw_pointer(p)); }
|
||||
};
|
||||
|
||||
|
@ -166,57 +166,57 @@ class ebo_functor_holder
|
||||
public:
|
||||
typedef T functor_type;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder()
|
||||
inline ebo_functor_holder()
|
||||
: t_()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit ebo_functor_holder(const T &t)
|
||||
inline explicit ebo_functor_holder(const T &t)
|
||||
: t_(t)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit ebo_functor_holder(BOOST_RV_REF(T) t)
|
||||
inline explicit ebo_functor_holder(BOOST_RV_REF(T) t)
|
||||
: t_(::boost::move(t))
|
||||
{}
|
||||
|
||||
template<class Arg1, class Arg2>
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder(BOOST_FWD_REF(Arg1) arg1, BOOST_FWD_REF(Arg2) arg2)
|
||||
inline ebo_functor_holder(BOOST_FWD_REF(Arg1) arg1, BOOST_FWD_REF(Arg2) arg2)
|
||||
: t_(::boost::forward<Arg1>(arg1), ::boost::forward<Arg2>(arg2))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder(const ebo_functor_holder &x)
|
||||
inline ebo_functor_holder(const ebo_functor_holder &x)
|
||||
: t_(x.t_)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder(BOOST_RV_REF(ebo_functor_holder) x)
|
||||
inline ebo_functor_holder(BOOST_RV_REF(ebo_functor_holder) x)
|
||||
: t_(x.t_)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder& operator=(BOOST_COPY_ASSIGN_REF(ebo_functor_holder) x)
|
||||
inline ebo_functor_holder& operator=(BOOST_COPY_ASSIGN_REF(ebo_functor_holder) x)
|
||||
{
|
||||
this->get() = x.get();
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder& operator=(BOOST_RV_REF(ebo_functor_holder) x)
|
||||
inline ebo_functor_holder& operator=(BOOST_RV_REF(ebo_functor_holder) x)
|
||||
{
|
||||
this->get() = ::boost::move(x.get());
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder& operator=(const T &x)
|
||||
inline ebo_functor_holder& operator=(const T &x)
|
||||
{
|
||||
this->get() = x;
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder& operator=(BOOST_RV_REF(T) x)
|
||||
inline ebo_functor_holder& operator=(BOOST_RV_REF(T) x)
|
||||
{
|
||||
this->get() = ::boost::move(x);
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE T& get(){return t_;}
|
||||
BOOST_INTRUSIVE_FORCEINLINE const T& get()const{return t_;}
|
||||
inline T& get(){return t_;}
|
||||
inline const T& get()const{return t_;}
|
||||
|
||||
private:
|
||||
T t_;
|
||||
@ -231,58 +231,58 @@ class ebo_functor_holder<T, Tag, false>
|
||||
public:
|
||||
typedef T functor_type;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder()
|
||||
inline ebo_functor_holder()
|
||||
: T()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit ebo_functor_holder(const T &t)
|
||||
inline explicit ebo_functor_holder(const T &t)
|
||||
: T(t)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit ebo_functor_holder(BOOST_RV_REF(T) t)
|
||||
inline explicit ebo_functor_holder(BOOST_RV_REF(T) t)
|
||||
: T(::boost::move(t))
|
||||
{}
|
||||
|
||||
template<class Arg1, class Arg2>
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder(BOOST_FWD_REF(Arg1) arg1, BOOST_FWD_REF(Arg2) arg2)
|
||||
inline ebo_functor_holder(BOOST_FWD_REF(Arg1) arg1, BOOST_FWD_REF(Arg2) arg2)
|
||||
: T(::boost::forward<Arg1>(arg1), ::boost::forward<Arg2>(arg2))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder(const ebo_functor_holder &x)
|
||||
inline ebo_functor_holder(const ebo_functor_holder &x)
|
||||
: T(static_cast<const T&>(x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder(BOOST_RV_REF(ebo_functor_holder) x)
|
||||
inline ebo_functor_holder(BOOST_RV_REF(ebo_functor_holder) x)
|
||||
: T(BOOST_MOVE_BASE(T, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder& operator=(BOOST_COPY_ASSIGN_REF(ebo_functor_holder) x)
|
||||
inline ebo_functor_holder& operator=(BOOST_COPY_ASSIGN_REF(ebo_functor_holder) x)
|
||||
{
|
||||
const ebo_functor_holder&r = x;
|
||||
this->get() = r;
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder& operator=(BOOST_RV_REF(ebo_functor_holder) x)
|
||||
inline ebo_functor_holder& operator=(BOOST_RV_REF(ebo_functor_holder) x)
|
||||
{
|
||||
this->get() = ::boost::move(x.get());
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder& operator=(const T &x)
|
||||
inline ebo_functor_holder& operator=(const T &x)
|
||||
{
|
||||
this->get() = x;
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ebo_functor_holder& operator=(BOOST_RV_REF(T) x)
|
||||
inline ebo_functor_holder& operator=(BOOST_RV_REF(T) x)
|
||||
{
|
||||
this->get() = ::boost::move(x);
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE T& get(){return *this;}
|
||||
BOOST_INTRUSIVE_FORCEINLINE const T& get()const{return *this;}
|
||||
inline T& get(){return *this;}
|
||||
inline const T& get()const{return *this;}
|
||||
};
|
||||
|
||||
} //namespace detail {
|
||||
|
@ -39,7 +39,7 @@ class equal_to_value
|
||||
: t_(t)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool operator()(ConstReference t)const
|
||||
inline bool operator()(ConstReference t)const
|
||||
{ return t_ == t; }
|
||||
};
|
||||
|
||||
|
@ -41,7 +41,7 @@ class exception_disposer
|
||||
: cont_(&cont), disp_(disp)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void release()
|
||||
inline void release()
|
||||
{ cont_ = 0; }
|
||||
|
||||
~exception_disposer()
|
||||
|
@ -41,7 +41,7 @@ struct link_dispatch
|
||||
{};
|
||||
|
||||
template<class Hook>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void destructor_impl(Hook &hook, detail::link_dispatch<safe_link>)
|
||||
inline void destructor_impl(Hook &hook, detail::link_dispatch<safe_link>)
|
||||
{ //If this assertion raises, you might have destroyed an object
|
||||
//while it was still inserted in a container that is alive.
|
||||
//If so, remove the object from the container before destroying it.
|
||||
@ -49,11 +49,11 @@ BOOST_INTRUSIVE_FORCEINLINE void destructor_impl(Hook &hook, detail::link_dispat
|
||||
}
|
||||
|
||||
template<class Hook>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void destructor_impl(Hook &hook, detail::link_dispatch<auto_unlink>)
|
||||
inline void destructor_impl(Hook &hook, detail::link_dispatch<auto_unlink>)
|
||||
{ hook.unlink(); }
|
||||
|
||||
template<class Hook>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void destructor_impl(Hook &, detail::link_dispatch<normal_link>)
|
||||
inline void destructor_impl(Hook &, detail::link_dispatch<normal_link>)
|
||||
{}
|
||||
|
||||
} //namespace detail {
|
||||
@ -161,52 +161,52 @@ class generic_hook
|
||||
< NodeTraits
|
||||
, Tag, LinkMode, BaseHookType> hooktags;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr this_ptr() BOOST_NOEXCEPT
|
||||
inline node_ptr this_ptr() BOOST_NOEXCEPT
|
||||
{ return pointer_traits<node_ptr>::pointer_to(static_cast<node&>(*this)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_node_ptr this_ptr() const BOOST_NOEXCEPT
|
||||
inline const_node_ptr this_ptr() const BOOST_NOEXCEPT
|
||||
{ return pointer_traits<const_node_ptr>::pointer_to(static_cast<const node&>(*this)); }
|
||||
|
||||
public:
|
||||
/// @endcond
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE generic_hook() BOOST_NOEXCEPT
|
||||
inline generic_hook() BOOST_NOEXCEPT
|
||||
{
|
||||
if(hooktags::safemode_or_autounlink){
|
||||
node_algorithms::init(this->this_ptr());
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE generic_hook(const generic_hook& ) BOOST_NOEXCEPT
|
||||
inline generic_hook(const generic_hook& ) BOOST_NOEXCEPT
|
||||
{
|
||||
if(hooktags::safemode_or_autounlink){
|
||||
node_algorithms::init(this->this_ptr());
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE generic_hook& operator=(const generic_hook& ) BOOST_NOEXCEPT
|
||||
inline generic_hook& operator=(const generic_hook& ) BOOST_NOEXCEPT
|
||||
{ return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ~generic_hook()
|
||||
inline ~generic_hook()
|
||||
{
|
||||
destructor_impl
|
||||
(*this, detail::link_dispatch<hooktags::link_mode>());
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void swap_nodes(generic_hook &other) BOOST_NOEXCEPT
|
||||
inline void swap_nodes(generic_hook &other) BOOST_NOEXCEPT
|
||||
{
|
||||
node_algorithms::swap_nodes
|
||||
(this->this_ptr(), other.this_ptr());
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool is_linked() const BOOST_NOEXCEPT
|
||||
inline bool is_linked() const BOOST_NOEXCEPT
|
||||
{
|
||||
//is_linked() can be only used in safe-mode or auto-unlink
|
||||
BOOST_STATIC_ASSERT(( hooktags::safemode_or_autounlink ));
|
||||
return !node_algorithms::unique(this->this_ptr());
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void unlink() BOOST_NOEXCEPT
|
||||
inline void unlink() BOOST_NOEXCEPT
|
||||
{
|
||||
BOOST_STATIC_ASSERT(( (int)hooktags::link_mode == (int)auto_unlink ));
|
||||
node_ptr n(this->this_ptr());
|
||||
|
@ -52,25 +52,25 @@ struct bucket_impl
|
||||
typedef detail::common_slist_algorithms<NodeTraits> algo_t;
|
||||
|
||||
public:
|
||||
BOOST_INTRUSIVE_FORCEINLINE bucket_impl()
|
||||
inline bucket_impl()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bucket_impl(const bucket_impl &)
|
||||
inline bucket_impl(const bucket_impl &)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE ~bucket_impl()
|
||||
inline ~bucket_impl()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bucket_impl &operator=(const bucket_impl&)
|
||||
inline bucket_impl &operator=(const bucket_impl&)
|
||||
{ return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr get_node_ptr()
|
||||
inline node_ptr get_node_ptr()
|
||||
{ return pointer_traits<node_ptr>::pointer_to(*this); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_node_ptr get_node_ptr() const
|
||||
inline const_node_ptr get_node_ptr() const
|
||||
{ return pointer_traits<const_node_ptr>::pointer_to(*this); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr begin_ptr()
|
||||
inline node_ptr begin_ptr()
|
||||
{ return node_traits::get_next(get_node_ptr()); }
|
||||
};
|
||||
|
||||
@ -136,7 +136,7 @@ class hashtable_iterator
|
||||
, hashtable_iterator<BucketValueTraits, LinearBuckets, false>
|
||||
, nat>::type nonconst_iterator;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr downcast_bucket(typename bucket_type::node_traits::node_ptr p)
|
||||
inline static node_ptr downcast_bucket(typename bucket_type::node_traits::node_ptr p)
|
||||
{
|
||||
return pointer_traits<node_ptr>::
|
||||
pointer_to(static_cast<typename node_traits::node&>(*p));
|
||||
@ -144,61 +144,61 @@ class hashtable_iterator
|
||||
|
||||
public:
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator ()
|
||||
inline hashtable_iterator ()
|
||||
: slist_it_() //Value initialization to achieve "null iterators" (N3644)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit hashtable_iterator(siterator ptr, const BucketValueTraits *cont)
|
||||
inline explicit hashtable_iterator(siterator ptr, const BucketValueTraits *cont)
|
||||
: slist_it_ (ptr)
|
||||
, traitsptr_ (cont ? pointer_traits<const_bucketvaltraits_ptr>::pointer_to(*cont) : const_bucketvaltraits_ptr() )
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator(const hashtable_iterator &other)
|
||||
inline hashtable_iterator(const hashtable_iterator &other)
|
||||
: slist_it_(other.slist_it()), traitsptr_(other.get_bucket_value_traits())
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator(const nonconst_iterator &other)
|
||||
inline hashtable_iterator(const nonconst_iterator &other)
|
||||
: slist_it_(other.slist_it()), traitsptr_(other.get_bucket_value_traits())
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const siterator &slist_it() const
|
||||
inline const siterator &slist_it() const
|
||||
{ return slist_it_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator<BucketValueTraits, LinearBuckets, false> unconst() const
|
||||
inline hashtable_iterator<BucketValueTraits, LinearBuckets, false> unconst() const
|
||||
{ return hashtable_iterator<BucketValueTraits, LinearBuckets, false>(this->slist_it(), this->get_bucket_value_traits()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator& operator++()
|
||||
inline hashtable_iterator& operator++()
|
||||
{ this->increment(); return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator &operator=(const hashtable_iterator &other)
|
||||
inline hashtable_iterator &operator=(const hashtable_iterator &other)
|
||||
{ slist_it_ = other.slist_it(); traitsptr_ = other.get_bucket_value_traits(); return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator operator++(int)
|
||||
inline hashtable_iterator operator++(int)
|
||||
{
|
||||
hashtable_iterator result (*this);
|
||||
this->increment();
|
||||
return result;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator== (const hashtable_iterator& i, const hashtable_iterator& i2)
|
||||
inline friend bool operator== (const hashtable_iterator& i, const hashtable_iterator& i2)
|
||||
{ return i.slist_it_ == i2.slist_it_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator!= (const hashtable_iterator& i, const hashtable_iterator& i2)
|
||||
inline friend bool operator!= (const hashtable_iterator& i, const hashtable_iterator& i2)
|
||||
{ return !(i == i2); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE reference operator*() const
|
||||
inline reference operator*() const
|
||||
{ return *this->operator ->(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator->() const
|
||||
inline pointer operator->() const
|
||||
{
|
||||
return this->priv_value_traits().to_value_ptr
|
||||
(downcast_bucket(slist_it_.pointed_node()));
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_bucketvaltraits_ptr get_bucket_value_traits() const
|
||||
inline const_bucketvaltraits_ptr get_bucket_value_traits() const
|
||||
{ return traitsptr_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const value_traits &priv_value_traits() const
|
||||
inline const value_traits &priv_value_traits() const
|
||||
{ return traitsptr_->priv_value_traits(); }
|
||||
|
||||
private:
|
||||
@ -281,7 +281,7 @@ class hashtable_iterator<BucketValueTraits, true, IsConst>
|
||||
, hashtable_iterator<BucketValueTraits, true, false>
|
||||
, nat>::type nonconst_iterator;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr downcast_bucket(slist_node_ptr p)
|
||||
inline static node_ptr downcast_bucket(slist_node_ptr p)
|
||||
{
|
||||
return pointer_traits<node_ptr>::
|
||||
pointer_to(static_cast<typename node_traits::node&>(*p));
|
||||
@ -289,67 +289,67 @@ class hashtable_iterator<BucketValueTraits, true, IsConst>
|
||||
|
||||
public:
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator ()
|
||||
inline hashtable_iterator ()
|
||||
: slist_it_() //Value initialization to achieve "null iterators" (N3644)
|
||||
, members_()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit hashtable_iterator(siterator ptr, bucket_ptr bp, const_value_traits_ptr traits_ptr)
|
||||
inline explicit hashtable_iterator(siterator ptr, bucket_ptr bp, const_value_traits_ptr traits_ptr)
|
||||
: slist_it_ (ptr)
|
||||
, members_ (bp, traits_ptr)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator(const hashtable_iterator &other)
|
||||
inline hashtable_iterator(const hashtable_iterator &other)
|
||||
: slist_it_(other.slist_it()), members_(other.get_bucket_ptr(), other.get_value_traits())
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator(const nonconst_iterator &other)
|
||||
inline hashtable_iterator(const nonconst_iterator &other)
|
||||
: slist_it_(other.slist_it()), members_(other.get_bucket_ptr(), other.get_value_traits())
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const siterator &slist_it() const
|
||||
inline const siterator &slist_it() const
|
||||
{ return slist_it_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator<BucketValueTraits, true, false> unconst() const
|
||||
inline hashtable_iterator<BucketValueTraits, true, false> unconst() const
|
||||
{ return hashtable_iterator<BucketValueTraits, true, false>(this->slist_it(), members_.nodeptr_, members_.get_ptr()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator& operator++()
|
||||
inline hashtable_iterator& operator++()
|
||||
{ this->increment(); return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator &operator=(const hashtable_iterator &other)
|
||||
inline hashtable_iterator &operator=(const hashtable_iterator &other)
|
||||
{ slist_it_ = other.slist_it(); members_ = other.members_; return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator operator++(int)
|
||||
inline hashtable_iterator operator++(int)
|
||||
{
|
||||
hashtable_iterator result (*this);
|
||||
this->increment();
|
||||
return result;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator== (const hashtable_iterator& i, const hashtable_iterator& i2)
|
||||
inline friend bool operator== (const hashtable_iterator& i, const hashtable_iterator& i2)
|
||||
{ return i.slist_it_ == i2.slist_it_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator!= (const hashtable_iterator& i, const hashtable_iterator& i2)
|
||||
inline friend bool operator!= (const hashtable_iterator& i, const hashtable_iterator& i2)
|
||||
{ return i.slist_it_ != i2.slist_it_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE reference operator*() const
|
||||
inline reference operator*() const
|
||||
{ return *this->operator ->(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator->() const
|
||||
inline pointer operator->() const
|
||||
{ return this->operator_arrow(detail::bool_<stateful_value_traits>()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_value_traits_ptr get_value_traits() const
|
||||
inline const_value_traits_ptr get_value_traits() const
|
||||
{ return members_.get_ptr(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bucket_ptr get_bucket_ptr() const
|
||||
inline bucket_ptr get_bucket_ptr() const
|
||||
{ return members_.nodeptr_; }
|
||||
|
||||
private:
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator_arrow(detail::false_) const
|
||||
inline pointer operator_arrow(detail::false_) const
|
||||
{ return value_traits::to_value_ptr(downcast_bucket(slist_it_.pointed_node())); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator_arrow(detail::true_) const
|
||||
inline pointer operator_arrow(detail::true_) const
|
||||
{ return this->get_value_traits()->to_value_ptr(downcast_bucket(slist_it_.pointed_node())); }
|
||||
|
||||
void increment()
|
||||
|
@ -28,7 +28,6 @@
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/move/detail/to_raw_pointer.hpp>
|
||||
#include <boost/intrusive/detail/node_holder.hpp>
|
||||
#include <boost/assert.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace intrusive {
|
||||
@ -47,8 +46,6 @@ struct bhtraits_base
|
||||
template rebind_pointer<T>::type pointer;
|
||||
typedef typename pointer_traits<node_ptr>::
|
||||
template rebind_pointer<const T>::type const_pointer;
|
||||
//typedef typename pointer_traits<pointer>::reference reference;
|
||||
//typedef typename pointer_traits<const_pointer>::reference const_reference;
|
||||
typedef T & reference;
|
||||
typedef const T & const_reference;
|
||||
typedef node_holder_type & node_holder_reference;
|
||||
@ -56,35 +53,31 @@ struct bhtraits_base
|
||||
typedef node& node_reference;
|
||||
typedef const node & const_node_reference;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer to_value_ptr(node_ptr n)
|
||||
inline static pointer to_value_ptr(node_ptr n)
|
||||
{
|
||||
pointer p = pointer_traits<pointer>::pointer_to
|
||||
(static_cast<reference>(static_cast<node_holder_reference>(*n)));
|
||||
BOOST_ASSERT(!!p);
|
||||
return p;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const_pointer to_value_ptr(const_node_ptr n)
|
||||
inline static const_pointer to_value_ptr(const_node_ptr n)
|
||||
{
|
||||
const_pointer p = pointer_traits<const_pointer>::pointer_to
|
||||
(static_cast<const_reference>(static_cast<const_node_holder_reference>(*n)));
|
||||
BOOST_ASSERT(!!p);
|
||||
return p;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr to_node_ptr(reference value)
|
||||
inline static node_ptr to_node_ptr(reference value)
|
||||
{
|
||||
node_ptr p = pointer_traits<node_ptr>::pointer_to
|
||||
(static_cast<node_reference>(static_cast<node_holder_reference>(value)));
|
||||
BOOST_ASSERT(!!p);
|
||||
return p;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const_node_ptr to_node_ptr(const_reference value)
|
||||
inline static const_node_ptr to_node_ptr(const_reference value)
|
||||
{
|
||||
const_node_ptr p = pointer_traits<const_node_ptr>::pointer_to
|
||||
(static_cast<const_node_reference>(static_cast<const_node_holder_reference>(value)));
|
||||
BOOST_ASSERT(!!p);
|
||||
return p;
|
||||
}
|
||||
};
|
||||
@ -121,26 +114,26 @@ struct mhtraits
|
||||
|
||||
static const link_mode_type link_mode = Hook::hooktags::link_mode;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr to_node_ptr(reference value)
|
||||
inline static node_ptr to_node_ptr(reference value)
|
||||
{
|
||||
return pointer_traits<node_ptr>::pointer_to
|
||||
(static_cast<node_reference>(static_cast<hook_reference>(value.*P)));
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const_node_ptr to_node_ptr(const_reference value)
|
||||
inline static const_node_ptr to_node_ptr(const_reference value)
|
||||
{
|
||||
return pointer_traits<const_node_ptr>::pointer_to
|
||||
(static_cast<const_node_reference>(static_cast<const_hook_reference>(value.*P)));
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer to_value_ptr(node_ptr n)
|
||||
inline static pointer to_value_ptr(node_ptr n)
|
||||
{
|
||||
return pointer_traits<pointer>::pointer_to
|
||||
(*detail::parent_from_member<T, Hook>
|
||||
(static_cast<Hook*>(boost::movelib::to_raw_pointer(n)), P));
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const_pointer to_value_ptr(const_node_ptr n)
|
||||
inline static const_pointer to_value_ptr(const_node_ptr n)
|
||||
{
|
||||
return pointer_traits<const_pointer>::pointer_to
|
||||
(*detail::parent_from_member<T, Hook>
|
||||
@ -169,23 +162,23 @@ struct fhtraits
|
||||
typedef const value_type & const_reference;
|
||||
static const link_mode_type link_mode = hook_type::hooktags::link_mode;
|
||||
|
||||
static node_ptr to_node_ptr(reference value)
|
||||
inline static node_ptr to_node_ptr(reference value)
|
||||
{ return static_cast<node*>(boost::movelib::to_raw_pointer(Functor::to_hook_ptr(value))); }
|
||||
|
||||
static const_node_ptr to_node_ptr(const_reference value)
|
||||
inline static const_node_ptr to_node_ptr(const_reference value)
|
||||
{ return static_cast<const node*>(boost::movelib::to_raw_pointer(Functor::to_hook_ptr(value))); }
|
||||
|
||||
static pointer to_value_ptr(node_ptr n)
|
||||
inline static pointer to_value_ptr(node_ptr n)
|
||||
{ return Functor::to_value_ptr(to_hook_ptr(n)); }
|
||||
|
||||
static const_pointer to_value_ptr(const_node_ptr n)
|
||||
inline static const_pointer to_value_ptr(const_node_ptr n)
|
||||
{ return Functor::to_value_ptr(to_hook_ptr(n)); }
|
||||
|
||||
private:
|
||||
static hook_ptr to_hook_ptr(node_ptr n)
|
||||
inline static hook_ptr to_hook_ptr(node_ptr n)
|
||||
{ return hook_ptr(&*static_cast<hook_type*>(&*n)); }
|
||||
|
||||
static const_hook_ptr to_hook_ptr(const_node_ptr n)
|
||||
inline static const_hook_ptr to_hook_ptr(const_node_ptr n)
|
||||
{ return const_hook_ptr(&*static_cast<const hook_type*>(&*n)); }
|
||||
};
|
||||
|
||||
|
@ -84,15 +84,15 @@ template<class NodePtr, class StoredPointer, bool StatefulValueTraits = true>
|
||||
struct iiterator_members
|
||||
{
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE iiterator_members()
|
||||
inline iiterator_members()
|
||||
: nodeptr_()//Value initialization to achieve "null iterators" (N3644)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE iiterator_members(const NodePtr &n_ptr, const StoredPointer &data)
|
||||
inline iiterator_members(const NodePtr &n_ptr, const StoredPointer &data)
|
||||
: nodeptr_(n_ptr), ptr_(data)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE StoredPointer get_ptr() const
|
||||
inline StoredPointer get_ptr() const
|
||||
{ return ptr_; }
|
||||
|
||||
NodePtr nodeptr_;
|
||||
@ -102,15 +102,15 @@ struct iiterator_members
|
||||
template<class NodePtr, class StoredPointer>
|
||||
struct iiterator_members<NodePtr, StoredPointer, false>
|
||||
{
|
||||
BOOST_INTRUSIVE_FORCEINLINE iiterator_members()
|
||||
inline iiterator_members()
|
||||
: nodeptr_()//Value initialization to achieve "null iterators" (N3644)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE iiterator_members(const NodePtr &n_ptr, const StoredPointer &)
|
||||
inline iiterator_members(const NodePtr &n_ptr, const StoredPointer &)
|
||||
: nodeptr_(n_ptr)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE StoredPointer get_ptr() const
|
||||
inline StoredPointer get_ptr() const
|
||||
{ return StoredPointer(); }
|
||||
|
||||
NodePtr nodeptr_;
|
||||
|
@ -181,7 +181,7 @@ struct iterator_disable_if_tag_difference_type
|
||||
////////////////////
|
||||
|
||||
template<class InputIt>
|
||||
BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag<InputIt, std::input_iterator_tag>::type
|
||||
inline typename iterator_enable_if_tag<InputIt, std::input_iterator_tag>::type
|
||||
iterator_advance(InputIt& it, typename iter_difference<InputIt>::type n)
|
||||
{
|
||||
while(n--)
|
||||
@ -197,7 +197,7 @@ typename iterator_enable_if_tag<InputIt, std::forward_iterator_tag>::type
|
||||
}
|
||||
|
||||
template<class InputIt>
|
||||
BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag<InputIt, std::bidirectional_iterator_tag>::type
|
||||
inline typename iterator_enable_if_tag<InputIt, std::bidirectional_iterator_tag>::type
|
||||
iterator_advance(InputIt& it, typename iter_difference<InputIt>::type n)
|
||||
{
|
||||
for (; 0 < n; --n)
|
||||
@ -207,14 +207,14 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag<InputIt, std::bidire
|
||||
}
|
||||
|
||||
template<class InputIt, class Distance>
|
||||
BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag<InputIt, std::random_access_iterator_tag>::type
|
||||
inline typename iterator_enable_if_tag<InputIt, std::random_access_iterator_tag>::type
|
||||
iterator_advance(InputIt& it, Distance n)
|
||||
{
|
||||
it += n;
|
||||
}
|
||||
|
||||
template<class InputIt, class Distance>
|
||||
BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag<InputIt, std::random_access_iterator_tag, InputIt>::type
|
||||
inline typename iterator_enable_if_tag<InputIt, std::random_access_iterator_tag, InputIt>::type
|
||||
make_iterator_advance(InputIt it, Distance n)
|
||||
{
|
||||
(iterator_advance)(it, n);
|
||||
@ -222,14 +222,14 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag<InputIt, std::random
|
||||
}
|
||||
|
||||
template<class It>
|
||||
BOOST_INTRUSIVE_FORCEINLINE
|
||||
inline
|
||||
void iterator_uadvance(It& it, typename iter_size<It>::type n)
|
||||
{
|
||||
(iterator_advance)(it, (typename iterator_traits<It>::difference_type)n);
|
||||
}
|
||||
|
||||
template<class It>
|
||||
BOOST_INTRUSIVE_FORCEINLINE
|
||||
inline
|
||||
It make_iterator_uadvance(It it, typename iter_size<It>::type n)
|
||||
{
|
||||
(iterator_uadvance)(it, n);
|
||||
@ -253,7 +253,7 @@ typename iterator_disable_if_tag_difference_type
|
||||
}
|
||||
|
||||
template<class InputIt>
|
||||
BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag_difference_type
|
||||
inline typename iterator_enable_if_tag_difference_type
|
||||
<InputIt, std::random_access_iterator_tag>::type
|
||||
iterator_distance(InputIt first, InputIt last)
|
||||
{
|
||||
@ -266,7 +266,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag_difference_type
|
||||
////////////////////////////////////////
|
||||
|
||||
template<class It>
|
||||
BOOST_INTRUSIVE_FORCEINLINE typename iter_size<It>::type
|
||||
inline typename iter_size<It>::type
|
||||
iterator_udistance(It first, It last)
|
||||
{
|
||||
return (typename iter_size<It>::type)(iterator_distance)(first, last);
|
||||
@ -277,14 +277,14 @@ BOOST_INTRUSIVE_FORCEINLINE typename iter_size<It>::type
|
||||
////////////////////////////////////////
|
||||
|
||||
template<class InputIt>
|
||||
BOOST_INTRUSIVE_FORCEINLINE InputIt iterator_next(InputIt it, typename iter_difference<InputIt>::type n)
|
||||
inline InputIt iterator_next(InputIt it, typename iter_difference<InputIt>::type n)
|
||||
{
|
||||
(iterator_advance)(it, n);
|
||||
return it;
|
||||
}
|
||||
|
||||
template<class InputIt>
|
||||
BOOST_INTRUSIVE_FORCEINLINE InputIt iterator_unext(InputIt it, typename iterator_traits<InputIt>::size_type n)
|
||||
inline InputIt iterator_unext(InputIt it, typename iterator_traits<InputIt>::size_type n)
|
||||
{
|
||||
(iterator_uadvance)(it, n);
|
||||
return it;
|
||||
@ -295,11 +295,11 @@ BOOST_INTRUSIVE_FORCEINLINE InputIt iterator_unext(InputIt it, typename iterator
|
||||
////////////////////////////////////////
|
||||
|
||||
template<class I>
|
||||
BOOST_INTRUSIVE_FORCEINLINE typename iterator_traits<I>::pointer iterator_arrow_result(const I &i)
|
||||
inline typename iterator_traits<I>::pointer iterator_arrow_result(const I &i)
|
||||
{ return i.operator->(); }
|
||||
|
||||
template<class T>
|
||||
BOOST_INTRUSIVE_FORCEINLINE T * iterator_arrow_result(T *p)
|
||||
inline T * iterator_arrow_result(T *p)
|
||||
{ return p; }
|
||||
|
||||
} //namespace intrusive
|
||||
|
@ -78,40 +78,40 @@ public:
|
||||
static const bool value = same_type || is_convertible<P1, const_node_ptr>::value;
|
||||
};
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE base_t base() const
|
||||
inline base_t base() const
|
||||
{ return static_cast<const base_t&>(*this); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE key_nodeptr_comp(KeyTypeKeyCompare kcomp, const ValueTraits *traits)
|
||||
inline key_nodeptr_comp(KeyTypeKeyCompare kcomp, const ValueTraits *traits)
|
||||
: base_t(kcomp), traits_(traits)
|
||||
{}
|
||||
|
||||
//pred(pnode)
|
||||
template<class T1>
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool operator()(const T1 &t1, typename enable_if_c< is_same_or_nodeptr_convertible<T1>::value, sfinae_type* >::type = 0) const
|
||||
inline bool operator()(const T1 &t1, typename enable_if_c< is_same_or_nodeptr_convertible<T1>::value, sfinae_type* >::type = 0) const
|
||||
{ return base().get()(key_of_value()(*traits_->to_value_ptr(t1))); }
|
||||
|
||||
//operator() 2 arg
|
||||
//pred(pnode, pnode)
|
||||
template<class T1, class T2>
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool operator()
|
||||
inline bool operator()
|
||||
(const T1 &t1, const T2 &t2, typename enable_if_c< is_same_or_nodeptr_convertible<T1>::value && is_same_or_nodeptr_convertible<T2>::value, sfinae_type* >::type = 0) const
|
||||
{ return base()(*traits_->to_value_ptr(t1), *traits_->to_value_ptr(t2)); }
|
||||
|
||||
//pred(pnode, key)
|
||||
template<class T1, class T2>
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool operator()
|
||||
inline bool operator()
|
||||
(const T1 &t1, const T2 &t2, typename enable_if_c< is_same_or_nodeptr_convertible<T1>::value && !is_same_or_nodeptr_convertible<T2>::value, sfinae_type* >::type = 0) const
|
||||
{ return base()(*traits_->to_value_ptr(t1), t2); }
|
||||
|
||||
//pred(key, pnode)
|
||||
template<class T1, class T2>
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool operator()
|
||||
inline bool operator()
|
||||
(const T1 &t1, const T2 &t2, typename enable_if_c< !is_same_or_nodeptr_convertible<T1>::value && is_same_or_nodeptr_convertible<T2>::value, sfinae_type* >::type = 0) const
|
||||
{ return base()(t1, *traits_->to_value_ptr(t2)); }
|
||||
|
||||
//pred(key, key)
|
||||
template<class T1, class T2>
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool operator()
|
||||
inline bool operator()
|
||||
(const T1 &t1, const T2 &t2, typename enable_if_c< !is_same_or_nodeptr_convertible<T1>::value && !is_same_or_nodeptr_convertible<T2>::value, sfinae_type* >::type = 0) const
|
||||
{ return base()(t1, t2); }
|
||||
|
||||
|
@ -60,81 +60,81 @@ class list_iterator
|
||||
typedef typename types_t::iterator_type::reference reference;
|
||||
typedef typename types_t::iterator_type::iterator_category iterator_category;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE list_iterator()
|
||||
inline list_iterator()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit list_iterator(node_ptr nodeptr, const_value_traits_ptr traits_ptr)
|
||||
inline explicit list_iterator(node_ptr nodeptr, const_value_traits_ptr traits_ptr)
|
||||
: members_(nodeptr, traits_ptr)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE list_iterator(const list_iterator &other)
|
||||
inline list_iterator(const list_iterator &other)
|
||||
: members_(other.pointed_node(), other.get_value_traits())
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE list_iterator(const nonconst_iterator &other)
|
||||
inline list_iterator(const nonconst_iterator &other)
|
||||
: members_(other.pointed_node(), other.get_value_traits())
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE list_iterator &operator=(const list_iterator &other)
|
||||
inline list_iterator &operator=(const list_iterator &other)
|
||||
{ members_.nodeptr_ = other.members_.nodeptr_; return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr pointed_node() const
|
||||
inline node_ptr pointed_node() const
|
||||
{ return members_.nodeptr_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE list_iterator &operator=(node_ptr nodeptr)
|
||||
inline list_iterator &operator=(node_ptr nodeptr)
|
||||
{ members_.nodeptr_ = nodeptr; return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_value_traits_ptr get_value_traits() const
|
||||
inline const_value_traits_ptr get_value_traits() const
|
||||
{ return members_.get_ptr(); }
|
||||
|
||||
public:
|
||||
BOOST_INTRUSIVE_FORCEINLINE list_iterator& operator++()
|
||||
inline list_iterator& operator++()
|
||||
{
|
||||
node_ptr p = node_traits::get_next(members_.nodeptr_);
|
||||
members_.nodeptr_ = p;
|
||||
return static_cast<list_iterator&> (*this);
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE list_iterator operator++(int)
|
||||
inline list_iterator operator++(int)
|
||||
{
|
||||
list_iterator result (*this);
|
||||
members_.nodeptr_ = node_traits::get_next(members_.nodeptr_);
|
||||
return result;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE list_iterator& operator--()
|
||||
inline list_iterator& operator--()
|
||||
{
|
||||
members_.nodeptr_ = node_traits::get_previous(members_.nodeptr_);
|
||||
return static_cast<list_iterator&> (*this);
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE list_iterator operator--(int)
|
||||
inline list_iterator operator--(int)
|
||||
{
|
||||
list_iterator result (*this);
|
||||
members_.nodeptr_ = node_traits::get_previous(members_.nodeptr_);
|
||||
return result;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator== (const list_iterator& l, const list_iterator& r)
|
||||
inline friend bool operator== (const list_iterator& l, const list_iterator& r)
|
||||
{ return l.pointed_node() == r.pointed_node(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator!= (const list_iterator& l, const list_iterator& r)
|
||||
inline friend bool operator!= (const list_iterator& l, const list_iterator& r)
|
||||
{ return !(l == r); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE reference operator*() const
|
||||
inline reference operator*() const
|
||||
{ return *operator->(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator->() const
|
||||
inline pointer operator->() const
|
||||
{ return this->operator_arrow(detail::bool_<stateful_value_traits>()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE list_iterator<ValueTraits, false> unconst() const
|
||||
inline list_iterator<ValueTraits, false> unconst() const
|
||||
{ return list_iterator<ValueTraits, false>(this->pointed_node(), this->get_value_traits()); }
|
||||
|
||||
private:
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator_arrow(detail::false_) const
|
||||
inline pointer operator_arrow(detail::false_) const
|
||||
{ return ValueTraits::to_value_ptr(members_.nodeptr_); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator_arrow(detail::true_) const
|
||||
inline pointer operator_arrow(detail::true_) const
|
||||
{ return this->get_value_traits()->to_value_ptr(members_.nodeptr_); }
|
||||
|
||||
iiterator_members<node_ptr, const_value_traits_ptr, stateful_value_traits> members_;
|
||||
|
@ -59,7 +59,7 @@ struct node_cloner
|
||||
{}
|
||||
|
||||
// tree-based containers use this method, which is proxy-reference friendly
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr operator()(node_ptr p)
|
||||
inline node_ptr operator()(node_ptr p)
|
||||
{
|
||||
reference_type v = *traits_->to_value_ptr(p);
|
||||
node_ptr n = traits_->to_node_ptr(*base_t::get()(v));
|
||||
@ -85,11 +85,11 @@ struct node_disposer
|
||||
static const bool safemode_or_autounlink =
|
||||
is_safe_autounlink<value_traits::link_mode>::value;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_disposer(F f, const ValueTraits *cont)
|
||||
inline node_disposer(F f, const ValueTraits *cont)
|
||||
: base_t(f), traits_(cont)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void operator()(node_ptr p)
|
||||
inline void operator()(node_ptr p)
|
||||
{
|
||||
BOOST_IF_CONSTEXPR(safemode_or_autounlink)
|
||||
node_algorithms::init(p);
|
||||
|
@ -41,7 +41,7 @@ class init_disposer
|
||||
typedef typename NodeAlgorithms::node_ptr node_ptr;
|
||||
|
||||
public:
|
||||
BOOST_INTRUSIVE_FORCEINLINE void operator()(node_ptr p)
|
||||
inline void operator()(node_ptr p)
|
||||
{ NodeAlgorithms::init(p); }
|
||||
};
|
||||
|
||||
|
@ -33,25 +33,25 @@ struct size_holder
|
||||
static const bool constant_time_size = ConstantSize;
|
||||
typedef SizeType size_type;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE SizeType get_size() const
|
||||
inline SizeType get_size() const
|
||||
{ return size_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void set_size(SizeType size)
|
||||
inline void set_size(SizeType size)
|
||||
{ size_ = size; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void decrement()
|
||||
inline void decrement()
|
||||
{ --size_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void increment()
|
||||
inline void increment()
|
||||
{ ++size_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void increase(SizeType n)
|
||||
inline void increase(SizeType n)
|
||||
{ size_ += n; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void decrease(SizeType n)
|
||||
inline void decrease(SizeType n)
|
||||
{ size_ -= n; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void swap(size_holder &other)
|
||||
inline void swap(size_holder &other)
|
||||
{ SizeType tmp(size_); size_ = other.size_; other.size_ = tmp; }
|
||||
|
||||
SizeType size_;
|
||||
@ -63,25 +63,25 @@ struct size_holder<false, SizeType, Tag>
|
||||
static const bool constant_time_size = false;
|
||||
typedef SizeType size_type;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE size_type get_size() const
|
||||
inline size_type get_size() const
|
||||
{ return 0; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void set_size(size_type)
|
||||
inline void set_size(size_type)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void decrement()
|
||||
inline void decrement()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void increment()
|
||||
inline void increment()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void increase(SizeType)
|
||||
inline void increase(SizeType)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void decrease(SizeType)
|
||||
inline void decrease(SizeType)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void swap(size_holder){}
|
||||
inline void swap(size_holder){}
|
||||
};
|
||||
|
||||
} //namespace detail{
|
||||
|
@ -63,75 +63,75 @@ class slist_iterator
|
||||
typedef typename types_t::iterator_type::reference reference;
|
||||
typedef typename types_t::iterator_type::iterator_category iterator_category;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist_iterator()
|
||||
inline slist_iterator()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist_iterator(node_ptr nodeptr, const_value_traits_ptr traits_ptr)
|
||||
inline slist_iterator(node_ptr nodeptr, const_value_traits_ptr traits_ptr)
|
||||
: members_(nodeptr, traits_ptr)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit slist_iterator(node_ptr nodeptr)
|
||||
inline explicit slist_iterator(node_ptr nodeptr)
|
||||
: members_(nodeptr, const_value_traits_ptr())
|
||||
{ BOOST_STATIC_ASSERT((stateful_value_traits == false)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist_iterator(const slist_iterator &other)
|
||||
inline slist_iterator(const slist_iterator &other)
|
||||
: members_(other.pointed_node(), other.get_value_traits())
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist_iterator(const nonconst_iterator &other)
|
||||
inline slist_iterator(const nonconst_iterator &other)
|
||||
: members_(other.pointed_node(), other.get_value_traits())
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist_iterator &operator=(const slist_iterator &other)
|
||||
inline slist_iterator &operator=(const slist_iterator &other)
|
||||
{ members_.nodeptr_ = other.members_.nodeptr_; return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr pointed_node() const
|
||||
inline node_ptr pointed_node() const
|
||||
{ return members_.nodeptr_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist_iterator &operator=(node_ptr n)
|
||||
inline slist_iterator &operator=(node_ptr n)
|
||||
{ members_.nodeptr_ = n; return static_cast<slist_iterator&>(*this); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_value_traits_ptr get_value_traits() const
|
||||
inline const_value_traits_ptr get_value_traits() const
|
||||
{ return members_.get_ptr(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool operator!() const
|
||||
inline bool operator!() const
|
||||
{ return !members_.nodeptr_; }
|
||||
|
||||
public:
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist_iterator& operator++()
|
||||
inline slist_iterator& operator++()
|
||||
{
|
||||
members_.nodeptr_ = node_traits::get_next(members_.nodeptr_);
|
||||
return static_cast<slist_iterator&> (*this);
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist_iterator operator++(int)
|
||||
inline slist_iterator operator++(int)
|
||||
{
|
||||
slist_iterator result (*this);
|
||||
members_.nodeptr_ = node_traits::get_next(members_.nodeptr_);
|
||||
return result;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator== (const slist_iterator& l, const slist_iterator& r)
|
||||
inline friend bool operator== (const slist_iterator& l, const slist_iterator& r)
|
||||
{ return l.pointed_node() == r.pointed_node(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator!= (const slist_iterator& l, const slist_iterator& r)
|
||||
inline friend bool operator!= (const slist_iterator& l, const slist_iterator& r)
|
||||
{ return l.pointed_node() != r.pointed_node(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE reference operator*() const
|
||||
inline reference operator*() const
|
||||
{ return *operator->(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator->() const
|
||||
inline pointer operator->() const
|
||||
{ return this->operator_arrow(detail::bool_<stateful_value_traits>()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist_iterator<ValueTraits, false> unconst() const
|
||||
inline slist_iterator<ValueTraits, false> unconst() const
|
||||
{ return slist_iterator<ValueTraits, false>(this->pointed_node(), this->get_value_traits()); }
|
||||
|
||||
private:
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator_arrow(detail::false_) const
|
||||
inline pointer operator_arrow(detail::false_) const
|
||||
{ return ValueTraits::to_value_ptr(members_.nodeptr_); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator_arrow(detail::true_) const
|
||||
inline pointer operator_arrow(detail::true_) const
|
||||
{ return this->get_value_traits()->to_value_ptr(members_.nodeptr_); }
|
||||
|
||||
iiterator_members<node_ptr, const_value_traits_ptr, stateful_value_traits> members_;
|
||||
|
@ -33,11 +33,11 @@ namespace detail {
|
||||
template <class PseudoReference>
|
||||
struct operator_arrow_proxy
|
||||
{
|
||||
BOOST_INTRUSIVE_FORCEINLINE operator_arrow_proxy(const PseudoReference &px)
|
||||
inline operator_arrow_proxy(const PseudoReference &px)
|
||||
: m_value(px)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE PseudoReference* operator->() const { return &m_value; }
|
||||
inline PseudoReference* operator->() const { return &m_value; }
|
||||
// This function is needed for MWCW and BCC, which won't call operator->
|
||||
// again automatically per 13.3.1.2 para 8
|
||||
// operator T*() const { return &m_value; }
|
||||
@ -47,11 +47,11 @@ struct operator_arrow_proxy
|
||||
template <class T>
|
||||
struct operator_arrow_proxy<T&>
|
||||
{
|
||||
BOOST_INTRUSIVE_FORCEINLINE operator_arrow_proxy(T &px)
|
||||
inline operator_arrow_proxy(T &px)
|
||||
: m_value(px)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE T* operator->() const { return &m_value; }
|
||||
inline T* operator->() const { return &m_value; }
|
||||
// This function is needed for MWCW and BCC, which won't call operator->
|
||||
// again automatically per 13.3.1.2 para 8
|
||||
// operator T*() const { return &m_value; }
|
||||
@ -76,53 +76,53 @@ class transform_iterator
|
||||
: members_()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE Iterator get_it() const
|
||||
inline Iterator get_it() const
|
||||
{ return members_.m_it; }
|
||||
|
||||
//Constructors
|
||||
BOOST_INTRUSIVE_FORCEINLINE transform_iterator& operator++()
|
||||
inline transform_iterator& operator++()
|
||||
{ increment(); return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE transform_iterator operator++(int)
|
||||
inline transform_iterator operator++(int)
|
||||
{
|
||||
transform_iterator result (*this);
|
||||
increment();
|
||||
return result;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator== (const transform_iterator& i, const transform_iterator& i2)
|
||||
inline friend bool operator== (const transform_iterator& i, const transform_iterator& i2)
|
||||
{ return i.equal(i2); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator!= (const transform_iterator& i, const transform_iterator& i2)
|
||||
inline friend bool operator!= (const transform_iterator& i, const transform_iterator& i2)
|
||||
{ return !(i == i2); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend typename Iterator::difference_type operator- (const transform_iterator& i, const transform_iterator& i2)
|
||||
inline friend typename Iterator::difference_type operator- (const transform_iterator& i, const transform_iterator& i2)
|
||||
{ return i2.distance_to(i); }
|
||||
|
||||
//Arithmetic
|
||||
transform_iterator& operator+=(typename Iterator::difference_type off)
|
||||
{ this->advance(off); return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE transform_iterator operator+(typename Iterator::difference_type off) const
|
||||
inline transform_iterator operator+(typename Iterator::difference_type off) const
|
||||
{
|
||||
transform_iterator other(*this);
|
||||
other.advance(off);
|
||||
return other;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend transform_iterator operator+(typename Iterator::difference_type off, const transform_iterator& right)
|
||||
inline friend transform_iterator operator+(typename Iterator::difference_type off, const transform_iterator& right)
|
||||
{ return right + off; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE transform_iterator& operator-=(typename Iterator::difference_type off)
|
||||
inline transform_iterator& operator-=(typename Iterator::difference_type off)
|
||||
{ this->advance(-off); return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE transform_iterator operator-(typename Iterator::difference_type off) const
|
||||
inline transform_iterator operator-(typename Iterator::difference_type off) const
|
||||
{ return *this + (-off); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE typename UnaryFunction::result_type operator*() const
|
||||
inline typename UnaryFunction::result_type operator*() const
|
||||
{ return dereference(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE operator_arrow_proxy<typename UnaryFunction::result_type>
|
||||
inline operator_arrow_proxy<typename UnaryFunction::result_type>
|
||||
operator->() const
|
||||
{ return operator_arrow_proxy<typename UnaryFunction::result_type>(dereference()); }
|
||||
|
||||
@ -130,27 +130,27 @@ class transform_iterator
|
||||
struct members
|
||||
: UnaryFunction
|
||||
{
|
||||
BOOST_INTRUSIVE_FORCEINLINE members(const Iterator &it, const UnaryFunction &f)
|
||||
inline members(const Iterator &it, const UnaryFunction &f)
|
||||
: UnaryFunction(f), m_it(it)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE members()
|
||||
inline members()
|
||||
{}
|
||||
|
||||
Iterator m_it;
|
||||
} members_;
|
||||
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void increment()
|
||||
inline void increment()
|
||||
{ ++members_.m_it; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void decrement()
|
||||
inline void decrement()
|
||||
{ --members_.m_it; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool equal(const transform_iterator &other) const
|
||||
inline bool equal(const transform_iterator &other) const
|
||||
{ return members_.m_it == other.members_.m_it; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool less(const transform_iterator &other) const
|
||||
inline bool less(const transform_iterator &other) const
|
||||
{ return other.members_.m_it < members_.m_it; }
|
||||
|
||||
typename UnaryFunction::result_type dereference() const
|
||||
|
@ -68,32 +68,32 @@ class tree_iterator
|
||||
typedef typename types_t::iterator_type::reference reference;
|
||||
typedef typename types_t::iterator_type::iterator_category iterator_category;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_iterator()
|
||||
inline tree_iterator()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit tree_iterator(node_ptr nodeptr, const_value_traits_ptr traits_ptr)
|
||||
inline explicit tree_iterator(node_ptr nodeptr, const_value_traits_ptr traits_ptr)
|
||||
: members_(nodeptr, traits_ptr)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_iterator(const tree_iterator &other)
|
||||
inline tree_iterator(const tree_iterator &other)
|
||||
: members_(other.pointed_node(), other.get_value_traits())
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_iterator(const nonconst_iterator &other)
|
||||
inline tree_iterator(const nonconst_iterator &other)
|
||||
: members_(other.pointed_node(), other.get_value_traits())
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_iterator &operator=(const tree_iterator &other)
|
||||
inline tree_iterator &operator=(const tree_iterator &other)
|
||||
{ members_.nodeptr_ = other.members_.nodeptr_; return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_iterator &operator=(node_ptr nodeptr)
|
||||
inline tree_iterator &operator=(node_ptr nodeptr)
|
||||
{ members_.nodeptr_ = nodeptr; return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr pointed_node() const
|
||||
inline node_ptr pointed_node() const
|
||||
{ return members_.nodeptr_; }
|
||||
|
||||
public:
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_iterator& operator++()
|
||||
inline tree_iterator& operator++()
|
||||
{
|
||||
members_.nodeptr_ = node_algorithms::next_node(members_.nodeptr_);
|
||||
return *this;
|
||||
@ -106,7 +106,7 @@ class tree_iterator
|
||||
return result;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_iterator& operator--()
|
||||
inline tree_iterator& operator--()
|
||||
{
|
||||
members_.nodeptr_ = node_algorithms::prev_node(members_.nodeptr_);
|
||||
return *this;
|
||||
@ -119,43 +119,43 @@ class tree_iterator
|
||||
return result;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_iterator& go_left()
|
||||
inline tree_iterator& go_left()
|
||||
{
|
||||
members_.nodeptr_ = node_traits::get_left(members_.nodeptr_);
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_iterator& go_right()
|
||||
inline tree_iterator& go_right()
|
||||
{
|
||||
members_.nodeptr_ = node_traits::get_right(members_.nodeptr_);
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_iterator& go_parent()
|
||||
inline tree_iterator& go_parent()
|
||||
{
|
||||
members_.nodeptr_ = node_traits::get_parent(members_.nodeptr_);
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE operator unspecified_bool_type() const
|
||||
inline operator unspecified_bool_type() const
|
||||
{ return members_.nodeptr_ ? &tree_iterator::unspecified_bool_type_func : 0; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool operator! () const
|
||||
inline bool operator! () const
|
||||
{ return !members_.nodeptr_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator== (const tree_iterator& l, const tree_iterator& r)
|
||||
inline friend bool operator== (const tree_iterator& l, const tree_iterator& r)
|
||||
{ return l.pointed_node() == r.pointed_node(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator!= (const tree_iterator& l, const tree_iterator& r)
|
||||
inline friend bool operator!= (const tree_iterator& l, const tree_iterator& r)
|
||||
{ return !(l == r); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE reference operator*() const
|
||||
inline reference operator*() const
|
||||
{ return *operator->(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator->() const
|
||||
inline pointer operator->() const
|
||||
{ return this->operator_arrow(detail::bool_<stateful_value_traits>()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_value_traits_ptr get_value_traits() const
|
||||
inline const_value_traits_ptr get_value_traits() const
|
||||
{ return members_.get_ptr(); }
|
||||
|
||||
tree_iterator end_iterator_from_it() const
|
||||
@ -167,10 +167,10 @@ class tree_iterator
|
||||
{ return tree_iterator<value_traits, false>(this->pointed_node(), this->get_value_traits()); }
|
||||
|
||||
private:
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator_arrow(detail::false_) const
|
||||
inline pointer operator_arrow(detail::false_) const
|
||||
{ return ValueTraits::to_value_ptr(members_.nodeptr_); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE pointer operator_arrow(detail::true_) const
|
||||
inline pointer operator_arrow(detail::true_) const
|
||||
{ return this->get_value_traits()->to_value_ptr(members_.nodeptr_); }
|
||||
|
||||
iiterator_members<node_ptr, const_value_traits_ptr, stateful_value_traits> members_;
|
||||
|
@ -59,67 +59,67 @@ struct tree_value_compare
|
||||
|
||||
typedef boost::intrusive::detail::ebo_functor_holder<KeyCompare> base_t;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_value_compare()
|
||||
inline tree_value_compare()
|
||||
: base_t()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit tree_value_compare(const key_compare &kcomp)
|
||||
inline explicit tree_value_compare(const key_compare &kcomp)
|
||||
: base_t(kcomp)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_value_compare (const tree_value_compare &x)
|
||||
inline tree_value_compare (const tree_value_compare &x)
|
||||
: base_t(x.base_t::get())
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_value_compare &operator=(const tree_value_compare &x)
|
||||
inline tree_value_compare &operator=(const tree_value_compare &x)
|
||||
{ this->base_t::get() = x.base_t::get(); return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_value_compare &operator=(const key_compare &x)
|
||||
inline tree_value_compare &operator=(const key_compare &x)
|
||||
{ this->base_t::get() = x; return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const key_compare &key_comp() const
|
||||
inline const key_compare &key_comp() const
|
||||
{ return static_cast<const key_compare &>(*this); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()(const key_type &key) const
|
||||
inline Ret operator()(const key_type &key) const
|
||||
{ return this->key_comp()(key); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()(const value_type &value) const
|
||||
inline Ret operator()(const value_type &value) const
|
||||
{ return this->key_comp()(KeyOfValue()(value)); }
|
||||
|
||||
template<class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const U &nonkey
|
||||
inline Ret operator()( const U &nonkey
|
||||
, typename disable_if_smartref_to<U, ValuePtr>::type* = 0) const
|
||||
{ return this->key_comp()(nonkey); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()(const key_type &key1, const key_type &key2) const
|
||||
inline Ret operator()(const key_type &key1, const key_type &key2) const
|
||||
{ return this->key_comp()(key1, key2); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()(const value_type &value1, const value_type &value2) const
|
||||
inline Ret operator()(const value_type &value1, const value_type &value2) const
|
||||
{ return this->key_comp()(KeyOfValue()(value1), KeyOfValue()(value2)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()(const key_type &key1, const value_type &value2) const
|
||||
inline Ret operator()(const key_type &key1, const value_type &value2) const
|
||||
{ return this->key_comp()(key1, KeyOfValue()(value2)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()(const value_type &value1, const key_type &key2) const
|
||||
inline Ret operator()(const value_type &value1, const key_type &key2) const
|
||||
{ return this->key_comp()(KeyOfValue()(value1), key2); }
|
||||
|
||||
template<class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const key_type &key1, const U &nonkey2
|
||||
inline Ret operator()( const key_type &key1, const U &nonkey2
|
||||
, typename disable_if_smartref_to<U, ValuePtr>::type* = 0) const
|
||||
{ return this->key_comp()(key1, nonkey2); }
|
||||
|
||||
template<class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const U &nonkey1, const key_type &key2
|
||||
inline Ret operator()( const U &nonkey1, const key_type &key2
|
||||
, typename disable_if_smartref_to<U, ValuePtr>::type* = 0) const
|
||||
{ return this->key_comp()(nonkey1, key2); }
|
||||
|
||||
template<class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const value_type &value1, const U &nonvalue2
|
||||
inline Ret operator()( const value_type &value1, const U &nonvalue2
|
||||
, typename disable_if_smartref_to<U, ValuePtr>::type* = 0) const
|
||||
{ return this->key_comp()(KeyOfValue()(value1), nonvalue2); }
|
||||
|
||||
template<class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const U &nonvalue1, const value_type &value2
|
||||
inline Ret operator()( const U &nonvalue1, const value_type &value2
|
||||
, typename disable_if_smartref_to<U, ValuePtr>::type* = 0) const
|
||||
{ return this->key_comp()(nonvalue1, KeyOfValue()(value2)); }
|
||||
};
|
||||
@ -137,45 +137,45 @@ struct tree_value_compare<ValuePtr, KeyCompare, KeyOfValue, Ret, true>
|
||||
typedef boost::intrusive::detail::ebo_functor_holder<KeyCompare> base_t;
|
||||
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_value_compare()
|
||||
inline tree_value_compare()
|
||||
: base_t()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit tree_value_compare(const key_compare &kcomp)
|
||||
inline explicit tree_value_compare(const key_compare &kcomp)
|
||||
: base_t(kcomp)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_value_compare (const tree_value_compare &x)
|
||||
inline tree_value_compare (const tree_value_compare &x)
|
||||
: base_t(x.base_t::get())
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_value_compare &operator=(const tree_value_compare &x)
|
||||
inline tree_value_compare &operator=(const tree_value_compare &x)
|
||||
{ this->base_t::get() = x.base_t::get(); return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE tree_value_compare &operator=(const key_compare &x)
|
||||
inline tree_value_compare &operator=(const key_compare &x)
|
||||
{ this->base_t::get() = x; return *this; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const key_compare &key_comp() const
|
||||
inline const key_compare &key_comp() const
|
||||
{ return static_cast<const key_compare &>(*this); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()(const key_type &key) const
|
||||
inline Ret operator()(const key_type &key) const
|
||||
{ return this->key_comp()(key); }
|
||||
|
||||
template<class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const U &nonkey
|
||||
inline Ret operator()( const U &nonkey
|
||||
, typename disable_if_smartref_to<U, ValuePtr>::type* = 0) const
|
||||
{ return this->key_comp()(nonkey); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()(const key_type &key1, const key_type &key2) const
|
||||
inline Ret operator()(const key_type &key1, const key_type &key2) const
|
||||
{ return this->key_comp()(key1, key2); }
|
||||
|
||||
template<class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const key_type &key1, const U &nonkey2
|
||||
inline Ret operator()( const key_type &key1, const U &nonkey2
|
||||
, typename disable_if_smartref_to<U, ValuePtr>::type* = 0) const
|
||||
{ return this->key_comp()(key1, nonkey2); }
|
||||
|
||||
template<class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE Ret operator()(const U &nonkey1, const key_type &key2
|
||||
inline Ret operator()(const U &nonkey1, const key_type &key2
|
||||
, typename disable_if_smartref_to<U, ValuePtr>::type* = 0) const
|
||||
{ return this->key_comp()(nonkey1, key2); }
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -151,7 +151,7 @@ class linear_slist_algorithms
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void init_header(node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static void init_header(node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ NodeTraits::set_next(this_node, node_ptr ()); }
|
||||
|
||||
//! <b>Requires</b>: 'p' is the first node of a list.
|
||||
@ -161,7 +161,7 @@ class linear_slist_algorithms
|
||||
//! <b>Complexity</b>: Constant time.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr end_node(const_node_ptr) BOOST_NOEXCEPT
|
||||
inline static node_ptr end_node(const_node_ptr) BOOST_NOEXCEPT
|
||||
{ return node_ptr(); }
|
||||
|
||||
//! <b>Effects</b>: Returns true if this_node_points to an empty list.
|
||||
@ -169,7 +169,7 @@ class linear_slist_algorithms
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool is_empty(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static bool is_empty(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ return !NodeTraits::get_next(this_node); }
|
||||
|
||||
//! <b>Effects</b>: Returns true if this_node points to a sentinel node.
|
||||
@ -177,7 +177,7 @@ class linear_slist_algorithms
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static bool is_sentinel(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static bool is_sentinel(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ return NodeTraits::get_next(this_node) == this_node; }
|
||||
|
||||
//! <b>Effects</b>: Marks this node as a "sentinel" node, a special state that is different from "empty",
|
||||
@ -186,7 +186,7 @@ class linear_slist_algorithms
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void set_sentinel(node_ptr this_node) BOOST_NOEXCEPT
|
||||
inline static void set_sentinel(node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ NodeTraits::set_next(this_node, this_node); }
|
||||
|
||||
//! <b>Requires</b>: this_node and prev_init_node must be in the same linear list.
|
||||
@ -198,7 +198,7 @@ class linear_slist_algorithms
|
||||
//! <b>Complexity</b>: Linear to the number of elements between prev_init_node and this_node.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr
|
||||
inline static node_ptr
|
||||
get_previous_node(node_ptr prev_init_node, node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ return base_t::get_previous_node(prev_init_node, this_node); }
|
||||
|
||||
@ -230,7 +230,7 @@ class linear_slist_algorithms
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void swap_trailing_nodes(node_ptr this_node, node_ptr other_node) BOOST_NOEXCEPT
|
||||
inline static void swap_trailing_nodes(node_ptr this_node, node_ptr other_node) BOOST_NOEXCEPT
|
||||
{
|
||||
node_ptr this_nxt = NodeTraits::get_next(this_node);
|
||||
node_ptr other_nxt = NodeTraits::get_next(other_node);
|
||||
@ -400,7 +400,7 @@ class linear_slist_algorithms
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
template<class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static std::size_t detach_and_dispose(node_ptr p, Disposer disposer) BOOST_NOEXCEPT
|
||||
inline static std::size_t detach_and_dispose(node_ptr p, Disposer disposer) BOOST_NOEXCEPT
|
||||
{ return base_t::unlink_after_and_dispose(p, node_ptr(), disposer); }
|
||||
};
|
||||
|
||||
|
@ -127,10 +127,10 @@ class list_impl
|
||||
((int)value_traits::link_mode == (int)auto_unlink)
|
||||
));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr get_root_node()
|
||||
inline node_ptr get_root_node()
|
||||
{ return data_.root_plus_size_.m_header.get_node(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_node_ptr get_root_node() const
|
||||
inline const_node_ptr get_root_node() const
|
||||
{ return data_.root_plus_size_.m_header.get_node(); }
|
||||
|
||||
struct root_plus_size : public size_traits
|
||||
@ -141,29 +141,29 @@ class list_impl
|
||||
struct data_t : public value_traits
|
||||
{
|
||||
typedef typename list_impl::value_traits value_traits;
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit data_t(const value_traits &val_traits)
|
||||
inline explicit data_t(const value_traits &val_traits)
|
||||
: value_traits(val_traits)
|
||||
{}
|
||||
|
||||
root_plus_size root_plus_size_;
|
||||
} data_;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE size_traits &priv_size_traits() BOOST_NOEXCEPT
|
||||
inline size_traits &priv_size_traits() BOOST_NOEXCEPT
|
||||
{ return data_.root_plus_size_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const size_traits &priv_size_traits() const BOOST_NOEXCEPT
|
||||
inline const size_traits &priv_size_traits() const BOOST_NOEXCEPT
|
||||
{ return data_.root_plus_size_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const value_traits &priv_value_traits() const BOOST_NOEXCEPT
|
||||
inline const value_traits &priv_value_traits() const BOOST_NOEXCEPT
|
||||
{ return data_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE value_traits &priv_value_traits() BOOST_NOEXCEPT
|
||||
inline value_traits &priv_value_traits() BOOST_NOEXCEPT
|
||||
{ return data_; }
|
||||
|
||||
typedef typename boost::intrusive::value_traits_pointers
|
||||
<ValueTraits>::const_value_traits_ptr const_value_traits_ptr;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_value_traits_ptr priv_value_traits_ptr() const BOOST_NOEXCEPT
|
||||
inline const_value_traits_ptr priv_value_traits_ptr() const BOOST_NOEXCEPT
|
||||
{ return pointer_traits<const_value_traits_ptr>::pointer_to(this->priv_value_traits()); }
|
||||
|
||||
/// @endcond
|
||||
@ -364,7 +364,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE reference front() BOOST_NOEXCEPT
|
||||
inline reference front() BOOST_NOEXCEPT
|
||||
{ return *priv_value_traits().to_value_ptr(node_traits::get_next(this->get_root_node())); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_reference to the first element of the list.
|
||||
@ -372,7 +372,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reference front() const BOOST_NOEXCEPT
|
||||
inline const_reference front() const BOOST_NOEXCEPT
|
||||
{ return *priv_value_traits().to_value_ptr(node_traits::get_next(this->get_root_node())); }
|
||||
|
||||
//! <b>Effects</b>: Returns a reference to the last element of the list.
|
||||
@ -380,7 +380,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE reference back() BOOST_NOEXCEPT
|
||||
inline reference back() BOOST_NOEXCEPT
|
||||
{ return *priv_value_traits().to_value_ptr(node_traits::get_previous(this->get_root_node())); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_reference to the last element of the list.
|
||||
@ -388,7 +388,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reference back() const BOOST_NOEXCEPT
|
||||
inline const_reference back() const BOOST_NOEXCEPT
|
||||
{ return *priv_value_traits().to_value_ptr(detail::uncast(node_traits::get_previous(this->get_root_node()))); }
|
||||
|
||||
//! <b>Effects</b>: Returns an iterator to the first element contained in the list.
|
||||
@ -396,7 +396,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator begin() BOOST_NOEXCEPT
|
||||
inline iterator begin() BOOST_NOEXCEPT
|
||||
{ return iterator(node_traits::get_next(this->get_root_node()), this->priv_value_traits_ptr()); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
|
||||
@ -404,7 +404,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator begin() const BOOST_NOEXCEPT
|
||||
inline const_iterator begin() const BOOST_NOEXCEPT
|
||||
{ return this->cbegin(); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
|
||||
@ -412,7 +412,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator cbegin() const BOOST_NOEXCEPT
|
||||
inline const_iterator cbegin() const BOOST_NOEXCEPT
|
||||
{ return const_iterator(node_traits::get_next(this->get_root_node()), this->priv_value_traits_ptr()); }
|
||||
|
||||
//! <b>Effects</b>: Returns an iterator to the end of the list.
|
||||
@ -420,7 +420,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator end() BOOST_NOEXCEPT
|
||||
inline iterator end() BOOST_NOEXCEPT
|
||||
{ return iterator(this->get_root_node(), this->priv_value_traits_ptr()); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_iterator to the end of the list.
|
||||
@ -428,7 +428,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator end() const BOOST_NOEXCEPT
|
||||
inline const_iterator end() const BOOST_NOEXCEPT
|
||||
{ return this->cend(); }
|
||||
|
||||
//! <b>Effects</b>: Returns a constant iterator to the end of the list.
|
||||
@ -436,7 +436,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator cend() const BOOST_NOEXCEPT
|
||||
inline const_iterator cend() const BOOST_NOEXCEPT
|
||||
{ return const_iterator(detail::uncast(this->get_root_node()), this->priv_value_traits_ptr()); }
|
||||
|
||||
//! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
|
||||
@ -445,7 +445,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE reverse_iterator rbegin() BOOST_NOEXCEPT
|
||||
inline reverse_iterator rbegin() BOOST_NOEXCEPT
|
||||
{ return reverse_iterator(this->end()); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
||||
@ -454,7 +454,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator rbegin() const BOOST_NOEXCEPT
|
||||
inline const_reverse_iterator rbegin() const BOOST_NOEXCEPT
|
||||
{ return this->crbegin(); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
||||
@ -463,7 +463,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator crbegin() const BOOST_NOEXCEPT
|
||||
inline const_reverse_iterator crbegin() const BOOST_NOEXCEPT
|
||||
{ return const_reverse_iterator(end()); }
|
||||
|
||||
//! <b>Effects</b>: Returns a reverse_iterator pointing to the end
|
||||
@ -472,7 +472,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE reverse_iterator rend() BOOST_NOEXCEPT
|
||||
inline reverse_iterator rend() BOOST_NOEXCEPT
|
||||
{ return reverse_iterator(begin()); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
||||
@ -481,7 +481,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator rend() const BOOST_NOEXCEPT
|
||||
inline const_reverse_iterator rend() const BOOST_NOEXCEPT
|
||||
{ return this->crend(); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
||||
@ -490,7 +490,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator crend() const BOOST_NOEXCEPT
|
||||
inline const_reverse_iterator crend() const BOOST_NOEXCEPT
|
||||
{ return const_reverse_iterator(this->begin()); }
|
||||
|
||||
//! <b>Precondition</b>: end_iterator must be a valid end iterator
|
||||
@ -501,7 +501,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static list_impl &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static list_impl &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return list_impl::priv_container_from_end_iterator(end_iterator); }
|
||||
|
||||
//! <b>Precondition</b>: end_iterator must be a valid end const_iterator
|
||||
@ -512,7 +512,7 @@ class list_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const list_impl &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const list_impl &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return list_impl::priv_container_from_end_iterator(end_iterator); }
|
||||
|
||||
//! <b>Effects</b>: Returns the number of the elements contained in the list.
|
||||
@ -523,7 +523,7 @@ class list_impl
|
||||
//! if constant-time size option is disabled. Constant time otherwise.
|
||||
//!
|
||||
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
||||
BOOST_INTRUSIVE_FORCEINLINE size_type size() const BOOST_NOEXCEPT
|
||||
inline size_type size() const BOOST_NOEXCEPT
|
||||
{
|
||||
BOOST_IF_CONSTEXPR(constant_time_size)
|
||||
return this->priv_size_traits().get_size();
|
||||
@ -538,7 +538,7 @@ class list_impl
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool empty() const BOOST_NOEXCEPT
|
||||
inline bool empty() const BOOST_NOEXCEPT
|
||||
{ return node_algorithms::unique(this->get_root_node()); }
|
||||
|
||||
//! <b>Effects</b>: Swaps the elements of x and *this.
|
||||
@ -563,7 +563,7 @@ class list_impl
|
||||
//! <b>Complexity</b>: Linear to the number of shifts.
|
||||
//!
|
||||
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
||||
BOOST_INTRUSIVE_FORCEINLINE void shift_backwards(size_type n = 1) BOOST_NOEXCEPT
|
||||
inline void shift_backwards(size_type n = 1) BOOST_NOEXCEPT
|
||||
{ node_algorithms::move_forward(this->get_root_node(), n); }
|
||||
|
||||
//! <b>Effects</b>: Moves forward all the elements, so that the second
|
||||
@ -575,7 +575,7 @@ class list_impl
|
||||
//! <b>Complexity</b>: Linear to the number of shifts.
|
||||
//!
|
||||
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
||||
BOOST_INTRUSIVE_FORCEINLINE void shift_forward(size_type n = 1) BOOST_NOEXCEPT
|
||||
inline void shift_forward(size_type n = 1) BOOST_NOEXCEPT
|
||||
{ node_algorithms::move_backwards(this->get_root_node(), n); }
|
||||
|
||||
//! <b>Effects</b>: Erases the element pointed by i of the list.
|
||||
@ -590,7 +590,7 @@ class list_impl
|
||||
//!
|
||||
//! <b>Note</b>: Invalidates the iterators (but not the references) to the
|
||||
//! erased element.
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator erase(const_iterator i) BOOST_NOEXCEPT
|
||||
inline iterator erase(const_iterator i) BOOST_NOEXCEPT
|
||||
{ return this->erase_and_dispose(i, detail::null_disposer()); }
|
||||
|
||||
//! <b>Requires</b>: b and e must be valid iterators to elements in *this.
|
||||
@ -608,7 +608,7 @@ class list_impl
|
||||
//!
|
||||
//! <b>Note</b>: Invalidates the iterators (but not the references) to the
|
||||
//! erased elements.
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator erase(const_iterator b, const_iterator e) BOOST_NOEXCEPT
|
||||
inline iterator erase(const_iterator b, const_iterator e) BOOST_NOEXCEPT
|
||||
{
|
||||
BOOST_IF_CONSTEXPR(safemode_or_autounlink || constant_time_size){
|
||||
return this->erase_and_dispose(b, e, detail::null_disposer());
|
||||
@ -1371,22 +1371,22 @@ class list_impl
|
||||
return ::boost::intrusive::algo_equal(x.cbegin(), x.cend(), y.cbegin(), y.cend());
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator!=(const list_impl &x, const list_impl &y)
|
||||
inline friend bool operator!=(const list_impl &x, const list_impl &y)
|
||||
{ return !(x == y); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator<(const list_impl &x, const list_impl &y)
|
||||
inline friend bool operator<(const list_impl &x, const list_impl &y)
|
||||
{ return ::boost::intrusive::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator>(const list_impl &x, const list_impl &y)
|
||||
inline friend bool operator>(const list_impl &x, const list_impl &y)
|
||||
{ return y < x; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator<=(const list_impl &x, const list_impl &y)
|
||||
inline friend bool operator<=(const list_impl &x, const list_impl &y)
|
||||
{ return !(y < x); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator>=(const list_impl &x, const list_impl &y)
|
||||
inline friend bool operator>=(const list_impl &x, const list_impl &y)
|
||||
{ return !(x < y); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE friend void swap(list_impl &x, list_impl &y) BOOST_NOEXCEPT
|
||||
inline friend void swap(list_impl &x, list_impl &y) BOOST_NOEXCEPT
|
||||
{ x.swap(y); }
|
||||
|
||||
/// @cond
|
||||
@ -1474,38 +1474,38 @@ class list
|
||||
typedef typename Base::iterator iterator;
|
||||
typedef typename Base::const_iterator const_iterator;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE list()
|
||||
inline list()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit list(const value_traits &v_traits)
|
||||
inline explicit list(const value_traits &v_traits)
|
||||
: Base(v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE list(Iterator b, Iterator e, const value_traits &v_traits = value_traits())
|
||||
inline list(Iterator b, Iterator e, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE list(BOOST_RV_REF(list) x)
|
||||
inline list(BOOST_RV_REF(list) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE list& operator=(BOOST_RV_REF(list) x)
|
||||
inline list& operator=(BOOST_RV_REF(list) x)
|
||||
{ return static_cast<list &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const list &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const list &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(list) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(list) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static list &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static list &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<list &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const list &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const list &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const list &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
};
|
||||
|
||||
|
@ -130,7 +130,7 @@ struct pointer_traits
|
||||
//!
|
||||
//! <b>Note</b>: For non-conforming compilers only the existence of a member function called
|
||||
//! <code>pointer_to</code> is checked.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer pointer_to(reference r) BOOST_NOEXCEPT
|
||||
inline static pointer pointer_to(reference r) BOOST_NOEXCEPT
|
||||
{
|
||||
//Non-standard extension, it does not require Ptr::pointer_to. If not present
|
||||
//tries to converts &r to pointer.
|
||||
@ -150,7 +150,7 @@ struct pointer_traits
|
||||
//! <b>Note</b>: For non-conforming compilers only the existence of a member function called
|
||||
//! <code>static_cast_from</code> is checked.
|
||||
template<class UPtr>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer static_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
|
||||
inline static pointer static_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
|
||||
{
|
||||
typedef const UPtr &RefArg;
|
||||
const bool value = boost::intrusive::detail::
|
||||
@ -171,7 +171,7 @@ struct pointer_traits
|
||||
//! <b>Note</b>: For non-conforming compilers only the existence of a member function called
|
||||
//! <code>const_cast_from</code> is checked.
|
||||
template<class UPtr>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer const_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
|
||||
inline static pointer const_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
|
||||
{
|
||||
typedef const UPtr &RefArg;
|
||||
const bool value = boost::intrusive::detail::
|
||||
@ -192,7 +192,7 @@ struct pointer_traits
|
||||
//! <b>Note</b>: For non-conforming compilers only the existence of a member function called
|
||||
//! <code>dynamic_cast_from</code> is checked.
|
||||
template<class UPtr>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer dynamic_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
|
||||
inline static pointer dynamic_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
|
||||
{
|
||||
typedef const UPtr &RefArg;
|
||||
const bool value = boost::intrusive::detail::
|
||||
@ -208,46 +208,46 @@ struct pointer_traits
|
||||
private:
|
||||
//priv_to_raw_pointer
|
||||
template <class T>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static T* to_raw_pointer(T* p) BOOST_NOEXCEPT
|
||||
inline static T* to_raw_pointer(T* p) BOOST_NOEXCEPT
|
||||
{ return p; }
|
||||
|
||||
template <class Pointer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static typename pointer_traits<Pointer>::element_type*
|
||||
inline static typename pointer_traits<Pointer>::element_type*
|
||||
to_raw_pointer(const Pointer &p) BOOST_NOEXCEPT
|
||||
{ return pointer_traits::to_raw_pointer(p.operator->()); }
|
||||
|
||||
//priv_pointer_to
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_pointer_to(boost::intrusive::detail::true_, reference r) BOOST_NOEXCEPT
|
||||
inline static pointer priv_pointer_to(boost::intrusive::detail::true_, reference r) BOOST_NOEXCEPT
|
||||
{ return Ptr::pointer_to(r); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_pointer_to(boost::intrusive::detail::false_, reference r) BOOST_NOEXCEPT
|
||||
inline static pointer priv_pointer_to(boost::intrusive::detail::false_, reference r) BOOST_NOEXCEPT
|
||||
{ return pointer(boost::intrusive::detail::addressof(r)); }
|
||||
|
||||
//priv_static_cast_from
|
||||
template<class UPtr>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_static_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||
inline static pointer priv_static_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||
{ return Ptr::static_cast_from(uptr); }
|
||||
|
||||
template<class UPtr>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_static_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||
inline static pointer priv_static_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||
{ return uptr ? pointer_to(*static_cast<element_type*>(to_raw_pointer(uptr))) : pointer(); }
|
||||
|
||||
//priv_const_cast_from
|
||||
template<class UPtr>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_const_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||
inline static pointer priv_const_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||
{ return Ptr::const_cast_from(uptr); }
|
||||
|
||||
template<class UPtr>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_const_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||
inline static pointer priv_const_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||
{ return uptr ? pointer_to(const_cast<element_type&>(*uptr)) : pointer(); }
|
||||
|
||||
//priv_dynamic_cast_from
|
||||
template<class UPtr>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_dynamic_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||
inline static pointer priv_dynamic_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||
{ return Ptr::dynamic_cast_from(uptr); }
|
||||
|
||||
template<class UPtr>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_dynamic_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||
inline static pointer priv_dynamic_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||
{ return uptr ? pointer_to(dynamic_cast<element_type&>(*uptr)) : pointer(); }
|
||||
///@endcond
|
||||
};
|
||||
@ -296,25 +296,25 @@ struct pointer_traits<T*>
|
||||
|
||||
//! <b>Returns</b>: addressof(r)
|
||||
//!
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer pointer_to(reference r) BOOST_NOEXCEPT
|
||||
inline static pointer pointer_to(reference r) BOOST_NOEXCEPT
|
||||
{ return boost::intrusive::detail::addressof(r); }
|
||||
|
||||
//! <b>Returns</b>: static_cast<pointer>(uptr)
|
||||
//!
|
||||
template<class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer static_cast_from(U *uptr) BOOST_NOEXCEPT
|
||||
inline static pointer static_cast_from(U *uptr) BOOST_NOEXCEPT
|
||||
{ return static_cast<pointer>(uptr); }
|
||||
|
||||
//! <b>Returns</b>: const_cast<pointer>(uptr)
|
||||
//!
|
||||
template<class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer const_cast_from(U *uptr) BOOST_NOEXCEPT
|
||||
inline static pointer const_cast_from(U *uptr) BOOST_NOEXCEPT
|
||||
{ return const_cast<pointer>(uptr); }
|
||||
|
||||
//! <b>Returns</b>: dynamic_cast<pointer>(uptr)
|
||||
//!
|
||||
template<class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static pointer dynamic_cast_from(U *uptr) BOOST_NOEXCEPT
|
||||
inline static pointer dynamic_cast_from(U *uptr) BOOST_NOEXCEPT
|
||||
{ return dynamic_cast<pointer>(uptr); }
|
||||
};
|
||||
|
||||
|
@ -31,7 +31,7 @@ namespace intrusive {
|
||||
namespace adldft {
|
||||
|
||||
template<class T, class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool priority_order(const T &t, const U &u)
|
||||
inline bool priority_order(const T &t, const U &u)
|
||||
{ return t < u; }
|
||||
|
||||
} //namespace adldft {
|
||||
@ -46,7 +46,7 @@ struct priority_compare
|
||||
typedef T second_argument_type;
|
||||
typedef bool result_type;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool operator()(const T &val, const T &val2) const
|
||||
inline bool operator()(const T &val, const T &val2) const
|
||||
{
|
||||
using adldft::priority_order;
|
||||
return priority_order(val, val2);
|
||||
@ -57,7 +57,7 @@ template <>
|
||||
struct priority_compare<void>
|
||||
{
|
||||
template<class T, class U>
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool operator()(const T &t, const U &u) const
|
||||
inline bool operator()(const T &t, const U &u) const
|
||||
{
|
||||
using adldft::priority_order;
|
||||
return priority_order(t, u);
|
||||
|
@ -538,46 +538,46 @@ class rbtree
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE rbtree()
|
||||
inline rbtree()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit rbtree( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit rbtree( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE rbtree( bool unique, Iterator b, Iterator e
|
||||
inline rbtree( bool unique, Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(unique, b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE rbtree(BOOST_RV_REF(rbtree) x)
|
||||
inline rbtree(BOOST_RV_REF(rbtree) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE rbtree& operator=(BOOST_RV_REF(rbtree) x)
|
||||
inline rbtree& operator=(BOOST_RV_REF(rbtree) x)
|
||||
{ return static_cast<rbtree &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const rbtree &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const rbtree &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(rbtree) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(rbtree) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static rbtree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static rbtree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<rbtree &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const rbtree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const rbtree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const rbtree &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static rbtree &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static rbtree &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<rbtree &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const rbtree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const rbtree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const rbtree &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
|
@ -525,46 +525,46 @@ class set
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE set()
|
||||
inline set()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE set( Iterator b, Iterator e
|
||||
inline set( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE set(BOOST_RV_REF(set) x)
|
||||
inline set(BOOST_RV_REF(set) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE set& operator=(BOOST_RV_REF(set) x)
|
||||
inline set& operator=(BOOST_RV_REF(set) x)
|
||||
{ return static_cast<set &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const set &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const set &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(set) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(set) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<set &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const set &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static set &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static set &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<set &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const set &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
@ -1020,46 +1020,46 @@ class multiset
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE multiset()
|
||||
inline multiset()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE multiset( Iterator b, Iterator e
|
||||
inline multiset( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE multiset(BOOST_RV_REF(multiset) x)
|
||||
inline multiset(BOOST_RV_REF(multiset) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE multiset& operator=(BOOST_RV_REF(multiset) x)
|
||||
inline multiset& operator=(BOOST_RV_REF(multiset) x)
|
||||
{ return static_cast<multiset &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const multiset &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const multiset &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(multiset) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(multiset) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<multiset &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const multiset &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<multiset &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const multiset &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
|
@ -534,46 +534,46 @@ class sg_set
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE sg_set()
|
||||
inline sg_set()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit sg_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit sg_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE sg_set( Iterator b, Iterator e
|
||||
inline sg_set( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE sg_set(BOOST_RV_REF(sg_set) x)
|
||||
inline sg_set(BOOST_RV_REF(sg_set) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE sg_set& operator=(BOOST_RV_REF(sg_set) x)
|
||||
inline sg_set& operator=(BOOST_RV_REF(sg_set) x)
|
||||
{ return static_cast<sg_set &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const sg_set &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const sg_set &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(sg_set) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(sg_set) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static sg_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static sg_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<sg_set &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const sg_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const sg_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const sg_set &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static sg_set &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static sg_set &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<sg_set &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const sg_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const sg_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const sg_set &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
@ -1041,46 +1041,46 @@ class sg_multiset
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE sg_multiset()
|
||||
inline sg_multiset()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit sg_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit sg_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE sg_multiset( Iterator b, Iterator e
|
||||
inline sg_multiset( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE sg_multiset(BOOST_RV_REF(sg_multiset) x)
|
||||
inline sg_multiset(BOOST_RV_REF(sg_multiset) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE sg_multiset& operator=(BOOST_RV_REF(sg_multiset) x)
|
||||
inline sg_multiset& operator=(BOOST_RV_REF(sg_multiset) x)
|
||||
{ return static_cast<sg_multiset &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const sg_multiset &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const sg_multiset &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(sg_multiset) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(sg_multiset) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static sg_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static sg_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<sg_multiset &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const sg_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const sg_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const sg_multiset &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static sg_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static sg_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<sg_multiset &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const sg_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const sg_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const sg_multiset &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
|
@ -1020,46 +1020,46 @@ class sgtree
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE sgtree()
|
||||
inline sgtree()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit sgtree(const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit sgtree(const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE sgtree( bool unique, Iterator b, Iterator e
|
||||
inline sgtree( bool unique, Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(unique, b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE sgtree(BOOST_RV_REF(sgtree) x)
|
||||
inline sgtree(BOOST_RV_REF(sgtree) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE sgtree& operator=(BOOST_RV_REF(sgtree) x)
|
||||
inline sgtree& operator=(BOOST_RV_REF(sgtree) x)
|
||||
{ return static_cast<sgtree &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const sgtree &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const sgtree &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(sgtree) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(sgtree) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static sgtree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static sgtree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<sgtree &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const sgtree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const sgtree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const sgtree &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static sgtree &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static sgtree &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<sgtree &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const sgtree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const sgtree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const sgtree &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
|
@ -287,7 +287,7 @@ class sgtree_algorithms
|
||||
|
||||
//! @copydoc ::boost::intrusive::bstree_algorithms::insert_unique_commit(node_ptr,node_ptr,const insert_commit_data&)
|
||||
template<class H_Alpha>
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void insert_unique_commit
|
||||
inline static void insert_unique_commit
|
||||
(node_ptr header, node_ptr new_value, const insert_commit_data &commit_data
|
||||
,std::size_t tree_size, H_Alpha h_alpha, std::size_t &max_tree_size)
|
||||
{ return insert_commit(header, new_value, commit_data, tree_size, h_alpha, max_tree_size); }
|
||||
|
@ -172,47 +172,47 @@ class slist_impl
|
||||
//A list with cached last node is incompatible with auto-unlink hooks!
|
||||
BOOST_STATIC_ASSERT(!(cache_last && ((int)value_traits::link_mode == (int)auto_unlink)));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr get_end_node()
|
||||
inline node_ptr get_end_node()
|
||||
{ return node_algorithms::end_node(this->get_root_node()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_node_ptr get_end_node() const
|
||||
inline const_node_ptr get_end_node() const
|
||||
{ return node_algorithms::end_node(this->get_root_node()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr get_root_node()
|
||||
inline node_ptr get_root_node()
|
||||
{ return data_.root_plus_size_.header_holder_.get_node(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_node_ptr get_root_node() const
|
||||
inline const_node_ptr get_root_node() const
|
||||
{ return data_.root_plus_size_.header_holder_.get_node(); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr get_last_node()
|
||||
inline node_ptr get_last_node()
|
||||
{ return this->get_last_node(detail::bool_<cache_last>()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_node_ptr get_last_node() const
|
||||
inline const_node_ptr get_last_node() const
|
||||
{ return this->get_last_node(detail::bool_<cache_last>()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void set_last_node(node_ptr n)
|
||||
inline void set_last_node(node_ptr n)
|
||||
{ return this->set_last_node(n, detail::bool_<cache_last>()); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_last_node(detail::bool_<false>)
|
||||
inline static node_ptr get_last_node(detail::bool_<false>)
|
||||
{
|
||||
//This function shall not be used if cache_last is not true
|
||||
BOOST_INTRUSIVE_INVARIANT_ASSERT(cache_last);
|
||||
return node_ptr();
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void set_last_node(node_ptr , detail::bool_<false>)
|
||||
inline static void set_last_node(node_ptr , detail::bool_<false>)
|
||||
{
|
||||
//This function shall not be used if cache_last is not true
|
||||
BOOST_INTRUSIVE_INVARIANT_ASSERT(cache_last);
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr get_last_node(detail::bool_<true>)
|
||||
inline node_ptr get_last_node(detail::bool_<true>)
|
||||
{ return node_ptr(data_.root_plus_size_.last_); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_node_ptr get_last_node(detail::bool_<true>) const
|
||||
inline const_node_ptr get_last_node(detail::bool_<true>) const
|
||||
{ return const_node_ptr(data_.root_plus_size_.last_); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE void set_last_node(node_ptr n, detail::bool_<true>)
|
||||
inline void set_last_node(node_ptr n, detail::bool_<true>)
|
||||
{ data_.root_plus_size_.last_ = n; }
|
||||
|
||||
void set_default_constructed_state()
|
||||
@ -241,22 +241,22 @@ class slist_impl
|
||||
root_plus_size root_plus_size_;
|
||||
} data_;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE size_traits &priv_size_traits()
|
||||
inline size_traits &priv_size_traits()
|
||||
{ return data_.root_plus_size_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const size_traits &priv_size_traits() const
|
||||
inline const size_traits &priv_size_traits() const
|
||||
{ return data_.root_plus_size_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const value_traits &priv_value_traits() const
|
||||
inline const value_traits &priv_value_traits() const
|
||||
{ return data_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE value_traits &priv_value_traits()
|
||||
inline value_traits &priv_value_traits()
|
||||
{ return data_; }
|
||||
|
||||
typedef typename boost::intrusive::value_traits_pointers
|
||||
<ValueTraits>::const_value_traits_ptr const_value_traits_ptr;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_value_traits_ptr priv_value_traits_ptr() const
|
||||
inline const_value_traits_ptr priv_value_traits_ptr() const
|
||||
{ return pointer_traits<const_value_traits_ptr>::pointer_to(this->priv_value_traits()); }
|
||||
|
||||
/// @endcond
|
||||
@ -501,7 +501,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE reference front() BOOST_NOEXCEPT
|
||||
inline reference front() BOOST_NOEXCEPT
|
||||
{ return *this->priv_value_traits().to_value_ptr(node_traits::get_next(this->get_root_node())); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_reference to the first element of the list.
|
||||
@ -509,7 +509,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reference front() const BOOST_NOEXCEPT
|
||||
inline const_reference front() const BOOST_NOEXCEPT
|
||||
{ return *this->priv_value_traits().to_value_ptr(detail::uncast(node_traits::get_next(this->get_root_node()))); }
|
||||
|
||||
//! <b>Effects</b>: Returns a reference to the last element of the list.
|
||||
@ -534,7 +534,7 @@ class slist_impl
|
||||
//!
|
||||
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
||||
//! This function is only available is cache_last<> is true.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reference back() const BOOST_NOEXCEPT
|
||||
inline const_reference back() const BOOST_NOEXCEPT
|
||||
{
|
||||
BOOST_STATIC_ASSERT((cache_last));
|
||||
return *this->priv_value_traits().to_value_ptr(this->get_last_node());
|
||||
@ -545,7 +545,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator begin() BOOST_NOEXCEPT
|
||||
inline iterator begin() BOOST_NOEXCEPT
|
||||
{ return iterator (node_traits::get_next(this->get_root_node()), this->priv_value_traits_ptr()); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
|
||||
@ -553,7 +553,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator begin() const BOOST_NOEXCEPT
|
||||
inline const_iterator begin() const BOOST_NOEXCEPT
|
||||
{ return const_iterator (node_traits::get_next(this->get_root_node()), this->priv_value_traits_ptr()); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
|
||||
@ -561,7 +561,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator cbegin() const BOOST_NOEXCEPT
|
||||
inline const_iterator cbegin() const BOOST_NOEXCEPT
|
||||
{ return const_iterator(node_traits::get_next(this->get_root_node()), this->priv_value_traits_ptr()); }
|
||||
|
||||
//! <b>Effects</b>: Returns an iterator to the end of the list.
|
||||
@ -569,7 +569,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator end() BOOST_NOEXCEPT
|
||||
inline iterator end() BOOST_NOEXCEPT
|
||||
{ return iterator(this->get_end_node(), this->priv_value_traits_ptr()); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_iterator to the end of the list.
|
||||
@ -577,7 +577,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator end() const BOOST_NOEXCEPT
|
||||
inline const_iterator end() const BOOST_NOEXCEPT
|
||||
{ return const_iterator(detail::uncast(this->get_end_node()), this->priv_value_traits_ptr()); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_iterator to the end of the list.
|
||||
@ -585,7 +585,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator cend() const BOOST_NOEXCEPT
|
||||
inline const_iterator cend() const BOOST_NOEXCEPT
|
||||
{ return this->end(); }
|
||||
|
||||
//! <b>Effects</b>: Returns an iterator that points to a position
|
||||
@ -594,7 +594,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator before_begin() BOOST_NOEXCEPT
|
||||
inline iterator before_begin() BOOST_NOEXCEPT
|
||||
{ return iterator(this->get_root_node(), this->priv_value_traits_ptr()); }
|
||||
|
||||
//! <b>Effects</b>: Returns an iterator that points to a position
|
||||
@ -603,7 +603,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator before_begin() const BOOST_NOEXCEPT
|
||||
inline const_iterator before_begin() const BOOST_NOEXCEPT
|
||||
{ return const_iterator(detail::uncast(this->get_root_node()), this->priv_value_traits_ptr()); }
|
||||
|
||||
//! <b>Effects</b>: Returns an iterator that points to a position
|
||||
@ -612,7 +612,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator cbefore_begin() const BOOST_NOEXCEPT
|
||||
inline const_iterator cbefore_begin() const BOOST_NOEXCEPT
|
||||
{ return this->before_begin(); }
|
||||
|
||||
//! <b>Effects</b>: Returns an iterator to the last element contained in the list.
|
||||
@ -622,7 +622,7 @@ class slist_impl
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Note</b>: This function is present only if cached_last<> option is true.
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator last() BOOST_NOEXCEPT
|
||||
inline iterator last() BOOST_NOEXCEPT
|
||||
{
|
||||
//This function shall not be used if cache_last is not true
|
||||
BOOST_INTRUSIVE_INVARIANT_ASSERT(cache_last);
|
||||
@ -636,7 +636,7 @@ class slist_impl
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Note</b>: This function is present only if cached_last<> option is true.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator last() const BOOST_NOEXCEPT
|
||||
inline const_iterator last() const BOOST_NOEXCEPT
|
||||
{
|
||||
//This function shall not be used if cache_last is not true
|
||||
BOOST_INTRUSIVE_INVARIANT_ASSERT(cache_last);
|
||||
@ -650,7 +650,7 @@ class slist_impl
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Note</b>: This function is present only if cached_last<> option is true.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator clast() const BOOST_NOEXCEPT
|
||||
inline const_iterator clast() const BOOST_NOEXCEPT
|
||||
{ return const_iterator(this->get_last_node(), this->priv_value_traits_ptr()); }
|
||||
|
||||
//! <b>Precondition</b>: end_iterator must be a valid end iterator
|
||||
@ -661,7 +661,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static slist_impl &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static slist_impl &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return slist_impl::priv_container_from_end_iterator(end_iterator); }
|
||||
|
||||
//! <b>Precondition</b>: end_iterator must be a valid end const_iterator
|
||||
@ -672,7 +672,7 @@ class slist_impl
|
||||
//! <b>Throws</b>: Nothing.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const slist_impl &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const slist_impl &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return slist_impl::priv_container_from_end_iterator(end_iterator); }
|
||||
|
||||
//! <b>Effects</b>: Returns the number of the elements contained in the list.
|
||||
@ -683,7 +683,7 @@ class slist_impl
|
||||
//! if constant_time_size is false. Constant time otherwise.
|
||||
//!
|
||||
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
||||
BOOST_INTRUSIVE_FORCEINLINE size_type size() const BOOST_NOEXCEPT
|
||||
inline size_type size() const BOOST_NOEXCEPT
|
||||
{
|
||||
BOOST_IF_CONSTEXPR(constant_time_size)
|
||||
return this->priv_size_traits().get_size();
|
||||
@ -698,7 +698,7 @@ class slist_impl
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
||||
BOOST_INTRUSIVE_FORCEINLINE bool empty() const BOOST_NOEXCEPT
|
||||
inline bool empty() const BOOST_NOEXCEPT
|
||||
{ return node_algorithms::is_empty(this->get_root_node()); }
|
||||
|
||||
//! <b>Effects</b>: Swaps the elements of x and *this.
|
||||
@ -2195,45 +2195,45 @@ class slist
|
||||
typedef typename Base::size_type size_type;
|
||||
typedef typename Base::node_ptr node_ptr;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist()
|
||||
inline slist()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit slist(const value_traits &v_traits)
|
||||
inline explicit slist(const value_traits &v_traits)
|
||||
: Base(v_traits)
|
||||
{}
|
||||
|
||||
struct incorporate_t{};
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist( node_ptr f, node_ptr before_l
|
||||
inline slist( node_ptr f, node_ptr before_l
|
||||
, size_type n, const value_traits &v_traits = value_traits())
|
||||
: Base(f, before_l, n, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist(Iterator b, Iterator e, const value_traits &v_traits = value_traits())
|
||||
inline slist(Iterator b, Iterator e, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist(BOOST_RV_REF(slist) x)
|
||||
inline slist(BOOST_RV_REF(slist) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE slist& operator=(BOOST_RV_REF(slist) x)
|
||||
inline slist& operator=(BOOST_RV_REF(slist) x)
|
||||
{ return static_cast<slist &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const slist &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const slist &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(slist) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(slist) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static slist &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static slist &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<slist &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const slist &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const slist &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const slist &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
};
|
||||
|
||||
|
@ -546,46 +546,46 @@ class splay_set
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE splay_set()
|
||||
inline splay_set()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit splay_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit splay_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE splay_set( Iterator b, Iterator e
|
||||
inline splay_set( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE splay_set(BOOST_RV_REF(splay_set) x)
|
||||
inline splay_set(BOOST_RV_REF(splay_set) x)
|
||||
: Base(::boost::move(static_cast<Base&>(x)))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE splay_set& operator=(BOOST_RV_REF(splay_set) x)
|
||||
inline splay_set& operator=(BOOST_RV_REF(splay_set) x)
|
||||
{ return static_cast<splay_set &>(this->Base::operator=(::boost::move(static_cast<Base&>(x)))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const splay_set &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const splay_set &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(splay_set) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(splay_set) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static splay_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static splay_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<splay_set &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const splay_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const splay_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const splay_set &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static splay_set &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static splay_set &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<splay_set &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const splay_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const splay_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const splay_set &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
@ -1057,46 +1057,46 @@ class splay_multiset
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE splay_multiset()
|
||||
inline splay_multiset()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit splay_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit splay_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE splay_multiset( Iterator b, Iterator e
|
||||
inline splay_multiset( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE splay_multiset(BOOST_RV_REF(splay_multiset) x)
|
||||
inline splay_multiset(BOOST_RV_REF(splay_multiset) x)
|
||||
: Base(::boost::move(static_cast<Base&>(x)))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE splay_multiset& operator=(BOOST_RV_REF(splay_multiset) x)
|
||||
inline splay_multiset& operator=(BOOST_RV_REF(splay_multiset) x)
|
||||
{ return static_cast<splay_multiset &>(this->Base::operator=(::boost::move(static_cast<Base&>(x)))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const splay_multiset &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const splay_multiset &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(splay_multiset) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(splay_multiset) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static splay_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static splay_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<splay_multiset &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const splay_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const splay_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const splay_multiset &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static splay_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static splay_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<splay_multiset &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const splay_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const splay_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const splay_multiset &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
|
@ -613,46 +613,46 @@ class splaytree
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE splaytree()
|
||||
inline splaytree()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit splaytree( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
inline explicit splaytree( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE splaytree( bool unique, Iterator b, Iterator e
|
||||
inline splaytree( bool unique, Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(unique, b, e, cmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE splaytree(BOOST_RV_REF(splaytree) x)
|
||||
inline splaytree(BOOST_RV_REF(splaytree) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE splaytree& operator=(BOOST_RV_REF(splaytree) x)
|
||||
inline splaytree& operator=(BOOST_RV_REF(splaytree) x)
|
||||
{ return static_cast<splaytree &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const splaytree &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const splaytree &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(splaytree) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(splaytree) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static splaytree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static splaytree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<splaytree &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const splaytree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const splaytree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const splaytree &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static splaytree &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static splaytree &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<splaytree &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const splaytree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const splaytree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const splaytree &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
|
@ -255,7 +255,7 @@ class treap_impl
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator top() BOOST_NOEXCEPT
|
||||
inline iterator top() BOOST_NOEXCEPT
|
||||
{ return this->tree_type::root(); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_iterator pointing to the highest priority object of the treap..
|
||||
@ -263,7 +263,7 @@ class treap_impl
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator top() const BOOST_NOEXCEPT
|
||||
inline const_iterator top() const BOOST_NOEXCEPT
|
||||
{ return this->ctop(); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_iterator pointing to the highest priority object of the treap..
|
||||
@ -271,7 +271,7 @@ class treap_impl
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator ctop() const BOOST_NOEXCEPT
|
||||
inline const_iterator ctop() const BOOST_NOEXCEPT
|
||||
{ return this->tree_type::root(); }
|
||||
|
||||
#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
@ -310,7 +310,7 @@ class treap_impl
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE reverse_iterator rtop() BOOST_NOEXCEPT
|
||||
inline reverse_iterator rtop() BOOST_NOEXCEPT
|
||||
{ return reverse_iterator(this->top()); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the highest priority objec
|
||||
@ -319,7 +319,7 @@ class treap_impl
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator rtop() const BOOST_NOEXCEPT
|
||||
inline const_reverse_iterator rtop() const BOOST_NOEXCEPT
|
||||
{ return const_reverse_iterator(this->top()); }
|
||||
|
||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the highest priority object
|
||||
@ -328,7 +328,7 @@ class treap_impl
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator crtop() const BOOST_NOEXCEPT
|
||||
inline const_reverse_iterator crtop() const BOOST_NOEXCEPT
|
||||
{ return const_reverse_iterator(this->top()); }
|
||||
|
||||
#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
@ -1315,49 +1315,49 @@ class treap
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE treap()
|
||||
inline treap()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit treap( const key_compare &cmp
|
||||
inline explicit treap( const key_compare &cmp
|
||||
, const priority_compare &pcmp = priority_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, pcmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE treap( bool unique, Iterator b, Iterator e
|
||||
inline treap( bool unique, Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const priority_compare &pcmp = priority_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(unique, b, e, cmp, pcmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE treap(BOOST_RV_REF(treap) x)
|
||||
inline treap(BOOST_RV_REF(treap) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE treap& operator=(BOOST_RV_REF(treap) x)
|
||||
inline treap& operator=(BOOST_RV_REF(treap) x)
|
||||
{ return static_cast<treap&>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const treap &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const treap &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(treap) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(treap) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static treap &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static treap &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<treap &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const treap &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const treap &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const treap &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static treap &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static treap &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<treap &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const treap &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const treap &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const treap &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
|
@ -172,6 +172,10 @@ class treap_algorithms
|
||||
/// @endcond
|
||||
{
|
||||
/// @cond
|
||||
inline insert_commit_data()
|
||||
: bstree_algo::insert_commit_data(), rotations()
|
||||
{}
|
||||
|
||||
std::size_t rotations;
|
||||
/// @endcond
|
||||
};
|
||||
|
@ -215,22 +215,22 @@ class treap_set_impl
|
||||
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::top()
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator top() BOOST_NOEXCEPT;
|
||||
inline iterator top() BOOST_NOEXCEPT;
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::top()const
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator top() const BOOST_NOEXCEPT;
|
||||
inline const_iterator top() const BOOST_NOEXCEPT;
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::ctop()const
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator ctop() const BOOST_NOEXCEPT;
|
||||
inline const_iterator ctop() const BOOST_NOEXCEPT;
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::rtop()
|
||||
BOOST_INTRUSIVE_FORCEINLINE reverse_iterator rtop() BOOST_NOEXCEPT;
|
||||
inline reverse_iterator rtop() BOOST_NOEXCEPT;
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::rtop()const
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator rtop() const BOOST_NOEXCEPT;
|
||||
inline const_reverse_iterator rtop() const BOOST_NOEXCEPT;
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::crtop()const
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator crtop() const BOOST_NOEXCEPT;
|
||||
inline const_reverse_iterator crtop() const BOOST_NOEXCEPT;
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::crtop() const
|
||||
priority_compare priority_comp() const;
|
||||
@ -542,49 +542,49 @@ class treap_set
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE treap_set()
|
||||
inline treap_set()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit treap_set( const key_compare &cmp
|
||||
inline explicit treap_set( const key_compare &cmp
|
||||
, const priority_compare &pcmp = priority_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, pcmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE treap_set( Iterator b, Iterator e
|
||||
inline treap_set( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const priority_compare &pcmp = priority_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, cmp, pcmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE treap_set(BOOST_RV_REF(treap_set) x)
|
||||
inline treap_set(BOOST_RV_REF(treap_set) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE treap_set& operator=(BOOST_RV_REF(treap_set) x)
|
||||
inline treap_set& operator=(BOOST_RV_REF(treap_set) x)
|
||||
{ return static_cast<treap_set &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const treap_set &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const treap_set &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(treap_set) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(treap_set) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static treap_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static treap_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<treap_set &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const treap_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const treap_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const treap_set &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static treap_set &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static treap_set &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<treap_set &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const treap_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const treap_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const treap_set &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
@ -774,22 +774,22 @@ class treap_multiset_impl
|
||||
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::top()
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator top() BOOST_NOEXCEPT;
|
||||
inline iterator top() BOOST_NOEXCEPT;
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::top()const
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator top() const BOOST_NOEXCEPT;
|
||||
inline const_iterator top() const BOOST_NOEXCEPT;
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::ctop()const
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_iterator ctop() const BOOST_NOEXCEPT;
|
||||
inline const_iterator ctop() const BOOST_NOEXCEPT;
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::rtop()
|
||||
BOOST_INTRUSIVE_FORCEINLINE reverse_iterator rtop() BOOST_NOEXCEPT;
|
||||
inline reverse_iterator rtop() BOOST_NOEXCEPT;
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::rtop()const
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator rtop() const BOOST_NOEXCEPT;
|
||||
inline const_reverse_iterator rtop() const BOOST_NOEXCEPT;
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::crtop()const
|
||||
BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator crtop() const BOOST_NOEXCEPT;
|
||||
inline const_reverse_iterator crtop() const BOOST_NOEXCEPT;
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::crtop() const
|
||||
priority_compare priority_comp() const;
|
||||
@ -1057,49 +1057,49 @@ class treap_multiset
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE treap_multiset()
|
||||
inline treap_multiset()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit treap_multiset( const key_compare &cmp
|
||||
inline explicit treap_multiset( const key_compare &cmp
|
||||
, const priority_compare &pcmp = priority_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, pcmp, v_traits)
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE treap_multiset( Iterator b, Iterator e
|
||||
inline treap_multiset( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
, const priority_compare &pcmp = priority_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(b, e, cmp, pcmp, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE treap_multiset(BOOST_RV_REF(treap_multiset) x)
|
||||
inline treap_multiset(BOOST_RV_REF(treap_multiset) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE treap_multiset& operator=(BOOST_RV_REF(treap_multiset) x)
|
||||
inline treap_multiset& operator=(BOOST_RV_REF(treap_multiset) x)
|
||||
{ return static_cast<treap_multiset &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const treap_multiset &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const treap_multiset &src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(treap_multiset) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(treap_multiset) src, Cloner cloner, Disposer disposer)
|
||||
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static treap_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static treap_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<treap_multiset &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const treap_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
inline static const treap_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT
|
||||
{ return static_cast<const treap_multiset &>(Base::container_from_end_iterator(end_iterator)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static treap_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
inline static treap_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<treap_multiset &>(Base::container_from_iterator(it)); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static const treap_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
inline static const treap_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT
|
||||
{ return static_cast<const treap_multiset &>(Base::container_from_iterator(it)); }
|
||||
};
|
||||
|
||||
|
@ -121,7 +121,7 @@ class unordered_set_impl
|
||||
public:
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::hashtable(const bucket_traits &,const hasher &,const key_equal &,const value_traits &)
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit unordered_set_impl( const bucket_traits &b_traits
|
||||
inline explicit unordered_set_impl( const bucket_traits &b_traits
|
||||
, const hasher & hash_func = hasher()
|
||||
, const key_equal &equal_func = key_equal()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
@ -130,7 +130,7 @@ class unordered_set_impl
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::hashtable(bool,Iterator,Iterator,const bucket_traits &,const hasher &,const key_equal &,const value_traits &)
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE unordered_set_impl( Iterator b
|
||||
inline unordered_set_impl( Iterator b
|
||||
, Iterator e
|
||||
, const bucket_traits &b_traits
|
||||
, const hasher & hash_func = hasher()
|
||||
@ -140,12 +140,12 @@ class unordered_set_impl
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::hashtable(hashtable&&)
|
||||
BOOST_INTRUSIVE_FORCEINLINE unordered_set_impl(BOOST_RV_REF(unordered_set_impl) x)
|
||||
inline unordered_set_impl(BOOST_RV_REF(unordered_set_impl) x)
|
||||
: table_type(BOOST_MOVE_BASE(table_type, x))
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::operator=(hashtable&&)
|
||||
BOOST_INTRUSIVE_FORCEINLINE unordered_set_impl& operator=(BOOST_RV_REF(unordered_set_impl) x)
|
||||
inline unordered_set_impl& operator=(BOOST_RV_REF(unordered_set_impl) x)
|
||||
{ return static_cast<unordered_set_impl&>(table_type::operator=(BOOST_MOVE_BASE(table_type, x))); }
|
||||
|
||||
#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
@ -197,30 +197,30 @@ class unordered_set_impl
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::clone_from(hashtable&&,Cloner,Disposer)
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(unordered_set_impl) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(unordered_set_impl) src, Cloner cloner, Disposer disposer)
|
||||
{ table_type::clone_from(BOOST_MOVE_BASE(table_type, src), cloner, disposer); }
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::insert_unique(reference)
|
||||
BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator, bool> insert(reference value)
|
||||
inline std::pair<iterator, bool> insert(reference value)
|
||||
{ return table_type::insert_unique(value); }
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::insert_unique(Iterator,Iterator)
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void insert(Iterator b, Iterator e)
|
||||
inline void insert(Iterator b, Iterator e)
|
||||
{ table_type::insert_unique(b, e); }
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::insert_unique_check(const key_type&,insert_commit_data&)
|
||||
BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator, bool> insert_check(const key_type &key, insert_commit_data &commit_data)
|
||||
inline std::pair<iterator, bool> insert_check(const key_type &key, insert_commit_data &commit_data)
|
||||
{ return table_type::insert_unique_check(key, commit_data); }
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::insert_unique_check(const KeyType&,KeyHasher,KeyEqual,insert_commit_data&)
|
||||
template<class KeyType, class KeyHasher, class KeyEqual>
|
||||
BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator, bool> insert_check
|
||||
inline std::pair<iterator, bool> insert_check
|
||||
(const KeyType &key, KeyHasher hash_func, KeyEqual key_value_equal, insert_commit_data &commit_data)
|
||||
{ return table_type::insert_unique_check(key, hash_func, key_value_equal, commit_data); }
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::insert_unique_commit
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator insert_commit(reference value, const insert_commit_data &commit_data) BOOST_NOEXCEPT
|
||||
inline iterator insert_commit(reference value, const insert_commit_data &commit_data) BOOST_NOEXCEPT
|
||||
{ return table_type::insert_unique_commit(value, commit_data); }
|
||||
|
||||
#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
@ -501,7 +501,7 @@ class unordered_set
|
||||
typedef typename Base::hasher hasher;
|
||||
typedef typename Base::key_equal key_equal;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE
|
||||
inline
|
||||
explicit unordered_set ( const bucket_traits &b_traits
|
||||
, const hasher & hash_func = hasher()
|
||||
, const key_equal &equal_func = key_equal()
|
||||
@ -510,7 +510,7 @@ class unordered_set
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE
|
||||
inline
|
||||
unordered_set
|
||||
( Iterator b, Iterator e
|
||||
, const bucket_traits &b_traits
|
||||
@ -520,19 +520,19 @@ class unordered_set
|
||||
: Base(b, e, b_traits, hash_func, equal_func, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE unordered_set(BOOST_RV_REF(unordered_set) x)
|
||||
inline unordered_set(BOOST_RV_REF(unordered_set) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE unordered_set& operator=(BOOST_RV_REF(unordered_set) x)
|
||||
inline unordered_set& operator=(BOOST_RV_REF(unordered_set) x)
|
||||
{ return static_cast<unordered_set&>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const unordered_set &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const unordered_set &src, Cloner cloner, Disposer disposer)
|
||||
{ this->Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(unordered_set) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(unordered_set) src, Cloner cloner, Disposer disposer)
|
||||
{ this->Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
};
|
||||
|
||||
@ -622,7 +622,7 @@ class unordered_multiset_impl
|
||||
public:
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::hashtable(const bucket_traits &,const hasher &,const key_equal &,const value_traits &)
|
||||
BOOST_INTRUSIVE_FORCEINLINE explicit unordered_multiset_impl ( const bucket_traits &b_traits
|
||||
inline explicit unordered_multiset_impl ( const bucket_traits &b_traits
|
||||
, const hasher & hash_func = hasher()
|
||||
, const key_equal &equal_func = key_equal()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
@ -631,7 +631,7 @@ class unordered_multiset_impl
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::hashtable(bool,Iterator,Iterator,const bucket_traits &,const hasher &,const key_equal &,const value_traits &)
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE unordered_multiset_impl ( Iterator b
|
||||
inline unordered_multiset_impl ( Iterator b
|
||||
, Iterator e
|
||||
, const bucket_traits &b_traits
|
||||
, const hasher & hash_func = hasher()
|
||||
@ -642,13 +642,13 @@ class unordered_multiset_impl
|
||||
|
||||
//! <b>Effects</b>: to-do
|
||||
//!
|
||||
BOOST_INTRUSIVE_FORCEINLINE unordered_multiset_impl(BOOST_RV_REF(unordered_multiset_impl) x)
|
||||
inline unordered_multiset_impl(BOOST_RV_REF(unordered_multiset_impl) x)
|
||||
: table_type(BOOST_MOVE_BASE(table_type, x))
|
||||
{}
|
||||
|
||||
//! <b>Effects</b>: to-do
|
||||
//!
|
||||
BOOST_INTRUSIVE_FORCEINLINE unordered_multiset_impl& operator=(BOOST_RV_REF(unordered_multiset_impl) x)
|
||||
inline unordered_multiset_impl& operator=(BOOST_RV_REF(unordered_multiset_impl) x)
|
||||
{ return static_cast<unordered_multiset_impl&>(table_type::operator=(BOOST_MOVE_BASE(table_type, x))); }
|
||||
|
||||
#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
@ -701,16 +701,16 @@ class unordered_multiset_impl
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::clone_from(hashtable&&,Cloner,Disposer)
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(unordered_multiset_impl) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(unordered_multiset_impl) src, Cloner cloner, Disposer disposer)
|
||||
{ table_type::clone_from(BOOST_MOVE_BASE(table_type, src), cloner, disposer); }
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::insert_equal(reference)
|
||||
BOOST_INTRUSIVE_FORCEINLINE iterator insert(reference value)
|
||||
inline iterator insert(reference value)
|
||||
{ return table_type::insert_equal(value); }
|
||||
|
||||
//! @copydoc ::boost::intrusive::hashtable::insert_equal(Iterator,Iterator)
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void insert(Iterator b, Iterator e)
|
||||
inline void insert(Iterator b, Iterator e)
|
||||
{ table_type::insert_equal(b, e); }
|
||||
|
||||
#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
@ -956,7 +956,7 @@ class unordered_multiset
|
||||
typedef typename Base::hasher hasher;
|
||||
typedef typename Base::key_equal key_equal;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE
|
||||
inline
|
||||
explicit unordered_multiset( const bucket_traits &b_traits
|
||||
, const hasher & hash_func = hasher()
|
||||
, const key_equal &equal_func = key_equal()
|
||||
@ -965,7 +965,7 @@ class unordered_multiset
|
||||
{}
|
||||
|
||||
template<class Iterator>
|
||||
BOOST_INTRUSIVE_FORCEINLINE
|
||||
inline
|
||||
unordered_multiset( Iterator b
|
||||
, Iterator e
|
||||
, const bucket_traits &b_traits
|
||||
@ -975,19 +975,19 @@ class unordered_multiset
|
||||
: Base(b, e, b_traits, hash_func, equal_func, v_traits)
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE unordered_multiset(BOOST_RV_REF(unordered_multiset) x)
|
||||
inline unordered_multiset(BOOST_RV_REF(unordered_multiset) x)
|
||||
: Base(BOOST_MOVE_BASE(Base, x))
|
||||
{}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE unordered_multiset& operator=(BOOST_RV_REF(unordered_multiset) x)
|
||||
inline unordered_multiset& operator=(BOOST_RV_REF(unordered_multiset) x)
|
||||
{ return static_cast<unordered_multiset&>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(const unordered_multiset &src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(const unordered_multiset &src, Cloner cloner, Disposer disposer)
|
||||
{ this->Base::clone_from(src, cloner, disposer); }
|
||||
|
||||
template <class Cloner, class Disposer>
|
||||
BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(unordered_multiset) src, Cloner cloner, Disposer disposer)
|
||||
inline void clone_from(BOOST_RV_REF(unordered_multiset) src, Cloner cloner, Disposer disposer)
|
||||
{ this->Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
||||
};
|
||||
|
||||
|
@ -82,22 +82,22 @@ struct unordered_node_traits
|
||||
static const bool store_hash = StoreHash;
|
||||
static const bool optimize_multikey = OptimizeMultiKey;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_next(const_node_ptr n) BOOST_NOEXCEPT
|
||||
inline static node_ptr get_next(const_node_ptr n) BOOST_NOEXCEPT
|
||||
{ return pointer_traits<node_ptr>::static_cast_from(n->next_); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void set_next(node_ptr n, node_ptr next) BOOST_NOEXCEPT
|
||||
inline static void set_next(node_ptr n, node_ptr next) BOOST_NOEXCEPT
|
||||
{ n->next_ = next; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_prev_in_group(const_node_ptr n) BOOST_NOEXCEPT
|
||||
inline static node_ptr get_prev_in_group(const_node_ptr n) BOOST_NOEXCEPT
|
||||
{ return n->prev_in_group_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void set_prev_in_group(node_ptr n, node_ptr prev) BOOST_NOEXCEPT
|
||||
inline static void set_prev_in_group(node_ptr n, node_ptr prev) BOOST_NOEXCEPT
|
||||
{ n->prev_in_group_ = prev; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static std::size_t get_hash(const_node_ptr n) BOOST_NOEXCEPT
|
||||
inline static std::size_t get_hash(const_node_ptr n) BOOST_NOEXCEPT
|
||||
{ return n->hash_; }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void set_hash(node_ptr n, std::size_t h) BOOST_NOEXCEPT
|
||||
inline static void set_hash(node_ptr n, std::size_t h) BOOST_NOEXCEPT
|
||||
{ n->hash_ = h; }
|
||||
};
|
||||
|
||||
@ -108,10 +108,10 @@ struct unordered_group_adapter
|
||||
typedef typename NodeTraits::node_ptr node_ptr;
|
||||
typedef typename NodeTraits::const_node_ptr const_node_ptr;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_next(const_node_ptr n)
|
||||
inline static node_ptr get_next(const_node_ptr n)
|
||||
{ return NodeTraits::get_prev_in_group(n); }
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void set_next(node_ptr n, node_ptr next)
|
||||
inline static void set_next(node_ptr n, node_ptr next)
|
||||
{ NodeTraits::set_prev_in_group(n, next); }
|
||||
};
|
||||
|
||||
@ -127,19 +127,19 @@ struct unordered_algorithms
|
||||
typedef typename NodeTraits::node_ptr node_ptr;
|
||||
typedef typename NodeTraits::const_node_ptr const_node_ptr;
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void init(typename base_type::node_ptr n) BOOST_NOEXCEPT
|
||||
inline static void init(typename base_type::node_ptr n) BOOST_NOEXCEPT
|
||||
{
|
||||
base_type::init(n);
|
||||
group_algorithms::init(n);
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void init_header(typename base_type::node_ptr n) BOOST_NOEXCEPT
|
||||
inline static void init_header(typename base_type::node_ptr n) BOOST_NOEXCEPT
|
||||
{
|
||||
base_type::init_header(n);
|
||||
group_algorithms::init_header(n);
|
||||
}
|
||||
|
||||
BOOST_INTRUSIVE_FORCEINLINE static void unlink(typename base_type::node_ptr n) BOOST_NOEXCEPT
|
||||
inline static void unlink(typename base_type::node_ptr n) BOOST_NOEXCEPT
|
||||
{
|
||||
base_type::unlink(n);
|
||||
group_algorithms::unlink(n);
|
||||
|
Loading…
x
Reference in New Issue
Block a user