3 #include "ordered_list/hdr_michael.h"
4 #include <cds/urcu/general_threaded.h>
5 #include <cds/container/michael_list_rcu.h>
9 typedef cds::urcu::gc< cds::urcu::general_threaded<> > rcu_type;
11 struct RCU_GPT_cmp_traits : public cc::michael_list::traits
13 typedef MichaelListTestHeader::cmp<MichaelListTestHeader::item> compare;
17 void MichaelListTestHeader::RCU_GPT_cmp()
19 // traits-based version
20 typedef cc::MichaelList< rcu_type, item, RCU_GPT_cmp_traits > list;
23 // option-based version
25 typedef cc::MichaelList< rcu_type, item,
26 cc::michael_list::make_traits<
27 cc::opt::compare< cmp<item> >
30 test_rcu< opt_list >();
34 struct RCU_GPT_less_traits : public cc::michael_list::traits
36 typedef MichaelListTestHeader::lt<MichaelListTestHeader::item> less;
39 void MichaelListTestHeader::RCU_GPT_less()
41 // traits-based version
42 typedef cc::MichaelList< rcu_type, item, RCU_GPT_less_traits > list;
45 // option-based version
47 typedef cc::MichaelList< rcu_type, item,
48 cc::michael_list::make_traits<
49 cc::opt::less< lt<item> >
52 test_rcu< opt_list >();
56 struct RCU_GPT_cmpmix_traits : public cc::michael_list::traits
58 typedef MichaelListTestHeader::cmp<MichaelListTestHeader::item> compare;
59 typedef MichaelListTestHeader::lt<MichaelListTestHeader::item> less;
62 void MichaelListTestHeader::RCU_GPT_cmpmix()
64 // traits-based version
65 typedef cc::MichaelList< rcu_type, item, RCU_GPT_cmpmix_traits > list;
68 // option-based version
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> >
76 test_rcu< opt_list >();
80 struct RCU_GPT_ic_traits : public cc::michael_list::traits
82 typedef MichaelListTestHeader::lt<MichaelListTestHeader::item> less;
83 typedef cds::atomicity::item_counter item_counter;
86 void MichaelListTestHeader::RCU_GPT_ic()
88 // traits-based version
89 typedef cc::MichaelList< rcu_type, item, RCU_GPT_ic_traits > list;
92 // option-based version
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 >
100 test_rcu< opt_list >();
103 } // namespace ordlist