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::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_hp_base_less()
30 typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value,
31 ci::ellen_bintree::make_traits<
32 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::HP > > >
33 ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
34 ,co::less< less< base_value > >
35 ,ci::opt::disposer< disposer< base_value > >
39 test<tree_type, print_stat>();
42 void IntrusiveBinTreeHdrTest::EllenBinTree_hp_base_less_stat()
44 typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value,
45 ci::ellen_bintree::make_traits<
46 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::HP > > >
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_hp_base_cmp()
59 typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value,
60 ci::ellen_bintree::make_traits<
61 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::HP > > >
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_hp_base_cmpless()
73 typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value,
74 ci::ellen_bintree::make_traits<
75 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::HP > > >
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_hp_base_less_ic()
88 typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value,
89 ci::ellen_bintree::make_traits<
90 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::HP > > >
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_hp_base_cmp_ic()
103 typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value,
104 ci::ellen_bintree::make_traits<
105 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::HP > > >
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_hp_base_cmp_ic_stat()
118 typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value,
119 ci::ellen_bintree::make_traits<
120 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::HP > > >
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_hp_base_less_pool()
134 typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value,
135 ci::ellen_bintree::make_traits<
136 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::HP > > >
137 ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
138 ,co::less< less< base_value > >
139 ,ci::opt::disposer< disposer< base_value > >
140 ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_hp::internal_node_pool_accessor > >
141 ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_hp::update_desc_pool_accessor > >
145 test<tree_type, print_stat>();
148 void IntrusiveBinTreeHdrTest::EllenBinTree_hp_base_less_pool_ic_stat()
150 typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value,
151 ci::ellen_bintree::make_traits<
152 ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::HP > > >
153 ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
154 ,co::less< less< base_value > >
155 ,ci::opt::disposer< disposer< base_value > >
156 ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_hp::internal_node_pool_accessor > >
157 ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_hp::update_desc_pool_accessor > >
158 ,co::item_counter< cds::atomicity::item_counter >
159 ,co::stat< ci::ellen_bintree::stat<> >
163 test<tree_type, print_stat>();