3 #include "tree/hdr_ellenbintree_map.h"
4 #include <cds/urcu/general_threaded.h>
5 #include <cds/container/ellen_bintree_map_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_threaded<> > rcu_type;
16 typedef cc::ellen_bintree::map_node<rcu_type, EllenBinTreeMapHdrTest::key_type, EllenBinTreeMapHdrTest::value_type> tree_leaf_node;
17 typedef cc::ellen_bintree::internal_node< EllenBinTreeMapHdrTest::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 EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpt_less()
32 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
33 cc::ellen_bintree::make_map_traits<
38 test_rcu<set_type, print_stat>();
41 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpt_cmp()
43 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
44 cc::ellen_bintree::make_map_traits<
45 co::compare< compare >
49 test_rcu<set_type, print_stat>();
52 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpt_cmpless()
54 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
55 cc::ellen_bintree::make_map_traits<
56 co::compare< compare >
61 test_rcu<set_type, print_stat>();
64 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpt_less_ic()
66 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
67 cc::ellen_bintree::make_map_traits<
69 ,co::item_counter< cds::atomicity::item_counter >
73 test_rcu<set_type, print_stat>();
76 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpt_cmp_ic()
78 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
79 cc::ellen_bintree::make_map_traits<
80 co::item_counter< cds::atomicity::item_counter >
81 ,co::compare< compare >
85 test_rcu<set_type, print_stat>();
88 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpt_less_stat()
90 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
91 cc::ellen_bintree::make_map_traits<
93 ,co::stat< cc::ellen_bintree::stat<> >
97 test_rcu<set_type, print_stat>();
100 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpt_cmp_ic_stat()
102 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
103 cc::ellen_bintree::make_map_traits<
104 co::item_counter< cds::atomicity::item_counter >
105 ,co::stat< cc::ellen_bintree::stat<> >
106 ,co::compare< compare >
110 test_rcu<set_type, print_stat>();
113 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpt_less_pool()
115 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
116 cc::ellen_bintree::make_map_traits<
118 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
119 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
123 test_rcu<set_type, print_stat>();
126 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpt_less_pool_ic_stat()
128 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
129 cc::ellen_bintree::make_map_traits<
131 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
132 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
133 ,co::item_counter< cds::atomicity::item_counter >
134 ,co::stat< cc::ellen_bintree::stat<> >
138 test_rcu<set_type, print_stat>();