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