Move libcds 1.6.0 from SVN
[libcds.git] / tests / test-hdr / stack / hdr_intrusive_treiber_stack_hrc.cpp
1 //$$CDS-header$$
2
3 #include "hdr_intrusive_treiber_stack.h"
4 #include <cds/gc/hrc.h>
5 #include <cds/intrusive/treiber_stack.h>
6
7 namespace stack {
8
9 #define TEST(X)     void TestIntrusiveStack::X() { test<defs::X>(); }
10
11     namespace defs {
12         // HRC GC
13         typedef cds::intrusive::TreiberStack< cds::gc::HRC,
14             TestIntrusiveStack::base_hook_item<cds::gc::HRC>
15             ,ci::opt::hook<
16                 ci::single_link::base_hook< ci::opt::gc<cds::gc::HRC> >
17             >
18         > Treiber_HRC_base;
19
20         typedef cds::intrusive::TreiberStack< cds::gc::HRC,
21             TestIntrusiveStack::base_hook_item<cds::gc::HRC>
22             ,ci::opt::hook<
23                 ci::single_link::base_hook< ci::opt::gc<cds::gc::HRC> >
24             >
25             ,ci::opt::memory_model< ci::opt::v::relaxed_ordering >
26         > Treiber_HRC_base_relaxed;
27
28         // HRC GC + disposer
29         typedef cds::intrusive::TreiberStack< cds::gc::HRC,
30             TestIntrusiveStack::base_hook_item<cds::gc::HRC>
31             ,ci::opt::hook<
32                 ci::single_link::base_hook< ci::opt::gc<cds::gc::HRC> >
33             >
34             ,ci::opt::disposer< TestIntrusiveStack::faked_disposer >
35         > Treiber_HRC_base_disposer;
36
37         typedef cds::intrusive::TreiberStack< cds::gc::HRC,
38             TestIntrusiveStack::base_hook_item<cds::gc::HRC>
39             ,ci::opt::hook<
40                 ci::single_link::base_hook< ci::opt::gc<cds::gc::HRC> >
41             >
42             ,ci::opt::disposer< TestIntrusiveStack::faked_disposer >
43             ,ci::opt::memory_model< ci::opt::v::relaxed_ordering >
44         > Treiber_HRC_base_disposer_relaxed;
45     }
46
47     TEST(Treiber_HRC_base)
48     TEST(Treiber_HRC_base_disposer)
49
50     TEST(Treiber_HRC_base_relaxed)
51     TEST(Treiber_HRC_base_disposer_relaxed)
52
53 } // namespace stack
54