index on dev: 5db878e remove michael_list_hrc.h
[libcds.git] / tests / test-hdr / ordered_list / hdr_michael_rcu_sht.cpp
1 //$$CDS-header$$
2
3 #include "ordered_list/hdr_michael.h"
4 #include <cds/urcu/signal_threaded.h>
5 #include <cds/container/michael_list_rcu.h>
6
7 namespace ordlist {
8 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
9     namespace {
10         typedef cds::urcu::gc< cds::urcu::signal_threaded<> >    rcu_type;
11
12         struct RCU_SHT_cmp_traits: public cc::michael_list::type_traits
13         {
14             typedef MichaelListTestHeader::cmp<MichaelListTestHeader::item>   compare;
15         };
16     }
17 #endif
18
19     void MichaelListTestHeader::RCU_SHT_cmp()
20     {
21 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
22         // traits-based version
23         typedef cc::MichaelList< rcu_type, item, RCU_SHT_cmp_traits > list;
24         test_rcu< list >();
25
26         // option-based version
27
28         typedef cc::MichaelList< rcu_type, item,
29             cc::michael_list::make_traits<
30                 cc::opt::compare< cmp<item> >
31             >::type
32         > opt_list;
33         test_rcu< opt_list >();
34 #endif
35     }
36
37 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
38     namespace {
39         struct RCU_SHT_less_traits: public cc::michael_list::type_traits
40         {
41             typedef MichaelListTestHeader::lt<MichaelListTestHeader::item>   less;
42         };
43     }
44 #endif
45     void MichaelListTestHeader::RCU_SHT_less()
46     {
47 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
48         // traits-based version
49         typedef cc::MichaelList< rcu_type, item, RCU_SHT_less_traits > list;
50         test_rcu< list >();
51
52         // option-based version
53
54         typedef cc::MichaelList< rcu_type, item,
55             cc::michael_list::make_traits<
56                 cc::opt::less< lt<item> >
57             >::type
58         > opt_list;
59         test_rcu< opt_list >();
60 #endif
61     }
62
63 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
64     namespace {
65         struct RCU_SHT_cmpmix_traits: public cc::michael_list::type_traits
66         {
67             typedef MichaelListTestHeader::cmp<MichaelListTestHeader::item>   compare;
68             typedef MichaelListTestHeader::lt<MichaelListTestHeader::item>  less;
69         };
70     }
71 #endif
72     void MichaelListTestHeader::RCU_SHT_cmpmix()
73     {
74 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
75         // traits-based version
76         typedef cc::MichaelList< rcu_type, item, RCU_SHT_cmpmix_traits > list;
77         test_rcu< list >();
78
79         // option-based version
80
81         typedef cc::MichaelList< rcu_type, item,
82             cc::michael_list::make_traits<
83                 cc::opt::compare< cmp<item> >
84                 ,cc::opt::less< lt<item> >
85             >::type
86         > opt_list;
87         test_rcu< opt_list >();
88 #endif
89     }
90
91 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
92     namespace {
93         struct RCU_SHT_ic_traits: public cc::michael_list::type_traits
94         {
95             typedef MichaelListTestHeader::lt<MichaelListTestHeader::item>   less;
96             typedef cds::atomicity::item_counter item_counter;
97         };
98     }
99 #endif
100     void MichaelListTestHeader::RCU_SHT_ic()
101     {
102 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
103         // traits-based version
104         typedef cc::MichaelList< rcu_type, item, RCU_SHT_ic_traits > list;
105         test_rcu< list >();
106
107         // option-based version
108
109         typedef cc::MichaelList< rcu_type, item,
110             cc::michael_list::make_traits<
111                 cc::opt::less< lt<item> >
112                 ,cc::opt::item_counter< cds::atomicity::item_counter >
113             >::type
114         > opt_list;
115         test_rcu< opt_list >();
116 #endif
117     }
118
119 }   // namespace ordlist