Move libcds 1.6.0 from SVN
[libcds.git] / tests / test-hdr / tree / hdr_ellenbintree_set_rcu_shb.cpp
1 //$$CDS-header$$
2
3 #include "tree/hdr_ellenbintree_set.h"
4 #include <cds/urcu/signal_buffered.h>
5 #include <cds/container/ellen_bintree_set_rcu.h>
6
7 #include "tree/hdr_intrusive_ellen_bintree_pool_rcu.h"
8 #include "unit/print_ellenbintree_stat.h"
9
10 namespace tree {
11 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
12     namespace cc = cds::container;
13     namespace co = cds::opt;
14     namespace {
15         typedef cds::urcu::gc< cds::urcu::signal_buffered<> > rcu_type;
16
17         typedef cc::ellen_bintree::node<rcu_type, EllenBinTreeSetHdrTest::value_type>                   tree_leaf_node;
18         typedef cc::ellen_bintree::internal_node< EllenBinTreeSetHdrTest::key_type, tree_leaf_node >    tree_internal_node;
19         typedef cc::ellen_bintree::update_desc<tree_leaf_node, tree_internal_node>                      tree_update_desc;
20
21         struct print_stat {
22             template <typename Tree>
23             void operator()( Tree const& t)
24             {
25                 std::cout << t.statistics();
26             }
27         };
28     }
29 #endif
30
31     void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_less()
32     {
33 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
34         typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
35             cc::ellen_bintree::make_set_traits<
36                 cc::ellen_bintree::key_extractor< key_extractor >
37                 ,co::less< less >
38             >::type
39         > set_type;
40
41         test_rcu<set_type, print_stat>();
42 #endif
43     }
44
45     void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_cmp()
46     {
47 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
48         typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
49             cc::ellen_bintree::make_set_traits<
50                 cc::ellen_bintree::key_extractor< key_extractor >
51                 ,co::compare< compare >
52             >::type
53         > set_type;
54
55         test_rcu<set_type, print_stat>();
56 #endif
57     }
58
59     void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_cmpless()
60     {
61 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
62         typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
63             cc::ellen_bintree::make_set_traits<
64                 cc::ellen_bintree::key_extractor< key_extractor >
65                 ,co::compare< compare >
66                 ,co::less< less >
67             >::type
68         > set_type;
69
70         test_rcu<set_type, print_stat>();
71 #endif
72     }
73
74     void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_less_ic()
75     {
76 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
77         typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
78             cc::ellen_bintree::make_set_traits<
79                 cc::ellen_bintree::key_extractor< key_extractor >
80                 ,co::less< less >
81                 ,co::item_counter< cds::atomicity::item_counter >
82             >::type
83         > set_type;
84
85         test_rcu<set_type, print_stat>();
86 #endif
87     }
88
89     void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_cmp_ic()
90     {
91 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
92         typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
93             cc::ellen_bintree::make_set_traits<
94                 cc::ellen_bintree::key_extractor< key_extractor >
95                 ,co::item_counter< cds::atomicity::item_counter >
96                 ,co::compare< compare >
97             >::type
98         > set_type;
99
100         test_rcu<set_type, print_stat>();
101 #endif
102     }
103
104     void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_less_stat()
105     {
106 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
107         typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
108             cc::ellen_bintree::make_set_traits<
109                 cc::ellen_bintree::key_extractor< key_extractor >
110                 ,co::less< less >
111                 ,co::stat< cc::ellen_bintree::stat<> >
112             >::type
113         > set_type;
114
115         test_rcu<set_type, print_stat>();
116 #endif
117     }
118
119     void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_cmp_ic_stat()
120     {
121 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
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 >
125                 ,co::item_counter< cds::atomicity::item_counter >
126                 ,co::stat< cc::ellen_bintree::stat<> >
127                 ,co::compare< compare >
128             >::type
129         > set_type;
130
131         test_rcu<set_type, print_stat>();
132 #endif
133     }
134
135     void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_less_pool()
136     {
137 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
138         typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
139             cc::ellen_bintree::make_set_traits<
140                 cc::ellen_bintree::key_extractor< key_extractor >
141                 ,co::less< less >
142                 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
143                 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
144             >::type
145         > set_type;
146
147         test_rcu<set_type, print_stat>();
148 #endif
149     }
150
151     void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_less_pool_ic_stat()
152     {
153 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
154         typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
155             cc::ellen_bintree::make_set_traits<
156                 cc::ellen_bintree::key_extractor< key_extractor >
157                 ,co::less< less >
158                 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
159                 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
160                 ,co::item_counter< cds::atomicity::item_counter >
161                 ,co::stat< cc::ellen_bintree::stat<> >
162             >::type
163         > set_type;
164
165         test_rcu<set_type, print_stat>();
166 #endif
167     }
168
169 } // namespace tree