Break options.hpp dependencies, now hooks don't depend on heavy meta-machinery.

This commit is contained in:
Ion Gaztañaga
2014-10-18 17:02:23 +02:00
parent 7651f03385
commit 414ca9f338
32 changed files with 424 additions and 472 deletions

View File

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

View File

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

View File

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

View File

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

View 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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View 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>

View 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 "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>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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