intrusive::SplitListSet refactoring
[libcds.git] / tests / test-hdr / set / hdr_intrusive_striped_hashset_treapset.cpp
1 //$$CDS-header$$
2
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>
6
7 namespace set {
8     namespace bi = boost::intrusive;
9
10     namespace {
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;
13
14         template <typename T>
15         struct priority_cmp: private IntrusiveStripedSetHdrTest::less<T>
16         {
17             typedef IntrusiveStripedSetHdrTest::less<T> base_class;
18
19             template <typename A, typename B>
20             bool operator()( A const& a, B const& b ) const
21             {
22                 return base_class::operator()( b, a );
23             }
24         };
25     }
26
27     void IntrusiveStripedSetHdrTest::Striped_treap_set_basehook()
28     {
29         typedef ci::StripedSet<
30             bi::treap_set<base_item_type, bi::compare<IntrusiveStripedSetHdrTest::less<base_item_type> >, bi::priority<priority_cmp<base_item_type> >  >
31             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
32             ,co::mutex_policy< ci::striped_set::striping<> >
33         > set_type;
34
35         test<set_type>();
36     }
37
38     void IntrusiveStripedSetHdrTest::Striped_treap_set_basehook_bucket_threshold()
39     {
40         typedef ci::StripedSet<
41             bi::treap_set<base_item_type, bi::compare<IntrusiveStripedSetHdrTest::less<base_item_type> >, bi::priority<priority_cmp<base_item_type> > >
42             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
43             ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<64> >
44         > set_type;
45
46         test<set_type>();
47     }
48
49     void IntrusiveStripedSetHdrTest::Striped_treap_set_basehook_bucket_threshold_rt()
50     {
51         typedef ci::StripedSet<
52             bi::treap_set<base_item_type, bi::compare<IntrusiveStripedSetHdrTest::less<base_item_type> >, bi::priority<priority_cmp<base_item_type> > >
53             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
54             ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<0> >
55         > set_type;
56
57         set_type s( 64, ci::striped_set::single_bucket_size_threshold<0>(256) );
58         test_with( s );
59     }
60
61     void IntrusiveStripedSetHdrTest::Striped_treap_set_memberhook()
62     {
63         typedef ci::StripedSet<
64             bi::treap_set<
65                 member_item_type
66                 , bi::member_hook< member_item_type, bi::bs_set_member_hook<>, &member_item_type::hMember>
67                 , bi::compare<IntrusiveStripedSetHdrTest::less<member_item_type> >
68                 , bi::priority<priority_cmp<member_item_type> >
69             >
70             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
71         > set_type;
72
73         test<set_type>();
74     }
75
76     void IntrusiveStripedSetHdrTest::Striped_treap_set_memberhook_bucket_threshold()
77     {
78         typedef ci::StripedSet<
79             bi::treap_set<
80                 member_item_type
81                 , bi::member_hook< member_item_type, bi::bs_set_member_hook<>, &member_item_type::hMember>
82                 , bi::compare<IntrusiveStripedSetHdrTest::less<member_item_type> >
83                 , bi::priority<priority_cmp<member_item_type> >
84             >
85             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
86             ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<256> >
87         > set_type;
88
89         test<set_type>();
90     }
91
92     void IntrusiveStripedSetHdrTest::Striped_treap_set_memberhook_bucket_threshold_rt()
93     {
94         typedef ci::StripedSet<
95             bi::treap_set<
96                 member_item_type
97                 , bi::member_hook< member_item_type, bi::bs_set_member_hook<>, &member_item_type::hMember>
98                 , bi::compare<IntrusiveStripedSetHdrTest::less<member_item_type> >
99                 , bi::priority<priority_cmp<member_item_type> >
100             >
101             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
102             ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<0> >
103         > set_type;
104
105         set_type s( 64, ci::striped_set::single_bucket_size_threshold<0>(256) );
106         test_with( s );
107     }
108
109 } // namespace set
110
111