forked from boostorg/intrusive
Remove some forceinline attributes that might be counter-productive and add noexcept to others.
This commit is contained in:
@@ -46,14 +46,14 @@ struct avltree_node_cloner
|
|||||||
: base_t(f)
|
: base_t(f)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr operator()(node_ptr p)
|
node_ptr operator()(node_ptr p)
|
||||||
{
|
{
|
||||||
node_ptr n = base_t::get()(p);
|
node_ptr n = base_t::get()(p);
|
||||||
NodeTraits::set_balance(n, NodeTraits::get_balance(p));
|
NodeTraits::set_balance(n, NodeTraits::get_balance(p));
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr operator()(node_ptr p) const
|
node_ptr operator()(node_ptr p) const
|
||||||
{
|
{
|
||||||
node_ptr n = base_t::get()(p);
|
node_ptr n = base_t::get()(p);
|
||||||
NodeTraits::set_balance(n, NodeTraits::get_balance(p));
|
NodeTraits::set_balance(n, NodeTraits::get_balance(p));
|
||||||
|
@@ -233,7 +233,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
|||||||
//! <b>Complexity</b>: Constant time.
|
//! <b>Complexity</b>: Constant time.
|
||||||
//!
|
//!
|
||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr root_node(const_node_ptr header)
|
BOOST_INTRUSIVE_FORCEINLINE static node_ptr root_node(const_node_ptr header) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
node_ptr p = node_traits::get_parent(header);
|
node_ptr p = node_traits::get_parent(header);
|
||||||
return p ? p : detail::uncast(header);
|
return p ? p : detail::uncast(header);
|
||||||
@@ -458,8 +458,6 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
|||||||
//! the node, since no rebalancing and comparison is needed. Experimental function
|
//! 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
|
BOOST_INTRUSIVE_FORCEINLINE static void replace_node(node_ptr node_to_be_replaced, node_ptr new_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
if(node_to_be_replaced == new_node)
|
|
||||||
return;
|
|
||||||
replace_node(node_to_be_replaced, base_type::get_header(node_to_be_replaced), new_node);
|
replace_node(node_to_be_replaced, base_type::get_header(node_to_be_replaced), new_node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -479,8 +477,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
|||||||
//! the node, since no rebalancing or comparison is needed. Experimental function
|
//! the node, since no rebalancing or comparison is needed. Experimental function
|
||||||
static void replace_node(node_ptr node_to_be_replaced, node_ptr header, node_ptr new_node) BOOST_NOEXCEPT
|
static void replace_node(node_ptr node_to_be_replaced, node_ptr header, node_ptr new_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
if(node_to_be_replaced == new_node)
|
BOOST_ASSERT(node_to_be_replaced != new_node);
|
||||||
return;
|
|
||||||
|
|
||||||
//Update header if necessary
|
//Update header if necessary
|
||||||
if(node_to_be_replaced == NodeTraits::get_left(header)){
|
if(node_to_be_replaced == NodeTraits::get_left(header)){
|
||||||
@@ -567,7 +564,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
|
//! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void init(node_ptr node) BOOST_NOEXCEPT
|
static void init(node_ptr node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
NodeTraits::set_parent(node, node_ptr());
|
NodeTraits::set_parent(node, node_ptr());
|
||||||
NodeTraits::set_left(node, node_ptr());
|
NodeTraits::set_left(node, node_ptr());
|
||||||
@@ -579,7 +576,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static bool inited(const_node_ptr node)
|
static bool inited(const_node_ptr node)
|
||||||
{
|
{
|
||||||
return !NodeTraits::get_parent(node) &&
|
return !NodeTraits::get_parent(node) &&
|
||||||
!NodeTraits::get_left(node) &&
|
!NodeTraits::get_left(node) &&
|
||||||
@@ -596,7 +593,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
|
//! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void init_header(node_ptr header) BOOST_NOEXCEPT
|
static void init_header(node_ptr header) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
NodeTraits::set_parent(header, node_ptr());
|
NodeTraits::set_parent(header, node_ptr());
|
||||||
NodeTraits::set_left(header, header);
|
NodeTraits::set_left(header, header);
|
||||||
|
@@ -67,7 +67,7 @@ class circular_list_algorithms
|
|||||||
//! <b>Complexity</b>: Constant
|
//! <b>Complexity</b>: Constant
|
||||||
//!
|
//!
|
||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void init(node_ptr this_node) BOOST_NOEXCEPT
|
static void init(node_ptr this_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
const node_ptr null_node = node_ptr();
|
const node_ptr null_node = node_ptr();
|
||||||
NodeTraits::set_next(this_node, null_node);
|
NodeTraits::set_next(this_node, null_node);
|
||||||
@@ -91,7 +91,7 @@ class circular_list_algorithms
|
|||||||
//! <b>Complexity</b>: Constant
|
//! <b>Complexity</b>: Constant
|
||||||
//!
|
//!
|
||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void init_header(node_ptr this_node) BOOST_NOEXCEPT
|
static void init_header(node_ptr this_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
NodeTraits::set_next(this_node, this_node);
|
NodeTraits::set_next(this_node, this_node);
|
||||||
NodeTraits::set_previous(this_node, this_node);
|
NodeTraits::set_previous(this_node, this_node);
|
||||||
@@ -105,7 +105,7 @@ class circular_list_algorithms
|
|||||||
//! <b>Complexity</b>: Constant
|
//! <b>Complexity</b>: Constant
|
||||||
//!
|
//!
|
||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static bool unique(const_node_ptr this_node) BOOST_NOEXCEPT
|
static bool unique(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
node_ptr next = NodeTraits::get_next(this_node);
|
node_ptr next = NodeTraits::get_next(this_node);
|
||||||
return !next || next == this_node;
|
return !next || next == this_node;
|
||||||
@@ -137,7 +137,7 @@ class circular_list_algorithms
|
|||||||
//! <b>Complexity</b>: Constant
|
//! <b>Complexity</b>: Constant
|
||||||
//!
|
//!
|
||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr unlink(node_ptr this_node) BOOST_NOEXCEPT
|
static node_ptr unlink(node_ptr this_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
node_ptr next(NodeTraits::get_next(this_node));
|
node_ptr next(NodeTraits::get_next(this_node));
|
||||||
node_ptr prev(NodeTraits::get_previous(this_node));
|
node_ptr prev(NodeTraits::get_previous(this_node));
|
||||||
@@ -153,7 +153,7 @@ class circular_list_algorithms
|
|||||||
//! <b>Complexity</b>: Constant
|
//! <b>Complexity</b>: Constant
|
||||||
//!
|
//!
|
||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void unlink(node_ptr b, node_ptr e) BOOST_NOEXCEPT
|
static void unlink(node_ptr b, node_ptr e) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
if (b != e) {
|
if (b != e) {
|
||||||
node_ptr prevb(NodeTraits::get_previous(b));
|
node_ptr prevb(NodeTraits::get_previous(b));
|
||||||
@@ -169,7 +169,7 @@ class circular_list_algorithms
|
|||||||
//! <b>Complexity</b>: Constant
|
//! <b>Complexity</b>: Constant
|
||||||
//!
|
//!
|
||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void link_before(node_ptr nxt_node, node_ptr this_node) BOOST_NOEXCEPT
|
static void link_before(node_ptr nxt_node, node_ptr this_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
node_ptr prev(NodeTraits::get_previous(nxt_node));
|
node_ptr prev(NodeTraits::get_previous(nxt_node));
|
||||||
NodeTraits::set_previous(this_node, prev);
|
NodeTraits::set_previous(this_node, prev);
|
||||||
@@ -188,7 +188,7 @@ class circular_list_algorithms
|
|||||||
//! <b>Complexity</b>: Constant
|
//! <b>Complexity</b>: Constant
|
||||||
//!
|
//!
|
||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void link_after(node_ptr prev_node, node_ptr this_node) BOOST_NOEXCEPT
|
static void link_after(node_ptr prev_node, node_ptr this_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
node_ptr next(NodeTraits::get_next(prev_node));
|
node_ptr next(NodeTraits::get_next(prev_node));
|
||||||
NodeTraits::set_previous(this_node, prev_node);
|
NodeTraits::set_previous(this_node, prev_node);
|
||||||
@@ -433,14 +433,14 @@ class circular_list_algorithms
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void swap_prev(node_ptr this_node, node_ptr other_node) BOOST_NOEXCEPT
|
static void swap_prev(node_ptr this_node, node_ptr other_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
node_ptr temp(NodeTraits::get_previous(this_node));
|
node_ptr temp(NodeTraits::get_previous(this_node));
|
||||||
NodeTraits::set_previous(this_node, NodeTraits::get_previous(other_node));
|
NodeTraits::set_previous(this_node, NodeTraits::get_previous(other_node));
|
||||||
NodeTraits::set_previous(other_node, temp);
|
NodeTraits::set_previous(other_node, temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void swap_next(node_ptr this_node, node_ptr other_node) BOOST_NOEXCEPT
|
static void swap_next(node_ptr this_node, node_ptr other_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
node_ptr temp(NodeTraits::get_next(this_node));
|
node_ptr temp(NodeTraits::get_next(this_node));
|
||||||
NodeTraits::set_next(this_node, NodeTraits::get_next(other_node));
|
NodeTraits::set_next(this_node, NodeTraits::get_next(other_node));
|
||||||
|
@@ -223,7 +223,7 @@ class circular_slist_algorithms
|
|||||||
//! <b>Complexity</b>: Linear to the number of elements in the circular list
|
//! <b>Complexity</b>: Linear to the number of elements in the circular list
|
||||||
//!
|
//!
|
||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void unlink(node_ptr this_node) BOOST_NOEXCEPT
|
static void unlink(node_ptr this_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
if(NodeTraits::get_next(this_node))
|
if(NodeTraits::get_next(this_node))
|
||||||
base_t::unlink_after(get_previous_node(this_node));
|
base_t::unlink_after(get_previous_node(this_node));
|
||||||
|
@@ -55,16 +55,16 @@ class common_slist_algorithms
|
|||||||
BOOST_INTRUSIVE_FORCEINLINE static void init(node_ptr this_node) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static void init(node_ptr this_node) BOOST_NOEXCEPT
|
||||||
{ NodeTraits::set_next(this_node, node_ptr()); }
|
{ NodeTraits::set_next(this_node, node_ptr()); }
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static bool unique(const_node_ptr this_node)
|
static bool unique(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
node_ptr next = NodeTraits::get_next(this_node);
|
node_ptr next = NodeTraits::get_next(this_node);
|
||||||
return !next || next == this_node;
|
return !next || next == this_node;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static bool inited(const_node_ptr this_node)
|
BOOST_INTRUSIVE_FORCEINLINE static bool inited(const_node_ptr this_node) BOOST_NOEXCEPT
|
||||||
{ return !NodeTraits::get_next(this_node); }
|
{ return !NodeTraits::get_next(this_node); }
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void unlink_after(node_ptr prev_node) BOOST_NOEXCEPT
|
static void unlink_after(node_ptr prev_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
const_node_ptr this_node(NodeTraits::get_next(prev_node));
|
const_node_ptr this_node(NodeTraits::get_next(prev_node));
|
||||||
NodeTraits::set_next(prev_node, NodeTraits::get_next(this_node));
|
NodeTraits::set_next(prev_node, NodeTraits::get_next(this_node));
|
||||||
@@ -73,20 +73,20 @@ class common_slist_algorithms
|
|||||||
BOOST_INTRUSIVE_FORCEINLINE static void unlink_after(node_ptr prev_node, node_ptr last_node) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static void unlink_after(node_ptr prev_node, node_ptr last_node) BOOST_NOEXCEPT
|
||||||
{ NodeTraits::set_next(prev_node, last_node); }
|
{ NodeTraits::set_next(prev_node, last_node); }
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void link_after(node_ptr prev_node, node_ptr this_node) BOOST_NOEXCEPT
|
static void link_after(node_ptr prev_node, node_ptr this_node) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
NodeTraits::set_next(this_node, NodeTraits::get_next(prev_node));
|
NodeTraits::set_next(this_node, NodeTraits::get_next(prev_node));
|
||||||
NodeTraits::set_next(prev_node, this_node);
|
NodeTraits::set_next(prev_node, this_node);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void incorporate_after(node_ptr bp, node_ptr b, node_ptr be)
|
static void incorporate_after(node_ptr bp, node_ptr b, node_ptr be) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
node_ptr p(NodeTraits::get_next(bp));
|
node_ptr p(NodeTraits::get_next(bp));
|
||||||
NodeTraits::set_next(bp, b);
|
NodeTraits::set_next(bp, b);
|
||||||
NodeTraits::set_next(be, p);
|
NodeTraits::set_next(be, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void transfer_after(node_ptr bp, node_ptr bb, node_ptr be)
|
static void transfer_after(node_ptr bp, node_ptr bb, node_ptr be) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
if (bp != bb && bp != be && bb != be) {
|
if (bp != bb && bp != be && bb != be) {
|
||||||
node_ptr next_b = NodeTraits::get_next(bb);
|
node_ptr next_b = NodeTraits::get_next(bb);
|
||||||
|
@@ -130,7 +130,7 @@ struct prime_list_holder
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class SizeType> //sizeof(SizeType) > sizeof(std::size_t)
|
template <class SizeType> //sizeof(SizeType) > sizeof(std::size_t)
|
||||||
static BOOST_INTRUSIVE_FORCEINLINE SizeType suggested_upper_bucket_count_dispatch(SizeType n, detail::true_)
|
static SizeType suggested_upper_bucket_count_dispatch(SizeType n, detail::true_)
|
||||||
{
|
{
|
||||||
std::size_t const c = n > std::size_t(-1)
|
std::size_t const c = n > std::size_t(-1)
|
||||||
? std::size_t(-1)
|
? std::size_t(-1)
|
||||||
@@ -139,7 +139,7 @@ struct prime_list_holder
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class SizeType> //sizeof(SizeType) > sizeof(std::size_t)
|
template <class SizeType> //sizeof(SizeType) > sizeof(std::size_t)
|
||||||
static BOOST_INTRUSIVE_FORCEINLINE SizeType suggested_lower_bucket_count_dispatch(SizeType n, detail::true_)
|
static SizeType suggested_lower_bucket_count_dispatch(SizeType n, detail::true_)
|
||||||
{
|
{
|
||||||
std::size_t const c = n > std::size_t(-1)
|
std::size_t const c = n > std::size_t(-1)
|
||||||
? std::size_t(-1)
|
? std::size_t(-1)
|
||||||
@@ -148,7 +148,7 @@ struct prime_list_holder
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class SizeType>
|
template <class SizeType>
|
||||||
static BOOST_INTRUSIVE_FORCEINLINE SizeType suggested_upper_bucket_count_dispatch(SizeType n, detail::false_)
|
static SizeType suggested_upper_bucket_count_dispatch(SizeType n, detail::false_)
|
||||||
{
|
{
|
||||||
std::size_t const c = suggested_upper_bucket_count_impl(static_cast<std::size_t>(n));
|
std::size_t const c = suggested_upper_bucket_count_impl(static_cast<std::size_t>(n));
|
||||||
return truncate_size_type<SizeType>(c, detail::bool_<(sizeof(SizeType) < sizeof(std::size_t))>());
|
return truncate_size_type<SizeType>(c, detail::bool_<(sizeof(SizeType) < sizeof(std::size_t))>());
|
||||||
@@ -156,7 +156,7 @@ struct prime_list_holder
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class SizeType>
|
template <class SizeType>
|
||||||
static BOOST_INTRUSIVE_FORCEINLINE SizeType suggested_lower_bucket_count_dispatch(SizeType n, detail::false_)
|
static SizeType suggested_lower_bucket_count_dispatch(SizeType n, detail::false_)
|
||||||
{
|
{
|
||||||
std::size_t const c = suggested_lower_bucket_count_impl(static_cast<std::size_t>(n));
|
std::size_t const c = suggested_lower_bucket_count_impl(static_cast<std::size_t>(n));
|
||||||
return truncate_size_type<SizeType>(c, detail::bool_<(sizeof(SizeType) < sizeof(std::size_t))>());
|
return truncate_size_type<SizeType>(c, detail::bool_<(sizeof(SizeType) < sizeof(std::size_t))>());
|
||||||
@@ -445,9 +445,7 @@ struct group_functions
|
|||||||
}
|
}
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr next_group_if_first_in_group(node_ptr ptr)
|
BOOST_INTRUSIVE_FORCEINLINE static node_ptr next_group_if_first_in_group(node_ptr ptr)
|
||||||
{
|
{ return node_traits::get_next(group_traits::get_next(ptr)); }
|
||||||
return node_traits::get_next(group_traits::get_next(ptr));
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_first_in_group(node_ptr n, detail::false_)
|
BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_first_in_group(node_ptr n, detail::false_)
|
||||||
{ return n; }
|
{ return n; }
|
||||||
@@ -458,7 +456,7 @@ struct group_functions
|
|||||||
static void insert_in_group(node_ptr, node_ptr, false_)
|
static void insert_in_group(node_ptr, node_ptr, false_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static node_ptr split_group(node_ptr const new_first_in_group)
|
static node_ptr split_group(node_ptr const new_first_in_group)
|
||||||
{
|
{
|
||||||
node_ptr const first((get_first_in_group)(new_first_in_group, detail::true_()));
|
node_ptr const first((get_first_in_group)(new_first_in_group, detail::true_()));
|
||||||
if(first != new_first_in_group){
|
if(first != new_first_in_group){
|
||||||
@@ -525,10 +523,10 @@ BOOST_INTRUSIVE_FORCEINLINE std::size_t hash_to_bucket(std::size_t hash_value, s
|
|||||||
{ return hash_value & (bucket_cnt - 1); }
|
{ return hash_value & (bucket_cnt - 1); }
|
||||||
|
|
||||||
template<bool Power2Buckets, bool Incremental>
|
template<bool Power2Buckets, bool Incremental>
|
||||||
BOOST_INTRUSIVE_FORCEINLINE std::size_t hash_to_bucket_split(std::size_t hash_value, std::size_t bucket_cnt, std::size_t split)
|
std::size_t hash_to_bucket_split(std::size_t hash_value, std::size_t bucket_cnt, std::size_t split)
|
||||||
{
|
{
|
||||||
std::size_t bucket_number = detail::hash_to_bucket(hash_value, bucket_cnt, detail::bool_<Power2Buckets>());
|
std::size_t bucket_number = detail::hash_to_bucket(hash_value, bucket_cnt, detail::bool_<Power2Buckets>());
|
||||||
if(Incremental)
|
BOOST_IF_CONSTEXPR(Incremental)
|
||||||
bucket_number -= static_cast<std::size_t>(bucket_number >= split)*(bucket_cnt/2);
|
bucket_number -= static_cast<std::size_t>(bucket_number >= split)*(bucket_cnt/2);
|
||||||
return bucket_number;
|
return bucket_number;
|
||||||
}
|
}
|
||||||
@@ -1242,9 +1240,7 @@ struct bucket_hash_equal_t<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrK
|
|||||||
{ this->cached_begin_ = this->bucket_hash_type::priv_invalid_bucket(); }
|
{ this->cached_begin_ = this->bucket_hash_type::priv_invalid_bucket(); }
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE void priv_swap_cache(bucket_hash_equal_t &other)
|
BOOST_INTRUSIVE_FORCEINLINE void priv_swap_cache(bucket_hash_equal_t &other)
|
||||||
{
|
{ ::boost::adl_move_swap(this->cached_begin_, other.cached_begin_); }
|
||||||
::boost::adl_move_swap(this->cached_begin_, other.cached_begin_);
|
|
||||||
}
|
|
||||||
|
|
||||||
siterator priv_begin() const
|
siterator priv_begin() const
|
||||||
{
|
{
|
||||||
@@ -1476,9 +1472,7 @@ struct hashdata_internal
|
|||||||
|
|
||||||
//public functions
|
//public functions
|
||||||
BOOST_INTRUSIVE_FORCEINLINE SizeType split_count() const BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE SizeType split_count() const BOOST_NOEXCEPT
|
||||||
{
|
{ return this->priv_split_traits().get_size(); }
|
||||||
return this->priv_split_traits().get_size();
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE iterator iterator_to(reference value) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE iterator iterator_to(reference value) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
|
@@ -548,7 +548,7 @@ class list_impl
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
||||||
BOOST_INTRUSIVE_FORCEINLINE void swap(list_impl& other) BOOST_NOEXCEPT
|
void swap(list_impl& other) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
node_algorithms::swap_nodes(this->get_root_node(), other.get_root_node());
|
node_algorithms::swap_nodes(this->get_root_node(), other.get_root_node());
|
||||||
this->priv_size_traits().swap(other.priv_size_traits());
|
this->priv_size_traits().swap(other.priv_size_traits());
|
||||||
@@ -1363,7 +1363,7 @@ class list_impl
|
|||||||
BOOST_INTRUSIVE_INVARIANT_ASSERT(this->priv_size_traits().get_size() == node_count);
|
BOOST_INTRUSIVE_INVARIANT_ASSERT(this->priv_size_traits().get_size() == node_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE friend bool operator==(const list_impl &x, const list_impl &y)
|
friend bool operator==(const list_impl &x, const list_impl &y)
|
||||||
{
|
{
|
||||||
if(constant_time_size && x.size() != y.size()){
|
if(constant_time_size && x.size() != y.size()){
|
||||||
return false;
|
return false;
|
||||||
|
@@ -54,7 +54,7 @@ struct rbtree_node_cloner
|
|||||||
: base_t(f)
|
: base_t(f)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
BOOST_INTRUSIVE_FORCEINLINE node_ptr operator()(node_ptr p)
|
node_ptr operator()(node_ptr p)
|
||||||
{
|
{
|
||||||
node_ptr n = base_t::get()(p);
|
node_ptr n = base_t::get()(p);
|
||||||
NodeTraits::set_color(n, NodeTraits::get_color(p));
|
NodeTraits::set_color(n, NodeTraits::get_color(p));
|
||||||
@@ -273,7 +273,7 @@ class rbtree_algorithms
|
|||||||
#endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
#endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||||
|
|
||||||
//! @copydoc ::boost::intrusive::bstree_algorithms::init_header(node_ptr)
|
//! @copydoc ::boost::intrusive::bstree_algorithms::init_header(node_ptr)
|
||||||
BOOST_INTRUSIVE_FORCEINLINE static void init_header(node_ptr header) BOOST_NOEXCEPT
|
static void init_header(node_ptr header) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
bstree_algo::init_header(header);
|
bstree_algo::init_header(header);
|
||||||
NodeTraits::set_color(header, NodeTraits::red());
|
NodeTraits::set_color(header, NodeTraits::red());
|
||||||
|
Reference in New Issue
Block a user