3 #include "set/hdr_intrusive_skiplist_set.h"
5 #include <cds/intrusive/skip_list_hp.h>
6 #include "map/print_skiplist_stat.h"
10 void IntrusiveSkipListSet::skiplist_hp_base_cmp()
12 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
13 struct set_traits : public ci::skip_list::traits
15 typedef ci::skip_list::base_hook< co::gc<cds::gc::HP> > hook;
16 typedef cmp<item> compare;
17 typedef faked_disposer disposer;
18 typedef cds::atomicity::item_counter item_counter;
20 typedef ci::SkipListSet< cds::gc::HP, item, set_traits > set_type;
22 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
25 void IntrusiveSkipListSet::skiplist_hp_base_less()
27 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
29 typedef ci::SkipListSet< cds::gc::HP, item,
30 ci::skip_list::make_traits<
31 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
32 ,co::less< less<item> >
33 ,ci::opt::disposer< faked_disposer >
34 ,co::item_counter< cds::atomicity::item_counter >
38 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
41 void IntrusiveSkipListSet::skiplist_hp_base_cmpmix()
43 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
45 typedef ci::SkipListSet< cds::gc::HP, item,
46 ci::skip_list::make_traits<
47 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
48 ,co::less< less<item> >
49 ,ci::opt::disposer< faked_disposer >
50 ,co::compare< cmp<item> >
51 ,co::item_counter< cds::atomicity::item_counter >
55 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
58 void IntrusiveSkipListSet::skiplist_hp_base_cmp_stat()
60 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
62 typedef ci::SkipListSet< cds::gc::HP, item,
63 ci::skip_list::make_traits<
64 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
65 ,co::compare< cmp<item> >
66 ,ci::opt::disposer< faked_disposer >
67 ,co::stat< ci::skip_list::stat<> >
68 ,co::item_counter< cds::atomicity::item_counter >
72 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
75 void IntrusiveSkipListSet::skiplist_hp_base_less_stat()
77 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
79 typedef ci::SkipListSet< cds::gc::HP, item,
80 ci::skip_list::make_traits<
81 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
82 ,co::less< less<item> >
83 ,ci::opt::disposer< faked_disposer >
84 ,co::stat< ci::skip_list::stat<> >
85 ,co::item_counter< cds::atomicity::item_counter >
89 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
92 void IntrusiveSkipListSet::skiplist_hp_base_cmpmix_stat()
94 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
96 typedef ci::SkipListSet< cds::gc::HP, item,
97 ci::skip_list::make_traits<
98 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
99 ,co::less< less<item> >
100 ,ci::opt::disposer< faked_disposer >
101 ,co::compare< cmp<item> >
102 ,co::stat< ci::skip_list::stat<> >
103 ,co::item_counter< cds::atomicity::item_counter >
107 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
110 void IntrusiveSkipListSet::skiplist_hp_base_cmp_xorshift()
112 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
114 typedef ci::SkipListSet< cds::gc::HP, item,
115 ci::skip_list::make_traits<
116 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
117 ,co::compare< cmp<item> >
118 ,ci::opt::disposer< faked_disposer >
119 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
120 ,co::item_counter< cds::atomicity::item_counter >
124 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
127 void IntrusiveSkipListSet::skiplist_hp_base_less_xorshift()
129 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
131 typedef ci::SkipListSet< cds::gc::HP, item,
132 ci::skip_list::make_traits<
133 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
134 ,co::less< less<item> >
135 ,ci::opt::disposer< faked_disposer >
136 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
137 ,co::item_counter< cds::atomicity::item_counter >
141 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
144 void IntrusiveSkipListSet::skiplist_hp_base_cmpmix_xorshift()
146 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
148 typedef ci::SkipListSet< cds::gc::HP, item,
149 ci::skip_list::make_traits<
150 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
151 ,co::less< less<item> >
152 ,ci::opt::disposer< faked_disposer >
153 ,co::compare< cmp<item> >
154 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
155 ,co::item_counter< cds::atomicity::item_counter >
159 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
162 void IntrusiveSkipListSet::skiplist_hp_base_cmp_xorshift_stat()
164 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
166 typedef ci::SkipListSet< cds::gc::HP, item,
167 ci::skip_list::make_traits<
168 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
169 ,co::compare< cmp<item> >
170 ,ci::opt::disposer< faked_disposer >
171 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
172 ,co::stat< ci::skip_list::stat<> >
173 ,co::item_counter< cds::atomicity::item_counter >
177 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
180 void IntrusiveSkipListSet::skiplist_hp_base_less_xorshift_stat()
182 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
184 typedef ci::SkipListSet< cds::gc::HP, item,
185 ci::skip_list::make_traits<
186 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
187 ,co::less< less<item> >
188 ,ci::opt::disposer< faked_disposer >
189 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
190 ,co::stat< ci::skip_list::stat<> >
191 ,co::item_counter< cds::atomicity::item_counter >
195 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
198 void IntrusiveSkipListSet::skiplist_hp_base_cmpmix_xorshift_stat()
200 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
202 typedef ci::SkipListSet< cds::gc::HP, item,
203 ci::skip_list::make_traits<
204 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
205 ,co::less< less<item> >
206 ,ci::opt::disposer< faked_disposer >
207 ,co::compare< cmp<item> >
208 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
209 ,co::stat< ci::skip_list::stat<> >
210 ,co::item_counter< cds::atomicity::item_counter >
214 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
219 void IntrusiveSkipListSet::skiplist_hp_base_cmp_pascal()
221 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
223 typedef ci::SkipListSet< cds::gc::HP, item,
224 ci::skip_list::make_traits<
225 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
226 ,co::compare< cmp<item> >
227 ,ci::opt::disposer< faked_disposer >
228 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
229 ,co::item_counter< cds::atomicity::item_counter >
233 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
236 void IntrusiveSkipListSet::skiplist_hp_base_less_pascal()
238 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
240 typedef ci::SkipListSet< cds::gc::HP, item,
241 ci::skip_list::make_traits<
242 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
243 ,co::less< less<item> >
244 ,ci::opt::disposer< faked_disposer >
245 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
246 ,co::item_counter< cds::atomicity::item_counter >
250 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
253 void IntrusiveSkipListSet::skiplist_hp_base_cmpmix_pascal()
255 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
257 typedef ci::SkipListSet< cds::gc::HP, item,
258 ci::skip_list::make_traits<
259 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
260 ,co::less< less<item> >
261 ,ci::opt::disposer< faked_disposer >
262 ,co::compare< cmp<item> >
263 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
264 ,co::item_counter< cds::atomicity::item_counter >
268 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
271 void IntrusiveSkipListSet::skiplist_hp_base_cmp_pascal_stat()
273 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
275 typedef ci::SkipListSet< cds::gc::HP, item,
276 ci::skip_list::make_traits<
277 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
278 ,co::compare< cmp<item> >
279 ,ci::opt::disposer< faked_disposer >
280 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
281 ,co::stat< ci::skip_list::stat<> >
282 ,co::item_counter< cds::atomicity::item_counter >
286 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
289 void IntrusiveSkipListSet::skiplist_hp_base_less_pascal_stat()
291 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
293 typedef ci::SkipListSet< cds::gc::HP, item,
294 ci::skip_list::make_traits<
295 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
296 ,co::less< less<item> >
297 ,ci::opt::disposer< faked_disposer >
298 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
299 ,co::stat< ci::skip_list::stat<> >
300 ,co::item_counter< cds::atomicity::item_counter >
304 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
307 void IntrusiveSkipListSet::skiplist_hp_base_cmpmix_pascal_stat()
309 typedef base_int_item< ci::skip_list::node< cds::gc::HP> > item;
311 typedef ci::SkipListSet< cds::gc::HP, item,
312 ci::skip_list::make_traits<
313 ci::opt::hook< ci::skip_list::base_hook< co::gc<cds::gc::HP> > >
314 ,co::less< less<item> >
315 ,ci::opt::disposer< faked_disposer >
316 ,co::compare< cmp<item> >
317 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
318 ,co::stat< ci::skip_list::stat<> >
319 ,co::item_counter< cds::atomicity::item_counter >
323 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
328 CPPUNIT_TEST_SUITE_REGISTRATION(set::IntrusiveSkipListSet);