Replace direct accesses of fancy pointers with getters

This commit is contained in:
Christian Mazakas
2023-09-06 10:17:01 -07:00
parent c3786357a6
commit 2cab340749
3 changed files with 11 additions and 12 deletions

View File

@ -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,

View File

@ -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);

View File

@ -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}}