3 #include "set/hdr_intrusive_set.h"
4 #include <cds/intrusive/lazy_list_ptb.h>
5 #include <cds/intrusive/split_list.h>
9 void IntrusiveHashSetHdrTest::split_dyn_PTB_base_cmp_lazy()
11 typedef base_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::PTB> > > item;
12 typedef ci::LazyList< cds::gc::PTB
14 ,ci::lazy_list::make_traits<
15 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::PTB> > >
16 ,co::compare< cmp<item> >
17 ,ci::opt::disposer< faked_disposer >
21 typedef ci::SplitListSet< cds::gc::PTB, 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::options::dynamic_bucket_table, "Set has static bucket table" );
33 void IntrusiveHashSetHdrTest::split_dyn_PTB_base_less_lazy()
35 typedef base_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::PTB> > > item;
36 typedef ci::LazyList< cds::gc::PTB
38 ,ci::lazy_list::make_traits<
39 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::PTB> > >
40 ,co::less< less<item> >
41 ,ci::opt::disposer< faked_disposer >
45 typedef ci::SplitListSet< cds::gc::PTB, ord_list,
46 ci::split_list::make_traits<
48 ,co::memory_model<co::v::sequential_consistent>
51 static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
56 void IntrusiveHashSetHdrTest::split_dyn_PTB_base_cmpmix_lazy()
58 typedef base_int_item< ci::split_list::node<ci::lazy_list::node<cds::gc::PTB> > > item;
59 typedef ci::LazyList< cds::gc::PTB
61 ,ci::lazy_list::make_traits<
62 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::PTB> > >
63 ,co::less< less<item> >
64 ,co::compare< cmp<item> >
65 ,ci::opt::disposer< faked_disposer >
69 typedef ci::SplitListSet< cds::gc::PTB, 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::options::dynamic_bucket_table, "Set has static bucket table" );
81 void IntrusiveHashSetHdrTest::split_dyn_PTB_member_cmp_lazy()
83 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::PTB> > > item;
84 typedef ci::LazyList< cds::gc::PTB
86 ,ci::lazy_list::make_traits<
87 ci::opt::hook< ci::lazy_list::member_hook<
88 offsetof( item, hMember ),
91 ,co::compare< cmp<item> >
92 ,ci::opt::disposer< faked_disposer >
96 typedef ci::SplitListSet< cds::gc::PTB, ord_list,
97 ci::split_list::make_traits<
99 ,co::memory_model<co::v::relaxed_ordering>
102 static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
107 void IntrusiveHashSetHdrTest::split_dyn_PTB_member_less_lazy()
109 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::PTB> > > item;
110 typedef ci::LazyList< cds::gc::PTB
112 ,ci::lazy_list::make_traits<
113 ci::opt::hook< ci::lazy_list::member_hook<
114 offsetof( item, hMember ),
117 ,co::less< less<item> >
118 ,ci::opt::disposer< faked_disposer >
122 typedef ci::SplitListSet< cds::gc::PTB, ord_list,
123 ci::split_list::make_traits<
125 ,co::memory_model<co::v::sequential_consistent>
128 static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
133 void IntrusiveHashSetHdrTest::split_dyn_PTB_member_cmpmix_lazy()
135 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::PTB> > > item;
136 typedef ci::LazyList< cds::gc::PTB
138 ,ci::lazy_list::make_traits<
139 ci::opt::hook< ci::lazy_list::member_hook<
140 offsetof( item, hMember ),
143 ,co::compare< cmp<item> >
144 ,co::less< less<item> >
145 ,ci::opt::disposer< faked_disposer >
149 typedef ci::SplitListSet< cds::gc::PTB, ord_list,
150 ci::split_list::make_traits<
152 ,co::item_counter< simple_item_counter >
155 static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
161 // Static bucket table
162 void IntrusiveHashSetHdrTest::split_st_PTB_base_cmp_lazy()
164 typedef base_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::PTB> > > item;
165 typedef ci::LazyList< cds::gc::PTB
167 ,ci::lazy_list::make_traits<
168 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::PTB> > >
169 ,co::compare< cmp<item> >
170 ,ci::opt::disposer< faked_disposer >
174 typedef ci::SplitListSet< cds::gc::PTB, ord_list,
175 ci::split_list::make_traits<
177 ,ci::split_list::dynamic_bucket_table<false>
178 ,co::memory_model<co::v::relaxed_ordering>
181 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
186 void IntrusiveHashSetHdrTest::split_st_PTB_base_less_lazy()
188 typedef base_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::PTB> > > item;
189 typedef ci::LazyList< cds::gc::PTB
191 ,ci::lazy_list::make_traits<
192 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::PTB> > >
193 ,co::less< less<item> >
194 ,ci::opt::disposer< faked_disposer >
198 typedef ci::SplitListSet< cds::gc::PTB, ord_list,
199 ci::split_list::make_traits<
201 ,ci::split_list::dynamic_bucket_table<false>
202 ,co::memory_model<co::v::sequential_consistent>
205 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
210 void IntrusiveHashSetHdrTest::split_st_PTB_base_cmpmix_lazy()
212 typedef base_int_item< ci::split_list::node<ci::lazy_list::node<cds::gc::PTB> > > item;
213 typedef ci::LazyList< cds::gc::PTB
215 ,ci::lazy_list::make_traits<
216 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::PTB> > >
217 ,co::less< less<item> >
218 ,co::compare< cmp<item> >
219 ,ci::opt::disposer< faked_disposer >
223 typedef ci::SplitListSet< cds::gc::PTB, ord_list,
224 ci::split_list::make_traits<
226 ,co::item_counter< simple_item_counter >
227 ,ci::split_list::dynamic_bucket_table<false>
230 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
235 void IntrusiveHashSetHdrTest::split_st_PTB_member_cmp_lazy()
237 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::PTB> > > item;
238 typedef ci::LazyList< cds::gc::PTB
240 ,ci::lazy_list::make_traits<
241 ci::opt::hook< ci::lazy_list::member_hook<
242 offsetof( item, hMember ),
245 ,co::compare< cmp<item> >
246 ,ci::opt::disposer< faked_disposer >
250 typedef ci::SplitListSet< cds::gc::PTB, ord_list,
251 ci::split_list::make_traits<
253 ,ci::split_list::dynamic_bucket_table<false>
254 ,co::memory_model<co::v::relaxed_ordering>
257 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
262 void IntrusiveHashSetHdrTest::split_st_PTB_member_less_lazy()
264 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::PTB> > > item;
265 typedef ci::LazyList< cds::gc::PTB
267 ,ci::lazy_list::make_traits<
268 ci::opt::hook< ci::lazy_list::member_hook<
269 offsetof( item, hMember ),
272 ,co::less< less<item> >
273 ,ci::opt::disposer< faked_disposer >
277 typedef ci::SplitListSet< cds::gc::PTB, ord_list,
278 ci::split_list::make_traits<
279 ci::split_list::dynamic_bucket_table<false>
280 ,co::hash< hash_int >
281 ,co::memory_model<co::v::sequential_consistent>
284 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
289 void IntrusiveHashSetHdrTest::split_st_PTB_member_cmpmix_lazy()
291 typedef member_int_item< ci::split_list::node< ci::lazy_list::node<cds::gc::PTB> > > item;
292 typedef ci::LazyList< cds::gc::PTB
294 ,ci::lazy_list::make_traits<
295 ci::opt::hook< ci::lazy_list::member_hook<
296 offsetof( item, hMember ),
299 ,co::compare< cmp<item> >
300 ,co::less< less<item> >
301 ,ci::opt::disposer< faked_disposer >
305 typedef ci::SplitListSet< cds::gc::PTB, ord_list,
306 ci::split_list::make_traits<
308 ,co::item_counter< simple_item_counter >
309 ,ci::split_list::dynamic_bucket_table<false>
312 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );