struct member_hook: public hook< opt::member_hook_tag, Options... >
{
//@cond
- static const size_t c_nMemberOffset = MemberOffset;
+ static CDS_CONSTEXPR const size_t c_nMemberOffset = MemberOffset;
//@endcond
};
{
return find_( key, f );
}
+ //@cond
+ template <typename Q, typename Func>
+ bool find( Q const& key, Func f ) const
+ {
+ return find_( key, f );
+ }
+ //@endcond
/// Finds the key \p key with comparing functor \p pred
/**
{
return find_with_( key, pred, f );
}
+ //@cond
+ template <typename Q, typename Less, typename Func>
+ bool find_with( Q const& key, Less pred, Func f ) const
+ {
+ return find_with_( key, pred, f );
+ }
+ //@endcond
/// Finds \p key and return the item found
/** \anchor cds_intrusive_EllenBinTree_rcu_get
{
return find_( key, f );
}
+ //@cond
+ template <typename Q, typename Func>
+ bool find( Q const& key, Func f ) const
+ {
+ return find_( key, f );
+ }
+ //@endcond
/// Finds the key \p key with comparing functor \p pred
/**
{
return find_with_( key, pred, f );
}
+ //@cond
+ template <typename Q, typename Less, typename Func>
+ bool find_with( Q const& key, Less pred, Func f ) const
+ {
+ return find_with_( key, pred, f );
+ }
+ //@endcond
/// Finds \p key and returns the item found
/** @anchor cds_intrusive_EllenBinTree_get
<ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_map.h" />\r
<ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_set.h" />\r
<ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_bintree.h" />\r
+ <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_dhp.h" />\r
<ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_hp.h" />\r
- <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_ptb.h" />\r
<ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_rcu.h" />\r
</ItemGroup>\r
<ItemGroup>\r
<ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_set_rcu_gpt.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_set_rcu_shb.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_set_rcu_sht.cpp" />\r
+ <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_dhp.cpp" />\r
+ <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_dhp_member.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_hp.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_hp_member.cpp" />\r
- <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_ptb.cpp" />\r
- <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_ptb_member.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_rcu_gpb.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_rcu_gpb_member.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_rcu_gpi.cpp" />\r
<ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_hp.h">\r
<Filter>intrusive</Filter>\r
</ClInclude>\r
- <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_ptb.h">\r
+ <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_dhp.h">\r
<Filter>intrusive</Filter>\r
</ClInclude>\r
</ItemGroup>\r
<ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_hp_member.cpp">\r
<Filter>intrusive</Filter>\r
</ClCompile>\r
- <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_ptb.cpp">\r
- <Filter>intrusive</Filter>\r
- </ClCompile>\r
- <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_ptb_member.cpp">\r
- <Filter>intrusive</Filter>\r
- </ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_map_hp.cpp">\r
<Filter>container</Filter>\r
</ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_set_ptb.cpp">\r
<Filter>container</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_dhp.cpp">\r
+ <Filter>intrusive</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_dhp_member.cpp">\r
+ <Filter>intrusive</Filter>\r
+ </ClCompile>\r
</ItemGroup>\r
</Project>
\ No newline at end of file
#include "tree/hdr_ellenbintree_map.h"
#include <cds/container/ellen_bintree_map_ptb.h>
-#include "tree/hdr_intrusive_ellen_bintree_pool_ptb.h"
+#include "tree/hdr_intrusive_ellen_bintree_pool_dhp.h"
#include "unit/print_ellenbintree_stat.h"
namespace tree {
typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
cc::ellen_bintree::make_map_traits<
co::less< less >
- ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
- ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
+ ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+ ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
>::type
> set_type;
typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
cc::ellen_bintree::make_map_traits<
co::less< less >
- ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
- ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
+ ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+ ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
,co::item_counter< cds::atomicity::item_counter >
,co::stat< cc::ellen_bintree::stat<> >
>::type
#include "tree/hdr_ellenbintree_set.h"
#include <cds/container/ellen_bintree_set_ptb.h>
-#include "tree/hdr_intrusive_ellen_bintree_pool_ptb.h"
+#include "tree/hdr_intrusive_ellen_bintree_pool_dhp.h"
#include "unit/print_ellenbintree_stat.h"
namespace tree {
cc::ellen_bintree::make_set_traits<
cc::ellen_bintree::key_extractor< key_extractor >
,co::less< less >
- ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
- ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
+ ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+ ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
>::type
> set_type;
cc::ellen_bintree::make_set_traits<
cc::ellen_bintree::key_extractor< key_extractor >
,co::less< less >
- ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
- ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
+ ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+ ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
,co::item_counter< cds::atomicity::item_counter >
,co::stat< cc::ellen_bintree::stat<> >
>::type
void EllenBinTree_hp_member_less_pool();
void EllenBinTree_hp_member_less_pool_ic_stat();
- void EllenBinTree_ptb_base_less();
- void EllenBinTree_ptb_base_cmp();
- void EllenBinTree_ptb_base_cmpless();
- void EllenBinTree_ptb_base_less_ic();
- void EllenBinTree_ptb_base_cmp_ic();
- void EllenBinTree_ptb_base_less_stat();
- void EllenBinTree_ptb_base_cmp_ic_stat();
- void EllenBinTree_ptb_base_less_pool();
- void EllenBinTree_ptb_base_less_pool_ic_stat();
-
- void EllenBinTree_ptb_member_less();
- void EllenBinTree_ptb_member_cmp();
- void EllenBinTree_ptb_member_cmpless();
- void EllenBinTree_ptb_member_less_ic();
- void EllenBinTree_ptb_member_cmp_ic();
- void EllenBinTree_ptb_member_less_stat();
- void EllenBinTree_ptb_member_cmp_ic_stat();
- void EllenBinTree_ptb_member_less_pool();
- void EllenBinTree_ptb_member_less_pool_ic_stat();
+ void EllenBinTree_dhp_base_less();
+ void EllenBinTree_dhp_base_cmp();
+ void EllenBinTree_dhp_base_cmpless();
+ void EllenBinTree_dhp_base_less_ic();
+ void EllenBinTree_dhp_base_cmp_ic();
+ void EllenBinTree_dhp_base_less_stat();
+ void EllenBinTree_dhp_base_cmp_ic_stat();
+ void EllenBinTree_dhp_base_less_pool();
+ void EllenBinTree_dhp_base_less_pool_ic_stat();
+
+ void EllenBinTree_dhp_member_less();
+ void EllenBinTree_dhp_member_cmp();
+ void EllenBinTree_dhp_member_cmpless();
+ void EllenBinTree_dhp_member_less_ic();
+ void EllenBinTree_dhp_member_cmp_ic();
+ void EllenBinTree_dhp_member_less_stat();
+ void EllenBinTree_dhp_member_cmp_ic_stat();
+ void EllenBinTree_dhp_member_less_pool();
+ void EllenBinTree_dhp_member_less_pool_ic_stat();
void EllenBinTree_rcu_gpi_base_less();
void EllenBinTree_rcu_gpi_base_cmp();
CPPUNIT_TEST(EllenBinTree_hp_member_less_pool)
CPPUNIT_TEST(EllenBinTree_hp_member_less_pool_ic_stat)
- CPPUNIT_TEST(EllenBinTree_ptb_base_less)
- CPPUNIT_TEST(EllenBinTree_ptb_base_cmp)
- CPPUNIT_TEST(EllenBinTree_ptb_base_less_stat)
- CPPUNIT_TEST(EllenBinTree_ptb_base_cmpless)
- CPPUNIT_TEST(EllenBinTree_ptb_base_less_ic)
- CPPUNIT_TEST(EllenBinTree_ptb_base_cmp_ic)
- CPPUNIT_TEST(EllenBinTree_ptb_base_cmp_ic_stat)
- CPPUNIT_TEST(EllenBinTree_ptb_base_less_pool)
- CPPUNIT_TEST(EllenBinTree_ptb_base_less_pool_ic_stat)
-
- CPPUNIT_TEST(EllenBinTree_ptb_member_less)
- CPPUNIT_TEST(EllenBinTree_ptb_member_cmp)
- CPPUNIT_TEST(EllenBinTree_ptb_member_less_stat)
- CPPUNIT_TEST(EllenBinTree_ptb_member_cmpless)
- CPPUNIT_TEST(EllenBinTree_ptb_member_less_ic)
- CPPUNIT_TEST(EllenBinTree_ptb_member_cmp_ic)
- CPPUNIT_TEST(EllenBinTree_ptb_member_cmp_ic_stat)
- CPPUNIT_TEST(EllenBinTree_ptb_member_less_pool)
- CPPUNIT_TEST(EllenBinTree_ptb_member_less_pool_ic_stat)
+ CPPUNIT_TEST(EllenBinTree_dhp_base_less)
+ CPPUNIT_TEST(EllenBinTree_dhp_base_cmp)
+ CPPUNIT_TEST(EllenBinTree_dhp_base_less_stat)
+ CPPUNIT_TEST(EllenBinTree_dhp_base_cmpless)
+ CPPUNIT_TEST(EllenBinTree_dhp_base_less_ic)
+ CPPUNIT_TEST(EllenBinTree_dhp_base_cmp_ic)
+ CPPUNIT_TEST(EllenBinTree_dhp_base_cmp_ic_stat)
+ CPPUNIT_TEST(EllenBinTree_dhp_base_less_pool)
+ CPPUNIT_TEST(EllenBinTree_dhp_base_less_pool_ic_stat)
+
+ CPPUNIT_TEST(EllenBinTree_dhp_member_less)
+ CPPUNIT_TEST(EllenBinTree_dhp_member_cmp)
+ CPPUNIT_TEST(EllenBinTree_dhp_member_less_stat)
+ CPPUNIT_TEST(EllenBinTree_dhp_member_cmpless)
+ CPPUNIT_TEST(EllenBinTree_dhp_member_less_ic)
+ CPPUNIT_TEST(EllenBinTree_dhp_member_cmp_ic)
+ CPPUNIT_TEST(EllenBinTree_dhp_member_cmp_ic_stat)
+ CPPUNIT_TEST(EllenBinTree_dhp_member_less_pool)
+ CPPUNIT_TEST(EllenBinTree_dhp_member_less_pool_ic_stat)
CPPUNIT_TEST(EllenBinTree_rcu_gpi_base_less)
CPPUNIT_TEST(EllenBinTree_rcu_gpi_base_cmp)
--- /dev/null
+//$$CDS-header$$
+
+#include "tree/hdr_intrusive_bintree.h"
+#include <cds/intrusive/ellen_bintree_dhp.h>
+
+#include "tree/hdr_intrusive_ellen_bintree_pool_dhp.h"
+#include "unit/print_ellenbintree_stat.h"
+
+namespace tree {
+ namespace ci = cds::intrusive;
+ namespace co = cds::opt;
+ namespace {
+ typedef ci::ellen_bintree::node<cds::gc::DHP> leaf_node;
+ typedef IntrusiveBinTreeHdrTest::base_hook_value< leaf_node > base_value;
+
+ struct print_stat {
+ template <typename Tree>
+ void operator()( Tree const& t)
+ {
+ std::cout << t.statistics();
+ }
+ };
+
+ typedef ci::ellen_bintree::internal_node< IntrusiveBinTreeHdrTest::key_type, leaf_node > internal_node;
+ typedef ci::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less()
+ {
+ struct tree_traits : public ci::ellen_bintree::traits
+ {
+ typedef ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP >> hook;
+ typedef IntrusiveBinTreeHdrTest::key_extractor< base_value > key_extractor;
+ typedef IntrusiveBinTreeHdrTest::less< base_value > less;
+ typedef IntrusiveBinTreeHdrTest::disposer< base_value > disposer;
+ };
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value, tree_traits > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_stat()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+ ci::ellen_bintree::make_traits<
+ ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+ ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+ ,co::less< less< base_value > >
+ ,ci::opt::disposer< disposer< base_value > >
+ ,co::stat< ci::ellen_bintree::stat<> >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+ ci::ellen_bintree::make_traits<
+ ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+ ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+ ,co::compare< compare< base_value > >
+ ,ci::opt::disposer< disposer< base_value > >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmpless()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+ ci::ellen_bintree::make_traits<
+ ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+ ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+ ,co::compare< compare< base_value > >
+ ,co::less< less< base_value > >
+ ,ci::opt::disposer< disposer< base_value > >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_ic()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+ ci::ellen_bintree::make_traits<
+ ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+ ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+ ,co::less< less< base_value > >
+ ,ci::opt::disposer< disposer< base_value > >
+ ,co::item_counter< cds::atomicity::item_counter >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp_ic()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+ ci::ellen_bintree::make_traits<
+ ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+ ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+ ,co::compare< compare< base_value > >
+ ,ci::opt::disposer< disposer< base_value > >
+ ,co::item_counter< cds::atomicity::item_counter >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp_ic_stat()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+ ci::ellen_bintree::make_traits<
+ ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+ ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+ ,co::compare< compare< base_value > >
+ ,ci::opt::disposer< disposer< base_value > >
+ ,co::item_counter< cds::atomicity::item_counter >
+ ,co::stat< ci::ellen_bintree::stat<> >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_pool()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+ ci::ellen_bintree::make_traits<
+ ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+ ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+ ,co::less< less< base_value > >
+ ,ci::opt::disposer< disposer< base_value > >
+ ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+ ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_pool_ic_stat()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+ ci::ellen_bintree::make_traits<
+ ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+ ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+ ,co::less< less< base_value > >
+ ,ci::opt::disposer< disposer< base_value > >
+ ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+ ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
+ ,co::item_counter< cds::atomicity::item_counter >
+ ,co::stat< ci::ellen_bintree::stat<> >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+
+} //namespace tree
--- /dev/null
+//$$CDS-header$$
+
+#include "tree/hdr_intrusive_bintree.h"
+#include <cds/intrusive/ellen_bintree_dhp.h>
+
+#include "tree/hdr_intrusive_ellen_bintree_pool_dhp.h"
+#include "unit/print_ellenbintree_stat.h"
+
+namespace tree {
+ namespace ci = cds::intrusive;
+ namespace co = cds::opt;
+ namespace {
+ typedef ci::ellen_bintree::node<cds::gc::DHP> leaf_node;
+ typedef IntrusiveBinTreeHdrTest::member_hook_value< leaf_node > member_value;
+
+ typedef ci::opt::hook< ci::ellen_bintree::member_hook< offsetof(member_value, hook), co::gc< cds::gc::DHP > > > member_hook;
+
+ struct print_stat {
+ template <typename Tree>
+ void operator()( Tree const& t)
+ {
+ std::cout << t.statistics();
+ }
+ };
+
+ typedef ci::ellen_bintree::internal_node< IntrusiveBinTreeHdrTest::key_type, leaf_node > internal_node;
+ typedef ci::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_less()
+ {
+ struct tree_traits : public ci::ellen_bintree::traits
+ {
+ typedef ci::ellen_bintree::member_hook< offsetof( member_value, hook ), co::gc< cds::gc::DHP >> hook;
+ typedef IntrusiveBinTreeHdrTest::key_extractor< member_value > key_extractor;
+ typedef IntrusiveBinTreeHdrTest::less< member_value > less;
+ typedef IntrusiveBinTreeHdrTest::disposer< member_value > disposer;
+ };
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value, tree_traits > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_less_stat()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+ ci::ellen_bintree::make_traits<
+ member_hook
+ ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+ ,co::less< less< member_value > >
+ ,ci::opt::disposer< disposer< member_value > >
+ ,co::stat< ci::ellen_bintree::stat<> >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_cmp()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+ ci::ellen_bintree::make_traits<
+ member_hook
+ ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+ ,co::compare< compare< member_value > >
+ ,ci::opt::disposer< disposer< member_value > >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_cmpless()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+ ci::ellen_bintree::make_traits<
+ member_hook
+ ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+ ,co::compare< compare< member_value > >
+ ,co::less< less< member_value > >
+ ,ci::opt::disposer< disposer< member_value > >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_less_ic()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+ ci::ellen_bintree::make_traits<
+ member_hook
+ ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+ ,co::less< less< member_value > >
+ ,ci::opt::disposer< disposer< member_value > >
+ ,co::item_counter< cds::atomicity::item_counter >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_cmp_ic()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+ ci::ellen_bintree::make_traits<
+ member_hook
+ ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+ ,co::compare< compare< member_value > >
+ ,ci::opt::disposer< disposer< member_value > >
+ ,co::item_counter< cds::atomicity::item_counter >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_cmp_ic_stat()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+ ci::ellen_bintree::make_traits<
+ member_hook
+ ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+ ,co::compare< compare< member_value > >
+ ,ci::opt::disposer< disposer< member_value > >
+ ,co::item_counter< cds::atomicity::item_counter >
+ ,co::stat< ci::ellen_bintree::stat<> >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_less_pool()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+ ci::ellen_bintree::make_traits<
+ member_hook
+ ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+ ,co::less< less< member_value > >
+ ,ci::opt::disposer< disposer< member_value > >
+ ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+ ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+ void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_less_pool_ic_stat()
+ {
+ typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+ ci::ellen_bintree::make_traits<
+ member_hook
+ ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+ ,co::less< less< member_value > >
+ ,ci::opt::disposer< disposer< member_value > >
+ ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+ ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
+ ,co::item_counter< cds::atomicity::item_counter >
+ ,co::stat< ci::ellen_bintree::stat<> >
+ >::type
+ > tree_type;
+
+ test<tree_type, print_stat>();
+ }
+
+
+} //namespace tree
void IntrusiveBinTreeHdrTest::EllenBinTree_hp_base_less()
{
- typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value,
- ci::ellen_bintree::make_traits<
- ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::HP > > >
- ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
- ,co::less< less< base_value > >
- ,ci::opt::disposer< disposer< base_value > >
- >::type
- > tree_type;
+ struct tree_traits : public ci::ellen_bintree::traits
+ {
+ typedef ci::ellen_bintree::base_hook< co::gc< cds::gc::HP >> hook;
+ typedef IntrusiveBinTreeHdrTest::key_extractor< base_value > key_extractor;
+ typedef IntrusiveBinTreeHdrTest::less< base_value > less;
+ typedef IntrusiveBinTreeHdrTest::disposer< base_value > disposer;
+ };
+ typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value, tree_traits > tree_type;
test<tree_type, print_stat>();
}
void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_less()
{
+ struct tree_traits : public ci::ellen_bintree::traits
+ {
+ typedef ci::ellen_bintree::member_hook< offsetof( member_value, hook ), co::gc< cds::gc::HP >> hook;
+ typedef IntrusiveBinTreeHdrTest::key_extractor< member_value > key_extractor;
+ typedef IntrusiveBinTreeHdrTest::less< member_value > less;
+ typedef IntrusiveBinTreeHdrTest::disposer< member_value > disposer;
+ };
typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value,
ci::ellen_bintree::make_traits<
member_hook
--- /dev/null
+//$$CDS-header$$
+
+#ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_DHP_H
+#define CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_DHP_H
+
+#include "tree/hdr_intrusive_bintree.h"
+#include <cds/intrusive/ellen_bintree_dhp.h>
+
+#include <cds/memory/vyukov_queue_pool.h>
+#include <cds/memory/pool_allocator.h>
+
+namespace tree {
+
+ namespace ellen_bintree_dhp {
+ typedef cds::intrusive::ellen_bintree::node_types<cds::gc::PTB, IntrusiveBinTreeHdrTest::key_type> node_types;
+ typedef node_types::leaf_node_type leaf_node;
+ typedef IntrusiveBinTreeHdrTest::base_hook_value< leaf_node > base_value;
+ typedef node_types::internal_node_type internal_node;
+ typedef node_types::update_desc_type update_desc;
+
+
+ // Internal node pool based on Vyukov's queue
+ struct internal_node_pool_traits : public cds::memory::vyukov_queue_pool_traits
+ {
+ typedef cds::opt::v::dynamic_buffer< cds::any_type > buffer;
+ };
+ typedef cds::memory::lazy_vyukov_queue_pool< internal_node, internal_node_pool_traits > internal_node_pool_type;
+ extern internal_node_pool_type s_InternalNodePool;
+
+ struct internal_node_pool_accessor {
+ typedef internal_node_pool_type::value_type value_type;
+
+ internal_node_pool_type& operator()() const
+ {
+ return s_InternalNodePool;
+ }
+ };
+
+ // Update descriptor pool based on Vyukov's queue
+ struct update_desc_pool_traits : public cds::memory::vyukov_queue_pool_traits
+ {
+ typedef cds::opt::v::static_buffer< cds::any_type, 16 > buffer;
+ };
+ typedef cds::memory::vyukov_queue_pool< update_desc, update_desc_pool_traits > update_desc_pool_type;
+ extern update_desc_pool_type s_UpdateDescPool;
+
+ struct update_desc_pool_accessor {
+ typedef update_desc_pool_type::value_type value_type;
+
+ update_desc_pool_type& operator()() const
+ {
+ return s_UpdateDescPool;
+ }
+ };
+
+ } // namespace ellen_bintree_dhp
+
+} // namespace tree
+
+#endif // #ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_DHP_H
+++ /dev/null
-//$$CDS-header$$
-
-#ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_PTB_H
-#define CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_PTB_H
-
-#include "tree/hdr_intrusive_bintree.h"
-#include <cds/intrusive/ellen_bintree_dhp.h>
-
-#include <cds/memory/vyukov_queue_pool.h>
-#include <cds/memory/pool_allocator.h>
-
-namespace tree {
-
- namespace ellen_bintree_ptb {
- typedef cds::intrusive::ellen_bintree::node_types<cds::gc::PTB, IntrusiveBinTreeHdrTest::key_type> node_types;
- typedef node_types::leaf_node_type leaf_node;
- typedef IntrusiveBinTreeHdrTest::base_hook_value< leaf_node > base_value;
- typedef node_types::internal_node_type internal_node;
- typedef node_types::update_desc_type update_desc;
-
-
- // Internal node pool based on Vyukov's queue
- struct internal_node_pool_traits : public cds::memory::vyukov_queue_pool_traits
- {
- typedef cds::opt::v::dynamic_buffer< cds::any_type > buffer;
- };
- typedef cds::memory::lazy_vyukov_queue_pool< internal_node, internal_node_pool_traits > internal_node_pool_type;
- extern internal_node_pool_type s_InternalNodePool;
-
- struct internal_node_pool_accessor {
- typedef internal_node_pool_type::value_type value_type;
-
- internal_node_pool_type& operator()() const
- {
- return s_InternalNodePool;
- }
- };
-
- // Update descriptor pool based on Vyukov's queue
- struct update_desc_pool_traits : public cds::memory::vyukov_queue_pool_traits
- {
- typedef cds::opt::v::static_buffer< cds::any_type, 16 > buffer;
- };
- typedef cds::memory::vyukov_queue_pool< update_desc, update_desc_pool_traits > update_desc_pool_type;
- extern update_desc_pool_type s_UpdateDescPool;
-
- struct update_desc_pool_accessor {
- typedef update_desc_pool_type::value_type value_type;
-
- update_desc_pool_type& operator()() const
- {
- return s_UpdateDescPool;
- }
- };
-
- } // namespace ellen_bintree_ptb
-
-} // namespace tree
-
-#endif // #ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_PTB_H
+++ /dev/null
-//$$CDS-header$$
-
-#include "tree/hdr_intrusive_bintree.h"
-#include <cds/intrusive/ellen_bintree_dhp.h>
-
-#include "tree/hdr_intrusive_ellen_bintree_pool_ptb.h"
-#include "unit/print_ellenbintree_stat.h"
-
-namespace tree {
- namespace ci = cds::intrusive;
- namespace co = cds::opt;
- namespace {
- typedef ci::ellen_bintree::node<cds::gc::PTB> leaf_node;
- typedef IntrusiveBinTreeHdrTest::base_hook_value< leaf_node > base_value;
-
- struct print_stat {
- template <typename Tree>
- void operator()( Tree const& t)
- {
- std::cout << t.statistics();
- }
- };
-
- typedef ci::ellen_bintree::internal_node< IntrusiveBinTreeHdrTest::key_type, leaf_node > internal_node;
- typedef ci::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_less()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
- ci::ellen_bintree::make_traits<
- ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
- ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
- ,co::less< less< base_value > >
- ,ci::opt::disposer< disposer< base_value > >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_less_stat()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
- ci::ellen_bintree::make_traits<
- ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
- ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
- ,co::less< less< base_value > >
- ,ci::opt::disposer< disposer< base_value > >
- ,co::stat< ci::ellen_bintree::stat<> >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_cmp()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
- ci::ellen_bintree::make_traits<
- ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
- ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
- ,co::compare< compare< base_value > >
- ,ci::opt::disposer< disposer< base_value > >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_cmpless()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
- ci::ellen_bintree::make_traits<
- ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
- ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
- ,co::compare< compare< base_value > >
- ,co::less< less< base_value > >
- ,ci::opt::disposer< disposer< base_value > >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_less_ic()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
- ci::ellen_bintree::make_traits<
- ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
- ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
- ,co::less< less< base_value > >
- ,ci::opt::disposer< disposer< base_value > >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_cmp_ic()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
- ci::ellen_bintree::make_traits<
- ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
- ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
- ,co::compare< compare< base_value > >
- ,ci::opt::disposer< disposer< base_value > >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_cmp_ic_stat()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
- ci::ellen_bintree::make_traits<
- ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
- ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
- ,co::compare< compare< base_value > >
- ,ci::opt::disposer< disposer< base_value > >
- ,co::item_counter< cds::atomicity::item_counter >
- ,co::stat< ci::ellen_bintree::stat<> >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_less_pool()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
- ci::ellen_bintree::make_traits<
- ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
- ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
- ,co::less< less< base_value > >
- ,ci::opt::disposer< disposer< base_value > >
- ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
- ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_less_pool_ic_stat()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
- ci::ellen_bintree::make_traits<
- ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
- ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
- ,co::less< less< base_value > >
- ,ci::opt::disposer< disposer< base_value > >
- ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
- ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
- ,co::item_counter< cds::atomicity::item_counter >
- ,co::stat< ci::ellen_bintree::stat<> >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
-
-} //namespace tree
+++ /dev/null
-//$$CDS-header$$
-
-#include "tree/hdr_intrusive_bintree.h"
-#include <cds/intrusive/ellen_bintree_dhp.h>
-
-#include "tree/hdr_intrusive_ellen_bintree_pool_ptb.h"
-#include "unit/print_ellenbintree_stat.h"
-
-namespace tree {
- namespace ci = cds::intrusive;
- namespace co = cds::opt;
- namespace {
- typedef ci::ellen_bintree::node<cds::gc::PTB> leaf_node;
- typedef IntrusiveBinTreeHdrTest::member_hook_value< leaf_node > member_value;
-
- typedef ci::opt::hook< ci::ellen_bintree::member_hook< offsetof(member_value, hook), co::gc< cds::gc::PTB > > > member_hook;
-
- struct print_stat {
- template <typename Tree>
- void operator()( Tree const& t)
- {
- std::cout << t.statistics();
- }
- };
-
- typedef ci::ellen_bintree::internal_node< IntrusiveBinTreeHdrTest::key_type, leaf_node > internal_node;
- typedef ci::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_less()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
- ci::ellen_bintree::make_traits<
- member_hook
- ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
- ,co::less< less< member_value > >
- ,ci::opt::disposer< disposer< member_value > >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_less_stat()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
- ci::ellen_bintree::make_traits<
- member_hook
- ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
- ,co::less< less< member_value > >
- ,ci::opt::disposer< disposer< member_value > >
- ,co::stat< ci::ellen_bintree::stat<> >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_cmp()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
- ci::ellen_bintree::make_traits<
- member_hook
- ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
- ,co::compare< compare< member_value > >
- ,ci::opt::disposer< disposer< member_value > >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_cmpless()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
- ci::ellen_bintree::make_traits<
- member_hook
- ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
- ,co::compare< compare< member_value > >
- ,co::less< less< member_value > >
- ,ci::opt::disposer< disposer< member_value > >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_less_ic()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
- ci::ellen_bintree::make_traits<
- member_hook
- ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
- ,co::less< less< member_value > >
- ,ci::opt::disposer< disposer< member_value > >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_cmp_ic()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
- ci::ellen_bintree::make_traits<
- member_hook
- ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
- ,co::compare< compare< member_value > >
- ,ci::opt::disposer< disposer< member_value > >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_cmp_ic_stat()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
- ci::ellen_bintree::make_traits<
- member_hook
- ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
- ,co::compare< compare< member_value > >
- ,ci::opt::disposer< disposer< member_value > >
- ,co::item_counter< cds::atomicity::item_counter >
- ,co::stat< ci::ellen_bintree::stat<> >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_less_pool()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
- ci::ellen_bintree::make_traits<
- member_hook
- ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
- ,co::less< less< member_value > >
- ,ci::opt::disposer< disposer< member_value > >
- ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
- ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
- void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_less_pool_ic_stat()
- {
- typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
- ci::ellen_bintree::make_traits<
- member_hook
- ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
- ,co::less< less< member_value > >
- ,ci::opt::disposer< disposer< member_value > >
- ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
- ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
- ,co::item_counter< cds::atomicity::item_counter >
- ,co::stat< ci::ellen_bintree::stat<> >
- >::type
- > tree_type;
-
- test<tree_type, print_stat>();
- }
-
-
-} //namespace tree
void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpb_base_less()
{
- typedef ci::EllenBinTree< rcu_type, key_type, base_value,
- ci::ellen_bintree::make_traits<
- ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< rcu_type > > >
- ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
- ,co::less< less< base_value > >
- ,ci::opt::disposer< disposer< base_value > >
- >::type
- > tree_type;
+ struct tree_traits : public ci::ellen_bintree::traits
+ {
+ typedef ci::ellen_bintree::base_hook< co::gc< rcu_type >> hook;
+ typedef IntrusiveBinTreeHdrTest::key_extractor< base_value > key_extractor;
+ typedef IntrusiveBinTreeHdrTest::less< base_value > less;
+ typedef IntrusiveBinTreeHdrTest::disposer< base_value > disposer;
+ };
+ typedef ci::EllenBinTree< rcu_type, key_type, base_value, tree_traits > tree_type;
test_rcu<tree_type, print_stat>();
}
#include "tree/hdr_intrusive_bintree.h"
#include "tree/hdr_intrusive_ellen_bintree_pool_rcu.h"
#include "tree/hdr_intrusive_ellen_bintree_pool_hp.h"
-#include "tree/hdr_intrusive_ellen_bintree_pool_ptb.h"
+#include "tree/hdr_intrusive_ellen_bintree_pool_dhp.h"
#include "tree/hdr_ellenbintree_set.h"
#include "tree/hdr_ellenbintree_map.h"
internal_node_pool_type s_InternalNodePool( 1024 * 8 );
update_desc_pool_type s_UpdateDescPool;
}
- namespace ellen_bintree_ptb {
+ namespace ellen_bintree_dhp {
internal_node_pool_type s_InternalNodePool( 1024 * 8 );
update_desc_pool_type s_UpdateDescPool;
}