3 #include "set/hdr_intrusive_set.h"
4 #include <cds/intrusive/lazy_list_dhp.h>
5 #include <cds/intrusive/split_list.h>
9 void IntrusiveHashSetHdrTest::split_dyn_DHP_base_cmp_lazy()
11 typedef base_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::DHP> > > item;
12 typedef ci::LazyList< cds::gc::DHP
14 ,ci::lazy_list::make_traits<
15 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::DHP> > >
16 ,co::compare< cmp<item> >
17 ,ci::opt::disposer< faked_disposer >
21 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
22 ci::split_list::make_traits<
24 ,ci::split_list::dynamic_bucket_table<true>
25 ,co::memory_model<co::v::relaxed_ordering>
28 static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
33 void IntrusiveHashSetHdrTest::split_dyn_DHP_base_less_lazy()
35 typedef base_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::DHP> > > item;
36 typedef ci::LazyList< cds::gc::DHP
38 ,ci::lazy_list::make_traits<
39 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::DHP> > >
40 ,co::less< less<item> >
41 ,ci::opt::disposer< faked_disposer >
45 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
46 ci::split_list::make_traits<
48 ,co::memory_model<co::v::sequential_consistent>
51 static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
56 void IntrusiveHashSetHdrTest::split_dyn_DHP_base_cmpmix_lazy()
58 typedef base_int_item< ci::split_list::node<ci::lazy_list::node<cds::gc::DHP> > > item;
59 typedef ci::LazyList< cds::gc::DHP
61 ,ci::lazy_list::make_traits<
62 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::DHP> > >
63 ,co::less< less<item> >
64 ,co::compare< cmp<item> >
65 ,ci::opt::disposer< faked_disposer >
69 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
70 ci::split_list::make_traits<
72 ,co::item_counter< simple_item_counter >
73 ,ci::split_list::dynamic_bucket_table<true>
76 static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
81 void IntrusiveHashSetHdrTest::split_dyn_DHP_base_cmpmix_stat_lazy()
83 typedef base_int_item< ci::split_list::node<ci::lazy_list::node<cds::gc::DHP> > > item;
84 typedef ci::LazyList< cds::gc::DHP
86 ,ci::lazy_list::make_traits<
87 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::DHP> > >
88 ,co::less< less<item> >
89 ,co::compare< cmp<item> >
90 ,ci::opt::disposer< faked_disposer >
94 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
95 ci::split_list::make_traits<
97 ,co::item_counter< simple_item_counter >
98 ,ci::split_list::dynamic_bucket_table<true>
99 ,co::stat< ci::split_list::stat<> >
102 static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
107 void IntrusiveHashSetHdrTest::split_dyn_DHP_member_cmp_lazy()
109 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::DHP> > > item;
110 typedef ci::LazyList< cds::gc::DHP
112 ,ci::lazy_list::make_traits<
113 ci::opt::hook< ci::lazy_list::member_hook<
114 offsetof( item, hMember ),
117 ,co::compare< cmp<item> >
118 ,ci::opt::disposer< faked_disposer >
122 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
123 ci::split_list::make_traits<
125 ,co::memory_model<co::v::relaxed_ordering>
128 static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
133 void IntrusiveHashSetHdrTest::split_dyn_DHP_member_less_lazy()
135 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::DHP> > > item;
136 typedef ci::LazyList< cds::gc::DHP
138 ,ci::lazy_list::make_traits<
139 ci::opt::hook< ci::lazy_list::member_hook<
140 offsetof( item, hMember ),
143 ,co::less< less<item> >
144 ,ci::opt::disposer< faked_disposer >
148 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
149 ci::split_list::make_traits<
151 ,co::memory_model<co::v::sequential_consistent>
154 static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
159 void IntrusiveHashSetHdrTest::split_dyn_DHP_member_cmpmix_lazy()
161 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::DHP> > > item;
162 typedef ci::LazyList< cds::gc::DHP
164 ,ci::lazy_list::make_traits<
165 ci::opt::hook< ci::lazy_list::member_hook<
166 offsetof( item, hMember ),
169 ,co::compare< cmp<item> >
170 ,co::less< less<item> >
171 ,ci::opt::disposer< faked_disposer >
175 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
176 ci::split_list::make_traits<
178 ,co::item_counter< simple_item_counter >
181 static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
186 void IntrusiveHashSetHdrTest::split_dyn_DHP_member_cmpmix_stat_lazy()
188 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::DHP> > > item;
189 struct list_traits : public ci::lazy_list::traits
191 typedef ci::lazy_list::member_hook< offsetof( item, hMember ), co::gc<cds::gc::DHP>> hook;
192 typedef cmp<item> compare;
193 typedef IntrusiveHashSetHdrTest::less<item> less;
194 typedef faked_disposer disposer;
196 typedef ci::LazyList< cds::gc::DHP, item, list_traits > ord_list;
198 struct set_traits : public ci::split_list::traits {
199 typedef hash_int hash;
200 typedef simple_item_counter item_counter;
201 typedef ci::split_list::stat<> stat;
203 typedef ci::SplitListSet< cds::gc::DHP, ord_list, set_traits > set;
205 static_assert( set::traits::dynamic_bucket_table, "Set has static bucket table" );
210 // Static bucket table
211 void IntrusiveHashSetHdrTest::split_st_DHP_base_cmp_lazy()
213 typedef base_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::DHP> > > item;
214 typedef ci::LazyList< cds::gc::DHP
216 ,ci::lazy_list::make_traits<
217 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::DHP> > >
218 ,co::compare< cmp<item> >
219 ,ci::opt::disposer< faked_disposer >
223 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
224 ci::split_list::make_traits<
226 ,ci::split_list::dynamic_bucket_table<false>
227 ,co::memory_model<co::v::relaxed_ordering>
230 static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
235 void IntrusiveHashSetHdrTest::split_st_DHP_base_less_lazy()
237 typedef base_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::DHP> > > item;
238 typedef ci::LazyList< cds::gc::DHP
240 ,ci::lazy_list::make_traits<
241 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::DHP> > >
242 ,co::less< less<item> >
243 ,ci::opt::disposer< faked_disposer >
247 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
248 ci::split_list::make_traits<
250 ,ci::split_list::dynamic_bucket_table<false>
251 ,co::memory_model<co::v::sequential_consistent>
254 static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
259 void IntrusiveHashSetHdrTest::split_st_DHP_base_cmpmix_lazy()
261 typedef base_int_item< ci::split_list::node<ci::lazy_list::node<cds::gc::DHP> > > item;
262 typedef ci::LazyList< cds::gc::DHP
264 ,ci::lazy_list::make_traits<
265 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::DHP> > >
266 ,co::less< less<item> >
267 ,co::compare< cmp<item> >
268 ,ci::opt::disposer< faked_disposer >
272 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
273 ci::split_list::make_traits<
275 ,co::item_counter< simple_item_counter >
276 ,ci::split_list::dynamic_bucket_table<false>
279 static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
284 void IntrusiveHashSetHdrTest::split_st_DHP_base_cmpmix_stat_lazy()
286 typedef base_int_item< ci::split_list::node<ci::lazy_list::node<cds::gc::DHP> > > item;
287 typedef ci::LazyList< cds::gc::DHP
289 ,ci::lazy_list::make_traits<
290 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::DHP> > >
291 ,co::less< less<item> >
292 ,co::compare< cmp<item> >
293 ,ci::opt::disposer< faked_disposer >
297 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
298 ci::split_list::make_traits<
300 ,co::item_counter< simple_item_counter >
301 ,ci::split_list::dynamic_bucket_table<false>
302 ,co::stat< ci::split_list::stat<> >
305 static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
310 void IntrusiveHashSetHdrTest::split_st_DHP_member_cmp_lazy()
312 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::DHP> > > item;
313 typedef ci::LazyList< cds::gc::DHP
315 ,ci::lazy_list::make_traits<
316 ci::opt::hook< ci::lazy_list::member_hook<
317 offsetof( item, hMember ),
320 ,co::compare< cmp<item> >
321 ,ci::opt::disposer< faked_disposer >
325 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
326 ci::split_list::make_traits<
328 ,ci::split_list::dynamic_bucket_table<false>
329 ,co::memory_model<co::v::relaxed_ordering>
332 static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
337 void IntrusiveHashSetHdrTest::split_st_DHP_member_less_lazy()
339 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::DHP> > > item;
340 typedef ci::LazyList< cds::gc::DHP
342 ,ci::lazy_list::make_traits<
343 ci::opt::hook< ci::lazy_list::member_hook<
344 offsetof( item, hMember ),
347 ,co::less< less<item> >
348 ,ci::opt::disposer< faked_disposer >
352 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
353 ci::split_list::make_traits<
354 ci::split_list::dynamic_bucket_table<false>
355 ,co::hash< hash_int >
356 ,co::memory_model<co::v::sequential_consistent>
359 static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
364 void IntrusiveHashSetHdrTest::split_st_DHP_member_cmpmix_lazy()
366 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::DHP> > > item;
367 typedef ci::LazyList< cds::gc::DHP
369 ,ci::lazy_list::make_traits<
370 ci::opt::hook< ci::lazy_list::member_hook<
371 offsetof( item, hMember ),
374 ,co::compare< cmp<item> >
375 ,co::less< less<item> >
376 ,ci::opt::disposer< faked_disposer >
380 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
381 ci::split_list::make_traits<
383 ,co::item_counter< simple_item_counter >
384 ,ci::split_list::dynamic_bucket_table<false>
387 static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );
392 void IntrusiveHashSetHdrTest::split_st_DHP_member_cmpmix_stat_lazy()
394 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::DHP> > > item;
395 typedef ci::LazyList< cds::gc::DHP
397 ,ci::lazy_list::make_traits<
398 ci::opt::hook< ci::lazy_list::member_hook<
399 offsetof( item, hMember ),
402 ,co::compare< cmp<item> >
403 ,co::less< less<item> >
404 ,ci::opt::disposer< faked_disposer >
408 typedef ci::SplitListSet< cds::gc::DHP, ord_list,
409 ci::split_list::make_traits<
411 ,co::item_counter< simple_item_counter >
412 ,ci::split_list::dynamic_bucket_table<false>
413 ,co::stat< ci::split_list::stat<> >
416 static_assert( !set::traits::dynamic_bucket_table, "Set has dynamic bucket table" );