3 #include "tree/hdr_ellenbintree_set.h"
4 #include <cds/urcu/general_buffered.h>
5 #include <cds/container/ellen_bintree_set_rcu.h>
7 #include "tree/hdr_intrusive_ellen_bintree_pool_rcu.h"
8 #include "unit/print_ellenbintree_stat.h"
11 namespace cc = cds::container;
12 namespace co = cds::opt;
14 typedef cds::urcu::gc< cds::urcu::general_buffered<> > rcu_type;
16 typedef cc::ellen_bintree::node<rcu_type, EllenBinTreeSetHdrTest::value_type> tree_leaf_node;
17 typedef cc::ellen_bintree::internal_node< EllenBinTreeSetHdrTest::key_type, tree_leaf_node > tree_internal_node;
18 typedef cc::ellen_bintree::update_desc<tree_leaf_node, tree_internal_node> tree_update_desc;
21 template <typename Tree>
22 void operator()( Tree const& t)
24 std::cout << t.statistics();
29 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_less()
31 struct set_traits : public cc::ellen_bintree::traits{
32 typedef EllenBinTreeSetHdrTest::key_extractor key_extractor;
33 typedef EllenBinTreeSetHdrTest::less less;
35 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type, set_traits > set_type;
37 test_rcu<set_type, print_stat>();
40 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_cmp()
42 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
43 cc::ellen_bintree::make_set_traits<
44 cc::ellen_bintree::key_extractor< key_extractor >
45 ,co::compare< compare >
49 test_rcu<set_type, print_stat>();
52 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_cmpless()
54 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
55 cc::ellen_bintree::make_set_traits<
56 cc::ellen_bintree::key_extractor< key_extractor >
57 ,co::compare< compare >
62 test_rcu<set_type, print_stat>();
65 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_less_ic()
67 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
68 cc::ellen_bintree::make_set_traits<
69 cc::ellen_bintree::key_extractor< key_extractor >
71 ,co::item_counter< cds::atomicity::item_counter >
75 test_rcu<set_type, print_stat>();
78 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_cmp_ic()
80 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
81 cc::ellen_bintree::make_set_traits<
82 cc::ellen_bintree::key_extractor< key_extractor >
83 ,co::item_counter< cds::atomicity::item_counter >
84 ,co::compare< compare >
88 test_rcu<set_type, print_stat>();
91 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_less_stat()
93 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
94 cc::ellen_bintree::make_set_traits<
95 cc::ellen_bintree::key_extractor< key_extractor >
97 ,co::stat< cc::ellen_bintree::stat<> >
101 test_rcu<set_type, print_stat>();
104 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_cmp_ic_stat()
106 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
107 cc::ellen_bintree::make_set_traits<
108 cc::ellen_bintree::key_extractor< key_extractor >
109 ,co::item_counter< cds::atomicity::item_counter >
110 ,co::stat< cc::ellen_bintree::stat<> >
111 ,co::compare< compare >
115 test_rcu<set_type, print_stat>();
118 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_less_pool()
120 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
121 cc::ellen_bintree::make_set_traits<
122 cc::ellen_bintree::key_extractor< key_extractor >
124 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
125 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
129 test_rcu<set_type, print_stat>();
132 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_less_pool_ic_stat()
134 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
135 cc::ellen_bintree::make_set_traits<
136 cc::ellen_bintree::key_extractor< key_extractor >
138 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
139 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
140 ,co::item_counter< cds::atomicity::item_counter >
141 ,co::stat< cc::ellen_bintree::stat<> >
145 test_rcu<set_type, print_stat>();