85baebe983550f1e8d30b0332d13a3903caa74e2
[libcds.git] / tests / test-hdr / set / hdr_intrusive_skiplist_hrc.cpp
1 //$$CDS-header$$
2
3 #include "set/hdr_intrusive_skiplist_set.h"
4
5 #include <cds/intrusive/skip_list_hrc.h>
6 #include "map/print_skiplist_stat.h"
7
8 namespace set {
9
10     void IntrusiveSkipListSet::skiplist_hrc_base_cmp()
11     {
12         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
13
14         typedef ci::SkipListSet< cds::gc::HRC, item,
15             ci::skip_list::make_traits<
16                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
17                 ,co::compare< cmp<item> >
18                 ,ci::opt::disposer< faked_disposer >
19                 ,co::item_counter< cds::atomicity::item_counter >
20             >::type
21         >   set_type;
22
23         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
24     }
25
26     void IntrusiveSkipListSet::skiplist_hrc_base_less()
27     {
28         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
29
30         typedef ci::SkipListSet< cds::gc::HRC, item,
31             ci::skip_list::make_traits<
32                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
33                 ,co::less< less<item> >
34                 ,ci::opt::disposer< faked_disposer >
35                 ,co::item_counter< cds::atomicity::item_counter >
36             >::type
37         >   set_type;
38
39         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
40     }
41
42     void IntrusiveSkipListSet::skiplist_hrc_base_cmpmix()
43     {
44         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
45
46         typedef ci::SkipListSet< cds::gc::HRC, item,
47             ci::skip_list::make_traits<
48                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
49                 ,co::less< less<item> >
50                 ,ci::opt::disposer< faked_disposer >
51                 ,co::compare< cmp<item> >
52                 ,co::item_counter< cds::atomicity::item_counter >
53             >::type
54         >   set_type;
55
56         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
57     }
58
59     void IntrusiveSkipListSet::skiplist_hrc_base_cmp_stat()
60     {
61         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
62
63         typedef ci::SkipListSet< cds::gc::HRC, item,
64             ci::skip_list::make_traits<
65                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
66                 ,co::compare< cmp<item> >
67                 ,ci::opt::disposer< faked_disposer >
68                 ,co::stat< ci::skip_list::stat<> >
69                 ,co::item_counter< cds::atomicity::item_counter >
70             >::type
71         >   set_type;
72
73         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
74     }
75
76     void IntrusiveSkipListSet::skiplist_hrc_base_less_stat()
77     {
78         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
79
80         typedef ci::SkipListSet< cds::gc::HRC, item,
81             ci::skip_list::make_traits<
82                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
83                 ,co::less< less<item> >
84                 ,ci::opt::disposer< faked_disposer >
85                 ,co::stat< ci::skip_list::stat<> >
86                 ,co::item_counter< cds::atomicity::item_counter >
87             >::type
88         >   set_type;
89
90         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
91     }
92
93     void IntrusiveSkipListSet::skiplist_hrc_base_cmpmix_stat()
94     {
95         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
96
97         typedef ci::SkipListSet< cds::gc::HRC, item,
98             ci::skip_list::make_traits<
99                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
100                 ,co::less< less<item> >
101                 ,ci::opt::disposer< faked_disposer >
102                 ,co::compare< cmp<item> >
103                 ,co::stat< ci::skip_list::stat<> >
104                 ,co::item_counter< cds::atomicity::item_counter >
105             >::type
106         >   set_type;
107
108         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
109     }
110
111     void IntrusiveSkipListSet::skiplist_hrc_base_cmp_xorshift()
112     {
113         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
114
115         typedef ci::SkipListSet< cds::gc::HRC, item,
116             ci::skip_list::make_traits<
117                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
118                 ,co::compare< cmp<item> >
119                 ,ci::opt::disposer< faked_disposer >
120                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
121                 ,co::item_counter< cds::atomicity::item_counter >
122             >::type
123         >   set_type;
124
125         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
126     }
127
128     void IntrusiveSkipListSet::skiplist_hrc_base_less_xorshift()
129     {
130         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
131
132         typedef ci::SkipListSet< cds::gc::HRC, item,
133             ci::skip_list::make_traits<
134                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
135                 ,co::less< less<item> >
136                 ,ci::opt::disposer< faked_disposer >
137                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
138                 ,co::item_counter< cds::atomicity::item_counter >
139             >::type
140         >   set_type;
141
142         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
143     }
144
145     void IntrusiveSkipListSet::skiplist_hrc_base_cmpmix_xorshift()
146     {
147         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
148
149         typedef ci::SkipListSet< cds::gc::HRC, item,
150             ci::skip_list::make_traits<
151                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
152                 ,co::less< less<item> >
153                 ,ci::opt::disposer< faked_disposer >
154                 ,co::compare< cmp<item> >
155                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
156                 ,co::item_counter< cds::atomicity::item_counter >
157             >::type
158         >   set_type;
159
160         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
161     }
162
163         void IntrusiveSkipListSet::skiplist_hrc_base_cmp_xorshift_stat()
164     {
165         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
166
167         typedef ci::SkipListSet< cds::gc::HRC, item,
168             ci::skip_list::make_traits<
169                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
170                 ,co::compare< cmp<item> >
171                 ,ci::opt::disposer< faked_disposer >
172                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
173                 ,co::stat< ci::skip_list::stat<> >
174                 ,co::item_counter< cds::atomicity::item_counter >
175             >::type
176         >   set_type;
177
178         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
179     }
180
181     void IntrusiveSkipListSet::skiplist_hrc_base_less_xorshift_stat()
182     {
183         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
184
185         typedef ci::SkipListSet< cds::gc::HRC, item,
186             ci::skip_list::make_traits<
187                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
188                 ,co::less< less<item> >
189                 ,ci::opt::disposer< faked_disposer >
190                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
191                 ,co::stat< ci::skip_list::stat<> >
192                 ,co::item_counter< cds::atomicity::item_counter >
193             >::type
194         >   set_type;
195
196         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
197     }
198
199     void IntrusiveSkipListSet::skiplist_hrc_base_cmpmix_xorshift_stat()
200     {
201         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
202
203         typedef ci::SkipListSet< cds::gc::HRC, item,
204             ci::skip_list::make_traits<
205                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
206                 ,co::less< less<item> >
207                 ,ci::opt::disposer< faked_disposer >
208                 ,co::compare< cmp<item> >
209                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
210                 ,co::stat< ci::skip_list::stat<> >
211                 ,co::item_counter< cds::atomicity::item_counter >
212             >::type
213         >   set_type;
214
215         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
216     }
217
218
219     //*********
220     void IntrusiveSkipListSet::skiplist_hrc_base_cmp_pascal()
221     {
222         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
223
224         typedef ci::SkipListSet< cds::gc::HRC, item,
225             ci::skip_list::make_traits<
226                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
227                 ,co::compare< cmp<item> >
228                 ,ci::opt::disposer< faked_disposer >
229                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
230                 ,co::item_counter< cds::atomicity::item_counter >
231             >::type
232         >   set_type;
233
234         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
235     }
236
237     void IntrusiveSkipListSet::skiplist_hrc_base_less_pascal()
238     {
239         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
240
241         typedef ci::SkipListSet< cds::gc::HRC, item,
242             ci::skip_list::make_traits<
243                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
244                 ,co::less< less<item> >
245                 ,ci::opt::disposer< faked_disposer >
246                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
247                 ,co::item_counter< cds::atomicity::item_counter >
248             >::type
249         >   set_type;
250
251         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
252     }
253
254     void IntrusiveSkipListSet::skiplist_hrc_base_cmpmix_pascal()
255     {
256         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
257
258         typedef ci::SkipListSet< cds::gc::HRC, item,
259             ci::skip_list::make_traits<
260                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
261                 ,co::less< less<item> >
262                 ,ci::opt::disposer< faked_disposer >
263                 ,co::compare< cmp<item> >
264                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
265                 ,co::item_counter< cds::atomicity::item_counter >
266             >::type
267         >   set_type;
268
269         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
270     }
271
272         void IntrusiveSkipListSet::skiplist_hrc_base_cmp_pascal_stat()
273     {
274         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
275
276         typedef ci::SkipListSet< cds::gc::HRC, item,
277             ci::skip_list::make_traits<
278                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
279                 ,co::compare< cmp<item> >
280                 ,ci::opt::disposer< faked_disposer >
281                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
282                 ,co::stat< ci::skip_list::stat<> >
283                 ,co::item_counter< cds::atomicity::item_counter >
284             >::type
285         >   set_type;
286
287         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
288     }
289
290     void IntrusiveSkipListSet::skiplist_hrc_base_less_pascal_stat()
291     {
292         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
293
294         typedef ci::SkipListSet< cds::gc::HRC, item,
295             ci::skip_list::make_traits<
296                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
297                 ,co::less< less<item> >
298                 ,ci::opt::disposer< faked_disposer >
299                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
300                 ,co::stat< ci::skip_list::stat<> >
301                 ,co::item_counter< cds::atomicity::item_counter >
302             >::type
303         >   set_type;
304
305         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
306     }
307
308     void IntrusiveSkipListSet::skiplist_hrc_base_cmpmix_pascal_stat()
309     {
310         typedef base_int_item< ci::skip_list::node< cds::gc::HRC> > item;
311
312         typedef ci::SkipListSet< cds::gc::HRC, item,
313             ci::skip_list::make_traits<
314                 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HRC> > >
315                 ,co::less< less<item> >
316                 ,ci::opt::disposer< faked_disposer >
317                 ,co::compare< cmp<item> >
318                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
319                 ,co::stat< ci::skip_list::stat<> >
320                 ,co::item_counter< cds::atomicity::item_counter >
321             >::type
322         >   set_type;
323
324         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
325     }
326
327 }   // namespace set