Move libcds 1.6.0 from SVN
[libcds.git] / tests / test-hdr / set / hdr_intrusive_striped_hashset_sgset.cpp
1 //$$CDS-header$$
2
3 #include "set/hdr_intrusive_striped_set.h"
4 #include <cds/intrusive/striped_set/boost_sg_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
15     void IntrusiveStripedSetHdrTest::Striped_sg_set_basehook()
16     {
17         typedef ci::StripedSet<
18             bi::sg_set<base_item_type, bi::compare<IntrusiveStripedSetHdrTest::less<base_item_type> > >
19             ,co::mutex_policy< ci::striped_set::striping<> >
20             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
21         > set_type;
22
23         test<set_type>();
24     }
25
26     void IntrusiveStripedSetHdrTest::Striped_sg_set_basehook_bucket_threshold()
27     {
28         typedef ci::StripedSet<
29             bi::sg_set<base_item_type, bi::compare<IntrusiveStripedSetHdrTest::less<base_item_type> > >
30             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
31             ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<64> >
32         > set_type;
33
34         test<set_type>();
35     }
36
37     void IntrusiveStripedSetHdrTest::Striped_sg_set_basehook_bucket_threshold_rt()
38     {
39         typedef ci::StripedSet<
40             bi::sg_set<base_item_type, bi::compare<IntrusiveStripedSetHdrTest::less<base_item_type> > >
41             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
42             ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<0> >
43         > set_type;
44
45         set_type s( 64, ci::striped_set::single_bucket_size_threshold<0>(256) );
46         test_with( s );
47     }
48
49     void IntrusiveStripedSetHdrTest::Striped_sg_set_memberhook()
50     {
51         typedef ci::StripedSet<
52             bi::sg_set<
53                 member_item_type
54                 , bi::member_hook< member_item_type, bi::bs_set_member_hook<>, &member_item_type::hMember>
55                 , bi::compare<IntrusiveStripedSetHdrTest::less<member_item_type> >
56             >
57             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
58         > set_type;
59
60         test<set_type>();
61     }
62
63     void IntrusiveStripedSetHdrTest::Striped_sg_set_memberhook_bucket_threshold()
64     {
65         typedef ci::StripedSet<
66             bi::sg_set<
67                 member_item_type
68                 , bi::member_hook< member_item_type, bi::bs_set_member_hook<>, &member_item_type::hMember>
69                 , bi::compare<IntrusiveStripedSetHdrTest::less<member_item_type> >
70             >
71             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
72             ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<256> >
73         > set_type;
74
75         test<set_type>();
76     }
77
78     void IntrusiveStripedSetHdrTest::Striped_sg_set_memberhook_bucket_threshold_rt()
79     {
80         typedef ci::StripedSet<
81             bi::sg_set<
82                 member_item_type
83                 , bi::member_hook< member_item_type, bi::bs_set_member_hook<>, &member_item_type::hMember>
84                 , bi::compare<IntrusiveStripedSetHdrTest::less<member_item_type> >
85             >
86             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
87             ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<0> >
88         > set_type;
89
90         set_type s( 64, ci::striped_set::single_bucket_size_threshold<0>(256) );
91         test_with( s );
92     }
93
94 } // namespace set
95
96