9091db8ad3bd671395fabaac0e46416d2465fe37
[libcds.git] / tests / test-hdr / ordered_list / hdr_intrusive_lazy_rcu_gpb.cpp
1 //$$CDS-header$$
2
3 #include "ordered_list/hdr_intrusive_lazy.h"
4 #include <cds/urcu/general_buffered.h>
5 #include <cds/intrusive/lazy_list_rcu.h>
6
7 namespace ordlist {
8     namespace {
9         typedef cds::urcu::gc< cds::urcu::general_buffered<> >    RCU;
10     }
11
12     void IntrusiveLazyListHeaderTest::RCU_GPB_base_cmp()
13     {
14         typedef base_int_item< RCU > item;
15         typedef ci::lazy_list::make_traits<
16             ci::opt::hook< ci::lazy_list::base_hook< co::gc<RCU> > >
17             ,co::compare< cmp<item> >
18             ,ci::opt::disposer< faked_disposer >
19         >::type list_traits;
20         typedef ci::LazyList< RCU, item, list_traits > list;
21
22         test_rcu_int<list>();
23     }
24     void IntrusiveLazyListHeaderTest::RCU_GPB_base_less()
25     {
26         typedef base_int_item< RCU > item;
27         typedef ci::LazyList< RCU
28             ,item
29             ,ci::lazy_list::make_traits<
30                 ci::opt::hook< ci::lazy_list::base_hook< co::gc<RCU> > >
31                 ,co::less< less<item> >
32                 ,ci::opt::disposer< faked_disposer >
33             >::type
34         >    list;
35         test_rcu_int<list>();
36     }
37     void IntrusiveLazyListHeaderTest::RCU_GPB_base_cmpmix()
38     {
39         typedef base_int_item< RCU > item;
40         typedef ci::LazyList< RCU
41             ,item
42             ,ci::lazy_list::make_traits<
43                 ci::opt::hook< ci::lazy_list::base_hook< co::gc<RCU> > >
44                 ,co::less< less<item> >
45                 ,co::compare< cmp<item> >
46                 ,ci::opt::disposer< faked_disposer >
47             >::type
48         >    list;
49         test_rcu_int<list>();
50     }
51     void IntrusiveLazyListHeaderTest::RCU_GPB_base_ic()
52     {
53         typedef base_int_item< RCU > item;
54         typedef ci::LazyList< RCU
55             ,item
56             ,ci::lazy_list::make_traits<
57                 ci::opt::hook< ci::lazy_list::base_hook< co::gc<RCU> > >
58                 ,co::less< less<item> >
59                 ,co::compare< cmp<item> >
60                 ,ci::opt::disposer< faked_disposer >
61                 ,co::item_counter< cds::atomicity::item_counter >
62             >::type
63         >    list;
64         test_rcu_int<list>();
65     }
66     void IntrusiveLazyListHeaderTest::RCU_GPB_member_cmp()
67     {
68         typedef member_int_item< RCU > item;
69         typedef ci::LazyList< RCU
70             ,item
71             ,ci::lazy_list::make_traits<
72                 ci::opt::hook< ci::lazy_list::member_hook<
73                     offsetof( item, hMember ),
74                     co::gc<RCU>
75                 > >
76                 ,co::compare< cmp<item> >
77                 ,ci::opt::disposer< faked_disposer >
78             >::type
79         >    list;
80         test_rcu_int<list>();
81     }
82     void IntrusiveLazyListHeaderTest::RCU_GPB_member_less()
83     {
84         typedef member_int_item< RCU > item;
85         typedef ci::LazyList< RCU
86             ,item
87             ,ci::lazy_list::make_traits<
88                 ci::opt::hook< ci::lazy_list::member_hook<
89                     offsetof( item, hMember ),
90                     co::gc<RCU>
91                 > >
92                 ,co::less< less<item> >
93                 ,ci::opt::disposer< faked_disposer >
94             >::type
95         >    list;
96         test_rcu_int<list>();
97     }
98     void IntrusiveLazyListHeaderTest::RCU_GPB_member_cmpmix()
99     {
100         typedef member_int_item< RCU > item;
101         typedef ci::LazyList< RCU
102             ,item
103             ,ci::lazy_list::make_traits<
104                 ci::opt::hook< ci::lazy_list::member_hook<
105                     offsetof( item, hMember ),
106                     co::gc<RCU>
107                 > >
108                 ,co::less< less<item> >
109                 ,co::compare< cmp<item> >
110                 ,ci::opt::disposer< faked_disposer >
111             >::type
112         >    list;
113         test_rcu_int<list>();
114     }
115     void IntrusiveLazyListHeaderTest::RCU_GPB_member_ic()
116     {
117         typedef member_int_item< RCU > item;
118         typedef ci::LazyList< RCU
119             ,item
120             ,ci::lazy_list::make_traits<
121                 ci::opt::hook< ci::lazy_list::member_hook<
122                     offsetof( item, hMember ),
123                     co::gc<RCU>
124                 > >
125                 ,co::compare< cmp<item> >
126                 ,ci::opt::disposer< faked_disposer >
127                 ,co::item_counter< cds::atomicity::item_counter >
128             >::type
129         >    list;
130         test_rcu_int<list>();
131     }
132 }   // namespace ordlist