9a002a81bd30cc7cc30b385bbe160d3a49d38208
[libcds.git] / tests / test-hdr / ordered_list / hdr_intrusive_lazy_rcu_shb.cpp
1 //$$CDS-header$$
2
3 #include "ordered_list/hdr_intrusive_lazy.h"
4 #include <cds/urcu/signal_buffered.h>
5 #include <cds/intrusive/lazy_list_rcu.h>
6
7 namespace ordlist {
8 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
9     namespace {
10         typedef cds::urcu::gc< cds::urcu::signal_buffered<> >    RCU;
11     }
12 #endif
13
14     void IntrusiveLazyListHeaderTest::RCU_SHB_base_cmp()
15     {
16 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
17         typedef base_int_item< RCU > item;
18         typedef ci::lazy_list::make_traits<
19             ci::opt::hook< ci::lazy_list::base_hook< co::gc<RCU> > >
20             ,co::compare< cmp<item> >
21             ,ci::opt::disposer< faked_disposer >
22         >::type list_traits;
23         typedef ci::LazyList< RCU, item, list_traits > list;
24
25         test_rcu_int<list>();
26 #endif
27     }
28
29     void IntrusiveLazyListHeaderTest::RCU_SHB_base_less()
30     {
31 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
32         typedef base_int_item< RCU > item;
33         typedef ci::LazyList< RCU
34             ,item
35             ,ci::lazy_list::make_traits<
36                 ci::opt::hook< ci::lazy_list::base_hook< co::gc<RCU> > >
37                 ,co::less< less<item> >
38                 ,ci::opt::disposer< faked_disposer >
39             >::type
40         >    list;
41         test_rcu_int<list>();
42 #endif
43     }
44
45     void IntrusiveLazyListHeaderTest::RCU_SHB_base_cmpmix()
46     {
47 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
48         typedef base_int_item< RCU > item;
49         typedef ci::LazyList< RCU
50             ,item
51             ,ci::lazy_list::make_traits<
52                 ci::opt::hook< ci::lazy_list::base_hook< co::gc<RCU> > >
53                 ,co::less< less<item> >
54                 ,co::compare< cmp<item> >
55                 ,ci::opt::disposer< faked_disposer >
56             >::type
57         >    list;
58         test_rcu_int<list>();
59 #endif
60     }
61
62     void IntrusiveLazyListHeaderTest::RCU_SHB_base_ic()
63     {
64 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
65         typedef base_int_item< RCU > item;
66         typedef ci::LazyList< RCU
67             ,item
68             ,ci::lazy_list::make_traits<
69                 ci::opt::hook< ci::lazy_list::base_hook< co::gc<RCU> > >
70                 ,co::less< less<item> >
71                 ,co::compare< cmp<item> >
72                 ,ci::opt::disposer< faked_disposer >
73                 ,co::item_counter< cds::atomicity::item_counter >
74             >::type
75         >    list;
76         test_rcu_int<list>();
77 #endif
78     }
79
80     void IntrusiveLazyListHeaderTest::RCU_SHB_member_cmp()
81     {
82 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
83         typedef member_int_item< RCU > item;
84         typedef ci::LazyList< RCU
85             ,item
86             ,ci::lazy_list::make_traits<
87                 ci::opt::hook< ci::lazy_list::member_hook<
88                     offsetof( item, hMember ),
89                     co::gc<RCU>
90                 > >
91                 ,co::compare< cmp<item> >
92                 ,ci::opt::disposer< faked_disposer >
93             >::type
94         >    list;
95         test_rcu_int<list>();
96 #endif
97     }
98
99     void IntrusiveLazyListHeaderTest::RCU_SHB_member_less()
100     {
101 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
102         typedef member_int_item< RCU > item;
103         typedef ci::LazyList< RCU
104             ,item
105             ,ci::lazy_list::make_traits<
106                 ci::opt::hook< ci::lazy_list::member_hook<
107                     offsetof( item, hMember ),
108                     co::gc<RCU>
109                 > >
110                 ,co::less< less<item> >
111                 ,ci::opt::disposer< faked_disposer >
112             >::type
113         >    list;
114         test_rcu_int<list>();
115 #endif
116     }
117
118     void IntrusiveLazyListHeaderTest::RCU_SHB_member_cmpmix()
119     {
120 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
121         typedef member_int_item< RCU > item;
122         typedef ci::LazyList< RCU
123             ,item
124             ,ci::lazy_list::make_traits<
125                 ci::opt::hook< ci::lazy_list::member_hook<
126                     offsetof( item, hMember ),
127                     co::gc<RCU>
128                 > >
129                 ,co::less< less<item> >
130                 ,co::compare< cmp<item> >
131                 ,ci::opt::disposer< faked_disposer >
132             >::type
133         >    list;
134         test_rcu_int<list>();
135 #endif
136     }
137
138     void IntrusiveLazyListHeaderTest::RCU_SHB_member_ic()
139     {
140 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
141         typedef member_int_item< RCU > item;
142         typedef ci::LazyList< RCU
143             ,item
144             ,ci::lazy_list::make_traits<
145                 ci::opt::hook< ci::lazy_list::member_hook<
146                     offsetof( item, hMember ),
147                     co::gc<RCU>
148                 > >
149                 ,co::compare< cmp<item> >
150                 ,ci::opt::disposer< faked_disposer >
151                 ,co::item_counter< cds::atomicity::item_counter >
152             >::type
153         >    list;
154         test_rcu_int<list>();
155 #endif
156     }
157
158 }   // namespace ordlist