3 #include "tree/hdr_intrusive_bintree.h"
4 #include <cds/intrusive/ellen_bintree_dhp.h>
6 #include "tree/hdr_intrusive_ellen_bintree_pool_dhp.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::DHP> leaf_node;
14 typedef IntrusiveBinTreeHdrTest::base_hook_value< leaf_node > base_value;
17 template <typename Tree>
18 void operator()( Tree const& t)
20 std::cout << t.statistics();
24 typedef ci::ellen_bintree::internal_node< IntrusiveBinTreeHdrTest::key_type, leaf_node > internal_node;
25 typedef ci::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
28 void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less()
30 struct tree_traits : public ci::ellen_bintree::traits
32 typedef ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP >> hook;
33 typedef IntrusiveBinTreeHdrTest::key_extractor< base_value > key_extractor;
34 typedef IntrusiveBinTreeHdrTest::less< base_value > less;
35 typedef IntrusiveBinTreeHdrTest::disposer< base_value > disposer;
37 typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value, tree_traits > tree_type;
39 test<tree_type, print_stat>();
42 void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_stat()
44 typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
45 ci::ellen_bintree::make_traits<
46 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
47 ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
48 ,co::less< less< base_value > >
49 ,ci::opt::disposer< disposer< base_value > >
50 ,co::stat< ci::ellen_bintree::stat<> >
54 test<tree_type, print_stat>();
57 void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp()
59 typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
60 ci::ellen_bintree::make_traits<
61 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
62 ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
63 ,co::compare< compare< base_value > >
64 ,ci::opt::disposer< disposer< base_value > >
68 test<tree_type, print_stat>();
71 void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmpless()
73 typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
74 ci::ellen_bintree::make_traits<
75 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
76 ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
77 ,co::compare< compare< base_value > >
78 ,co::less< less< base_value > >
79 ,ci::opt::disposer< disposer< base_value > >
83 test<tree_type, print_stat>();
86 void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_ic()
88 typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
89 ci::ellen_bintree::make_traits<
90 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
91 ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
92 ,co::less< less< base_value > >
93 ,ci::opt::disposer< disposer< base_value > >
94 ,co::item_counter< cds::atomicity::item_counter >
98 test<tree_type, print_stat>();
101 void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp_ic()
103 typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
104 ci::ellen_bintree::make_traits<
105 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
106 ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
107 ,co::compare< compare< base_value > >
108 ,ci::opt::disposer< disposer< base_value > >
109 ,co::item_counter< cds::atomicity::item_counter >
113 test<tree_type, print_stat>();
116 void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp_ic_stat()
118 typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
119 ci::ellen_bintree::make_traits<
120 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
121 ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
122 ,co::compare< compare< base_value > >
123 ,ci::opt::disposer< disposer< base_value > >
124 ,co::item_counter< cds::atomicity::item_counter >
125 ,co::stat< ci::ellen_bintree::stat<> >
129 test<tree_type, print_stat>();
132 void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp_ic_stat_yield()
134 typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
135 ci::ellen_bintree::make_traits<
136 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
137 , ci::ellen_bintree::key_extractor< key_extractor< base_value > >
138 , co::compare< compare< base_value > >
139 , ci::opt::disposer< disposer< base_value > >
140 , co::item_counter< cds::atomicity::item_counter >
141 , co::stat< ci::ellen_bintree::stat<> >
142 , co::back_off< cds::backoff::yield >
146 test<tree_type, print_stat>();
149 void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_pool()
151 typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
152 ci::ellen_bintree::make_traits<
153 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
154 ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
155 ,co::less< less< base_value > >
156 ,ci::opt::disposer< disposer< base_value > >
157 ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
158 ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
162 test<tree_type, print_stat>();
165 void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_pool_ic_stat()
167 typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
168 ci::ellen_bintree::make_traits<
169 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
170 ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
171 ,co::less< less< base_value > >
172 ,ci::opt::disposer< disposer< base_value > >
173 ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
174 ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
175 ,co::item_counter< cds::atomicity::item_counter >
176 ,co::stat< ci::ellen_bintree::stat<> >
180 test<tree_type, print_stat>();