3 #include "set/hdr_intrusive_skiplist_set.h"
5 #include <cds/intrusive/skip_list_nogc.h>
6 #include "map/print_skiplist_stat.h"
10 void IntrusiveSkipListSet::skiplist_nogc_member_cmp()
12 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
14 typedef ci::SkipListSet< cds::gc::nogc, item,
15 ci::skip_list::make_traits<
16 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
17 ,co::compare< cmp<item> >
18 ,co::item_counter< cds::atomicity::item_counter >
22 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
25 void IntrusiveSkipListSet::skiplist_nogc_member_less()
27 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
29 typedef ci::SkipListSet< cds::gc::nogc, item,
30 ci::skip_list::make_traits<
31 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
32 ,co::less< less<item> >
33 ,co::item_counter< cds::atomicity::item_counter >
37 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
40 void IntrusiveSkipListSet::skiplist_nogc_member_cmpmix()
42 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
44 typedef ci::SkipListSet< cds::gc::nogc, item,
45 ci::skip_list::make_traits<
46 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
47 ,co::less< less<item> >
48 ,co::item_counter< cds::atomicity::item_counter >
49 ,co::compare< cmp<item> >
53 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
56 void IntrusiveSkipListSet::skiplist_nogc_member_cmp_stat()
58 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
60 typedef ci::SkipListSet< cds::gc::nogc, item,
61 ci::skip_list::make_traits<
62 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
63 ,co::compare< cmp<item> >
64 ,co::stat< ci::skip_list::stat<> >
65 ,co::item_counter< cds::atomicity::item_counter >
69 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
72 void IntrusiveSkipListSet::skiplist_nogc_member_less_stat()
74 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
76 typedef ci::SkipListSet< cds::gc::nogc, item,
77 ci::skip_list::make_traits<
78 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
79 ,co::less< less<item> >
80 ,co::item_counter< cds::atomicity::item_counter >
81 ,co::stat< ci::skip_list::stat<> >
85 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
88 void IntrusiveSkipListSet::skiplist_nogc_member_cmpmix_stat()
90 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
92 typedef ci::SkipListSet< cds::gc::nogc, item,
93 ci::skip_list::make_traits<
94 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
95 ,co::less< less<item> >
96 ,co::compare< cmp<item> >
97 ,co::stat< ci::skip_list::stat<> >
98 ,co::item_counter< cds::atomicity::item_counter >
102 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
105 void IntrusiveSkipListSet::skiplist_nogc_member_cmp_xorshift()
107 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
109 typedef ci::SkipListSet< cds::gc::nogc, item,
110 ci::skip_list::make_traits<
111 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
112 ,co::compare< cmp<item> >
113 ,co::item_counter< cds::atomicity::item_counter >
114 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
118 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
121 void IntrusiveSkipListSet::skiplist_nogc_member_less_xorshift()
123 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
125 typedef ci::SkipListSet< cds::gc::nogc, item,
126 ci::skip_list::make_traits<
127 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
128 ,co::less< less<item> >
129 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
130 ,co::item_counter< cds::atomicity::item_counter >
134 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
137 void IntrusiveSkipListSet::skiplist_nogc_member_cmpmix_xorshift()
139 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
141 typedef ci::SkipListSet< cds::gc::nogc, item,
142 ci::skip_list::make_traits<
143 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
144 ,co::less< less<item> >
145 ,co::compare< cmp<item> >
146 ,co::item_counter< cds::atomicity::item_counter >
147 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
151 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
154 void IntrusiveSkipListSet::skiplist_nogc_member_cmp_xorshift_stat()
156 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
158 typedef ci::SkipListSet< cds::gc::nogc, item,
159 ci::skip_list::make_traits<
160 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
161 ,co::compare< cmp<item> >
162 ,co::item_counter< cds::atomicity::item_counter >
163 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
164 ,co::stat< ci::skip_list::stat<> >
168 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
171 void IntrusiveSkipListSet::skiplist_nogc_member_less_xorshift_stat()
173 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
175 typedef ci::SkipListSet< cds::gc::nogc, item,
176 ci::skip_list::make_traits<
177 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
178 ,co::less< less<item> >
179 ,co::item_counter< cds::atomicity::item_counter >
180 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
181 ,co::stat< ci::skip_list::stat<> >
185 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
188 void IntrusiveSkipListSet::skiplist_nogc_member_cmpmix_xorshift_stat()
190 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
192 typedef ci::SkipListSet< cds::gc::nogc, item,
193 ci::skip_list::make_traits<
194 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
195 ,co::less< less<item> >
196 ,co::item_counter< cds::atomicity::item_counter >
197 ,co::compare< cmp<item> >
198 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
199 ,co::stat< ci::skip_list::stat<> >
203 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
208 void IntrusiveSkipListSet::skiplist_nogc_member_cmp_pascal()
210 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
212 typedef ci::SkipListSet< cds::gc::nogc, item,
213 ci::skip_list::make_traits<
214 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
215 ,co::compare< cmp<item> >
216 ,co::item_counter< cds::atomicity::item_counter >
217 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
221 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
224 void IntrusiveSkipListSet::skiplist_nogc_member_less_pascal()
226 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
228 typedef ci::SkipListSet< cds::gc::nogc, item,
229 ci::skip_list::make_traits<
230 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
231 ,co::less< less<item> >
232 ,co::item_counter< cds::atomicity::item_counter >
233 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
237 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
240 void IntrusiveSkipListSet::skiplist_nogc_member_cmpmix_pascal()
242 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
244 typedef ci::SkipListSet< cds::gc::nogc, item,
245 ci::skip_list::make_traits<
246 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
247 ,co::less< less<item> >
248 ,co::compare< cmp<item> >
249 ,co::item_counter< cds::atomicity::item_counter >
250 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
254 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
257 void IntrusiveSkipListSet::skiplist_nogc_member_cmp_pascal_stat()
259 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
261 typedef ci::SkipListSet< cds::gc::nogc, item,
262 ci::skip_list::make_traits<
263 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
264 ,co::compare< cmp<item> >
265 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
266 ,co::stat< ci::skip_list::stat<> >
267 ,co::item_counter< cds::atomicity::item_counter >
271 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
274 void IntrusiveSkipListSet::skiplist_nogc_member_less_pascal_stat()
276 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
278 typedef ci::SkipListSet< cds::gc::nogc, item,
279 ci::skip_list::make_traits<
280 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
281 ,co::less< less<item> >
282 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
283 ,co::stat< ci::skip_list::stat<> >
284 ,co::item_counter< cds::atomicity::item_counter >
288 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
291 void IntrusiveSkipListSet::skiplist_nogc_member_cmpmix_pascal_stat()
293 typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
295 typedef ci::SkipListSet< cds::gc::nogc, item,
296 ci::skip_list::make_traits<
297 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::nogc> > >
298 ,co::less< less<item> >
299 ,co::compare< cmp<item> >
300 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
301 ,co::stat< ci::skip_list::stat<> >
302 ,co::item_counter< cds::atomicity::item_counter >
306 test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();