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