e409ce89aed357e25534263d1ad2d1f50e1938dc
[libcds.git] / tests / test-hdr / set / hdr_intrusive_michael_set_hp_lazy.cpp
1 //$$CDS-header$$
2
3 #include "set/hdr_intrusive_set.h"
4 #include <cds/intrusive/lazy_list_hp.h>
5 #include <cds/intrusive/michael_set.h>
6
7 namespace set {
8
9     void IntrusiveHashSetHdrTest::HP_base_cmp_lazy()
10     {
11         typedef base_int_item< ci::lazy_list::node<cds::gc::HP> > item;
12         typedef ci::LazyList< cds::gc::HP
13             ,item
14             ,ci::lazy_list::make_traits<
15                 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::HP> > >
16                 ,co::compare< cmp<item> >
17                 ,ci::opt::disposer< faked_disposer >
18                 ,ci::opt::back_off< cds::backoff::pause >
19             >::type
20         >    bucket_type;
21
22         typedef ci::MichaelHashSet< cds::gc::HP, bucket_type,
23             ci::michael_set::make_traits<
24                 co::hash< hash_int >
25             >::type
26         > set;
27
28         test_int<set>();
29     }
30
31     void IntrusiveHashSetHdrTest::HP_base_less_lazy()
32     {
33         typedef base_int_item< ci::lazy_list::node<cds::gc::HP> > item;
34         typedef ci::LazyList< cds::gc::HP
35             ,item
36             ,ci::lazy_list::make_traits<
37                 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::HP> > >
38                 ,co::less< less<item> >
39                 ,ci::opt::disposer< faked_disposer >
40             >::type
41         >    bucket_type;
42
43         typedef ci::MichaelHashSet< cds::gc::HP, bucket_type,
44             ci::michael_set::make_traits<
45                 co::hash< hash_int >
46             >::type
47         > set;
48
49         test_int<set>();
50     }
51
52     void IntrusiveHashSetHdrTest::HP_base_cmpmix_lazy()
53     {
54         typedef base_int_item< ci::lazy_list::node<cds::gc::HP> > item;
55         typedef ci::LazyList< cds::gc::HP
56             ,item
57             ,ci::lazy_list::make_traits<
58                 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::HP> > >
59                 ,co::less< less<item> >
60                 ,co::compare< cmp<item> >
61                 ,ci::opt::disposer< faked_disposer >
62             >::type
63         >    bucket_type;
64
65         typedef ci::MichaelHashSet< cds::gc::HP, bucket_type,
66             ci::michael_set::make_traits<
67                 co::hash< hash_int >
68                 ,co::item_counter< simple_item_counter >
69             >::type
70         > set;
71
72         test_int<set>();
73     }
74
75     void IntrusiveHashSetHdrTest::HP_member_cmp_lazy()
76     {
77         typedef member_int_item< ci::lazy_list::node<cds::gc::HP> > item;
78         typedef ci::LazyList< cds::gc::HP
79             ,item
80             ,ci::lazy_list::make_traits<
81                 ci::opt::hook< ci::lazy_list::member_hook<
82                     offsetof( item, hMember ),
83                     co::gc<cds::gc::HP>
84                 > >
85                 ,co::compare< cmp<item> >
86                 ,ci::opt::disposer< faked_disposer >
87             >::type
88         >    bucket_type;
89
90         typedef ci::MichaelHashSet< cds::gc::HP, bucket_type,
91             ci::michael_set::make_traits<
92                 co::hash< hash_int >
93             >::type
94         > set;
95
96         test_int<set>();
97     }
98
99     void IntrusiveHashSetHdrTest::HP_member_less_lazy()
100     {
101         typedef member_int_item< ci::lazy_list::node<cds::gc::HP> > item;
102         typedef ci::LazyList< cds::gc::HP
103             ,item
104             ,ci::lazy_list::make_traits<
105                 ci::opt::hook< ci::lazy_list::member_hook<
106                     offsetof( item, hMember ),
107                     co::gc<cds::gc::HP>
108                 > >
109                 ,co::less< less<item> >
110                 ,ci::opt::disposer< faked_disposer >
111             >::type
112         >    bucket_type;
113
114         typedef ci::MichaelHashSet< cds::gc::HP, bucket_type,
115             ci::michael_set::make_traits<
116                 co::hash< hash_int >
117             >::type
118         > set;
119
120         test_int<set>();
121     }
122
123     void IntrusiveHashSetHdrTest::HP_member_cmpmix_lazy()
124     {
125         typedef member_int_item< ci::lazy_list::node<cds::gc::HP> > item;
126         typedef ci::LazyList< cds::gc::HP
127             ,item
128             ,ci::lazy_list::make_traits<
129                 ci::opt::hook< ci::lazy_list::member_hook<
130                     offsetof( item, hMember ),
131                     co::gc<cds::gc::HP>
132                 > >
133                 ,co::compare< cmp<item> >
134                 ,co::less< less<item> >
135                 ,ci::opt::disposer< faked_disposer >
136             >::type
137         >    bucket_type;
138
139         typedef ci::MichaelHashSet< cds::gc::HP, bucket_type,
140             ci::michael_set::make_traits<
141                 co::hash< hash_int >
142                 ,co::item_counter< simple_item_counter >
143             >::type
144         > set;
145
146         test_int<set>();
147     }
148
149
150 } // namespace set