3 #include "tree/hdr_intrusive_bintree.h"
4 #include <cds/intrusive/ellen_bintree_hp.h>
6 #include "tree/hdr_intrusive_ellen_bintree_pool_hp.h"
7 #include "unit/print_ellenbintree_stat.h"
10 namespace ci = cds::intrusive;
11 namespace co = cds::opt;
13 typedef ci::ellen_bintree::node<cds::gc::HP> leaf_node;
14 typedef IntrusiveBinTreeHdrTest::member_hook_value< leaf_node > member_value;
16 typedef ci::opt::hook< ci::ellen_bintree::member_hook< offsetof(member_value, hook), co::gc< cds::gc::HP > > > member_hook;
19 template <typename Tree>
20 void operator()( Tree const& t)
22 std::cout << t.statistics();
26 typedef ci::ellen_bintree::internal_node< IntrusiveBinTreeHdrTest::key_type, leaf_node > internal_node;
27 typedef ci::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
30 void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_less()
32 typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value,
33 ci::ellen_bintree::make_traits<
35 ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
36 ,co::less< less< member_value > >
37 ,ci::opt::disposer< disposer< member_value > >
41 test<tree_type, print_stat>();
44 void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_less_stat()
46 typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value,
47 ci::ellen_bintree::make_traits<
49 ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
50 ,co::less< less< member_value > >
51 ,ci::opt::disposer< disposer< member_value > >
52 ,co::stat< ci::ellen_bintree::stat<> >
56 test<tree_type, print_stat>();
59 void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_cmp()
61 typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value,
62 ci::ellen_bintree::make_traits<
64 ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
65 ,co::compare< compare< member_value > >
66 ,ci::opt::disposer< disposer< member_value > >
70 test<tree_type, print_stat>();
73 void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_cmpless()
75 typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value,
76 ci::ellen_bintree::make_traits<
78 ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
79 ,co::compare< compare< member_value > >
80 ,co::less< less< member_value > >
81 ,ci::opt::disposer< disposer< member_value > >
85 test<tree_type, print_stat>();
88 void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_less_ic()
90 typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value,
91 ci::ellen_bintree::make_traits<
93 ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
94 ,co::less< less< member_value > >
95 ,ci::opt::disposer< disposer< member_value > >
96 ,co::item_counter< cds::atomicity::item_counter >
100 test<tree_type, print_stat>();
103 void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_cmp_ic()
105 typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value,
106 ci::ellen_bintree::make_traits<
108 ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
109 ,co::compare< compare< member_value > >
110 ,ci::opt::disposer< disposer< member_value > >
111 ,co::item_counter< cds::atomicity::item_counter >
115 test<tree_type, print_stat>();
118 void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_cmp_ic_stat()
120 typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value,
121 ci::ellen_bintree::make_traits<
123 ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
124 ,co::compare< compare< member_value > >
125 ,ci::opt::disposer< disposer< member_value > >
126 ,co::item_counter< cds::atomicity::item_counter >
127 ,co::stat< ci::ellen_bintree::stat<> >
131 test<tree_type, print_stat>();
134 void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_less_pool()
136 typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value,
137 ci::ellen_bintree::make_traits<
139 ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
140 ,co::less< less< member_value > >
141 ,ci::opt::disposer< disposer< member_value > >
142 ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_hp::internal_node_pool_accessor > >
143 ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_hp::update_desc_pool_accessor > >
147 test<tree_type, print_stat>();
150 void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_less_pool_ic_stat()
152 typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value,
153 ci::ellen_bintree::make_traits<
155 ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
156 ,co::less< less< member_value > >
157 ,ci::opt::disposer< disposer< member_value > >
158 ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_hp::internal_node_pool_accessor > >
159 ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_hp::update_desc_pool_accessor > >
160 ,co::item_counter< cds::atomicity::item_counter >
161 ,co::stat< ci::ellen_bintree::stat<> >
165 test<tree_type, print_stat>();