forked from boostorg/container
Remove std::pair dependency for multiallocation_chain
This commit is contained in:
@ -31,7 +31,7 @@
|
||||
// intrusive
|
||||
#include <boost/intrusive/slist.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include <boost/intrusive/detail/minimal_pair_header.hpp>
|
||||
#include <boost/intrusive/detail/twin.hpp>
|
||||
// move
|
||||
#include <boost/move/utility_core.hpp>
|
||||
|
||||
@ -80,6 +80,7 @@ class basic_multiallocation_chain
|
||||
typedef VoidPointer void_pointer;
|
||||
typedef typename slist_impl_t::iterator iterator;
|
||||
typedef typename slist_impl_t::size_type size_type;
|
||||
typedef boost::intrusive::twin<void_pointer> pointer_pair;
|
||||
|
||||
basic_multiallocation_chain()
|
||||
: slist_impl_()
|
||||
@ -171,17 +172,17 @@ class basic_multiallocation_chain
|
||||
static iterator iterator_to(const void_pointer &p)
|
||||
{ return slist_impl_t::s_iterator_to(to_node(p)); }
|
||||
|
||||
std::pair<void_pointer, void_pointer> extract_data()
|
||||
pointer_pair extract_data()
|
||||
{
|
||||
if(BOOST_LIKELY(!slist_impl_.empty())){
|
||||
std::pair<void_pointer, void_pointer> ret
|
||||
pointer_pair ret
|
||||
(slist_impl_.begin().operator->()
|
||||
,slist_impl_.last().operator->());
|
||||
slist_impl_.clear();
|
||||
return ret;
|
||||
}
|
||||
else {
|
||||
return std::pair<void_pointer, void_pointer>();
|
||||
return pointer_pair();
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -218,8 +219,9 @@ class transform_multiallocation_chain
|
||||
public:
|
||||
typedef transform_iterator
|
||||
< typename MultiallocationChain::iterator
|
||||
, dtl::cast_functor <T> > iterator;
|
||||
, dtl::cast_functor <T> > iterator;
|
||||
typedef typename MultiallocationChain::size_type size_type;
|
||||
typedef boost::intrusive::twin<pointer> pointer_pair;
|
||||
|
||||
transform_multiallocation_chain()
|
||||
: MultiallocationChain()
|
||||
@ -284,10 +286,10 @@ class transform_multiallocation_chain
|
||||
static iterator iterator_to(const pointer &p)
|
||||
{ return iterator(MultiallocationChain::iterator_to(p)); }
|
||||
|
||||
std::pair<pointer, pointer> extract_data()
|
||||
pointer_pair extract_data()
|
||||
{
|
||||
std::pair<void_pointer, void_pointer> data(this->MultiallocationChain::extract_data());
|
||||
return std::pair<pointer, pointer>(cast(data.first), cast(data.second));
|
||||
typename MultiallocationChain::pointer_pair data(this->MultiallocationChain::extract_data());
|
||||
return pointer_pair(cast(data.first), cast(data.second));
|
||||
}
|
||||
/*
|
||||
MultiallocationChain &extract_multiallocation_chain()
|
||||
|
@ -49,7 +49,7 @@ struct fake_segment_manager
|
||||
static void deallocate_many(multiallocation_chain &chain)
|
||||
{
|
||||
std::size_t size = chain.size();
|
||||
std::pair<void*, void*> ptrs = chain.extract_data();
|
||||
multiallocation_chain::pointer_pair ptrs = chain.extract_data();
|
||||
dlmalloc_memchain dlchain;
|
||||
BOOST_CONTAINER_MEMCHAIN_INIT_FROM(&dlchain, ptrs.first, ptrs.second, size);
|
||||
dlmalloc_multidealloc(&dlchain);
|
||||
|
@ -2005,7 +2005,7 @@ class stable_vector
|
||||
this->allocate_individual(n, m);
|
||||
holder.splice_after(holder.before_begin(), m, m.before_begin(), m.last(), n);
|
||||
this->internal_data.pool_size += n;
|
||||
std::pair<node_ptr, node_ptr> data(holder.extract_data());
|
||||
typename multiallocation_chain::pointer_pair data(holder.extract_data());
|
||||
pool_first_ref = data.first;
|
||||
pool_last_ref = data.second;
|
||||
}
|
||||
@ -2021,7 +2021,7 @@ class stable_vector
|
||||
, internal_data.pool_size);
|
||||
holder.push_front(p);
|
||||
++this->internal_data.pool_size;
|
||||
std::pair<node_ptr, node_ptr> ret(holder.extract_data());
|
||||
typename multiallocation_chain::pointer_pair ret(holder.extract_data());
|
||||
pool_first_ref = ret.first;
|
||||
pool_last_ref = ret.second;
|
||||
}
|
||||
@ -2035,7 +2035,7 @@ class stable_vector
|
||||
, node_ptr_traits::static_cast_from(pool_last_ref)
|
||||
, internal_data.pool_size);
|
||||
this->internal_data.pool_size = ch.size();
|
||||
const std::pair<node_ptr, node_ptr> ret(ch.extract_data());
|
||||
const typename multiallocation_chain::pointer_pair ret(ch.extract_data());
|
||||
pool_first_ref = ret.first;
|
||||
pool_last_ref = ret.second;
|
||||
}
|
||||
@ -2057,7 +2057,7 @@ class stable_vector
|
||||
pool_first_ref = pool_last_ref = node_ptr();
|
||||
}
|
||||
else{
|
||||
const std::pair<node_ptr, node_ptr> data(holder.extract_data());
|
||||
const typename multiallocation_chain::pointer_pair data(holder.extract_data());
|
||||
pool_first_ref = data.first;
|
||||
pool_last_ref = data.second;
|
||||
}
|
||||
|
Reference in New Issue
Block a user