forked from boostorg/intrusive
Break options.hpp dependencies, now hooks don't depend on heavy meta-machinery.
This commit is contained in:
@@ -22,13 +22,12 @@
|
||||
#include <boost/intrusive/detail/any_node_and_algorithms.hpp>
|
||||
#include <boost/intrusive/options.hpp>
|
||||
#include <boost/intrusive/detail/generic_hook.hpp>
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/intrusive/pointer_rebind.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace intrusive {
|
||||
|
||||
struct any_empty{};
|
||||
|
||||
//! Helper metafunction to define a \c \c any_base_hook that yields to the same
|
||||
//! type when the same options (either explicitly or implicitly) are used.
|
||||
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
|
||||
@@ -238,39 +237,34 @@ class any_member_hook
|
||||
|
||||
namespace detail{
|
||||
|
||||
template<class ValueTraits>
|
||||
struct any_to_get_base_pointer_type
|
||||
{
|
||||
typedef typename pointer_rebind
|
||||
<typename ValueTraits::hooktags::node_traits::node_ptr, void>::type type;
|
||||
};
|
||||
|
||||
template<class ValueTraits>
|
||||
struct any_to_get_member_pointer_type
|
||||
{
|
||||
typedef typename pointer_rebind
|
||||
<typename ValueTraits::node_ptr, void>::type type;
|
||||
};
|
||||
BOOST_INTRUSIVE_INTERNAL_STATIC_BOOL_IS_TRUE(old_proto_value_traits_base_hook, hooktags::is_base_hook)
|
||||
|
||||
//!This option setter specifies that the container
|
||||
//!must use the specified base hook
|
||||
template<class BaseHook, template <class> class NodeTraits>
|
||||
template<class BasicHook, template <class> class NodeTraits>
|
||||
struct any_to_some_hook
|
||||
{
|
||||
typedef typename BaseHook::template pack<any_empty>::proto_value_traits old_proto_value_traits;
|
||||
typedef typename BasicHook::template pack<empty>::proto_value_traits old_proto_value_traits;
|
||||
|
||||
template<class Base>
|
||||
struct pack : public Base
|
||||
{
|
||||
struct proto_value_traits : public old_proto_value_traits
|
||||
struct proto_value_traits
|
||||
{
|
||||
//proto_value_traits::hooktags::is_base_hook is used by get_value_traits
|
||||
//to detect base hooks, so mark it in case BasicHook has it.
|
||||
struct hooktags
|
||||
{
|
||||
static const bool is_base_hook = old_proto_value_traits_base_hook_bool_is_true
|
||||
<old_proto_value_traits>::value;
|
||||
};
|
||||
|
||||
typedef old_proto_value_traits basic_hook_t;
|
||||
static const bool is_any_hook = true;
|
||||
typedef typename detail::eval_if_c
|
||||
< detail::internal_base_hook_bool_is_true<old_proto_value_traits>::value
|
||||
, any_to_get_base_pointer_type<old_proto_value_traits>
|
||||
, any_to_get_member_pointer_type<old_proto_value_traits>
|
||||
>::type void_pointer;
|
||||
typedef NodeTraits<void_pointer> node_traits;
|
||||
|
||||
template<class VoidPtr>
|
||||
struct node_traits_from_voidptr
|
||||
{ typedef NodeTraits<VoidPtr> type; };
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -281,55 +275,55 @@ struct any_to_some_hook
|
||||
|
||||
//!This option setter specifies that
|
||||
//!any hook should behave as an slist hook
|
||||
template<class BaseHook>
|
||||
template<class BasicHook>
|
||||
struct any_to_slist_hook
|
||||
/// @cond
|
||||
: public detail::any_to_some_hook<BaseHook, any_slist_node_traits>
|
||||
: public detail::any_to_some_hook<BasicHook, any_slist_node_traits>
|
||||
/// @endcond
|
||||
{};
|
||||
|
||||
//!This option setter specifies that
|
||||
//!any hook should behave as an list hook
|
||||
template<class BaseHook>
|
||||
template<class BasicHook>
|
||||
struct any_to_list_hook
|
||||
/// @cond
|
||||
: public detail::any_to_some_hook<BaseHook, any_list_node_traits>
|
||||
: public detail::any_to_some_hook<BasicHook, any_list_node_traits>
|
||||
/// @endcond
|
||||
{};
|
||||
|
||||
//!This option setter specifies that
|
||||
//!any hook should behave as a set hook
|
||||
template<class BaseHook>
|
||||
template<class BasicHook>
|
||||
struct any_to_set_hook
|
||||
/// @cond
|
||||
: public detail::any_to_some_hook<BaseHook, any_rbtree_node_traits>
|
||||
: public detail::any_to_some_hook<BasicHook, any_rbtree_node_traits>
|
||||
/// @endcond
|
||||
{};
|
||||
|
||||
//!This option setter specifies that
|
||||
//!any hook should behave as an avl_set hook
|
||||
template<class BaseHook>
|
||||
template<class BasicHook>
|
||||
struct any_to_avl_set_hook
|
||||
/// @cond
|
||||
: public detail::any_to_some_hook<BaseHook, any_avltree_node_traits>
|
||||
: public detail::any_to_some_hook<BasicHook, any_avltree_node_traits>
|
||||
/// @endcond
|
||||
{};
|
||||
|
||||
//!This option setter specifies that any
|
||||
//!hook should behave as a bs_set hook
|
||||
template<class BaseHook>
|
||||
template<class BasicHook>
|
||||
struct any_to_bs_set_hook
|
||||
/// @cond
|
||||
: public detail::any_to_some_hook<BaseHook, any_tree_node_traits>
|
||||
: public detail::any_to_some_hook<BasicHook, any_tree_node_traits>
|
||||
/// @endcond
|
||||
{};
|
||||
|
||||
//!This option setter specifies that any hook
|
||||
//!should behave as an unordered set hook
|
||||
template<class BaseHook>
|
||||
template<class BasicHook>
|
||||
struct any_to_unordered_set_hook
|
||||
/// @cond
|
||||
: public detail::any_to_some_hook<BaseHook, any_unordered_node_traits>
|
||||
: public detail::any_to_some_hook<BasicHook, any_unordered_node_traits>
|
||||
/// @endcond
|
||||
{};
|
||||
|
||||
|
@@ -30,7 +30,7 @@
|
||||
#include <boost/intrusive/detail/ebo_functor_holder.hpp>
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include <boost/intrusive/options.hpp>
|
||||
#include <boost/intrusive/detail/get_value_traits.hpp>
|
||||
#include <boost/intrusive/avltree_algorithms.hpp>
|
||||
#include <boost/intrusive/link_mode.hpp>
|
||||
#include <boost/move/utility_core.hpp>
|
||||
@@ -40,9 +40,16 @@ namespace intrusive {
|
||||
|
||||
/// @cond
|
||||
|
||||
struct default_avltree_hook_applier
|
||||
{ template <class T> struct apply{ typedef typename T::default_avltree_hook type; }; };
|
||||
|
||||
template<>
|
||||
struct is_default_hook_tag<default_avltree_hook_applier>
|
||||
{ static const bool value = true; };
|
||||
|
||||
struct avltree_defaults
|
||||
{
|
||||
typedef detail::default_avltree_hook proto_value_traits;
|
||||
typedef default_avltree_hook_applier proto_value_traits;
|
||||
static const bool constant_time_size = true;
|
||||
typedef std::size_t size_type;
|
||||
typedef void compare;
|
||||
|
@@ -39,7 +39,7 @@
|
||||
#include <boost/intrusive/detail/size_holder.hpp>
|
||||
#include <boost/intrusive/detail/algo_type.hpp>
|
||||
|
||||
#include <boost/intrusive/options.hpp>
|
||||
#include <boost/intrusive/detail/get_value_traits.hpp>
|
||||
#include <boost/intrusive/bstree_algorithms.hpp>
|
||||
#include <boost/intrusive/link_mode.hpp>
|
||||
#include <boost/intrusive/parent_from_member.hpp>
|
||||
@@ -56,9 +56,16 @@ namespace intrusive {
|
||||
|
||||
/// @cond
|
||||
|
||||
struct default_bstree_hook_applier
|
||||
{ template <class T> struct apply{ typedef typename T::default_bstree_hook type; }; };
|
||||
|
||||
template<>
|
||||
struct is_default_hook_tag<default_bstree_hook_applier>
|
||||
{ static const bool value = true; };
|
||||
|
||||
struct bstree_defaults
|
||||
{
|
||||
typedef detail::default_bstree_hook proto_value_traits;
|
||||
typedef default_bstree_hook_applier proto_value_traits;
|
||||
static const bool constant_time_size = true;
|
||||
typedef std::size_t size_type;
|
||||
typedef void compare;
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#include <boost/intrusive/link_mode.hpp>
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/intrusive/detail/assert.hpp>
|
||||
#include <boost/intrusive/detail/node_holder.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
|
||||
namespace boost {
|
||||
|
218
include/boost/intrusive/detail/get_value_traits.hpp
Normal file
218
include/boost/intrusive/detail/get_value_traits.hpp
Normal file
@@ -0,0 +1,218 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2014-2014
|
||||
//
|
||||
// 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)
|
||||
//
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef BOOST_INTRUSIVE_DETAIL_GET_VALUE_TRAITS_HPP
|
||||
#define BOOST_INTRUSIVE_DETAIL_GET_VALUE_TRAITS_HPP
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
# pragma once
|
||||
#endif
|
||||
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/intrusive/detail/hook_traits.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace intrusive {
|
||||
|
||||
#ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
|
||||
template<class SupposedValueTraits>
|
||||
struct is_default_hook_tag
|
||||
{ static const bool value = false; };
|
||||
|
||||
namespace detail{
|
||||
|
||||
template <class T, class BaseHook>
|
||||
struct concrete_hook_base_value_traits
|
||||
{
|
||||
typedef typename BaseHook::hooktags tags;
|
||||
typedef bhtraits
|
||||
< T
|
||||
, typename tags::node_traits
|
||||
, tags::link_mode
|
||||
, typename tags::tag
|
||||
, tags::type> type;
|
||||
};
|
||||
|
||||
template <class BaseHook>
|
||||
struct concrete_hook_base_value_traits<void, BaseHook>
|
||||
{
|
||||
typedef typename BaseHook::hooktags type;
|
||||
};
|
||||
|
||||
template <class T, class AnyToSomeHook_ProtoValueTraits>
|
||||
struct any_hook_base_value_traits
|
||||
{
|
||||
//AnyToSomeHook value_traits derive from a generic_hook
|
||||
//The generic_hook is configured with any_node_traits
|
||||
//and AnyToSomeHook::value_traits with the correct
|
||||
//node traits for the container, so use node_traits
|
||||
//from AnyToSomeHook_ProtoValueTraits and the rest of
|
||||
//elements from the hooktags member of the generic_hook
|
||||
|
||||
typedef typename AnyToSomeHook_ProtoValueTraits::basic_hook_t basic_hook_t;
|
||||
typedef typename pointer_rebind
|
||||
< typename basic_hook_t::hooktags::node_traits::node_ptr
|
||||
, void>::type void_pointer;
|
||||
typedef typename AnyToSomeHook_ProtoValueTraits::template
|
||||
node_traits_from_voidptr<void_pointer>::type node_traits;
|
||||
|
||||
typedef bhtraits
|
||||
< T
|
||||
, node_traits
|
||||
, basic_hook_t::hooktags::link_mode
|
||||
, typename basic_hook_t::hooktags::tag
|
||||
, basic_hook_t::hooktags::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template <class AnyToSomeHook_ProtoValueTraits>
|
||||
struct any_hook_base_value_traits<void, AnyToSomeHook_ProtoValueTraits>
|
||||
{
|
||||
typedef typename AnyToSomeHook_ProtoValueTraits::basic_hook_t basic_hook_t;
|
||||
typedef typename pointer_rebind
|
||||
< typename basic_hook_t::hooktags::node_traits::node_ptr
|
||||
, void>::type void_pointer;
|
||||
|
||||
struct type
|
||||
{
|
||||
typedef typename AnyToSomeHook_ProtoValueTraits::template
|
||||
node_traits_from_voidptr<void_pointer>::type node_traits;
|
||||
};
|
||||
};
|
||||
|
||||
template<class MemberHook>
|
||||
struct get_member_value_traits
|
||||
{
|
||||
typedef typename MemberHook::member_value_traits type;
|
||||
};
|
||||
|
||||
BOOST_INTRUSIVE_INTERNAL_STATIC_BOOL_IS_TRUE(internal_any_hook, is_any_hook)
|
||||
BOOST_INTRUSIVE_INTERNAL_STATIC_BOOL_IS_TRUE(internal_base_hook, hooktags::is_base_hook)
|
||||
|
||||
template <class T>
|
||||
struct internal_member_value_traits
|
||||
{
|
||||
template <class U> static one test(...);
|
||||
template <class U> static two test(typename U::member_value_traits* = 0);
|
||||
static const bool value = sizeof(test<T>(0)) == sizeof(two);
|
||||
};
|
||||
|
||||
template<class SupposedValueTraits, class T, bool = is_default_hook_tag<SupposedValueTraits>::value>
|
||||
struct supposed_value_traits;
|
||||
|
||||
template<class T, class BaseHook, bool = internal_any_hook_bool_is_true<BaseHook>::value>
|
||||
struct get_base_value_traits;
|
||||
|
||||
template<class SupposedValueTraits, class T, bool = internal_base_hook_bool_is_true<SupposedValueTraits>::value>
|
||||
struct supposed_base_value_traits;
|
||||
|
||||
template<class SupposedValueTraits, bool = internal_member_value_traits<SupposedValueTraits>::value>
|
||||
struct supposed_member_value_traits;
|
||||
|
||||
template<class SupposedValueTraits, bool = internal_any_hook_bool_is_true<SupposedValueTraits>::value>
|
||||
struct any_or_concrete_value_traits;
|
||||
|
||||
//Base any hook
|
||||
template<class T, class BaseHook>
|
||||
struct get_base_value_traits<T, BaseHook, true>
|
||||
: any_hook_base_value_traits<T, BaseHook>
|
||||
{};
|
||||
|
||||
//Non-any base hook
|
||||
template<class T, class BaseHook>
|
||||
struct get_base_value_traits<T, BaseHook, false>
|
||||
: concrete_hook_base_value_traits<T, BaseHook>
|
||||
{};
|
||||
|
||||
//...It's a default hook
|
||||
template<class SupposedValueTraits, class T>
|
||||
struct supposed_value_traits<SupposedValueTraits, T, true>
|
||||
{ typedef typename SupposedValueTraits::template apply<T>::type type; };
|
||||
|
||||
//...Not a default hook
|
||||
template<class SupposedValueTraits, class T>
|
||||
struct supposed_value_traits<SupposedValueTraits, T, false>
|
||||
{ typedef SupposedValueTraits type; };
|
||||
|
||||
//...It's a base hook
|
||||
template<class BaseHook, class T>
|
||||
struct supposed_base_value_traits<BaseHook, T, true>
|
||||
: get_base_value_traits<T, BaseHook>
|
||||
{};
|
||||
|
||||
//...Not a base hook, try if it's a member or value_traits
|
||||
template<class SupposedValueTraits, class T>
|
||||
struct supposed_base_value_traits<SupposedValueTraits, T, false>
|
||||
: supposed_member_value_traits<SupposedValueTraits>
|
||||
{};
|
||||
|
||||
//...It's a member hook
|
||||
template<class MemberHook>
|
||||
struct supposed_member_value_traits<MemberHook, true>
|
||||
: get_member_value_traits<MemberHook>
|
||||
{};
|
||||
|
||||
//...Not a member hook
|
||||
template<class SupposedValueTraits>
|
||||
struct supposed_member_value_traits<SupposedValueTraits, false>
|
||||
: any_or_concrete_value_traits<SupposedValueTraits>
|
||||
{};
|
||||
|
||||
template<class AnyToSomeHook_ProtoValueTraits>
|
||||
struct any_or_concrete_value_traits<AnyToSomeHook_ProtoValueTraits, true>
|
||||
{
|
||||
//A hook node (non-base, e.g.: member or other value traits
|
||||
typedef typename AnyToSomeHook_ProtoValueTraits::basic_hook_t basic_hook_t;
|
||||
typedef typename pointer_rebind
|
||||
<typename basic_hook_t::node_ptr, void>::type void_pointer;
|
||||
typedef typename AnyToSomeHook_ProtoValueTraits::template
|
||||
node_traits_from_voidptr<void_pointer>::type any_node_traits;
|
||||
|
||||
struct type : basic_hook_t
|
||||
{
|
||||
typedef any_node_traits node_traits;
|
||||
};
|
||||
};
|
||||
|
||||
template<class SupposedValueTraits>
|
||||
struct any_or_concrete_value_traits<SupposedValueTraits, false>
|
||||
{
|
||||
typedef SupposedValueTraits type;
|
||||
};
|
||||
|
||||
////////////////////////////////////////
|
||||
// get_value_traits / get_node_traits
|
||||
////////////////////////////////////////
|
||||
|
||||
template<class T, class SupposedValueTraits>
|
||||
struct get_value_traits
|
||||
: supposed_base_value_traits<typename supposed_value_traits<SupposedValueTraits, T>::type, T>
|
||||
{};
|
||||
|
||||
template<class SupposedValueTraits>
|
||||
struct get_node_traits
|
||||
{
|
||||
typedef typename get_value_traits<void, SupposedValueTraits>::type::node_traits type;
|
||||
};
|
||||
|
||||
} //namespace detail{
|
||||
|
||||
#endif //BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
|
||||
} //namespace intrusive {
|
||||
} //namespace boost {
|
||||
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
||||
#endif //#ifndef BOOST_INTRUSIVE_DETAIL_GET_VALUE_TRAITS_HPP
|
@@ -83,62 +83,6 @@ struct bhtraits
|
||||
typedef NodeTraits node_traits;
|
||||
};
|
||||
|
||||
/*
|
||||
template<class T, class NodePtr, typename pointer_traits<NodePtr>::element_type T::* P>
|
||||
struct mhtraits_base
|
||||
{
|
||||
public:
|
||||
typedef typename pointer_traits<NodePtr>::element_type node;
|
||||
typedef T value_type;
|
||||
typedef NodePtr node_ptr;
|
||||
typedef typename pointer_traits<node_ptr>::
|
||||
template rebind_pointer<const node>::type const_node_ptr;
|
||||
typedef typename pointer_traits<node_ptr>::
|
||||
template rebind_pointer<T>::type pointer;
|
||||
typedef typename pointer_traits<node_ptr>::
|
||||
template rebind_pointer<const T>::type const_pointer;
|
||||
typedef T & reference;
|
||||
typedef const T & const_reference;
|
||||
typedef node& node_reference;
|
||||
typedef const node & const_node_reference;
|
||||
|
||||
static node_ptr to_node_ptr(reference value)
|
||||
{
|
||||
return pointer_traits<node_ptr>::pointer_to
|
||||
(static_cast<node_reference>(value.*P));
|
||||
}
|
||||
|
||||
static const_node_ptr to_node_ptr(const_reference value)
|
||||
{
|
||||
return pointer_traits<const_node_ptr>::pointer_to
|
||||
(static_cast<const_node_reference>(value.*P));
|
||||
}
|
||||
|
||||
static pointer to_value_ptr(const node_ptr & n)
|
||||
{
|
||||
return pointer_traits<pointer>::pointer_to
|
||||
(*detail::parent_from_member<T, node>
|
||||
(boost::intrusive::detail::to_raw_pointer(n), P));
|
||||
}
|
||||
|
||||
static const_pointer to_value_ptr(const const_node_ptr & n)
|
||||
{
|
||||
return pointer_traits<const_pointer>::pointer_to
|
||||
(*detail::parent_from_member<T, node>
|
||||
(boost::intrusive::detail::to_raw_pointer(n), P));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template<class T, class NodeTraits, typename NodeTraits::node T::* P, link_mode_type LinkMode>
|
||||
struct mhtraits
|
||||
: public mhtraits_base<T, typename NodeTraits::node_ptr, P>
|
||||
{
|
||||
static const link_mode_type link_mode = LinkMode;
|
||||
typedef NodeTraits node_traits;
|
||||
};
|
||||
*/
|
||||
|
||||
|
||||
template<class T, class Hook, Hook T::* P>
|
||||
struct mhtraits
|
||||
|
@@ -463,7 +463,7 @@ template<class ValueTraitsOrHookOption>
|
||||
struct unordered_bucket
|
||||
: public detail::unordered_bucket_impl
|
||||
<typename ValueTraitsOrHookOption::
|
||||
template pack<none>::proto_value_traits
|
||||
template pack<empty>::proto_value_traits
|
||||
>
|
||||
{};
|
||||
|
||||
@@ -472,10 +472,10 @@ struct unordered_bucket
|
||||
//!a hash container.
|
||||
template<class ValueTraitsOrHookOption>
|
||||
struct unordered_bucket_ptr
|
||||
: public detail::unordered_bucket_ptr_impl
|
||||
<typename ValueTraitsOrHookOption::
|
||||
template pack<none>::proto_value_traits
|
||||
>
|
||||
: public detail::unordered_bucket_ptr_impl
|
||||
<typename ValueTraitsOrHookOption::
|
||||
template pack<empty>::proto_value_traits
|
||||
>
|
||||
{};
|
||||
|
||||
//!This metafunction will obtain the type of the default bucket traits
|
||||
@@ -486,7 +486,7 @@ template<class ValueTraitsOrHookOption>
|
||||
struct unordered_default_bucket_traits
|
||||
{
|
||||
typedef typename ValueTraitsOrHookOption::
|
||||
template pack<none>::proto_value_traits supposed_value_traits;
|
||||
template pack<empty>::proto_value_traits supposed_value_traits;
|
||||
typedef typename detail::
|
||||
get_slist_impl_from_supposed_value_traits
|
||||
<supposed_value_traits>::type slist_impl;
|
||||
@@ -497,9 +497,17 @@ struct unordered_default_bucket_traits
|
||||
|
||||
struct default_bucket_traits;
|
||||
|
||||
//hashtable default hook traits
|
||||
struct default_hashtable_hook_applier
|
||||
{ template <class T> struct apply{ typedef typename T::default_hashtable_hook type; }; };
|
||||
|
||||
template<>
|
||||
struct is_default_hook_tag<default_hashtable_hook_applier>
|
||||
{ static const bool value = true; };
|
||||
|
||||
struct hashtable_defaults
|
||||
{
|
||||
typedef detail::default_hashtable_hook proto_value_traits;
|
||||
typedef default_hashtable_hook_applier proto_value_traits;
|
||||
typedef std::size_t size_type;
|
||||
typedef void equal;
|
||||
typedef void hash;
|
||||
|
@@ -26,7 +26,7 @@
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/intrusive/link_mode.hpp>
|
||||
#include <boost/intrusive/options.hpp>
|
||||
#include <boost/intrusive/detail/get_value_traits.hpp>
|
||||
#include <boost/intrusive/detail/is_stateful_value_traits.hpp>
|
||||
#include <boost/intrusive/detail/default_header_holder.hpp>
|
||||
#include <boost/intrusive/detail/reverse_iterator.hpp>
|
||||
@@ -51,9 +51,16 @@ namespace intrusive {
|
||||
|
||||
/// @cond
|
||||
|
||||
struct default_list_hook_applier
|
||||
{ template <class T> struct apply{ typedef typename T::default_list_hook type; }; };
|
||||
|
||||
template<>
|
||||
struct is_default_hook_tag<default_list_hook_applier>
|
||||
{ static const bool value = true; };
|
||||
|
||||
struct list_defaults
|
||||
{
|
||||
typedef detail::default_list_hook proto_value_traits;
|
||||
typedef default_list_hook_applier proto_value_traits;
|
||||
static const bool constant_time_size = true;
|
||||
typedef std::size_t size_type;
|
||||
typedef void header_holder_type;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2007-2013
|
||||
// (C) Copyright Ion Gaztanaga 2007-2014
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@@ -22,177 +22,29 @@
|
||||
#include <boost/intrusive/link_mode.hpp>
|
||||
#include <boost/intrusive/pack_options.hpp>
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/intrusive/detail/hook_traits.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace intrusive {
|
||||
|
||||
#ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
|
||||
struct empty
|
||||
{};
|
||||
|
||||
template<class Functor>
|
||||
struct fhtraits;
|
||||
|
||||
template<class T, class Hook, Hook T::* P>
|
||||
struct mhtraits;
|
||||
|
||||
//typedef void default_tag;
|
||||
struct default_tag;
|
||||
struct member_tag;
|
||||
|
||||
namespace detail{
|
||||
|
||||
struct default_hook_tag{};
|
||||
|
||||
#define BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER_DEFINITION(BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER) \
|
||||
struct BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER : public default_hook_tag\
|
||||
{\
|
||||
template <class T>\
|
||||
struct apply\
|
||||
{ typedef typename T::BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER type; };\
|
||||
}\
|
||||
|
||||
BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER_DEFINITION(default_list_hook);
|
||||
BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER_DEFINITION(default_slist_hook);
|
||||
BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER_DEFINITION(default_rbtree_hook);
|
||||
BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER_DEFINITION(default_hashtable_hook);
|
||||
BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER_DEFINITION(default_avltree_hook);
|
||||
BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER_DEFINITION(default_bstree_hook);
|
||||
|
||||
#undef BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER_DEFINITION
|
||||
|
||||
template <class T, class BaseHook>
|
||||
struct concrete_hook_base_value_traits
|
||||
{
|
||||
typedef typename BaseHook::hooktags tags;
|
||||
typedef bhtraits
|
||||
< T
|
||||
, typename tags::node_traits
|
||||
, tags::link_mode
|
||||
, typename tags::tag
|
||||
, tags::type> type;
|
||||
};
|
||||
|
||||
template <class BaseHook>
|
||||
struct concrete_hook_base_node_traits
|
||||
{ typedef typename BaseHook::hooktags::node_traits type; };
|
||||
|
||||
template <class T, class AnyToSomeHook_ProtoValueTraits>
|
||||
struct any_hook_base_value_traits
|
||||
{
|
||||
//AnyToSomeHook value_traits derive from a generic_hook
|
||||
//The generic_hook is configured with any_node_traits
|
||||
//and AnyToSomeHook::value_traits with the correct
|
||||
//node traits for the container, so use node_traits
|
||||
//from AnyToSomeHook_ProtoValueTraits and the rest of
|
||||
//elements from the hooktags member of the generic_hook
|
||||
typedef AnyToSomeHook_ProtoValueTraits proto_value_traits;
|
||||
typedef bhtraits
|
||||
< T
|
||||
, typename proto_value_traits::node_traits
|
||||
, proto_value_traits::hooktags::link_mode
|
||||
, typename proto_value_traits::hooktags::tag
|
||||
, proto_value_traits::hooktags::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template <class BaseHook>
|
||||
struct any_hook_base_node_traits
|
||||
{ typedef typename BaseHook::node_traits type; };
|
||||
|
||||
|
||||
BOOST_INTRUSIVE_INTERNAL_STATIC_BOOL_IS_TRUE(internal_any_hook, is_any_hook)
|
||||
|
||||
template<class T, class BaseHook>
|
||||
struct get_base_value_traits
|
||||
{
|
||||
typedef typename eval_if_c
|
||||
< internal_any_hook_bool_is_true<BaseHook>::value
|
||||
, any_hook_base_value_traits<T, BaseHook>
|
||||
, concrete_hook_base_value_traits<T, BaseHook>
|
||||
>::type type;
|
||||
};
|
||||
|
||||
template<class BaseHook>
|
||||
struct get_base_node_traits
|
||||
{
|
||||
typedef typename eval_if_c
|
||||
< internal_any_hook_bool_is_true<BaseHook>::value
|
||||
, any_hook_base_node_traits<BaseHook>
|
||||
, concrete_hook_base_node_traits<BaseHook>
|
||||
>::type type;
|
||||
};
|
||||
|
||||
template<class T, class MemberHook>
|
||||
struct get_member_value_traits
|
||||
{
|
||||
typedef typename MemberHook::member_value_traits type;
|
||||
};
|
||||
|
||||
template<class MemberHook>
|
||||
struct get_member_node_traits
|
||||
{
|
||||
typedef typename MemberHook::member_value_traits::node_traits type;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct internal_member_value_traits
|
||||
{
|
||||
template <class U> static one test(...);
|
||||
template <class U> static two test(typename U::member_value_traits* = 0);
|
||||
static const bool value = sizeof(test<T>(0)) == sizeof(two);
|
||||
};
|
||||
|
||||
BOOST_INTRUSIVE_INTERNAL_STATIC_BOOL_IS_TRUE(internal_base_hook, hooktags::is_base_hook)
|
||||
|
||||
template<class T, class SupposedValueTraits>
|
||||
struct get_value_traits
|
||||
{
|
||||
typedef typename eval_if_c
|
||||
<is_convertible<SupposedValueTraits*, default_hook_tag*>::value
|
||||
,apply<SupposedValueTraits, T>
|
||||
,identity<SupposedValueTraits>
|
||||
>::type supposed_value_traits;
|
||||
|
||||
//...if it's a default hook
|
||||
typedef typename eval_if_c
|
||||
< internal_base_hook_bool_is_true<supposed_value_traits>::value
|
||||
//...get it's internal value traits using
|
||||
//the provided T value type.
|
||||
, get_base_value_traits<T, supposed_value_traits>
|
||||
//...else use its internal value traits tag
|
||||
//(member hooks and custom value traits are in this group)
|
||||
, eval_if_c
|
||||
< internal_member_value_traits<supposed_value_traits>::value
|
||||
, get_member_value_traits<T, supposed_value_traits>
|
||||
, identity<supposed_value_traits>
|
||||
>
|
||||
>::type type;
|
||||
};
|
||||
|
||||
template<class ValueTraits>
|
||||
struct get_explicit_node_traits
|
||||
{
|
||||
typedef typename ValueTraits::node_traits type;
|
||||
};
|
||||
|
||||
template<class SupposedValueTraits>
|
||||
struct get_node_traits
|
||||
{
|
||||
typedef SupposedValueTraits supposed_value_traits;
|
||||
//...if it's a base hook
|
||||
typedef typename eval_if_c
|
||||
< internal_base_hook_bool_is_true<supposed_value_traits>::value
|
||||
//...get it's internal value traits using
|
||||
//the provided T value type.
|
||||
, get_base_node_traits<supposed_value_traits>
|
||||
//...else use its internal value traits tag
|
||||
//(member hooks and custom value traits are in this group)
|
||||
, eval_if_c
|
||||
< internal_member_value_traits<supposed_value_traits>::value
|
||||
, get_member_node_traits<supposed_value_traits>
|
||||
, get_explicit_node_traits<supposed_value_traits>
|
||||
>
|
||||
>::type type;
|
||||
};
|
||||
struct is_default_hook_tag;
|
||||
|
||||
} //namespace detail{
|
||||
|
||||
#endif //BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
#endif //#ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
|
||||
//!This option setter specifies if the intrusive
|
||||
//!container stores its size as a member to
|
||||
@@ -375,13 +227,6 @@ BOOST_INTRUSIVE_OPTION_CONSTANT(incremental, bool, Enabled, incremental)
|
||||
|
||||
/// @cond
|
||||
|
||||
struct none
|
||||
{
|
||||
template<class Base>
|
||||
struct pack : Base
|
||||
{};
|
||||
};
|
||||
|
||||
struct hook_defaults
|
||||
{
|
||||
typedef void* void_pointer;
|
||||
|
@@ -28,7 +28,7 @@
|
||||
#include <boost/intrusive/detail/tree_node.hpp>
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include <boost/intrusive/options.hpp>
|
||||
#include <boost/intrusive/detail/get_value_traits.hpp>
|
||||
#include <boost/intrusive/rbtree_algorithms.hpp>
|
||||
#include <boost/intrusive/link_mode.hpp>
|
||||
|
||||
@@ -40,9 +40,16 @@ namespace intrusive {
|
||||
|
||||
/// @cond
|
||||
|
||||
struct default_rbtree_hook_applier
|
||||
{ template <class T> struct apply{ typedef typename T::default_rbtree_hook type; }; };
|
||||
|
||||
template<>
|
||||
struct is_default_hook_tag<default_rbtree_hook_applier>
|
||||
{ static const bool value = true; };
|
||||
|
||||
struct rbtree_defaults
|
||||
{
|
||||
typedef detail::default_rbtree_hook proto_value_traits;
|
||||
typedef default_rbtree_hook_applier proto_value_traits;
|
||||
static const bool constant_time_size = true;
|
||||
typedef std::size_t size_type;
|
||||
typedef void compare;
|
||||
|
@@ -38,7 +38,7 @@
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/intrusive/detail/math.hpp>
|
||||
#include <boost/intrusive/options.hpp>
|
||||
#include <boost/intrusive/detail/get_value_traits.hpp>
|
||||
#include <boost/intrusive/sgtree_algorithms.hpp>
|
||||
#include <boost/intrusive/detail/key_nodeptr_comp.hpp>
|
||||
#include <boost/intrusive/link_mode.hpp>
|
||||
@@ -195,7 +195,7 @@ struct alpha_holder<false, SizeType>
|
||||
|
||||
struct sgtree_defaults
|
||||
{
|
||||
typedef detail::default_bstree_hook proto_value_traits;
|
||||
typedef default_bstree_hook_applier proto_value_traits;
|
||||
static const bool constant_time_size = true;
|
||||
typedef std::size_t size_type;
|
||||
typedef void compare;
|
||||
|
@@ -27,7 +27,7 @@
|
||||
#include <boost/intrusive/linear_slist_algorithms.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include <boost/intrusive/link_mode.hpp>
|
||||
#include <boost/intrusive/options.hpp>
|
||||
#include <boost/intrusive/detail/get_value_traits.hpp>
|
||||
#include <boost/intrusive/detail/is_stateful_value_traits.hpp>
|
||||
#include <boost/intrusive/detail/default_header_holder.hpp>
|
||||
#include <boost/intrusive/detail/uncast.hpp>
|
||||
@@ -66,9 +66,16 @@ struct header_holder_plus_last<HeaderHolder, NodePtr, false>
|
||||
HeaderHolder header_holder_;
|
||||
};
|
||||
|
||||
struct default_slist_hook_applier
|
||||
{ template <class T> struct apply{ typedef typename T::default_slist_hook type; }; };
|
||||
|
||||
template<>
|
||||
struct is_default_hook_tag<default_slist_hook_applier>
|
||||
{ static const bool value = true; };
|
||||
|
||||
struct slist_defaults
|
||||
{
|
||||
typedef detail::default_slist_hook proto_value_traits;
|
||||
typedef default_slist_hook_applier proto_value_traits;
|
||||
static const bool constant_time_size = true;
|
||||
static const bool linear = false;
|
||||
typedef std::size_t size_type;
|
||||
|
@@ -28,7 +28,7 @@
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include <boost/intrusive/detail/function_detector.hpp>
|
||||
#include <boost/intrusive/options.hpp>
|
||||
#include <boost/intrusive/detail/get_value_traits.hpp>
|
||||
#include <boost/intrusive/splaytree_algorithms.hpp>
|
||||
#include <boost/intrusive/link_mode.hpp>
|
||||
#include <boost/intrusive/detail/key_nodeptr_comp.hpp>
|
||||
@@ -41,7 +41,7 @@ namespace intrusive {
|
||||
|
||||
struct splaytree_defaults
|
||||
{
|
||||
typedef detail::default_bstree_hook proto_value_traits;
|
||||
typedef default_bstree_hook_applier proto_value_traits;
|
||||
static const bool constant_time_size = true;
|
||||
typedef std::size_t size_type;
|
||||
typedef void compare;
|
||||
|
@@ -30,7 +30,7 @@
|
||||
#include <boost/intrusive/detail/tree_node.hpp>
|
||||
#include <boost/intrusive/detail/ebo_functor_holder.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include <boost/intrusive/options.hpp>
|
||||
#include <boost/intrusive/detail/get_value_traits.hpp>
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/intrusive/treap_algorithms.hpp>
|
||||
#include <boost/intrusive/link_mode.hpp>
|
||||
@@ -46,7 +46,7 @@ namespace intrusive {
|
||||
|
||||
struct treap_defaults
|
||||
{
|
||||
typedef detail::default_bstree_hook proto_value_traits;
|
||||
typedef default_bstree_hook_applier proto_value_traits;
|
||||
static const bool constant_time_size = true;
|
||||
typedef std::size_t size_type;
|
||||
typedef void compare;
|
||||
|
@@ -271,6 +271,9 @@
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\boost\intrusive\detail\generic_hook.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\boost\intrusive\detail\get_value_traits.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\boost\intrusive\detail\has_member_function_callable_with.hpp">
|
||||
</File>
|
||||
|
@@ -10,7 +10,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/avl_set.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
@@ -123,8 +122,7 @@ class test_main_template
|
||||
, GetContainer_With_Holder< Default_Holder >::template GetContainer
|
||||
>::test_all();
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -159,8 +157,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -176,8 +173,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::auto_member_hook_type
|
||||
, &value_type::auto_node_
|
||||
>
|
||||
@@ -249,5 +245,3 @@ int main()
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
@@ -10,7 +10,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/avl_set.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
#include "bptr_value.hpp"
|
||||
@@ -123,8 +122,7 @@ class test_main_template
|
||||
, GetContainer_With_Holder< Default_Holder >::template GetContainer
|
||||
>::test_all();
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -159,8 +157,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -176,8 +173,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::auto_member_hook_type
|
||||
, &value_type::auto_node_
|
||||
>
|
||||
@@ -250,5 +246,3 @@ int main()
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
@@ -9,7 +9,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include <cstddef>
|
||||
|
||||
@@ -215,5 +214,3 @@ int main()
|
||||
test_sizes(boolean< pow2_and_equal_sizes<std::size_t, void*>::value >(), sizeof(std::size_t));
|
||||
return ::boost::report_errors();
|
||||
}
|
||||
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
@@ -12,6 +12,7 @@
|
||||
#include <boost/intrusive/unordered_set.hpp>
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/functional/hash.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <vector>
|
||||
|
||||
using namespace boost::intrusive;
|
||||
@@ -55,16 +56,19 @@ struct uset_value_traits
|
||||
//Base
|
||||
typedef base_hook< unordered_set_base_hook<> > BaseHook;
|
||||
typedef unordered_bucket<BaseHook>::type BaseBucketType;
|
||||
typedef unordered_bucket_ptr<BaseHook>::type BaseBucketPtrType;
|
||||
typedef unordered_set<MyClass, BaseHook> BaseUset;
|
||||
//Member
|
||||
typedef member_hook
|
||||
< MyClass, unordered_set_member_hook<>
|
||||
, &MyClass::member_hook_ > MemberHook;
|
||||
typedef unordered_bucket<MemberHook>::type MemberBucketType;
|
||||
typedef unordered_bucket_ptr<MemberHook>::type MemberBucketPtrType;
|
||||
typedef unordered_set<MyClass, MemberHook> MemberUset;
|
||||
//Explicit
|
||||
typedef value_traits< uset_value_traits > Traits;
|
||||
typedef unordered_bucket<Traits>::type TraitsBucketType;
|
||||
typedef unordered_bucket_ptr<Traits>::type TraitsBucketPtrType;
|
||||
typedef unordered_set<MyClass, Traits> TraitsUset;
|
||||
|
||||
struct uset_bucket_traits
|
||||
@@ -95,16 +99,14 @@ typedef unordered_set
|
||||
|
||||
int main()
|
||||
{
|
||||
if(!detail::is_same<BaseUset::bucket_type, BaseBucketType>::value)
|
||||
return 1;
|
||||
if(!detail::is_same<MemberUset::bucket_type, MemberBucketType>::value)
|
||||
return 1;
|
||||
if(!detail::is_same<TraitsUset::bucket_type, TraitsBucketType>::value)
|
||||
return 1;
|
||||
if(!detail::is_same<BaseBucketType, MemberBucketType>::value)
|
||||
return 1;
|
||||
if(!detail::is_same<BaseBucketType, TraitsBucketType>::value)
|
||||
return 1;
|
||||
BOOST_STATIC_ASSERT((detail::is_same<BaseUset::bucket_type, BaseBucketType>::value));
|
||||
BOOST_STATIC_ASSERT((detail::is_same<MemberUset::bucket_type, MemberBucketType>::value));
|
||||
BOOST_STATIC_ASSERT((detail::is_same<TraitsUset::bucket_type, TraitsBucketType>::value));
|
||||
BOOST_STATIC_ASSERT((detail::is_same<BaseBucketType, MemberBucketType>::value));
|
||||
BOOST_STATIC_ASSERT((detail::is_same<BaseBucketType, TraitsBucketType>::value));
|
||||
BOOST_STATIC_ASSERT((detail::is_same<BaseBucketPtrType, TraitsBucketPtrType>::value));
|
||||
BOOST_STATIC_ASSERT((detail::is_same<BaseBucketPtrType, MemberBucketPtrType>::value));
|
||||
BOOST_STATIC_ASSERT((detail::is_same<BaseBucketPtrType, BaseBucketType*>::value));
|
||||
|
||||
typedef std::vector<MyClass>::iterator VectIt;
|
||||
typedef std::vector<MyClass>::reverse_iterator VectRit;
|
||||
|
@@ -1,3 +1,4 @@
|
||||
/*
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Olaf Krzikalla 2004-2006.
|
||||
@@ -10,7 +11,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/list.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
@@ -410,7 +410,6 @@ class test_main_template
|
||||
std::vector< value_type >
|
||||
>::test_all(data);
|
||||
make_and_test_list < typename detail::get_member_value_traits <
|
||||
value_type,
|
||||
member_hook< value_type, typename hooks<VoidPointer>::member_hook_type, &value_type::node_>
|
||||
>::type,
|
||||
ConstantTimeSize,
|
||||
@@ -452,7 +451,6 @@ class test_main_template< VoidPointer, false, Default_Holder >
|
||||
std::vector< value_type >
|
||||
>::test_all(data);
|
||||
make_and_test_list < typename detail::get_member_value_traits <
|
||||
value_type,
|
||||
member_hook< value_type, typename hooks<VoidPointer>::member_hook_type, &value_type::node_>
|
||||
>::type,
|
||||
false,
|
||||
@@ -475,7 +473,6 @@ class test_main_template< VoidPointer, false, Default_Holder >
|
||||
std::vector< value_type >
|
||||
>::test_all(data);
|
||||
make_and_test_list < typename detail::get_member_value_traits <
|
||||
value_type,
|
||||
member_hook< value_type, typename hooks<VoidPointer>::auto_member_hook_type, &value_type::auto_node_>
|
||||
>::type,
|
||||
false,
|
||||
@@ -544,3 +541,11 @@ int main()
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
*/
|
||||
|
||||
#include <boost/intrusive/list_hook.hpp>
|
||||
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
@@ -19,6 +19,7 @@
|
||||
#include <boost/intrusive/treap_set.hpp>
|
||||
#include <boost/intrusive/detail/mpl.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include "smart_ptr.hpp"
|
||||
#include <vector>
|
||||
|
||||
@@ -147,79 +148,54 @@ int main()
|
||||
}
|
||||
|
||||
//Check defined types and implicitly defined types are equal
|
||||
if(detail::is_same<make_list_base_hook<void_pointer<void*>, link_mode<safe_link> >::type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<make_list_base_hook<void_pointer<void*>, link_mode<safe_link> >::type
|
||||
,make_list_base_hook<>::type
|
||||
>::value == false){
|
||||
return 1;
|
||||
}
|
||||
>::value));
|
||||
|
||||
if(detail::is_same<make_slist_base_hook<void_pointer<void*>, link_mode<safe_link> >::type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<make_slist_base_hook<void_pointer<void*>, link_mode<safe_link> >::type
|
||||
,make_slist_base_hook<>::type
|
||||
>::value == false){
|
||||
return 1;
|
||||
}
|
||||
>::value));
|
||||
|
||||
if(detail::is_same<make_set_base_hook<void_pointer<void*>, link_mode<safe_link> >::type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<make_set_base_hook<void_pointer<void*>, link_mode<safe_link> >::type
|
||||
,make_set_base_hook<>::type
|
||||
>::value == false){
|
||||
return 1;
|
||||
}
|
||||
>::value));
|
||||
|
||||
if(detail::is_same<make_unordered_set_base_hook<void_pointer<void*>, link_mode<safe_link> >::type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<make_unordered_set_base_hook<void_pointer<void*>, link_mode<safe_link> >::type
|
||||
,make_unordered_set_base_hook<>::type
|
||||
>::value == false){
|
||||
return 1;
|
||||
}
|
||||
>::value));
|
||||
|
||||
if(detail::is_same<make_avl_set_base_hook<void_pointer<void*>, link_mode<safe_link> >::type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<make_avl_set_base_hook<void_pointer<void*>, link_mode<safe_link> >::type
|
||||
,make_avl_set_base_hook<>::type
|
||||
>::value == false){
|
||||
return 1;
|
||||
}
|
||||
>::value));
|
||||
|
||||
if(detail::is_same<make_bs_set_base_hook<void_pointer<void*>, link_mode<safe_link> >::type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<make_bs_set_base_hook<void_pointer<void*>, link_mode<safe_link> >::type
|
||||
,make_bs_set_base_hook<>::type
|
||||
>::value == false){
|
||||
return 1;
|
||||
}
|
||||
>::value));
|
||||
|
||||
//Check defined types and implicitly defined types are unequal
|
||||
if(detail::is_same<make_list_base_hook<void_pointer<void*>, link_mode<normal_link> >::type
|
||||
BOOST_STATIC_ASSERT(!(detail::is_same<make_list_base_hook<void_pointer<void*>, link_mode<normal_link> >::type
|
||||
,make_list_base_hook<>::type
|
||||
>::value == true){
|
||||
return 1;
|
||||
}
|
||||
>::value));
|
||||
|
||||
if(detail::is_same<make_slist_base_hook<void_pointer<void*>, link_mode<normal_link> >::type
|
||||
BOOST_STATIC_ASSERT(!(detail::is_same<make_slist_base_hook<void_pointer<void*>, link_mode<normal_link> >::type
|
||||
,make_slist_base_hook<>::type
|
||||
>::value == true){
|
||||
return 1;
|
||||
}
|
||||
>::value));
|
||||
|
||||
if(detail::is_same<make_set_base_hook<void_pointer<void*>, link_mode<normal_link> >::type
|
||||
BOOST_STATIC_ASSERT(!(detail::is_same<make_set_base_hook<void_pointer<void*>, link_mode<normal_link> >::type
|
||||
,make_set_base_hook<>::type
|
||||
>::value == true){
|
||||
return 1;
|
||||
}
|
||||
>::value));
|
||||
|
||||
if(detail::is_same<make_unordered_set_base_hook<void_pointer<void*>, link_mode<normal_link> >::type
|
||||
BOOST_STATIC_ASSERT(!(detail::is_same<make_unordered_set_base_hook<void_pointer<void*>, link_mode<normal_link> >::type
|
||||
,make_unordered_set_base_hook<>::type
|
||||
>::value == true){
|
||||
return 1;
|
||||
}
|
||||
>::value));
|
||||
|
||||
if(detail::is_same<make_avl_set_base_hook<void_pointer<void*>, link_mode<normal_link> >::type
|
||||
BOOST_STATIC_ASSERT(!(detail::is_same<make_avl_set_base_hook<void_pointer<void*>, link_mode<normal_link> >::type
|
||||
,make_avl_set_base_hook<>::type
|
||||
>::value == true){
|
||||
return 1;
|
||||
}
|
||||
>::value));
|
||||
|
||||
if(detail::is_same<make_bs_set_base_hook<void_pointer<void*>, link_mode<normal_link> >::type
|
||||
BOOST_STATIC_ASSERT(!(detail::is_same<make_bs_set_base_hook<void_pointer<void*>, link_mode<normal_link> >::type
|
||||
,make_bs_set_base_hook<>::type
|
||||
>::value == true){
|
||||
return 1;
|
||||
}
|
||||
|
||||
>::value));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -10,7 +10,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/set.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
#include "bptr_value.hpp"
|
||||
@@ -123,8 +122,7 @@ class test_main_template
|
||||
, GetContainer_With_Holder< Default_Holder >::template GetContainer
|
||||
>::test_all();
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -159,8 +157,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -176,8 +173,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::auto_member_hook_type
|
||||
, &value_type::auto_node_
|
||||
>
|
||||
@@ -245,5 +241,3 @@ int main()
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
@@ -10,8 +10,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
|
||||
#include <boost/intrusive/set.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
#include "bptr_value.hpp"
|
||||
@@ -124,8 +122,7 @@ class test_main_template
|
||||
, GetContainer_With_Holder< Default_Holder >::template GetContainer
|
||||
>::test_all();
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -160,8 +157,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -177,8 +173,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::auto_member_hook_type
|
||||
, &value_type::auto_node_
|
||||
>
|
||||
@@ -248,5 +243,3 @@ int main()
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
@@ -10,7 +10,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/sg_set.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
#include "bptr_value.hpp"
|
||||
@@ -214,8 +213,7 @@ class test_main_template
|
||||
, GetContainer_With_Holder< Default_Holder >::template GetContainer
|
||||
>::test_all();
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -229,8 +227,7 @@ class test_main_template
|
||||
, GetContainerFixedAlpha_With_Holder< Default_Holder >::template GetContainerFixedAlpha
|
||||
>::test_all();
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
|
@@ -9,7 +9,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/sg_set.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
#include "bptr_value.hpp"
|
||||
@@ -211,8 +210,7 @@ class test_main_template
|
||||
, GetContainer_With_Holder< Default_Holder >::template GetContainer
|
||||
>::test_all();
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -227,8 +225,7 @@ class test_main_template
|
||||
, GetContainerFixedAlpha_With_Holder< Default_Holder >::template GetContainerFixedAlpha
|
||||
>::test_all();
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -301,4 +298,3 @@ int main()
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
@@ -11,7 +11,6 @@
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/slist.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
@@ -494,8 +493,7 @@ class test_main_template
|
||||
, std::vector< value_type >
|
||||
>::test_all(data);
|
||||
make_and_test_slist < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -531,8 +529,7 @@ class test_main_template
|
||||
>::test_all(data);
|
||||
|
||||
make_and_test_slist < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -556,8 +553,7 @@ class test_main_template
|
||||
, std::vector< value_type >
|
||||
>::test_all(data);
|
||||
make_and_test_slist < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -582,8 +578,7 @@ class test_main_template
|
||||
>::test_all(data);
|
||||
|
||||
make_and_test_slist < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -621,8 +616,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all(data);
|
||||
|
||||
make_and_test_slist < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -646,8 +640,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all(data);
|
||||
|
||||
make_and_test_slist < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::auto_member_hook_type
|
||||
, &value_type::auto_node_
|
||||
>
|
||||
@@ -671,8 +664,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all(data);
|
||||
|
||||
make_and_test_slist < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -697,8 +689,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all(data);
|
||||
|
||||
make_and_test_slist < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -722,8 +713,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all(data);
|
||||
|
||||
make_and_test_slist < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -790,4 +780,3 @@ int main(int, char* [])
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
@@ -10,7 +10,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/splay_set.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
@@ -154,8 +153,7 @@ class test_main_template
|
||||
, GetContainer_With_Holder< Default_Holder >::template GetContainer
|
||||
>::test_all();
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -191,10 +189,9 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
>::type
|
||||
, GetContainer_With_Holder< Default_Holder >::template GetContainer
|
||||
@@ -208,11 +205,10 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
, typename hooks<VoidPointer>::auto_member_hook_type
|
||||
, &value_type::auto_node_
|
||||
>
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::auto_member_hook_type
|
||||
, &value_type::auto_node_
|
||||
>
|
||||
>::type
|
||||
, GetContainer_With_Holder< Default_Holder >::template GetContainer
|
||||
>::test_all();
|
||||
|
@@ -9,7 +9,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/splay_set.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
#include "bptr_value.hpp"
|
||||
@@ -151,8 +150,7 @@ class test_main_template
|
||||
, GetContainer_With_Holder< Default_Holder >::template GetContainer
|
||||
>::test_all();
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -187,8 +185,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -204,8 +201,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::auto_member_hook_type
|
||||
, &value_type::auto_node_
|
||||
>
|
||||
@@ -274,4 +270,3 @@ int main()
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
@@ -10,8 +10,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/treap_set.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
#include "bptr_value.hpp"
|
||||
@@ -120,8 +118,7 @@ class test_main_template
|
||||
, GetContainer_With_Holder< Default_Holder >::template GetContainer
|
||||
>::test_all();
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -156,8 +153,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -173,8 +169,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::auto_member_hook_type
|
||||
, &value_type::auto_node_
|
||||
>
|
||||
@@ -242,5 +237,3 @@ int main()
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
@@ -9,7 +9,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/treap_set.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
#include "bptr_value.hpp"
|
||||
@@ -135,8 +134,7 @@ class test_main_template
|
||||
, GetContainer_With_Holder< Default_Holder >::template GetContainer
|
||||
>::test_all();
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -171,8 +169,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -188,8 +185,7 @@ class test_main_template<VoidPointer, false, Default_Holder>
|
||||
>::test_all();
|
||||
|
||||
test::test_generic_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::auto_member_hook_type
|
||||
, &value_type::auto_node_
|
||||
>
|
||||
@@ -258,5 +254,3 @@ int main()
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
@@ -10,7 +10,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/unordered_set.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
@@ -780,8 +779,7 @@ class test_main_template
|
||||
>::test_all(data);
|
||||
|
||||
test_unordered_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -825,8 +823,7 @@ class test_main_template<VoidPointer, false, Incremental>
|
||||
>::test_all(data);
|
||||
|
||||
test_unordered_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -846,8 +843,7 @@ class test_main_template<VoidPointer, false, Incremental>
|
||||
>::test_all(data);
|
||||
|
||||
test_unordered_multiset < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::auto_member_hook_type
|
||||
, &value_type::auto_node_
|
||||
>
|
||||
@@ -872,5 +868,3 @@ int main()
|
||||
test_main_template<smart_ptr<void>, true, false>()();
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
@@ -10,7 +10,6 @@
|
||||
// See http://www.boost.org/libs/intrusive for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/intrusive/detail/config_begin.hpp>
|
||||
#include <boost/intrusive/unordered_set.hpp>
|
||||
#include <boost/intrusive/pointer_traits.hpp>
|
||||
#include "itestvalue.hpp"
|
||||
@@ -632,8 +631,7 @@ class test_main_template
|
||||
, incremental
|
||||
>::test_all(data);
|
||||
test_unordered_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -678,8 +676,7 @@ class test_main_template<VoidPointer, false, incremental>
|
||||
>::test_all(data);
|
||||
|
||||
test_unordered_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::member_hook_type
|
||||
, &value_type::node_
|
||||
>
|
||||
@@ -699,8 +696,7 @@ class test_main_template<VoidPointer, false, incremental>
|
||||
>::test_all(data);
|
||||
|
||||
test_unordered_set < typename detail::get_member_value_traits
|
||||
< value_type
|
||||
, member_hook< value_type
|
||||
< member_hook< value_type
|
||||
, typename hooks<VoidPointer>::auto_member_hook_type
|
||||
, &value_type::auto_node_
|
||||
>
|
||||
@@ -725,4 +721,3 @@ int main()
|
||||
test_main_template<smart_ptr<void>, true, false>()();
|
||||
return boost::report_errors();
|
||||
}
|
||||
#include <boost/intrusive/detail/config_end.hpp>
|
||||
|
Reference in New Issue
Block a user