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