EllenBinTree refactoring
[libcds.git] / tests / test-hdr / tree / hdr_ellenbintree_set_dhp.cpp
1 //$$CDS-header$$
2
3 #include "tree/hdr_ellenbintree_set.h"
4 #include <cds/container/ellen_bintree_set_dhp.h>
5
6 #include "tree/hdr_intrusive_ellen_bintree_pool_dhp.h"
7 #include "unit/print_ellenbintree_stat.h"
8
9 namespace tree {
10     namespace cc = cds::container;
11     namespace co = cds::opt;
12     namespace {
13         typedef cds::gc::DHP     gc_type;
14
15         typedef cc::ellen_bintree::node<gc_type, EllenBinTreeSetHdrTest::value_type>                    tree_leaf_node;
16         typedef cc::ellen_bintree::internal_node< EllenBinTreeSetHdrTest::key_type, tree_leaf_node >    tree_internal_node;
17         typedef cc::ellen_bintree::update_desc<tree_leaf_node, tree_internal_node>                      tree_update_desc;
18
19         struct print_stat {
20             template <typename Tree>
21             void operator()( Tree const& t)
22             {
23                 std::cout << t.statistics();
24             }
25         };
26
27     }
28
29     void EllenBinTreeSetHdrTest::EllenBinTree_dhp_less()
30     {
31         struct set_traits: public cc::ellen_bintree::traits{
32             typedef EllenBinTreeSetHdrTest::key_extractor key_extractor;
33             typedef EllenBinTreeSetHdrTest::less less;
34         };
35         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type, set_traits > set_type;
36
37         test<set_type, print_stat>();
38     }
39
40     void EllenBinTreeSetHdrTest::EllenBinTree_dhp_cmp()
41     {
42         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
43             cc::ellen_bintree::make_set_traits<
44                 cc::ellen_bintree::key_extractor< key_extractor >
45                 ,co::compare< compare >
46             >::type
47         > set_type;
48
49         test<set_type, print_stat>();
50     }
51
52     void EllenBinTreeSetHdrTest::EllenBinTree_dhp_cmpless()
53     {
54         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
55             cc::ellen_bintree::make_set_traits<
56                 cc::ellen_bintree::key_extractor< key_extractor >
57                 ,co::compare< compare >
58                 ,co::less< less >
59             >::type
60         > set_type;
61
62         test<set_type, print_stat>();
63     }
64
65     void EllenBinTreeSetHdrTest::EllenBinTree_dhp_less_ic()
66     {
67         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
68             cc::ellen_bintree::make_set_traits<
69                 cc::ellen_bintree::key_extractor< key_extractor >
70                 ,co::less< less >
71                 ,co::item_counter< cds::atomicity::item_counter >
72             >::type
73         > set_type;
74
75         test<set_type, print_stat>();
76     }
77
78     void EllenBinTreeSetHdrTest::EllenBinTree_dhp_cmp_ic()
79     {
80         typedef cc::EllenBinTreeSet< gc_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 >
85             >::type
86         > set_type;
87
88         test<set_type, print_stat>();
89     }
90
91     void EllenBinTreeSetHdrTest::EllenBinTree_dhp_less_stat()
92     {
93         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
94             cc::ellen_bintree::make_set_traits<
95                 cc::ellen_bintree::key_extractor< key_extractor >
96                 ,co::less< less >
97                 ,co::stat< cc::ellen_bintree::stat<> >
98             >::type
99         > set_type;
100
101         test<set_type, print_stat>();
102     }
103
104     void EllenBinTreeSetHdrTest::EllenBinTree_dhp_cmp_ic_stat()
105     {
106         typedef cc::EllenBinTreeSet< gc_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 >
112             >::type
113         > set_type;
114
115         test<set_type, print_stat>();
116     }
117
118     void EllenBinTreeSetHdrTest::EllenBinTree_dhp_less_pool()
119     {
120         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
121             cc::ellen_bintree::make_set_traits<
122                 cc::ellen_bintree::key_extractor< key_extractor >
123                 ,co::less< less >
124                 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
125                 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
126             >::type
127         > set_type;
128
129         test<set_type, print_stat>();
130     }
131
132     void EllenBinTreeSetHdrTest::EllenBinTree_dhp_less_pool_ic_stat()
133     {
134         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
135             cc::ellen_bintree::make_set_traits<
136                 cc::ellen_bintree::key_extractor< key_extractor >
137                 ,co::less< less >
138                 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
139                 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
140                 ,co::item_counter< cds::atomicity::item_counter >
141                 ,co::stat< cc::ellen_bintree::stat<> >
142             >::type
143         > set_type;
144
145         test<set_type, print_stat>();
146     }
147
148 } // namespace tree