On dev: MIchaelList
[libcds.git] / tests / test-hdr / ordered_list / hdr_intrusive_michael_nogc.cpp
1 //$$CDS-header$$
2
3 #include "ordered_list/hdr_intrusive_michael.h"
4 #include <cds/intrusive/michael_list_nogc.h>
5
6 namespace ordlist {
7     void IntrusiveMichaelListHeaderTest::nogc_base_cmp()
8     {
9         typedef base_int_item< cds::gc::nogc > item;
10         struct traits : public ci::michael_list::traits
11         {
12             typedef ci::michael_list::base_hook< co::gc<cds::gc::nogc> > hook;
13             typedef cmp<item> compare;
14             typedef faked_disposer disposer;
15         };
16         typedef ci::MichaelList< cds::gc::nogc, item, traits > list;
17         test_nogc_int<list>();
18     }
19     void IntrusiveMichaelListHeaderTest::nogc_base_less()
20     {
21         typedef base_int_item< cds::gc::nogc > item;
22         struct traits : public ci::michael_list::traits
23         {
24             typedef ci::michael_list::base_hook< co::gc<cds::gc::nogc> > hook;
25             typedef IntrusiveMichaelListHeaderTest::less<item> less;
26             typedef faked_disposer disposer;
27         };
28         typedef ci::MichaelList< cds::gc::nogc, item, traits > list;
29         test_nogc_int<list>();
30     }
31     void IntrusiveMichaelListHeaderTest::nogc_base_cmpmix()
32     {
33         typedef base_int_item< cds::gc::nogc > item;
34         typedef ci::MichaelList< cds::gc::nogc
35             ,item
36             ,ci::michael_list::make_traits<
37                 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::nogc> > >
38                 ,co::less< less<item> >
39                 ,co::compare< cmp<item> >
40                 ,ci::opt::disposer< faked_disposer >
41             >::type
42         >    list;
43         test_nogc_int<list>();
44     }
45     void IntrusiveMichaelListHeaderTest::nogc_base_ic()
46     {
47         typedef base_int_item< cds::gc::nogc > item;
48         typedef ci::MichaelList< cds::gc::nogc
49             ,item
50             ,ci::michael_list::make_traits<
51                 ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::nogc> > >
52                 ,co::less< less<item> >
53                 ,co::compare< cmp<item> >
54                 ,ci::opt::disposer< faked_disposer >
55                 ,co::item_counter< cds::atomicity::item_counter >
56             >::type
57         >    list;
58         test_nogc_int<list>();
59     }
60     void IntrusiveMichaelListHeaderTest::nogc_member_cmp()
61     {
62         typedef member_int_item< cds::gc::nogc > item;
63         typedef ci::MichaelList< cds::gc::nogc
64             ,item
65             ,ci::michael_list::make_traits<
66                 ci::opt::hook< ci::michael_list::member_hook<
67                     offsetof( item, hMember ),
68                     co::gc<cds::gc::nogc>
69                 > >
70                 ,co::compare< cmp<item> >
71                 ,ci::opt::disposer< faked_disposer >
72             >::type
73         >    list;
74         test_nogc_int<list>();
75     }
76     void IntrusiveMichaelListHeaderTest::nogc_member_less()
77     {
78         typedef member_int_item< cds::gc::nogc > item;
79         typedef ci::MichaelList< cds::gc::nogc
80             ,item
81             ,ci::michael_list::make_traits<
82                 ci::opt::hook< ci::michael_list::member_hook<
83                     offsetof( item, hMember ),
84                     co::gc<cds::gc::nogc>
85                 > >
86                 ,co::less< less<item> >
87                 ,ci::opt::disposer< faked_disposer >
88             >::type
89         >    list;
90         test_nogc_int<list>();
91     }
92     void IntrusiveMichaelListHeaderTest::nogc_member_cmpmix()
93     {
94         typedef member_int_item< cds::gc::nogc > item;
95         typedef ci::MichaelList< cds::gc::nogc
96             ,item
97             ,ci::michael_list::make_traits<
98                 ci::opt::hook< ci::michael_list::member_hook<
99                     offsetof( item, hMember ),
100                     co::gc<cds::gc::nogc>
101                 > >
102                 ,co::less< less<item> >
103                 ,co::compare< cmp<item> >
104                 ,ci::opt::disposer< faked_disposer >
105             >::type
106         >    list;
107         test_nogc_int<list>();
108     }
109     void IntrusiveMichaelListHeaderTest::nogc_member_ic()
110     {
111         typedef member_int_item< cds::gc::nogc > item;
112         typedef ci::MichaelList< cds::gc::nogc
113             ,item
114             ,ci::michael_list::make_traits<
115                 ci::opt::hook< ci::michael_list::member_hook<
116                     offsetof( item, hMember ),
117                     co::gc<cds::gc::nogc>
118                 > >
119                 ,co::compare< cmp<item> >
120                 ,ci::opt::disposer< faked_disposer >
121                 ,co::item_counter< cds::atomicity::item_counter >
122             >::type
123         >    list;
124         test_nogc_int<list>();
125     }
126
127 } // namespace ordlist