3 #include "set/hdr_intrusive_set.h"
4 #include <cds/intrusive/michael_list_hrc.h>
5 #include <cds/intrusive/split_list.h>
9 void IntrusiveHashSetHdrTest::split_dyn_HRC_base_cmp()
11 typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::HRC> > > item;
12 typedef ci::MichaelList< cds::gc::HRC
14 ,ci::michael_list::make_traits<
15 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
16 ,co::compare< cmp<item> >
17 ,ci::opt::disposer< faked_disposer >
21 typedef ci::SplitListSet< cds::gc::HRC, 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_HRC_base_less()
35 typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::HRC> > > item;
36 typedef ci::MichaelList< cds::gc::HRC
38 ,ci::michael_list::make_traits<
39 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
40 ,co::less< less<item> >
41 ,ci::opt::disposer< faked_disposer >
45 typedef ci::SplitListSet< cds::gc::HRC, 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_HRC_base_cmpmix()
58 typedef base_int_item< ci::split_list::node<ci::michael_list::node<cds::gc::HRC> > > item;
59 typedef ci::MichaelList< cds::gc::HRC
61 ,ci::michael_list::make_traits<
62 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
63 ,co::less< less<item> >
64 ,co::compare< cmp<item> >
65 ,ci::opt::disposer< faked_disposer >
69 typedef ci::SplitListSet< cds::gc::HRC, 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 // Static bucket table
82 void IntrusiveHashSetHdrTest::split_st_HRC_base_cmp()
84 typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::HRC> > > item;
85 typedef ci::MichaelList< cds::gc::HRC
87 ,ci::michael_list::make_traits<
88 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
89 ,co::compare< cmp<item> >
90 ,ci::opt::disposer< faked_disposer >
94 typedef ci::SplitListSet< cds::gc::HRC, ord_list,
95 ci::split_list::make_traits<
97 ,ci::split_list::dynamic_bucket_table<false>
98 ,co::memory_model<co::v::relaxed_ordering>
101 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
106 void IntrusiveHashSetHdrTest::split_st_HRC_base_less()
108 typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::HRC> > > item;
109 typedef ci::MichaelList< cds::gc::HRC
111 ,ci::michael_list::make_traits<
112 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
113 ,co::less< less<item> >
114 ,ci::opt::disposer< faked_disposer >
118 typedef ci::SplitListSet< cds::gc::HRC, ord_list,
119 ci::split_list::make_traits<
121 ,ci::split_list::dynamic_bucket_table<false>
122 ,co::memory_model<co::v::sequential_consistent>
125 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
130 void IntrusiveHashSetHdrTest::split_st_HRC_base_cmpmix()
132 typedef base_int_item< ci::split_list::node<ci::michael_list::node<cds::gc::HRC> > > item;
133 typedef ci::MichaelList< cds::gc::HRC
135 ,ci::michael_list::make_traits<
136 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
137 ,co::less< less<item> >
138 ,co::compare< cmp<item> >
139 ,ci::opt::disposer< faked_disposer >
143 typedef ci::SplitListSet< cds::gc::HRC, ord_list,
144 ci::split_list::make_traits<
146 ,co::item_counter< simple_item_counter >
147 ,ci::split_list::dynamic_bucket_table<false>
150 static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );