On dev: MIchaelList
[libcds.git] / tests / test-hdr / ordered_list / hdr_michael_kv_dhp.cpp
1 //$$CDS-header$$
2
3 #include "ordered_list/hdr_michael_kv.h"
4 #include <cds/container/michael_kvlist_dhp.h>
5
6 namespace ordlist {
7     namespace {
8         struct DHP_cmp_traits: public cc::michael_list::traits
9         {
10             typedef MichaelKVListTestHeader::cmp<MichaelKVListTestHeader::key_type>   compare;
11         };
12     }
13     void MichaelKVListTestHeader::DHP_cmp()
14     {
15         // traits-based version
16         typedef cc::MichaelKVList< cds::gc::DHP, key_type, value_type, DHP_cmp_traits > list;
17         test< list >();
18
19         // option-based version
20
21         typedef cc::MichaelKVList< cds::gc::DHP, key_type, value_type,
22             cc::michael_list::make_traits<
23                 cc::opt::compare< cmp<key_type> >
24             >::type
25         > opt_list;
26         test< opt_list >();
27     }
28
29     namespace {
30         struct DHP_less_traits: public cc::michael_list::traits
31         {
32             typedef MichaelKVListTestHeader::lt<MichaelKVListTestHeader::key_type>   less;
33         };
34     }
35     void MichaelKVListTestHeader::DHP_less()
36     {
37         // traits-based version
38         typedef cc::MichaelKVList< cds::gc::DHP, key_type, value_type, DHP_less_traits > list;
39         test< list >();
40
41         // option-based version
42
43         typedef cc::MichaelKVList< cds::gc::DHP, key_type, value_type,
44             cc::michael_list::make_traits<
45                 cc::opt::less< lt<key_type> >
46             >::type
47         > opt_list;
48         test< opt_list >();
49     }
50
51     namespace {
52         struct DHP_cmpmix_traits: public cc::michael_list::traits
53         {
54             typedef MichaelKVListTestHeader::cmp<MichaelKVListTestHeader::key_type>   compare;
55             typedef MichaelKVListTestHeader::lt<MichaelKVListTestHeader::key_type>  less;
56         };
57     }
58     void MichaelKVListTestHeader::DHP_cmpmix()
59     {
60         // traits-based version
61         typedef cc::MichaelKVList< cds::gc::DHP, key_type, value_type, DHP_cmpmix_traits > list;
62         test< list >();
63
64         // option-based version
65
66         typedef cc::MichaelKVList< cds::gc::DHP, key_type, value_type,
67             cc::michael_list::make_traits<
68                 cc::opt::compare< cmp<key_type> >
69                 ,cc::opt::less< lt<key_type> >
70             >::type
71         > opt_list;
72         test< opt_list >();
73     }
74
75     namespace {
76         struct DHP_ic_traits: public cc::michael_list::traits
77         {
78             typedef MichaelKVListTestHeader::lt<MichaelKVListTestHeader::key_type>   less;
79             typedef cds::atomicity::item_counter item_counter;
80         };
81     }
82     void MichaelKVListTestHeader::DHP_ic()
83     {
84         // traits-based version
85         typedef cc::MichaelKVList< cds::gc::DHP, key_type, value_type, DHP_ic_traits > list;
86         test< list >();
87
88         // option-based version
89
90         typedef cc::MichaelKVList< cds::gc::DHP, key_type, value_type,
91             cc::michael_list::make_traits<
92                 cc::opt::less< lt<key_type> >
93                 ,cc::opt::item_counter< cds::atomicity::item_counter >
94             >::type
95         > opt_list;
96         test< opt_list >();
97     }
98
99 }   // namespace ordlist
100