3 #include "tree/hdr_ellenbintree_set.h"
4 #include <cds/container/ellen_bintree_set_hp.h>
6 #include "tree/hdr_intrusive_ellen_bintree_pool_hp.h"
7 #include "unit/print_ellenbintree_stat.h"
10 namespace cc = cds::container;
11 namespace co = cds::opt;
13 typedef cds::gc::HP gc_type;
15 typedef cc::ellen_bintree::node<gc_type, EllenBinTreeSetHdrTest::value_type> tree_leaf_node;
16 typedef cc::ellen_bintree::internal_node< EllenBinTreeSetHdrTest::key_type, tree_leaf_node > tree_internal_node;
17 typedef cc::ellen_bintree::update_desc<tree_leaf_node, tree_internal_node> tree_update_desc;
20 template <typename Tree>
21 void operator()( Tree const& t)
23 std::cout << t.statistics();
28 void EllenBinTreeSetHdrTest::EllenBinTree_hp_less()
30 struct set_traits : public cc::ellen_bintree::traits{
31 typedef EllenBinTreeSetHdrTest::key_extractor key_extractor;
32 typedef EllenBinTreeSetHdrTest::less less;
34 typedef cc::EllenBinTreeSet< gc_type, key_type, value_type, set_traits > set_type;
36 test<set_type, print_stat>();
39 void EllenBinTreeSetHdrTest::EllenBinTree_hp_cmp()
41 typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
42 cc::ellen_bintree::make_set_traits<
43 cc::ellen_bintree::key_extractor< key_extractor >
44 ,co::compare< compare >
48 test<set_type, print_stat>();
51 void EllenBinTreeSetHdrTest::EllenBinTree_hp_cmpless()
53 typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
54 cc::ellen_bintree::make_set_traits<
55 cc::ellen_bintree::key_extractor< key_extractor >
56 ,co::compare< compare >
61 test<set_type, print_stat>();
64 void EllenBinTreeSetHdrTest::EllenBinTree_hp_less_ic()
66 typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
67 cc::ellen_bintree::make_set_traits<
68 cc::ellen_bintree::key_extractor< key_extractor >
70 ,co::item_counter< cds::atomicity::item_counter >
74 test<set_type, print_stat>();
77 void EllenBinTreeSetHdrTest::EllenBinTree_hp_cmp_ic()
79 typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
80 cc::ellen_bintree::make_set_traits<
81 cc::ellen_bintree::key_extractor< key_extractor >
82 ,co::item_counter< cds::atomicity::item_counter >
83 ,co::compare< compare >
87 test<set_type, print_stat>();
90 void EllenBinTreeSetHdrTest::EllenBinTree_hp_less_stat()
92 typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
93 cc::ellen_bintree::make_set_traits<
94 cc::ellen_bintree::key_extractor< key_extractor >
96 ,co::stat< cc::ellen_bintree::stat<> >
100 test<set_type, print_stat>();
103 void EllenBinTreeSetHdrTest::EllenBinTree_hp_cmp_ic_stat()
105 typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
106 cc::ellen_bintree::make_set_traits<
107 cc::ellen_bintree::key_extractor< key_extractor >
108 ,co::item_counter< cds::atomicity::item_counter >
109 ,co::stat< cc::ellen_bintree::stat<> >
110 ,co::compare< compare >
114 test<set_type, print_stat>();
117 void EllenBinTreeSetHdrTest::EllenBinTree_hp_less_pool()
119 typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
120 cc::ellen_bintree::make_set_traits<
121 cc::ellen_bintree::key_extractor< key_extractor >
123 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_hp::internal_node_pool_accessor > >
124 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_hp::update_desc_pool_accessor > >
128 test<set_type, print_stat>();
131 void EllenBinTreeSetHdrTest::EllenBinTree_hp_less_pool_ic_stat()
133 typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
134 cc::ellen_bintree::make_set_traits<
135 cc::ellen_bintree::key_extractor< key_extractor >
137 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_hp::internal_node_pool_accessor > >
138 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_hp::update_desc_pool_accessor > >
139 ,co::item_counter< cds::atomicity::item_counter >
140 ,co::stat< cc::ellen_bintree::stat<> >
144 test<set_type, print_stat>();