forked from boostorg/unordered
Make value_base a member of pointer nodes.
This commit is contained in:
@ -52,15 +52,16 @@ namespace boost { namespace unordered { namespace detail {
|
|||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct grouped_ptr_node :
|
struct grouped_ptr_node :
|
||||||
boost::unordered::detail::value_base<T>,
|
|
||||||
boost::unordered::detail::ptr_bucket
|
boost::unordered::detail::ptr_bucket
|
||||||
{
|
{
|
||||||
|
typedef T value_type;
|
||||||
typedef boost::unordered::detail::ptr_bucket bucket_base;
|
typedef boost::unordered::detail::ptr_bucket bucket_base;
|
||||||
typedef grouped_ptr_node<T>* node_pointer;
|
typedef grouped_ptr_node<T>* node_pointer;
|
||||||
typedef ptr_bucket* link_pointer;
|
typedef ptr_bucket* link_pointer;
|
||||||
|
|
||||||
node_pointer group_prev_;
|
node_pointer group_prev_;
|
||||||
std::size_t hash_;
|
std::size_t hash_;
|
||||||
|
boost::unordered::detail::value_base<T> value_base_;
|
||||||
|
|
||||||
grouped_ptr_node() :
|
grouped_ptr_node() :
|
||||||
bucket_base(),
|
bucket_base(),
|
||||||
@ -73,6 +74,10 @@ namespace boost { namespace unordered { namespace detail {
|
|||||||
group_prev_ = self;
|
group_prev_ = self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void* address() { return value_base_.address(); }
|
||||||
|
value_type& value() { return value_base_.value(); }
|
||||||
|
value_type* value_ptr() { return value_base_.value_ptr(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
grouped_ptr_node& operator=(grouped_ptr_node const&);
|
grouped_ptr_node& operator=(grouped_ptr_node const&);
|
||||||
};
|
};
|
||||||
|
@ -49,14 +49,15 @@ namespace boost { namespace unordered { namespace detail {
|
|||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct ptr_node :
|
struct ptr_node :
|
||||||
boost::unordered::detail::value_base<T>,
|
|
||||||
boost::unordered::detail::ptr_bucket
|
boost::unordered::detail::ptr_bucket
|
||||||
{
|
{
|
||||||
|
typedef T value_type;
|
||||||
typedef boost::unordered::detail::ptr_bucket bucket_base;
|
typedef boost::unordered::detail::ptr_bucket bucket_base;
|
||||||
typedef ptr_node<T>* node_pointer;
|
typedef ptr_node<T>* node_pointer;
|
||||||
typedef ptr_bucket* link_pointer;
|
typedef ptr_bucket* link_pointer;
|
||||||
|
|
||||||
std::size_t hash_;
|
std::size_t hash_;
|
||||||
|
boost::unordered::detail::value_base<T> value_base_;
|
||||||
|
|
||||||
ptr_node() :
|
ptr_node() :
|
||||||
bucket_base(),
|
bucket_base(),
|
||||||
@ -67,6 +68,10 @@ namespace boost { namespace unordered { namespace detail {
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void* address() { return value_base_.address(); }
|
||||||
|
value_type& value() { return value_base_.value(); }
|
||||||
|
value_type* value_ptr() { return value_base_.value_ptr(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ptr_node& operator=(ptr_node const&);
|
ptr_node& operator=(ptr_node const&);
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user