3 #include "set/hdr_intrusive_set.h"
4 #include <cds/intrusive/lazy_list_hp.h>
5 #include <cds/intrusive/split_list.h>
9 void IntrusiveHashSetHdrTest::split_dyn_HP_base_cmp_lazy()
11 typedef base_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::HP> > > item;
12 typedef ci::LazyList< cds::gc::HP
14 ,ci::lazy_list::make_traits<
15 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::HP> > >
16 ,co::compare< cmp<item> >
17 ,ci::opt::disposer< faked_disposer >
18 ,ci::opt::back_off< cds::backoff::empty >
22 typedef ci::SplitListSet< cds::gc::HP, ord_list,
23 ci::split_list::make_traits<
25 ,ci::split_list::dynamic_bucket_table<true>
26 ,co::memory_model<co::v::relaxed_ordering>
29 static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
34 void IntrusiveHashSetHdrTest::split_dyn_HP_base_less_lazy()
36 typedef base_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::HP> > > item;
37 typedef ci::LazyList< cds::gc::HP
39 ,ci::lazy_list::make_traits<
40 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::HP> > >
41 ,co::less< less<item> >
42 ,ci::opt::disposer< faked_disposer >
46 typedef ci::SplitListSet< cds::gc::HP, ord_list,
47 ci::split_list::make_traits<
49 ,co::memory_model<co::v::sequential_consistent>
52 static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
57 void IntrusiveHashSetHdrTest::split_dyn_HP_base_cmpmix_lazy()
59 typedef base_int_item< ci::split_list::node<ci::lazy_list::node<cds::gc::HP> > > item;
60 typedef ci::LazyList< cds::gc::HP
62 ,ci::lazy_list::make_traits<
63 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::HP> > >
64 ,co::less< less<item> >
65 ,co::compare< cmp<item> >
66 ,ci::opt::disposer< faked_disposer >
70 typedef ci::SplitListSet< cds::gc::HP, ord_list,
71 ci::split_list::make_traits<
73 ,co::item_counter< simple_item_counter >
74 ,ci::split_list::dynamic_bucket_table<true>
77 static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
82 void IntrusiveHashSetHdrTest::split_dyn_HP_member_cmp_lazy()
84 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::HP> > > item;
85 typedef ci::LazyList< cds::gc::HP
87 ,ci::lazy_list::make_traits<
88 ci::opt::hook< ci::lazy_list::member_hook<
89 offsetof( item, hMember ),
92 ,co::compare< cmp<item> >
93 ,ci::opt::disposer< faked_disposer >
97 typedef ci::SplitListSet< cds::gc::HP, ord_list,
98 ci::split_list::make_traits<
100 ,co::memory_model<co::v::relaxed_ordering>
103 static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
108 void IntrusiveHashSetHdrTest::split_dyn_HP_member_less_lazy()
110 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::HP> > > item;
111 typedef ci::LazyList< cds::gc::HP
113 ,ci::lazy_list::make_traits<
114 ci::opt::hook< ci::lazy_list::member_hook<
115 offsetof( item, hMember ),
118 ,co::less< less<item> >
119 ,ci::opt::disposer< faked_disposer >
123 typedef ci::SplitListSet< cds::gc::HP, ord_list,
124 ci::split_list::make_traits<
126 ,co::memory_model<co::v::sequential_consistent>
129 static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
134 void IntrusiveHashSetHdrTest::split_dyn_HP_member_cmpmix_lazy()
136 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::HP> > > item;
137 typedef ci::LazyList< cds::gc::HP
139 ,ci::lazy_list::make_traits<
140 ci::opt::hook< ci::lazy_list::member_hook<
141 offsetof( item, hMember ),
144 ,co::compare< cmp<item> >
145 ,co::less< less<item> >
146 ,ci::opt::disposer< faked_disposer >
150 typedef ci::SplitListSet< cds::gc::HP, ord_list,
151 ci::split_list::make_traits<
153 ,co::item_counter< simple_item_counter >
156 static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
162 // Static bucket table
163 void IntrusiveHashSetHdrTest::split_st_HP_base_cmp_lazy()
165 typedef base_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::HP> > > item;
166 typedef ci::LazyList< cds::gc::HP
168 ,ci::lazy_list::make_traits<
169 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::HP> > >
170 ,co::compare< cmp<item> >
171 ,ci::opt::disposer< faked_disposer >
175 typedef ci::SplitListSet< cds::gc::HP, ord_list,
176 ci::split_list::make_traits<
178 ,ci::split_list::dynamic_bucket_table<false>
179 ,co::memory_model<co::v::relaxed_ordering>
182 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
187 void IntrusiveHashSetHdrTest::split_st_HP_base_less_lazy()
189 typedef base_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::HP> > > item;
190 typedef ci::LazyList< cds::gc::HP
192 ,ci::lazy_list::make_traits<
193 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::HP> > >
194 ,co::less< less<item> >
195 ,ci::opt::disposer< faked_disposer >
199 typedef ci::SplitListSet< cds::gc::HP, ord_list,
200 ci::split_list::make_traits<
202 ,ci::split_list::dynamic_bucket_table<false>
203 ,co::memory_model<co::v::sequential_consistent>
206 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
211 void IntrusiveHashSetHdrTest::split_st_HP_base_cmpmix_lazy()
213 typedef base_int_item< ci::split_list::node<ci::lazy_list::node<cds::gc::HP> > > item;
214 typedef ci::LazyList< cds::gc::HP
216 ,ci::lazy_list::make_traits<
217 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::HP> > >
218 ,co::less< less<item> >
219 ,co::compare< cmp<item> >
220 ,ci::opt::disposer< faked_disposer >
224 typedef ci::SplitListSet< cds::gc::HP, ord_list,
225 ci::split_list::make_traits<
227 ,co::item_counter< simple_item_counter >
228 ,ci::split_list::dynamic_bucket_table<false>
231 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
236 void IntrusiveHashSetHdrTest::split_st_HP_member_cmp_lazy()
238 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::HP> > > item;
239 typedef ci::LazyList< cds::gc::HP
241 ,ci::lazy_list::make_traits<
242 ci::opt::hook< ci::lazy_list::member_hook<
243 offsetof( item, hMember ),
246 ,co::compare< cmp<item> >
247 ,ci::opt::disposer< faked_disposer >
251 typedef ci::SplitListSet< cds::gc::HP, ord_list,
252 ci::split_list::make_traits<
254 ,ci::split_list::dynamic_bucket_table<false>
255 ,co::memory_model<co::v::relaxed_ordering>
258 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
263 void IntrusiveHashSetHdrTest::split_st_HP_member_less_lazy()
265 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::HP> > > item;
266 typedef ci::LazyList< cds::gc::HP
268 ,ci::lazy_list::make_traits<
269 ci::opt::hook< ci::lazy_list::member_hook<
270 offsetof( item, hMember ),
273 ,co::less< less<item> >
274 ,ci::opt::disposer< faked_disposer >
278 typedef ci::SplitListSet< cds::gc::HP, ord_list,
279 ci::split_list::make_traits<
280 ci::split_list::dynamic_bucket_table<false>
281 ,co::hash< hash_int >
282 ,co::memory_model<co::v::sequential_consistent>
285 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
290 void IntrusiveHashSetHdrTest::split_st_HP_member_cmpmix_lazy()
292 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::HP> > > item;
293 typedef ci::LazyList< cds::gc::HP
295 ,ci::lazy_list::make_traits<
296 ci::opt::hook< ci::lazy_list::member_hook<
297 offsetof( item, hMember ),
300 ,co::compare< cmp<item> >
301 ,co::less< less<item> >
302 ,ci::opt::disposer< faked_disposer >
306 typedef ci::SplitListSet< cds::gc::HP, ord_list,
307 ci::split_list::make_traits<
309 ,co::item_counter< simple_item_counter >
310 ,ci::split_list::dynamic_bucket_table<false>
313 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );