3 #include "set/hdr_intrusive_striped_set.h"
4 #include <cds/intrusive/striped_set/boost_slist.h>
5 #include <cds/intrusive/striped_set.h>
7 #include <type_traits> // std::is_same
10 namespace bi = boost::intrusive;
13 typedef IntrusiveStripedSetHdrTest::base_item< bi::slist_base_hook<> > base_item_type;
14 typedef IntrusiveStripedSetHdrTest::member_item< bi::slist_member_hook<> > member_item_type;
17 void IntrusiveStripedSetHdrTest::Refinable_slist_basehook_cmp()
19 typedef ci::StripedSet<
20 bi::slist<base_item_type>
21 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
22 ,co::compare< IntrusiveStripedSetHdrTest::cmp<base_item_type> >
23 ,co::mutex_policy< ci::striped_set::refinable<> >
26 static_assert( (std::is_same<
27 IntrusiveStripedSetHdrTest::cmp<base_item_type>
28 ,set_type::bucket_type::key_comparator
29 >::value), "Key compare function selection error" );
34 void IntrusiveStripedSetHdrTest::Refinable_slist_basehook_less()
36 typedef ci::StripedSet<
37 bi::slist<base_item_type>
38 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
39 ,co::less< IntrusiveStripedSetHdrTest::less<base_item_type> >
40 ,co::mutex_policy< ci::striped_set::refinable<> >
46 void IntrusiveStripedSetHdrTest::Refinable_slist_basehook_cmpmix()
48 typedef ci::StripedSet<
49 bi::slist<base_item_type>
50 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
51 ,co::less< IntrusiveStripedSetHdrTest::less<base_item_type> >
52 ,co::compare< IntrusiveStripedSetHdrTest::cmp<base_item_type> >
53 ,co::mutex_policy< ci::striped_set::refinable<> >
56 static_assert( (std::is_same<
57 IntrusiveStripedSetHdrTest::cmp<base_item_type>
58 ,set_type::bucket_type::key_comparator
59 >::value), "Key compare function selection error" );
64 void IntrusiveStripedSetHdrTest::Refinable_slist_basehook_bucket_threshold()
66 typedef ci::StripedSet<
67 bi::slist<base_item_type>
68 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
69 ,co::less< IntrusiveStripedSetHdrTest::less<base_item_type> >
70 ,co::compare< IntrusiveStripedSetHdrTest::cmp<base_item_type> >
71 ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<8> >
72 ,co::mutex_policy< ci::striped_set::refinable<> >
75 static_assert( (std::is_same<
76 IntrusiveStripedSetHdrTest::cmp<base_item_type>
77 ,set_type::bucket_type::key_comparator
78 >::value), "Key compare function selection error" );
83 void IntrusiveStripedSetHdrTest::Refinable_slist_basehook_bucket_threshold_rt()
85 typedef ci::StripedSet<
86 bi::slist<base_item_type>
87 ,co::mutex_policy< ci::striped_set::refinable<> >
88 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
89 ,co::less< IntrusiveStripedSetHdrTest::less<base_item_type> >
90 ,co::compare< IntrusiveStripedSetHdrTest::cmp<base_item_type> >
91 ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<0> >
94 static_assert( (std::is_same<
95 IntrusiveStripedSetHdrTest::cmp<base_item_type>
96 ,set_type::bucket_type::key_comparator
97 >::value), "Key compare function selection error" );
99 set_type s( 128, ci::striped_set::single_bucket_size_threshold<0>(4) );
103 void IntrusiveStripedSetHdrTest::Refinable_slist_memberhook_cmp()
105 typedef ci::StripedSet<
108 , bi::member_hook< member_item_type, bi::slist_member_hook<>, &member_item_type::hMember>
110 ,co::mutex_policy< ci::striped_set::refinable<> >
111 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
112 ,co::compare< IntrusiveStripedSetHdrTest::cmp<member_item_type> >
118 void IntrusiveStripedSetHdrTest::Refinable_slist_memberhook_less()
120 typedef ci::StripedSet<
123 , bi::member_hook< member_item_type, bi::slist_member_hook<>, &member_item_type::hMember>
125 ,co::mutex_policy< ci::striped_set::refinable<> >
126 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
127 ,co::less< IntrusiveStripedSetHdrTest::less<member_item_type> >
133 void IntrusiveStripedSetHdrTest::Refinable_slist_memberhook_cmpmix()
135 typedef ci::StripedSet<
138 , bi::member_hook< member_item_type, bi::slist_member_hook<>, &member_item_type::hMember>
140 ,co::mutex_policy< ci::striped_set::refinable<> >
141 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
142 ,co::less< IntrusiveStripedSetHdrTest::less<member_item_type> >
143 ,co::compare< IntrusiveStripedSetHdrTest::cmp<member_item_type> >
149 void IntrusiveStripedSetHdrTest::Refinable_slist_memberhook_bucket_threshold()
151 typedef ci::StripedSet<
154 , bi::member_hook< member_item_type, bi::slist_member_hook<>, &member_item_type::hMember>
156 ,co::mutex_policy< ci::striped_set::refinable<> >
157 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
158 ,co::less< IntrusiveStripedSetHdrTest::less<member_item_type> >
159 ,co::compare< IntrusiveStripedSetHdrTest::cmp<member_item_type> >
160 ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<8> >
163 static_assert( (std::is_same<
164 IntrusiveStripedSetHdrTest::cmp<member_item_type>
165 ,set_type::bucket_type::key_comparator
166 >::value), "Key compare function selection error" );
171 void IntrusiveStripedSetHdrTest::Refinable_slist_memberhook_bucket_threshold_rt()
173 typedef ci::StripedSet<
176 , bi::member_hook< member_item_type, bi::slist_member_hook<>, &member_item_type::hMember>
178 ,co::mutex_policy< ci::striped_set::refinable<> >
179 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
180 ,co::less< IntrusiveStripedSetHdrTest::less<member_item_type> >
181 ,co::compare< IntrusiveStripedSetHdrTest::cmp<member_item_type> >
182 ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<0> >
185 static_assert( (std::is_same<
186 IntrusiveStripedSetHdrTest::cmp<member_item_type>
187 ,set_type::bucket_type::key_comparator
188 >::value), "Key compare function selection error" );
190 set_type s( 128, ci::striped_set::single_bucket_size_threshold<0>(4) );