3 #include "ordered_list/hdr_michael_kv.h"
4 #include <cds/urcu/general_buffered.h>
5 #include <cds/container/michael_kvlist_rcu.h>
9 typedef cds::urcu::gc< cds::urcu::general_buffered<> > rcu_type;
10 struct RCU_GPB_cmp_traits: public cc::michael_list::type_traits
12 typedef MichaelKVListTestHeader::cmp<MichaelKVListTestHeader::key_type> compare;
15 void MichaelKVListTestHeader::RCU_GPB_cmp()
17 // traits-based version
18 typedef cc::MichaelKVList< rcu_type, key_type, value_type, RCU_GPB_cmp_traits > list;
21 // option-based version
23 typedef cc::MichaelKVList< rcu_type, key_type, value_type,
24 cc::michael_list::make_traits<
25 cc::opt::compare< cmp<key_type> >
28 test_rcu< opt_list >();
32 struct RCU_GPB_less_traits: public cc::michael_list::type_traits
34 typedef MichaelKVListTestHeader::lt<MichaelKVListTestHeader::key_type> less;
37 void MichaelKVListTestHeader::RCU_GPB_less()
39 // traits-based version
40 typedef cc::MichaelKVList< rcu_type, key_type, value_type, RCU_GPB_less_traits > list;
43 // option-based version
45 typedef cc::MichaelKVList< rcu_type, key_type, value_type,
46 cc::michael_list::make_traits<
47 cc::opt::less< lt<key_type> >
50 test_rcu< opt_list >();
54 struct RCU_GPB_cmpmix_traits: public cc::michael_list::type_traits
56 typedef MichaelKVListTestHeader::cmp<MichaelKVListTestHeader::key_type> compare;
57 typedef MichaelKVListTestHeader::lt<MichaelKVListTestHeader::key_type> less;
60 void MichaelKVListTestHeader::RCU_GPB_cmpmix()
62 // traits-based version
63 typedef cc::MichaelKVList< rcu_type, key_type, value_type, RCU_GPB_cmpmix_traits > list;
66 // option-based version
68 typedef cc::MichaelKVList< rcu_type, key_type, value_type,
69 cc::michael_list::make_traits<
70 cc::opt::compare< cmp<key_type> >
71 ,cc::opt::less< lt<key_type> >
74 test_rcu< opt_list >();
78 struct RCU_GPB_ic_traits: public cc::michael_list::type_traits
80 typedef MichaelKVListTestHeader::lt<MichaelKVListTestHeader::key_type> less;
81 typedef cds::atomicity::item_counter item_counter;
84 void MichaelKVListTestHeader::RCU_GPB_ic()
86 // traits-based version
87 typedef cc::MichaelKVList< rcu_type, key_type, value_type, RCU_GPB_ic_traits > list;
90 // option-based version
92 typedef cc::MichaelKVList< rcu_type, key_type, value_type,
93 cc::michael_list::make_traits<
94 cc::opt::less< lt<key_type> >
95 ,cc::opt::item_counter< cds::atomicity::item_counter >
98 test_rcu< opt_list >();
101 } // namespace ordlist