forked from boostorg/unordered
Replace direct accesses of fancy pointers with getters
This commit is contained in:
@ -283,7 +283,7 @@ struct concurrent_table_arrays:table_arrays<Value,Group,SizePolicy,Allocator>
|
|||||||
static concurrent_table_arrays new_group_access(group_access_allocator_type al,const super& x)
|
static concurrent_table_arrays new_group_access(group_access_allocator_type al,const super& x)
|
||||||
{
|
{
|
||||||
concurrent_table_arrays arrays{x,nullptr};
|
concurrent_table_arrays arrays{x,nullptr};
|
||||||
if(!arrays.elements_&&std::is_same<group_access*,group_access_pointer>::value){
|
if(!arrays.elements()&&std::is_same<group_access*,group_access_pointer>::value){
|
||||||
arrays.group_accesses_=
|
arrays.group_accesses_=
|
||||||
dummy_group_accesses<group_access_pointer,SizePolicy::min_size()>();
|
dummy_group_accesses<group_access_pointer,SizePolicy::min_size()>();
|
||||||
}
|
}
|
||||||
@ -306,7 +306,7 @@ struct concurrent_table_arrays:table_arrays<Value,Group,SizePolicy,Allocator>
|
|||||||
|
|
||||||
static void delete_group_access(group_access_allocator_type al,concurrent_table_arrays& arrays)noexcept
|
static void delete_group_access(group_access_allocator_type al,concurrent_table_arrays& arrays)noexcept
|
||||||
{
|
{
|
||||||
if(arrays.elements_){
|
if(arrays.elements()){
|
||||||
boost::allocator_deallocate(
|
boost::allocator_deallocate(
|
||||||
al,arrays.group_accesses_,arrays.groups_size_mask+1);
|
al,arrays.group_accesses_,arrays.groups_size_mask+1);
|
||||||
}
|
}
|
||||||
@ -477,7 +477,7 @@ public:
|
|||||||
typename arrays_type::super{
|
typename arrays_type::super{
|
||||||
x.arrays.groups_size_index,x.arrays.groups_size_mask,
|
x.arrays.groups_size_index,x.arrays.groups_size_mask,
|
||||||
boost::pointer_traits<typename arrays_type::group_type_pointer>::pointer_to(
|
boost::pointer_traits<typename arrays_type::group_type_pointer>::pointer_to(
|
||||||
*reinterpret_cast<group_type*>(boost::to_address(x.arrays.groups_))),
|
*reinterpret_cast<group_type*>(x.arrays.groups())),
|
||||||
x.arrays.elements_})),
|
x.arrays.elements_})),
|
||||||
size_ctrl_type{x.size_ctrl.ml,x.size_ctrl.size}}
|
size_ctrl_type{x.size_ctrl.ml,x.size_ctrl.size}}
|
||||||
{
|
{
|
||||||
@ -1403,7 +1403,7 @@ private:
|
|||||||
GroupAccessMode access_mode,ExecutionPolicy&& policy,F f)const
|
GroupAccessMode access_mode,ExecutionPolicy&& policy,F f)const
|
||||||
->decltype(f(nullptr,0,nullptr),void())
|
->decltype(f(nullptr,0,nullptr),void())
|
||||||
{
|
{
|
||||||
if(!this->arrays.elements_)return;
|
if(!this->arrays.elements())return;
|
||||||
auto first=this->arrays.groups(),
|
auto first=this->arrays.groups(),
|
||||||
last=first+this->arrays.groups_size_mask+1;
|
last=first+this->arrays.groups_size_mask+1;
|
||||||
std::for_each(std::forward<ExecutionPolicy>(policy),first,last,
|
std::for_each(std::forward<ExecutionPolicy>(policy),first,last,
|
||||||
@ -1425,7 +1425,7 @@ private:
|
|||||||
bool for_all_elements_while(
|
bool for_all_elements_while(
|
||||||
GroupAccessMode access_mode,ExecutionPolicy&& policy,F f)const
|
GroupAccessMode access_mode,ExecutionPolicy&& policy,F f)const
|
||||||
{
|
{
|
||||||
if(!this->arrays.elements_)return true;
|
if(!this->arrays.elements())return true;
|
||||||
auto first=this->arrays.groups(),
|
auto first=this->arrays.groups(),
|
||||||
last=first+this->arrays.groups_size_mask+1;
|
last=first+this->arrays.groups_size_mask+1;
|
||||||
return std::all_of(std::forward<ExecutionPolicy>(policy),first,last,
|
return std::all_of(std::forward<ExecutionPolicy>(policy),first,last,
|
||||||
|
@ -999,8 +999,7 @@ struct table_arrays
|
|||||||
std::is_trivially_constructible<group_type>::value
|
std::is_trivially_constructible<group_type>::value
|
||||||
#endif
|
#endif
|
||||||
>{});
|
>{});
|
||||||
using difference_type=typename boost::pointer_traits<group_type_pointer>::difference_type;
|
arrays.groups()[groups_size-1].set_sentinel();
|
||||||
arrays.groups_[static_cast<difference_type>(groups_size-1)].set_sentinel();
|
|
||||||
}
|
}
|
||||||
return arrays;
|
return arrays;
|
||||||
}
|
}
|
||||||
@ -1010,7 +1009,7 @@ struct table_arrays
|
|||||||
using storage_traits=boost::allocator_traits<allocator_type>;
|
using storage_traits=boost::allocator_traits<allocator_type>;
|
||||||
|
|
||||||
auto sal=allocator_type(al);
|
auto sal=allocator_type(al);
|
||||||
if(arrays.elements_){
|
if(arrays.elements()){
|
||||||
storage_traits::deallocate(
|
storage_traits::deallocate(
|
||||||
sal,arrays.elements_,buffer_size(arrays.groups_size_mask+1));
|
sal,arrays.elements_,buffer_size(arrays.groups_size_mask+1));
|
||||||
}
|
}
|
||||||
@ -1578,7 +1577,7 @@ public:
|
|||||||
|
|
||||||
std::size_t capacity()const noexcept
|
std::size_t capacity()const noexcept
|
||||||
{
|
{
|
||||||
return arrays.elements_?(arrays.groups_size_mask+1)*N-1:0;
|
return arrays.elements()?(arrays.groups_size_mask+1)*N-1:0;
|
||||||
}
|
}
|
||||||
|
|
||||||
float load_factor()const noexcept
|
float load_factor()const noexcept
|
||||||
@ -1900,7 +1899,7 @@ private:
|
|||||||
|
|
||||||
void fast_copy_elements_from(const table_core& x)
|
void fast_copy_elements_from(const table_core& x)
|
||||||
{
|
{
|
||||||
if(arrays.elements_&&x.arrays.elements_){
|
if(arrays.elements()&&x.arrays.elements()){
|
||||||
copy_elements_array_from(x);
|
copy_elements_array_from(x);
|
||||||
copy_groups_array_from(x);
|
copy_groups_array_from(x);
|
||||||
size_ctrl.ml=std::size_t(x.size_ctrl.ml);
|
size_ctrl.ml=std::size_t(x.size_ctrl.ml);
|
||||||
|
@ -386,7 +386,7 @@ public:
|
|||||||
iterator begin()noexcept
|
iterator begin()noexcept
|
||||||
{
|
{
|
||||||
iterator it{this->arrays.groups(),0,this->arrays.elements()};
|
iterator it{this->arrays.groups(),0,this->arrays.elements()};
|
||||||
if(this->arrays.elements_&&
|
if(this->arrays.elements()&&
|
||||||
!(this->arrays.groups()[0].match_occupied()&0x1))++it;
|
!(this->arrays.groups()[0].match_occupied()&0x1))++it;
|
||||||
return it;
|
return it;
|
||||||
}
|
}
|
||||||
@ -556,7 +556,7 @@ private:
|
|||||||
arrays_type{
|
arrays_type{
|
||||||
x.arrays.groups_size_index,x.arrays.groups_size_mask,
|
x.arrays.groups_size_index,x.arrays.groups_size_mask,
|
||||||
boost::pointer_traits<typename arrays_type::group_type_pointer>::pointer_to(
|
boost::pointer_traits<typename arrays_type::group_type_pointer>::pointer_to(
|
||||||
*reinterpret_cast<group_type*>(boost::to_address(x.arrays.groups_))),
|
*reinterpret_cast<group_type*>(x.arrays.groups())),
|
||||||
x.arrays.elements_},
|
x.arrays.elements_},
|
||||||
size_ctrl_type{
|
size_ctrl_type{
|
||||||
x.size_ctrl.ml,x.size_ctrl.size}}
|
x.size_ctrl.ml,x.size_ctrl.size}}
|
||||||
|
Reference in New Issue
Block a user