3 #include "ordered_list/hdr_michael_kv.h"
4 #include <cds/urcu/signal_buffered.h>
5 #include <cds/container/michael_kvlist_rcu.h>
8 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
10 typedef cds::urcu::gc< cds::urcu::signal_buffered<> > rcu_type;
11 struct RCU_SHB_cmp_traits: public cc::michael_list::traits
13 typedef MichaelKVListTestHeader::cmp<MichaelKVListTestHeader::key_type> compare;
17 void MichaelKVListTestHeader::RCU_SHB_cmp()
19 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
20 // traits-based version
21 typedef cc::MichaelKVList< rcu_type, key_type, value_type, RCU_SHB_cmp_traits > list;
24 // option-based version
26 typedef cc::MichaelKVList< rcu_type, key_type, value_type,
27 cc::michael_list::make_traits<
28 cc::opt::compare< cmp<key_type> >
31 test_rcu< opt_list >();
35 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
37 struct RCU_SHB_less_traits: public cc::michael_list::traits
39 typedef MichaelKVListTestHeader::lt<MichaelKVListTestHeader::key_type> less;
43 void MichaelKVListTestHeader::RCU_SHB_less()
45 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
46 // traits-based version
47 typedef cc::MichaelKVList< rcu_type, key_type, value_type, RCU_SHB_less_traits > list;
50 // option-based version
52 typedef cc::MichaelKVList< rcu_type, key_type, value_type,
53 cc::michael_list::make_traits<
54 cc::opt::less< lt<key_type> >
57 test_rcu< opt_list >();
61 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
63 struct RCU_SHB_cmpmix_traits: public cc::michael_list::traits
65 typedef MichaelKVListTestHeader::cmp<MichaelKVListTestHeader::key_type> compare;
66 typedef MichaelKVListTestHeader::lt<MichaelKVListTestHeader::key_type> less;
70 void MichaelKVListTestHeader::RCU_SHB_cmpmix()
72 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
73 // traits-based version
74 typedef cc::MichaelKVList< rcu_type, key_type, value_type, RCU_SHB_cmpmix_traits > list;
77 // option-based version
79 typedef cc::MichaelKVList< rcu_type, key_type, value_type,
80 cc::michael_list::make_traits<
81 cc::opt::compare< cmp<key_type> >
82 ,cc::opt::less< lt<key_type> >
85 test_rcu< opt_list >();
89 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
91 struct RCU_SHB_ic_traits: public cc::michael_list::traits
93 typedef MichaelKVListTestHeader::lt<MichaelKVListTestHeader::key_type> less;
94 typedef cds::atomicity::item_counter item_counter;
98 void MichaelKVListTestHeader::RCU_SHB_ic()
100 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
101 // traits-based version
102 typedef cc::MichaelKVList< rcu_type, key_type, value_type, RCU_SHB_ic_traits > list;
105 // option-based version
107 typedef cc::MichaelKVList< rcu_type, key_type, value_type,
108 cc::michael_list::make_traits<
109 cc::opt::less< lt<key_type> >
110 ,cc::opt::item_counter< cds::atomicity::item_counter >
113 test_rcu< opt_list >();
117 } // namespace ordlist