3 #include "set/hdr_intrusive_set.h"
4 #include <cds/intrusive/michael_list_nogc.h>
5 #include <cds/intrusive/split_list_nogc.h>
9 void IntrusiveHashSetHdrTest::split_dyn_nogc_base_cmp()
11 typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::nogc> > > item;
12 typedef ci::MichaelList< cds::gc::nogc
14 ,ci::michael_list::make_traits<
15 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::nogc> > >
16 ,co::compare< cmp<item> >
17 ,ci::opt::disposer< faked_disposer >
21 typedef ci::SplitListSet< cds::gc::nogc, bucket_type,
22 ci::split_list::make_traits<
24 ,ci::split_list::dynamic_bucket_table<true>
25 ,co::memory_model<co::v::relaxed_ordering>
32 void IntrusiveHashSetHdrTest::split_dyn_nogc_base_less()
34 typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::nogc> > > item;
35 typedef ci::MichaelList< cds::gc::nogc
37 ,ci::michael_list::make_traits<
38 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::nogc> > >
39 ,co::less< less<item> >
40 ,ci::opt::disposer< faked_disposer >
44 typedef ci::SplitListSet< cds::gc::nogc, bucket_type,
45 ci::split_list::make_traits<
47 ,ci::split_list::dynamic_bucket_table<true>
48 ,co::memory_model<co::v::sequential_consistent>
55 void IntrusiveHashSetHdrTest::split_dyn_nogc_base_cmpmix()
57 typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::nogc> > > item;
58 typedef ci::MichaelList< cds::gc::nogc
60 ,ci::michael_list::make_traits<
61 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::nogc> > >
62 ,co::less< less<item> >
63 ,co::compare< cmp<item> >
64 ,ci::opt::disposer< faked_disposer >
68 typedef ci::SplitListSet< cds::gc::nogc, bucket_type,
69 ci::split_list::make_traits<
71 ,co::item_counter< simple_item_counter >
72 ,ci::split_list::dynamic_bucket_table<true>
79 void IntrusiveHashSetHdrTest::split_dyn_nogc_member_cmp()
81 typedef member_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::nogc> > > item;
82 typedef ci::MichaelList< cds::gc::nogc
84 ,ci::michael_list::make_traits<
85 ci::opt::hook< ci::michael_list::member_hook<
86 offsetof( item, hMember ),
89 ,co::compare< cmp<item> >
90 ,ci::opt::disposer< faked_disposer >
94 typedef ci::SplitListSet< cds::gc::nogc, bucket_type,
95 ci::split_list::make_traits<
97 ,ci::split_list::dynamic_bucket_table<true>
98 ,co::memory_model<co::v::relaxed_ordering>
102 test_int_nogc<set>();
105 void IntrusiveHashSetHdrTest::split_dyn_nogc_member_less()
107 typedef member_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::nogc> > > item;
108 typedef ci::MichaelList< cds::gc::nogc
110 ,ci::michael_list::make_traits<
111 ci::opt::hook< ci::michael_list::member_hook<
112 offsetof( item, hMember ),
113 co::gc<cds::gc::nogc>
115 ,co::less< less<item> >
116 ,ci::opt::disposer< faked_disposer >
120 typedef ci::SplitListSet< cds::gc::nogc, bucket_type,
121 ci::split_list::make_traits<
123 ,ci::split_list::dynamic_bucket_table<true>
124 ,co::memory_model<co::v::sequential_consistent>
128 test_int_nogc<set>();
131 void IntrusiveHashSetHdrTest::split_dyn_nogc_member_cmpmix()
133 typedef member_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::nogc> > > item;
134 typedef ci::MichaelList< cds::gc::nogc
136 ,ci::michael_list::make_traits<
137 ci::opt::hook< ci::michael_list::member_hook<
138 offsetof( item, hMember ),
139 co::gc<cds::gc::nogc>
141 ,co::compare< cmp<item> >
142 ,co::less< less<item> >
143 ,ci::opt::disposer< faked_disposer >
147 typedef ci::SplitListSet< cds::gc::nogc, bucket_type,
148 ci::split_list::make_traits<
150 ,co::item_counter< simple_item_counter >
151 ,ci::split_list::dynamic_bucket_table<true>
155 test_int_nogc<set>();
159 // Static bucket table
160 void IntrusiveHashSetHdrTest::split_st_nogc_base_cmp()
162 typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::nogc> > > item;
163 typedef ci::MichaelList< cds::gc::nogc
165 ,ci::michael_list::make_traits<
166 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::nogc> > >
167 ,co::compare< cmp<item> >
168 ,ci::opt::disposer< faked_disposer >
172 typedef ci::SplitListSet< cds::gc::nogc, bucket_type,
173 ci::split_list::make_traits<
175 ,ci::split_list::dynamic_bucket_table<false>
176 ,co::memory_model<co::v::relaxed_ordering>
180 test_int_nogc<set>();
183 void IntrusiveHashSetHdrTest::split_st_nogc_base_less()
185 typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::nogc> > > item;
186 typedef ci::MichaelList< cds::gc::nogc
188 ,ci::michael_list::make_traits<
189 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::nogc> > >
190 ,co::less< less<item> >
191 ,ci::opt::disposer< faked_disposer >
195 typedef ci::SplitListSet< cds::gc::nogc, bucket_type,
196 ci::split_list::make_traits<
198 ,ci::split_list::dynamic_bucket_table<false>
199 ,co::memory_model<co::v::sequential_consistent>
203 test_int_nogc<set>();
206 void IntrusiveHashSetHdrTest::split_st_nogc_base_cmpmix()
208 typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::nogc> > > item;
209 typedef ci::MichaelList< cds::gc::nogc
211 ,ci::michael_list::make_traits<
212 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::nogc> > >
213 ,co::less< less<item> >
214 ,co::compare< cmp<item> >
215 ,ci::opt::disposer< faked_disposer >
219 typedef ci::SplitListSet< cds::gc::nogc, bucket_type,
220 ci::split_list::make_traits<
222 ,co::item_counter< simple_item_counter >
223 ,ci::split_list::dynamic_bucket_table<false>
227 test_int_nogc<set>();
230 void IntrusiveHashSetHdrTest::split_st_nogc_member_cmp()
232 typedef member_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::nogc> > > item;
233 typedef ci::MichaelList< cds::gc::nogc
235 ,ci::michael_list::make_traits<
236 ci::opt::hook< ci::michael_list::member_hook<
237 offsetof( item, hMember ),
238 co::gc<cds::gc::nogc>
240 ,co::compare< cmp<item> >
241 ,ci::opt::disposer< faked_disposer >
245 typedef ci::SplitListSet< cds::gc::nogc, bucket_type,
246 ci::split_list::make_traits<
248 ,ci::split_list::dynamic_bucket_table<false>
249 ,co::memory_model<co::v::sequential_consistent>
253 test_int_nogc<set>();
256 void IntrusiveHashSetHdrTest::split_st_nogc_member_less()
258 typedef member_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::nogc> > > item;
259 typedef ci::MichaelList< cds::gc::nogc
261 ,ci::michael_list::make_traits<
262 ci::opt::hook< ci::michael_list::member_hook<
263 offsetof( item, hMember ),
264 co::gc<cds::gc::nogc>
266 ,co::less< less<item> >
267 ,ci::opt::disposer< faked_disposer >
271 typedef ci::SplitListSet< cds::gc::nogc, bucket_type,
272 ci::split_list::make_traits<
274 ,ci::split_list::dynamic_bucket_table<false>
275 ,co::memory_model<co::v::relaxed_ordering>
279 test_int_nogc<set>();
282 void IntrusiveHashSetHdrTest::split_st_nogc_member_cmpmix()
284 typedef member_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::nogc> > > item;
285 typedef ci::MichaelList< cds::gc::nogc
287 ,ci::michael_list::make_traits<
288 ci::opt::hook< ci::michael_list::member_hook<
289 offsetof( item, hMember ),
290 co::gc<cds::gc::nogc>
292 ,co::compare< cmp<item> >
293 ,co::less< less<item> >
294 ,ci::opt::disposer< faked_disposer >
298 typedef ci::SplitListSet< cds::gc::nogc, bucket_type,
299 ci::split_list::make_traits<
301 ,co::item_counter< simple_item_counter >
302 ,ci::split_list::dynamic_bucket_table<false>
306 test_int_nogc<set>();