Move libcds 1.6.0 from SVN
[libcds.git] / tests / test-hdr / set / hdr_intrusive_skiplist_nogc_member.cpp
1 //$$CDS-header$$
2
3 #include "set/hdr_intrusive_skiplist_set.h"
4
5 #include <cds/intrusive/skip_list_nogc.h>
6 #include "map/print_skiplist_stat.h"
7
8 namespace set {
9
10     void IntrusiveSkipListSet::skiplist_nogc_member_cmp()
11     {
12         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
13
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 >
19             >::type
20         >   set_type;
21
22         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
23     }
24
25     void IntrusiveSkipListSet::skiplist_nogc_member_less()
26     {
27         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
28
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 >
34             >::type
35         >   set_type;
36
37         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
38     }
39
40     void IntrusiveSkipListSet::skiplist_nogc_member_cmpmix()
41     {
42         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
43
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> >
50             >::type
51         >   set_type;
52
53         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
54     }
55
56     void IntrusiveSkipListSet::skiplist_nogc_member_cmp_stat()
57     {
58         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
59
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 >
66             >::type
67         >   set_type;
68
69         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
70     }
71
72     void IntrusiveSkipListSet::skiplist_nogc_member_less_stat()
73     {
74         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
75
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<> >
82             >::type
83         >   set_type;
84
85         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
86     }
87
88     void IntrusiveSkipListSet::skiplist_nogc_member_cmpmix_stat()
89     {
90         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
91
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 >
99             >::type
100         >   set_type;
101
102         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
103     }
104
105     void IntrusiveSkipListSet::skiplist_nogc_member_cmp_xorshift()
106     {
107         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
108
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 >
115             >::type
116         >   set_type;
117
118         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
119     }
120
121     void IntrusiveSkipListSet::skiplist_nogc_member_less_xorshift()
122     {
123         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
124
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 >
131             >::type
132         >   set_type;
133
134         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
135     }
136
137     void IntrusiveSkipListSet::skiplist_nogc_member_cmpmix_xorshift()
138     {
139         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
140
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 >
148             >::type
149         >   set_type;
150
151         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
152     }
153
154         void IntrusiveSkipListSet::skiplist_nogc_member_cmp_xorshift_stat()
155     {
156         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
157
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<> >
165             >::type
166         >   set_type;
167
168         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
169     }
170
171     void IntrusiveSkipListSet::skiplist_nogc_member_less_xorshift_stat()
172     {
173         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
174
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<> >
182             >::type
183         >   set_type;
184
185         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
186     }
187
188     void IntrusiveSkipListSet::skiplist_nogc_member_cmpmix_xorshift_stat()
189     {
190         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
191
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<> >
200             >::type
201         >   set_type;
202
203         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
204     }
205
206
207     //*********
208     void IntrusiveSkipListSet::skiplist_nogc_member_cmp_pascal()
209     {
210         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
211
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 >
218             >::type
219         >   set_type;
220
221         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
222     }
223
224     void IntrusiveSkipListSet::skiplist_nogc_member_less_pascal()
225     {
226         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
227
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 >
234             >::type
235         >   set_type;
236
237         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
238     }
239
240     void IntrusiveSkipListSet::skiplist_nogc_member_cmpmix_pascal()
241     {
242         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
243
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 >
251             >::type
252         >   set_type;
253
254         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
255     }
256
257         void IntrusiveSkipListSet::skiplist_nogc_member_cmp_pascal_stat()
258     {
259         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
260
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 >
268             >::type
269         >   set_type;
270
271         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
272     }
273
274     void IntrusiveSkipListSet::skiplist_nogc_member_less_pascal_stat()
275     {
276         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
277
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 >
285             >::type
286         >   set_type;
287
288         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
289     }
290
291     void IntrusiveSkipListSet::skiplist_nogc_member_cmpmix_pascal_stat()
292     {
293         typedef member_int_item< ci::skip_list::node< cds::gc::nogc> > item;
294
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 >
303             >::type
304         >   set_type;
305
306         test_skiplist_nogc<set_type, misc::print_skiplist_stat<set_type::stat> >();
307     }
308
309 }   // namespace set