3 #include "ordered_list/hdr_intrusive_michael.h"
4 #include <cds/urcu/general_threaded.h>
5 #include <cds/intrusive/michael_list_rcu.h>
9 typedef cds::urcu::gc< cds::urcu::general_threaded<> > RCU;
12 void IntrusiveMichaelListHeaderTest::RCU_GPT_base_cmp()
14 typedef base_int_item< RCU > item;
15 struct traits : public ci::michael_list::traits
17 typedef ci::michael_list::base_hook< co::gc<RCU> > hook;
18 typedef cmp<item> compare;
19 typedef faked_disposer disposer;
21 typedef ci::MichaelList< RCU, item, traits > list;
24 void IntrusiveMichaelListHeaderTest::RCU_GPT_base_less()
26 typedef base_int_item< RCU > item;
27 struct traits : public ci::michael_list::traits
29 typedef ci::michael_list::base_hook< co::gc<RCU> > hook;
30 typedef IntrusiveMichaelListHeaderTest::less<item> less;
31 typedef faked_disposer disposer;
33 typedef ci::MichaelList< RCU, item, traits > list;
36 void IntrusiveMichaelListHeaderTest::RCU_GPT_base_cmpmix()
38 typedef base_int_item< RCU > item;
39 typedef ci::MichaelList< RCU
41 ,ci::michael_list::make_traits<
42 ci::opt::hook< ci::michael_list::base_hook< co::gc<RCU> > >
43 ,co::less< less<item> >
44 ,co::compare< cmp<item> >
45 ,ci::opt::disposer< faked_disposer >
50 void IntrusiveMichaelListHeaderTest::RCU_GPT_base_ic()
52 typedef base_int_item< RCU > item;
53 typedef ci::MichaelList< RCU
55 ,ci::michael_list::make_traits<
56 ci::opt::hook< ci::michael_list::base_hook< co::gc<RCU> > >
57 ,co::less< less<item> >
58 ,co::compare< cmp<item> >
59 ,ci::opt::disposer< faked_disposer >
60 ,co::item_counter< cds::atomicity::item_counter >
65 void IntrusiveMichaelListHeaderTest::RCU_GPT_member_cmp()
67 typedef member_int_item< RCU > item;
68 typedef ci::MichaelList< RCU
70 ,ci::michael_list::make_traits<
71 ci::opt::hook< ci::michael_list::member_hook<
72 offsetof( item, hMember ),
75 ,co::compare< cmp<item> >
76 ,ci::opt::disposer< faked_disposer >
81 void IntrusiveMichaelListHeaderTest::RCU_GPT_member_less()
83 typedef member_int_item< RCU > item;
84 typedef ci::MichaelList< RCU
86 ,ci::michael_list::make_traits<
87 ci::opt::hook< ci::michael_list::member_hook<
88 offsetof( item, hMember ),
91 ,co::less< less<item> >
92 ,ci::opt::disposer< faked_disposer >
97 void IntrusiveMichaelListHeaderTest::RCU_GPT_member_cmpmix()
99 typedef member_int_item< RCU > item;
100 typedef ci::MichaelList< RCU
102 ,ci::michael_list::make_traits<
103 ci::opt::hook< ci::michael_list::member_hook<
104 offsetof( item, hMember ),
107 ,co::less< less<item> >
108 ,co::compare< cmp<item> >
109 ,ci::opt::disposer< faked_disposer >
112 test_rcu_int<list>();
114 void IntrusiveMichaelListHeaderTest::RCU_GPT_member_ic()
116 typedef member_int_item< RCU > item;
117 typedef ci::MichaelList< RCU
119 ,ci::michael_list::make_traits<
120 ci::opt::hook< ci::michael_list::member_hook<
121 offsetof( item, hMember ),
124 ,co::compare< cmp<item> >
125 ,ci::opt::disposer< faked_disposer >
126 ,co::item_counter< cds::atomicity::item_counter >
129 test_rcu_int<list>();