3 #include "tree/hdr_ellenbintree_map.h"
4 #include <cds/container/ellen_bintree_map_dhp.h>
6 #include "tree/hdr_intrusive_ellen_bintree_pool_dhp.h"
7 #include "unit/print_ellenbintree_stat.h"
10 namespace cc = cds::container;
11 namespace co = cds::opt;
13 typedef cds::gc::DHP gc_type;
15 typedef cc::ellen_bintree::map_node<gc_type, EllenBinTreeMapHdrTest::key_type, EllenBinTreeMapHdrTest::value_type> tree_leaf_node;
16 typedef cc::ellen_bintree::internal_node< EllenBinTreeMapHdrTest::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();
29 void EllenBinTreeMapHdrTest::EllenBinTree_dhp_less()
31 struct map_traits : public cc::ellen_bintree::traits
33 typedef EllenBinTreeMapHdrTest::less less;
35 typedef cc::EllenBinTreeMap< gc_type, key_type, value_type, map_traits > set_type;
37 test<set_type, print_stat>();
40 void EllenBinTreeMapHdrTest::EllenBinTree_dhp_cmp()
42 typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
43 cc::ellen_bintree::make_map_traits<
44 co::compare< compare >
48 test<set_type, print_stat>();
51 void EllenBinTreeMapHdrTest::EllenBinTree_dhp_cmpless()
53 typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
54 cc::ellen_bintree::make_map_traits<
55 co::compare< compare >
60 test<set_type, print_stat>();
63 void EllenBinTreeMapHdrTest::EllenBinTree_dhp_less_ic()
65 typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
66 cc::ellen_bintree::make_map_traits<
68 ,co::item_counter< cds::atomicity::item_counter >
72 test<set_type, print_stat>();
75 void EllenBinTreeMapHdrTest::EllenBinTree_dhp_cmp_ic()
77 typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
78 cc::ellen_bintree::make_map_traits<
79 co::item_counter< cds::atomicity::item_counter >
80 ,co::compare< compare >
84 test<set_type, print_stat>();
87 void EllenBinTreeMapHdrTest::EllenBinTree_dhp_less_stat()
89 typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
90 cc::ellen_bintree::make_map_traits<
92 ,co::stat< cc::ellen_bintree::stat<> >
96 test<set_type, print_stat>();
99 void EllenBinTreeMapHdrTest::EllenBinTree_dhp_cmp_ic_stat()
101 typedef cc::EllenBinTreeMap< gc_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<set_type, print_stat>();
112 void EllenBinTreeMapHdrTest::EllenBinTree_dhp_cmp_ic_stat_yield()
114 typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
115 cc::ellen_bintree::make_map_traits<
116 co::item_counter< cds::atomicity::item_counter >
117 ,co::stat< cc::ellen_bintree::stat<> >
118 ,co::compare< compare >
119 , co::back_off< cds::backoff::yield >
123 test<set_type, print_stat>();
126 void EllenBinTreeMapHdrTest::EllenBinTree_dhp_less_pool()
128 typedef cc::EllenBinTreeMap< gc_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_dhp::internal_node_pool_accessor > >
132 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
136 test<set_type, print_stat>();
139 void EllenBinTreeMapHdrTest::EllenBinTree_dhp_less_pool_ic_stat()
141 typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
142 cc::ellen_bintree::make_map_traits<
144 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
145 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
146 ,co::item_counter< cds::atomicity::item_counter >
147 ,co::stat< cc::ellen_bintree::stat<> >
151 test<set_type, print_stat>();