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();
30 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_less()
32 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
33 cc::ellen_bintree::make_set_traits<
34 cc::ellen_bintree::key_extractor< key_extractor >
39 test_rcu<set_type, print_stat>();
42 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_cmp()
44 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
45 cc::ellen_bintree::make_set_traits<
46 cc::ellen_bintree::key_extractor< key_extractor >
47 ,co::compare< compare >
51 test_rcu<set_type, print_stat>();
54 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_cmpless()
56 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
57 cc::ellen_bintree::make_set_traits<
58 cc::ellen_bintree::key_extractor< key_extractor >
59 ,co::compare< compare >
64 test_rcu<set_type, print_stat>();
67 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_less_ic()
69 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
70 cc::ellen_bintree::make_set_traits<
71 cc::ellen_bintree::key_extractor< key_extractor >
73 ,co::item_counter< cds::atomicity::item_counter >
77 test_rcu<set_type, print_stat>();
80 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_cmp_ic()
82 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
83 cc::ellen_bintree::make_set_traits<
84 cc::ellen_bintree::key_extractor< key_extractor >
85 ,co::item_counter< cds::atomicity::item_counter >
86 ,co::compare< compare >
90 test_rcu<set_type, print_stat>();
93 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_less_stat()
95 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
96 cc::ellen_bintree::make_set_traits<
97 cc::ellen_bintree::key_extractor< key_extractor >
99 ,co::stat< cc::ellen_bintree::stat<> >
103 test_rcu<set_type, print_stat>();
106 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_cmp_ic_stat()
108 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
109 cc::ellen_bintree::make_set_traits<
110 cc::ellen_bintree::key_extractor< key_extractor >
111 ,co::item_counter< cds::atomicity::item_counter >
112 ,co::stat< cc::ellen_bintree::stat<> >
113 ,co::compare< compare >
117 test_rcu<set_type, print_stat>();
120 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_less_pool()
122 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
123 cc::ellen_bintree::make_set_traits<
124 cc::ellen_bintree::key_extractor< key_extractor >
126 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
127 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
131 test_rcu<set_type, print_stat>();
134 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpb_less_pool_ic_stat()
136 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
137 cc::ellen_bintree::make_set_traits<
138 cc::ellen_bintree::key_extractor< key_extractor >
140 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
141 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
142 ,co::item_counter< cds::atomicity::item_counter >
143 ,co::stat< cc::ellen_bintree::stat<> >
147 test_rcu<set_type, print_stat>();