3 #include "set/hdr_intrusive_striped_set.h"
4 #include <cds/intrusive/striped_set/boost_treap_set.h>
5 #include <cds/intrusive/striped_set.h>
8 namespace bi = boost::intrusive;
11 typedef IntrusiveStripedSetHdrTest::base_item< bi::bs_set_base_hook<> > base_item_type;
12 typedef IntrusiveStripedSetHdrTest::member_item< bi::bs_set_member_hook<> > member_item_type;
15 struct priority_cmp: private IntrusiveStripedSetHdrTest::less<T>
17 typedef IntrusiveStripedSetHdrTest::less<T> base_class;
19 template <typename A, typename B>
20 bool operator()( A const& a, B const& b ) const
22 return base_class::operator()( b, a );
26 template <typename T, typename Node>
31 type const& operator()( Node const& v ) const
38 #if BOOST_VERSION >= 105900
39 # define CDS_BOOST_INTRUSIVE_KEY_OF_VALUE_OPTION( type ) ,bi::key_of_value< get_key< int, type>>
41 # define CDS_BOOST_INTRUSIVE_KEY_OF_VALUE_OPTION( type )
44 void IntrusiveStripedSetHdrTest::Striped_treap_set_basehook()
46 typedef ci::StripedSet<
47 bi::treap_set < base_item_type,
48 bi::compare<IntrusiveStripedSetHdrTest::less<base_item_type>>,
49 bi::priority<priority_cmp<base_item_type>>
50 CDS_BOOST_INTRUSIVE_KEY_OF_VALUE_OPTION( base_item_type )
52 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
53 ,co::mutex_policy< ci::striped_set::striping<> >
59 void IntrusiveStripedSetHdrTest::Striped_treap_set_basehook_bucket_threshold()
61 typedef ci::StripedSet<
62 bi::treap_set<base_item_type,
63 bi::compare<IntrusiveStripedSetHdrTest::less<base_item_type> >,
64 bi::priority<priority_cmp<base_item_type>>
65 CDS_BOOST_INTRUSIVE_KEY_OF_VALUE_OPTION( base_item_type )
67 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
68 ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<64> >
74 void IntrusiveStripedSetHdrTest::Striped_treap_set_basehook_bucket_threshold_rt()
76 typedef ci::StripedSet<
77 bi::treap_set<base_item_type,
78 bi::compare<IntrusiveStripedSetHdrTest::less<base_item_type>>,
79 bi::priority<priority_cmp<base_item_type>>
80 CDS_BOOST_INTRUSIVE_KEY_OF_VALUE_OPTION( base_item_type )
82 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
83 ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<0> >
86 set_type s( 64, ci::striped_set::single_bucket_size_threshold<0>(256) );
90 void IntrusiveStripedSetHdrTest::Striped_treap_set_memberhook()
92 typedef ci::StripedSet<
95 , bi::member_hook< member_item_type, bi::bs_set_member_hook<>, &member_item_type::hMember>
96 , bi::compare<IntrusiveStripedSetHdrTest::less<member_item_type> >
97 , bi::priority<priority_cmp<member_item_type> >
98 CDS_BOOST_INTRUSIVE_KEY_OF_VALUE_OPTION( member_item_type )
100 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
106 void IntrusiveStripedSetHdrTest::Striped_treap_set_memberhook_bucket_threshold()
108 typedef ci::StripedSet<
111 , bi::member_hook< member_item_type, bi::bs_set_member_hook<>, &member_item_type::hMember>
112 , bi::compare<IntrusiveStripedSetHdrTest::less<member_item_type> >
113 , bi::priority<priority_cmp<member_item_type> >
114 CDS_BOOST_INTRUSIVE_KEY_OF_VALUE_OPTION( member_item_type )
116 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
117 ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<256> >
123 void IntrusiveStripedSetHdrTest::Striped_treap_set_memberhook_bucket_threshold_rt()
125 typedef ci::StripedSet<
128 , bi::member_hook< member_item_type, bi::bs_set_member_hook<>, &member_item_type::hMember>
129 , bi::compare<IntrusiveStripedSetHdrTest::less<member_item_type> >
130 , bi::priority<priority_cmp<member_item_type> >
131 CDS_BOOST_INTRUSIVE_KEY_OF_VALUE_OPTION( member_item_type )
133 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
134 ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<0> >
137 set_type s( 64, ci::striped_set::single_bucket_size_threshold<0>(256) );