3 #include "unordered_list/hdr_intrusive_lazy.h"
4 #include <cds/intrusive/lazy_list_nogc.h>
8 typedef base_int_item< cds::gc::nogc > base_item;
9 typedef member_int_item< cds::gc::nogc > member_item;
11 struct cmp_traits : public ci::lazy_list::traits {
12 typedef ci::lazy_list::base_hook< co::gc<cds::gc::nogc> > hook;
13 typedef unordlist::cmp<base_item> compare;
14 typedef faked_disposer disposer;
15 static const bool sort = false;
18 struct less_traits: public ci::lazy_list::traits {
19 typedef ci::lazy_list::base_hook< co::gc<cds::gc::nogc> > hook;
20 typedef unordlist::less<base_item> less;
21 typedef faked_disposer disposer;
22 static const bool sort = false;
25 struct equal_to_traits: public ci::lazy_list::traits {
26 typedef ci::lazy_list::base_hook< co::gc<cds::gc::nogc> > hook;
27 typedef unordlist::equal_to<base_item> equal_to;
28 typedef faked_disposer disposer;
29 static const bool sort = false;
32 typedef typename ci::lazy_list::make_traits<
33 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::nogc> > >
34 ,co::less< less<base_item> >
35 ,co::compare< cmp<base_item> >
36 ,ci::opt::disposer< faked_disposer >
37 ,co::sort< false > >::type cmpmix_traits;
39 typedef typename ci::lazy_list::make_traits<
40 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::nogc> > >
41 ,co::compare< cmp<base_item> >
42 ,co::equal_to< equal_to<base_item> >
43 ,ci::opt::disposer< faked_disposer >
44 ,co::sort< false > >::type equal_to_mix_traits;
46 typedef typename ci::lazy_list::make_traits<
47 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::nogc> > >
48 ,co::equal_to< equal_to<base_item> >
49 ,ci::opt::disposer< faked_disposer >
50 ,co::item_counter< cds::atomicity::item_counter >
51 ,co::sort< false > >::type ic_traits;
53 typedef typename ci::lazy_list::make_traits<
54 ci::opt::hook< ci::lazy_list::member_hook<
55 offsetof( member_item, hMember )
56 ,co::gc<cds::gc::nogc> > >
57 ,co::compare< cmp<member_item> >
58 ,ci::opt::disposer< faked_disposer >
59 ,co::sort< false > >::type member_cmp_traits;
61 typedef typename ci::lazy_list::make_traits<
62 ci::opt::hook< ci::lazy_list::member_hook<
63 offsetof( member_item, hMember )
64 ,co::gc<cds::gc::nogc> > >
65 ,co::less< less<member_item> >
66 ,ci::opt::disposer< faked_disposer >
67 ,co::sort< false > >::type member_less_traits;
69 typedef typename ci::lazy_list::make_traits<
70 ci::opt::hook< ci::lazy_list::member_hook<
71 offsetof( member_item, hMember )
72 ,co::gc<cds::gc::nogc> > >
73 ,co::equal_to< equal_to<member_item> >
74 ,ci::opt::disposer< faked_disposer >
75 ,co::sort< false > >::type member_equal_to_traits;
77 typedef typename ci::lazy_list::make_traits<
78 ci::opt::hook< ci::lazy_list::member_hook<
79 offsetof( member_item, hMember )
80 ,co::gc<cds::gc::nogc> > >
81 ,co::less< less<member_item> >
82 ,co::compare< cmp<member_item> >
83 ,ci::opt::disposer< faked_disposer >
84 ,co::sort< false > >::type member_cmpmix_traits;
86 typedef typename ci::lazy_list::make_traits<
87 ci::opt::hook< ci::lazy_list::member_hook<
88 offsetof( member_item, hMember )
89 ,co::gc<cds::gc::nogc> > >
90 ,co::compare< cmp<member_item> >
91 ,co::equal_to< equal_to<member_item> >
92 ,ci::opt::disposer< faked_disposer >
93 ,co::sort< false > >::type member_equal_to_mix_traits;
95 typedef typename ci::lazy_list::make_traits<
96 ci::opt::hook< ci::lazy_list::member_hook<
97 offsetof( member_item, hMember ),
98 co::gc<cds::gc::nogc> > >
99 ,co::equal_to< equal_to<member_item> >
100 ,ci::opt::disposer< faked_disposer >
101 ,co::item_counter< cds::atomicity::item_counter >
102 ,co::sort< false > >::type member_ic_traits;
105 void UnorderedIntrusiveLazyListHeaderTest::nogc_base_cmp()
107 typedef ci::LazyList< cds::gc::nogc, base_item, cmp_traits > list;
108 test_nogc_int<list>();
110 void UnorderedIntrusiveLazyListHeaderTest::nogc_base_less()
112 typedef ci::LazyList< cds::gc::nogc, base_item, less_traits > list;
113 test_nogc_int<list>();
115 void UnorderedIntrusiveLazyListHeaderTest::nogc_base_equal_to()
117 typedef ci::LazyList< cds::gc::nogc, base_item, equal_to_traits > list;
118 test_nogc_int<list>();
120 void UnorderedIntrusiveLazyListHeaderTest::nogc_base_cmpmix()
122 typedef ci::LazyList< cds::gc::nogc, base_item, cmpmix_traits > list;
123 test_nogc_int<list>();
125 void UnorderedIntrusiveLazyListHeaderTest::nogc_base_equal_to_mix()
127 typedef ci::LazyList< cds::gc::nogc, base_item, equal_to_mix_traits > list;
128 test_nogc_int<list>();
130 void UnorderedIntrusiveLazyListHeaderTest::nogc_base_ic()
132 typedef ci::LazyList< cds::gc::nogc, base_item, ic_traits > list;
133 test_nogc_int<list>();
135 void UnorderedIntrusiveLazyListHeaderTest::nogc_member_cmp()
137 typedef ci::LazyList< cds::gc::nogc, member_item, member_cmp_traits > list;
138 test_nogc_int<list>();
140 void UnorderedIntrusiveLazyListHeaderTest::nogc_member_less()
142 typedef ci::LazyList< cds::gc::nogc, member_item, member_less_traits > list;
143 test_nogc_int<list>();
145 void UnorderedIntrusiveLazyListHeaderTest::nogc_member_equal_to()
147 typedef ci::LazyList< cds::gc::nogc, member_item, member_equal_to_traits > list;
148 test_nogc_int<list>();
150 void UnorderedIntrusiveLazyListHeaderTest::nogc_member_cmpmix()
152 typedef ci::LazyList< cds::gc::nogc, member_item, member_cmpmix_traits > list;
153 test_nogc_int<list>();
155 void UnorderedIntrusiveLazyListHeaderTest::nogc_member_equal_to_mix()
157 typedef ci::LazyList< cds::gc::nogc, member_item, member_equal_to_mix_traits > list;
158 test_nogc_int<list>();
160 void UnorderedIntrusiveLazyListHeaderTest::nogc_member_ic()
162 typedef ci::LazyList< cds::gc::nogc, member_item, member_ic_traits > list;
163 test_nogc_int<list>();
166 } // namespace unordlist
168 CPPUNIT_TEST_SUITE_REGISTRATION(unordlist::UnorderedIntrusiveLazyListHeaderTest);