mirror of
https://github.com/boostorg/multi_index.git
synced 2025-05-09 23:14:04 +00:00
replaced erase_ backbone function with extract:_
This commit is contained in:
parent
3a47a82947
commit
a766a08573
@ -150,10 +150,7 @@ protected:
|
||||
return x;
|
||||
}
|
||||
|
||||
void erase_(index_node_type* x)
|
||||
{
|
||||
final().destroy_value(static_cast<final_node_type*>(x));
|
||||
}
|
||||
void extract_(index_node_type*){}
|
||||
|
||||
void clear_(){}
|
||||
|
||||
|
@ -755,11 +755,11 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
return res;
|
||||
}
|
||||
|
||||
void erase_(index_node_type* x)
|
||||
void extract_(index_node_type* x)
|
||||
{
|
||||
node_impl_type::rebalance_for_erase(
|
||||
node_impl_type::rebalance_for_extract(
|
||||
x->impl(),header()->parent(),header()->left(),header()->right());
|
||||
super::erase_(x);
|
||||
super::extract_(x);
|
||||
|
||||
#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
|
||||
detach_iterators(x);
|
||||
@ -818,7 +818,7 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
index_node_type* next=x;
|
||||
index_node_type::increment(next);
|
||||
|
||||
node_impl_type::rebalance_for_erase(
|
||||
node_impl_type::rebalance_for_extract(
|
||||
x->impl(),header()->parent(),header()->left(),header()->right());
|
||||
|
||||
BOOST_TRY{
|
||||
@ -844,17 +844,17 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
b=in_place(x->value(),x,Category());
|
||||
}
|
||||
BOOST_CATCH(...){
|
||||
erase_(x);
|
||||
extract_(x);
|
||||
BOOST_RETHROW;
|
||||
}
|
||||
BOOST_CATCH_END
|
||||
if(!b){
|
||||
node_impl_type::rebalance_for_erase(
|
||||
node_impl_type::rebalance_for_extract(
|
||||
x->impl(),header()->parent(),header()->left(),header()->right());
|
||||
BOOST_TRY{
|
||||
link_info inf;
|
||||
if(!link_point(key(x->value()),inf,Category())){
|
||||
super::erase_(x);
|
||||
super::extract_(x);
|
||||
|
||||
#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
|
||||
detach_iterators(x);
|
||||
@ -864,7 +864,7 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl());
|
||||
}
|
||||
BOOST_CATCH(...){
|
||||
super::erase_(x);
|
||||
super::extract_(x);
|
||||
|
||||
#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
|
||||
detach_iterators(x);
|
||||
@ -877,7 +877,7 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
|
||||
BOOST_TRY{
|
||||
if(!super::modify_(x)){
|
||||
node_impl_type::rebalance_for_erase(
|
||||
node_impl_type::rebalance_for_extract(
|
||||
x->impl(),header()->parent(),header()->left(),header()->right());
|
||||
|
||||
#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
|
||||
@ -889,7 +889,7 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
else return true;
|
||||
}
|
||||
BOOST_CATCH(...){
|
||||
node_impl_type::rebalance_for_erase(
|
||||
node_impl_type::rebalance_for_extract(
|
||||
x->impl(),header()->parent(),header()->left(),header()->right());
|
||||
|
||||
#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
|
||||
@ -910,7 +910,7 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
index_node_type* next=x;
|
||||
index_node_type::increment(next);
|
||||
|
||||
node_impl_type::rebalance_for_erase(
|
||||
node_impl_type::rebalance_for_extract(
|
||||
x->impl(),header()->parent(),header()->left(),header()->right());
|
||||
|
||||
BOOST_TRY{
|
||||
@ -1383,7 +1383,7 @@ private:
|
||||
else index_node_type::increment(position);
|
||||
|
||||
if(position!=x){
|
||||
node_impl_type::rebalance_for_erase(
|
||||
node_impl_type::rebalance_for_extract(
|
||||
x->impl(),header()->parent(),header()->left(),header()->right());
|
||||
node_impl_type::restore(
|
||||
x->impl(),position->impl(),header()->impl());
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright 2003-2019 Joaquin M Lopez Munoz.
|
||||
/* Copyright 2003-2020 Joaquin M Lopez Munoz.
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||
* http://www.boost.org/LICENSE_1_0.txt)
|
||||
@ -412,7 +412,7 @@ public:
|
||||
ordered_index_node_impl::rebalance(x,header->parent());
|
||||
}
|
||||
|
||||
static pointer rebalance_for_erase(
|
||||
static pointer rebalance_for_extract(
|
||||
pointer z,parent_ref root,pointer& leftmost,pointer& rightmost)
|
||||
{
|
||||
pointer y=z;
|
||||
|
@ -837,10 +837,10 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
return res;
|
||||
}
|
||||
|
||||
void erase_(index_node_type* x)
|
||||
void extract_(index_node_type* x)
|
||||
{
|
||||
unlink(x);
|
||||
super::erase_(x);
|
||||
super::extract_(x);
|
||||
|
||||
#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
|
||||
detach_iterators(x);
|
||||
@ -960,7 +960,7 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
b=in_place(x->impl(),key(x->value()),buc);
|
||||
}
|
||||
BOOST_CATCH(...){
|
||||
erase_(x);
|
||||
extract_(x);
|
||||
BOOST_RETHROW;
|
||||
}
|
||||
BOOST_CATCH_END
|
||||
@ -969,7 +969,7 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
BOOST_TRY{
|
||||
link_info pos(buckets.at(buc));
|
||||
if(!link_point(x->value(),pos)){
|
||||
super::erase_(x);
|
||||
super::extract_(x);
|
||||
|
||||
#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
|
||||
detach_iterators(x);
|
||||
@ -979,7 +979,7 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
link(x,pos);
|
||||
}
|
||||
BOOST_CATCH(...){
|
||||
super::erase_(x);
|
||||
super::extract_(x);
|
||||
|
||||
#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
|
||||
detach_iterators(x);
|
||||
|
@ -800,10 +800,10 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
return res;
|
||||
}
|
||||
|
||||
void erase_(index_node_type* x)
|
||||
void extract_(index_node_type* x)
|
||||
{
|
||||
ptrs.erase(x->impl());
|
||||
super::erase_(x);
|
||||
super::extract_(x);
|
||||
|
||||
#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
|
||||
detach_iterators(x);
|
||||
|
@ -692,10 +692,10 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
return res;
|
||||
}
|
||||
|
||||
void erase_(index_node_type* x)
|
||||
void extract_(index_node_type* x)
|
||||
{
|
||||
unlink(x);
|
||||
super::erase_(x);
|
||||
super::extract_(x);
|
||||
|
||||
#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
|
||||
detach_iterators(x);
|
||||
|
@ -734,8 +734,7 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
return std::pair<final_node_type*,bool>(res,true);
|
||||
}
|
||||
else{
|
||||
destroy_value(x);
|
||||
deallocate_node(x);
|
||||
delete_node_(x);
|
||||
return std::pair<final_node_type*,bool>(res,false);
|
||||
}
|
||||
}
|
||||
@ -777,8 +776,7 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
return std::pair<final_node_type*,bool>(res,true);
|
||||
}
|
||||
else{
|
||||
destroy_value(x);
|
||||
deallocate_node(x);
|
||||
delete_node_(x);
|
||||
return std::pair<final_node_type*,bool>(res,false);
|
||||
}
|
||||
}
|
||||
@ -837,8 +835,7 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
return std::pair<final_node_type*,bool>(res,true);
|
||||
}
|
||||
else{
|
||||
destroy_value(x);
|
||||
deallocate_node(x);
|
||||
delete_node_(x);
|
||||
return std::pair<final_node_type*,bool>(res,false);
|
||||
}
|
||||
}
|
||||
@ -883,8 +880,7 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
return std::pair<final_node_type*,bool>(res,true);
|
||||
}
|
||||
else{
|
||||
destroy_value(x);
|
||||
deallocate_node(x);
|
||||
delete_node_(x);
|
||||
return std::pair<final_node_type*,bool>(res,false);
|
||||
}
|
||||
}
|
||||
@ -904,8 +900,8 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
void erase_(final_node_type* x)
|
||||
{
|
||||
--node_count;
|
||||
super::erase_(x);
|
||||
deallocate_node(x);
|
||||
super::extract_(x);
|
||||
delete_node_(x);
|
||||
}
|
||||
|
||||
void delete_node_(final_node_type* x)
|
||||
@ -985,14 +981,14 @@ BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
|
||||
|
||||
BOOST_TRY{
|
||||
if(!super::modify_(x)){
|
||||
deallocate_node(x);
|
||||
delete_node_(x);
|
||||
--node_count;
|
||||
return false;
|
||||
}
|
||||
else return true;
|
||||
}
|
||||
BOOST_CATCH(...){
|
||||
deallocate_node(x);
|
||||
delete_node_(x);
|
||||
--node_count;
|
||||
BOOST_RETHROW;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user