3 #include "hdr_intrusive_treiber_stack.h"
4 #include <cds/gc/ptb.h>
5 #include <cds/intrusive/treiber_stack.h>
9 #define TEST(X) void TestIntrusiveStack::X() { test<defs::X>(); }
13 typedef cds::intrusive::TreiberStack< cds::gc::DHP,
14 TestIntrusiveStack::base_hook_item<cds::gc::DHP>
15 ,typename ci::treiber_stack::make_traits<
17 ci::single_link::base_hook< ci::opt::gc<cds::gc::DHP> >
22 typedef cds::intrusive::TreiberStack< cds::gc::DHP,
23 TestIntrusiveStack::base_hook_item<cds::gc::DHP>
24 ,typename ci::treiber_stack::make_traits<
26 ci::single_link::base_hook< ci::opt::gc<cds::gc::DHP> >
28 ,ci::opt::memory_model< ci::opt::v::relaxed_ordering >
30 > Treiber_DHP_base_relaxed;
32 // DHP GC + base hook + disposer
33 typedef cds::intrusive::TreiberStack< cds::gc::DHP,
34 TestIntrusiveStack::base_hook_item<cds::gc::DHP>
35 ,typename ci::treiber_stack::make_traits<
37 ci::single_link::base_hook< ci::opt::gc<cds::gc::DHP> >
39 ,ci::opt::disposer< TestIntrusiveStack::faked_disposer >
41 > Treiber_DHP_base_disposer;
43 typedef cds::intrusive::TreiberStack< cds::gc::DHP,
44 TestIntrusiveStack::base_hook_item<cds::gc::DHP>
45 ,typename ci::treiber_stack::make_traits<
47 ci::single_link::base_hook< ci::opt::gc<cds::gc::DHP> >
49 ,ci::opt::disposer< TestIntrusiveStack::faked_disposer >
50 ,ci::opt::memory_model< ci::opt::v::relaxed_ordering >
52 > Treiber_DHP_base_disposer_relaxed;
54 // DHP GC + member hook
55 typedef cds::intrusive::TreiberStack< cds::gc::DHP,
56 TestIntrusiveStack::member_hook_item<cds::gc::DHP>
57 ,typename ci::treiber_stack::make_traits<
59 ci::single_link::member_hook<
60 offsetof(TestIntrusiveStack::member_hook_item<cds::gc::DHP>, hMember),
61 ci::opt::gc<cds::gc::DHP>
67 typedef cds::intrusive::TreiberStack< cds::gc::DHP,
68 TestIntrusiveStack::member_hook_item<cds::gc::DHP>
69 ,typename ci::treiber_stack::make_traits<
71 ci::single_link::member_hook<
72 offsetof(TestIntrusiveStack::member_hook_item<cds::gc::DHP>, hMember),
73 ci::opt::gc<cds::gc::DHP>
76 ,ci::opt::memory_model< ci::opt::v::relaxed_ordering >
78 > Treiber_DHP_member_relaxed;
80 // DHP GC + member hook + disposer
81 typedef cds::intrusive::TreiberStack< cds::gc::DHP,
82 TestIntrusiveStack::member_hook_item<cds::gc::DHP>
83 , typename ci::treiber_stack::make_traits<
85 ci::single_link::member_hook<
86 offsetof(TestIntrusiveStack::member_hook_item<cds::gc::DHP>, hMember),
87 ci::opt::gc<cds::gc::DHP>
90 ,ci::opt::disposer< TestIntrusiveStack::faked_disposer >
92 > Treiber_DHP_member_disposer;
94 typedef cds::intrusive::TreiberStack< cds::gc::DHP,
95 TestIntrusiveStack::member_hook_item<cds::gc::DHP>
96 , typename ci::treiber_stack::make_traits<
98 ci::single_link::member_hook<
99 offsetof(TestIntrusiveStack::member_hook_item<cds::gc::DHP>, hMember),
100 ci::opt::gc<cds::gc::DHP>
103 ,ci::opt::disposer< TestIntrusiveStack::faked_disposer >
104 ,ci::opt::memory_model< ci::opt::v::relaxed_ordering >
106 > Treiber_DHP_member_disposer_relaxed;
109 TEST(Treiber_DHP_base)
110 TEST(Treiber_DHP_base_disposer)
111 TEST(Treiber_DHP_member)
112 TEST(Treiber_DHP_member_disposer)
114 TEST(Treiber_DHP_base_relaxed)
115 TEST(Treiber_DHP_base_disposer_relaxed)
116 TEST(Treiber_DHP_member_relaxed)
117 TEST(Treiber_DHP_member_disposer_relaxed)