3 #include "tree/hdr_ellenbintree_map.h"
4 #include <cds/urcu/general_buffered.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_buffered<> > 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_gpb_less()
32 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
33 cc::ellen_bintree::make_map_traits<
38 test_rcu<map_type, print_stat>();
41 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_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<map_type, print_stat>();
52 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_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<map_type, print_stat>();
64 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_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<map_type, print_stat>();
76 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_cmp_ic()
78 struct map_traits : public cc::ellen_bintree::traits {
79 typedef cds::atomicity::item_counter item_counter;
80 typedef EllenBinTreeMapHdrTest::compare compare;
82 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type, map_traits > map_type;
84 test_rcu<map_type, print_stat>();
87 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_less_stat()
89 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
90 cc::ellen_bintree::make_map_traits<
92 ,co::stat< cc::ellen_bintree::stat<> >
96 test_rcu<map_type, print_stat>();
99 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_cmp_ic_stat()
101 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
102 cc::ellen_bintree::make_map_traits<
103 co::item_counter< cds::atomicity::item_counter >
104 ,co::stat< cc::ellen_bintree::stat<> >
105 ,co::compare< compare >
109 test_rcu<map_type, print_stat>();
112 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_less_pool()
114 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
115 cc::ellen_bintree::make_map_traits<
117 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
118 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
122 test_rcu<map_type, print_stat>();
125 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_less_pool_ic_stat()
127 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
128 cc::ellen_bintree::make_map_traits<
130 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
131 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
132 ,co::item_counter< cds::atomicity::item_counter >
133 ,co::stat< cc::ellen_bintree::stat<> >
137 test_rcu<map_type, print_stat>();