Move libcds 1.6.0 from SVN
[libcds.git] / tests / test-hdr / set / hdr_intrusive_skiplist_hp_member.cpp
1 //$$CDS-header$$
2
3 #include "set/hdr_intrusive_skiplist_set.h"
4
5 #include <cds/intrusive/skip_list_hp.h>
6 #include "map/print_skiplist_stat.h"
7
8 namespace set {
9         void IntrusiveSkipListSet::skiplist_hp_member_cmp()
10     {
11         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
12
13         typedef ci::SkipListSet< cds::gc::HP, item,
14             ci::skip_list::make_traits<
15                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::HP> > >
16                 ,co::compare< cmp<item> >
17                 ,ci::opt::disposer< faked_disposer >
18                 ,co::item_counter< cds::atomicity::item_counter >
19             >::type
20         >   set_type;
21
22         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
23     }
24
25     void IntrusiveSkipListSet::skiplist_hp_member_less()
26     {
27         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
28
29         typedef ci::SkipListSet< cds::gc::HP, item,
30             ci::skip_list::make_traits<
31                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::HP> > >
32                 ,co::less< less<item> >
33                 ,ci::opt::disposer< faked_disposer >
34                 ,co::item_counter< cds::atomicity::item_counter >
35             >::type
36         >   set_type;
37
38         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
39     }
40
41     void IntrusiveSkipListSet::skiplist_hp_member_cmpmix()
42     {
43         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
44
45         typedef ci::SkipListSet< cds::gc::HP, item,
46             ci::skip_list::make_traits<
47                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), 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 >
52             >::type
53         >   set_type;
54
55         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
56     }
57
58     void IntrusiveSkipListSet::skiplist_hp_member_cmp_stat()
59     {
60         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
61
62         typedef ci::SkipListSet< cds::gc::HP, item,
63             ci::skip_list::make_traits<
64                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), 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 >
69             >::type
70         >   set_type;
71
72         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
73     }
74
75     void IntrusiveSkipListSet::skiplist_hp_member_less_stat()
76     {
77         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
78
79         typedef ci::SkipListSet< cds::gc::HP, item,
80             ci::skip_list::make_traits<
81                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), 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 >
86             >::type
87         >   set_type;
88
89         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
90     }
91
92     void IntrusiveSkipListSet::skiplist_hp_member_cmpmix_stat()
93     {
94         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
95
96         typedef ci::SkipListSet< cds::gc::HP, item,
97             ci::skip_list::make_traits<
98                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), 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 >
104             >::type
105         >   set_type;
106
107         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
108     }
109
110     void IntrusiveSkipListSet::skiplist_hp_member_cmp_xorshift()
111     {
112         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
113
114         typedef ci::SkipListSet< cds::gc::HP, item,
115             ci::skip_list::make_traits<
116                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), 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 >
121             >::type
122         >   set_type;
123
124         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
125     }
126
127     void IntrusiveSkipListSet::skiplist_hp_member_less_xorshift()
128     {
129         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
130
131         typedef ci::SkipListSet< cds::gc::HP, item,
132             ci::skip_list::make_traits<
133                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::HP> > >
134                 ,co::less< less<item> >
135                 ,co::item_counter< cds::atomicity::item_counter >
136                 ,ci::opt::disposer< faked_disposer >
137                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
138             >::type
139         >   set_type;
140
141         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
142     }
143
144     void IntrusiveSkipListSet::skiplist_hp_member_cmpmix_xorshift()
145     {
146         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
147
148         typedef ci::SkipListSet< cds::gc::HP, item,
149             ci::skip_list::make_traits<
150                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::HP> > >
151                 ,co::less< less<item> >
152                 ,ci::opt::disposer< faked_disposer >
153                 ,co::compare< cmp<item> >
154                 ,co::item_counter< cds::atomicity::item_counter >
155                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
156             >::type
157         >   set_type;
158
159         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
160     }
161
162         void IntrusiveSkipListSet::skiplist_hp_member_cmp_xorshift_stat()
163     {
164         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
165
166         typedef ci::SkipListSet< cds::gc::HP, item,
167             ci::skip_list::make_traits<
168                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), 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 >
174             >::type
175         >   set_type;
176
177         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
178     }
179
180     void IntrusiveSkipListSet::skiplist_hp_member_less_xorshift_stat()
181     {
182         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
183
184         typedef ci::SkipListSet< cds::gc::HP, item,
185             ci::skip_list::make_traits<
186                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), 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 >
192             >::type
193         >   set_type;
194
195         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
196     }
197
198     void IntrusiveSkipListSet::skiplist_hp_member_cmpmix_xorshift_stat()
199     {
200         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
201
202         typedef ci::SkipListSet< cds::gc::HP, item,
203             ci::skip_list::make_traits<
204                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::HP> > >
205                 ,co::less< less<item> >
206                 ,ci::opt::disposer< faked_disposer >
207                 ,co::compare< cmp<item> >
208                 ,co::item_counter< cds::atomicity::item_counter >
209                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
210                 ,co::stat< ci::skip_list::stat<> >
211             >::type
212         >   set_type;
213
214         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
215     }
216
217
218     void IntrusiveSkipListSet::skiplist_hp_member_cmp_pascal()
219     {
220         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
221
222         typedef ci::SkipListSet< cds::gc::HP, item,
223             ci::skip_list::make_traits<
224                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::HP> > >
225                 ,co::compare< cmp<item> >
226                 ,co::item_counter< cds::atomicity::item_counter >
227                 ,ci::opt::disposer< faked_disposer >
228                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
229             >::type
230         >   set_type;
231
232         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
233     }
234
235     void IntrusiveSkipListSet::skiplist_hp_member_less_pascal()
236     {
237         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
238
239         typedef ci::SkipListSet< cds::gc::HP, item,
240             ci::skip_list::make_traits<
241                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::HP> > >
242                 ,co::less< less<item> >
243                 ,ci::opt::disposer< faked_disposer >
244                 ,co::item_counter< cds::atomicity::item_counter >
245                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
246             >::type
247         >   set_type;
248
249         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
250     }
251
252     void IntrusiveSkipListSet::skiplist_hp_member_cmpmix_pascal()
253     {
254         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
255
256         typedef ci::SkipListSet< cds::gc::HP, item,
257             ci::skip_list::make_traits<
258                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::HP> > >
259                 ,co::less< less<item> >
260                 ,ci::opt::disposer< faked_disposer >
261                 ,co::item_counter< cds::atomicity::item_counter >
262                 ,co::compare< cmp<item> >
263                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
264             >::type
265         >   set_type;
266
267         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
268     }
269
270         void IntrusiveSkipListSet::skiplist_hp_member_cmp_pascal_stat()
271     {
272         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
273
274         typedef ci::SkipListSet< cds::gc::HP, item,
275             ci::skip_list::make_traits<
276                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::HP> > >
277                 ,co::compare< cmp<item> >
278                 ,co::item_counter< cds::atomicity::item_counter >
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             >::type
283         >   set_type;
284
285         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
286     }
287
288     void IntrusiveSkipListSet::skiplist_hp_member_less_pascal_stat()
289     {
290         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
291
292         typedef ci::SkipListSet< cds::gc::HP, item,
293             ci::skip_list::make_traits<
294                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::HP> > >
295                 ,co::less< less<item> >
296                 ,ci::opt::disposer< faked_disposer >
297                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
298                 ,co::stat< ci::skip_list::stat<> >
299                 ,co::item_counter< cds::atomicity::item_counter >
300             >::type
301         >   set_type;
302
303         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
304     }
305
306     void IntrusiveSkipListSet::skiplist_hp_member_cmpmix_pascal_stat()
307     {
308         typedef member_int_item< ci::skip_list::node< cds::gc::HP> > item;
309
310         typedef ci::SkipListSet< cds::gc::HP, item,
311             ci::skip_list::make_traits<
312                 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<cds::gc::HP> > >
313                 ,co::less< less<item> >
314                 ,ci::opt::disposer< faked_disposer >
315                 ,co::compare< cmp<item> >
316                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
317                 ,co::stat< ci::skip_list::stat<> >
318                 ,co::item_counter< cds::atomicity::item_counter >
319             >::type
320         >   set_type;
321
322         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
323     }
324
325 } // namespace set