Move libcds 1.6.0 from SVN
[libcds.git] / tests / test-hdr / queue / hdr_intrusive_msqueue_hrc.cpp
1 //$$CDS-header$$
2
3 #include "hdr_intrusive_msqueue.h"
4 #include "hdr_intrusive_singlelink_node.h"
5
6 #include <cds/intrusive/msqueue.h>
7 #include <cds/gc/hrc.h>
8
9 namespace queue {
10
11 #define TEST(X)     void IntrusiveQueueHeaderTest::test_##X() { test<X>(); }
12
13     namespace {
14
15         // HRC base hook
16         typedef ci::MSQueue< cds::gc::HRC,
17             base_hook_item<cds::gc::HRC>
18             ,ci::opt::hook<
19                 ci::single_link::base_hook< ci::opt::gc<cds::gc::HRC> >
20             >
21             ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
22         > MSQueue_HRC_base;
23
24         // HRC base hook + item counter
25         typedef ci::MSQueue< cds::gc::HRC,
26             base_hook_item<cds::gc::HRC>
27             ,ci::opt::hook<
28                 ci::single_link::base_hook< ci::opt::gc<cds::gc::HRC> >
29             >
30             ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
31             ,co::item_counter< cds::atomicity::item_counter >
32         > MSQueue_HRC_base_ic;
33
34         // HRC base hook + stat
35         typedef ci::MSQueue< cds::gc::HRC,
36             base_hook_item<cds::gc::HRC>
37             ,ci::opt::hook<
38                 ci::single_link::base_hook< ci::opt::gc<cds::gc::HRC> >
39             >
40             ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
41             ,co::stat< ci::queue_stat<> >
42         > MSQueue_HRC_base_stat;
43
44         // HRC base hook + alignment
45         typedef ci::MSQueue< cds::gc::HRC,
46             base_hook_item<cds::gc::HRC>
47             ,ci::opt::hook<
48                 ci::single_link::base_hook< ci::opt::gc<cds::gc::HRC> >
49             >
50             ,ci::opt::disposer< IntrusiveQueueHeaderTest::faked_disposer >
51             ,co::alignment< 128 >
52         > MSQueue_HRC_base_align;
53     }
54
55     TEST(MSQueue_HRC_base)
56     TEST(MSQueue_HRC_base_ic)
57     TEST(MSQueue_HRC_base_stat)
58     TEST(MSQueue_HRC_base_align)
59
60 } // namespace queue