fcc0e2c79361d418dd3c8387ec148e5e9d3baef2
[libcds.git] / tests / test-hdr / queue / hdr_basketqueue_hp.cpp
1 //$$CDS-header$$
2
3 #include <cds/gc/hp.h>
4 #include <cds/container/basket_queue.h>
5
6 #include "queue/hdr_queue.h"
7
8 namespace queue {
9
10     void HdrTestQueue::BasketQueue_HP()
11     {
12         typedef cds::container::BasketQueue< cds::gc::HP, int > queue_type;
13         test_no_ic< queue_type >();
14     }
15
16     void HdrTestQueue::BasketQueue_HP_Counted()
17     {
18         struct traits : public cds::container::basket_queue::traits
19         {
20             typedef cds::atomicity::item_counter item_counter;
21         };
22         typedef cds::container::BasketQueue< cds::gc::HP, int, traits > queue_type;
23         test_ic< queue_type >();
24     }
25
26     void HdrTestQueue::BasketQueue_HP_relax()
27     {
28         struct traits : public
29             cds::container::basket_queue::make_traits <
30                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
31             > ::type
32         {};
33         typedef cds::container::BasketQueue< cds::gc::HP, int, traits > queue_type;
34         test_no_ic< queue_type >();
35     }
36
37     void HdrTestQueue::BasketQueue_HP_Counted_relax()
38     {
39         typedef cds::container::BasketQueue< cds::gc::HP, int,
40             typename cds::container::basket_queue::make_traits <
41                 cds::opt::item_counter< cds::atomicity::item_counter >
42                 ,cds::opt::memory_model< cds::opt::v::relaxed_ordering>
43             >::type
44         > queue_type;
45         test_ic< queue_type >();
46     }
47
48     void HdrTestQueue::BasketQueue_HP_seqcst()
49     {
50         struct traits : public cds::container::basket_queue::traits
51         {
52             typedef cds::opt::v::sequential_consistent memory_model;
53         };
54         typedef cds::container::BasketQueue< cds::gc::HP, int, traits > queue_type;
55         test_no_ic< queue_type >();
56     }
57
58     void HdrTestQueue::BasketQueue_HP_Counted_seqcst()
59     {
60         typedef cds::container::BasketQueue < cds::gc::HP, int,
61             typename cds::container::basket_queue::make_traits <
62                 cds::opt::item_counter< cds::atomicity::item_counter >
63                 ,cds::opt::memory_model< cds::opt::v::sequential_consistent>
64             >::type
65         > queue_type;
66         test_ic< queue_type >();
67     }
68
69     void HdrTestQueue::BasketQueue_HP_relax_align()
70     {
71         typedef cds::container::BasketQueue < cds::gc::HP, int,
72             typename cds::container::basket_queue::make_traits <
73                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
74                 ,cds::opt::alignment< 16 >
75             >::type
76         > queue_type;
77         test_no_ic< queue_type >();
78     }
79
80     void HdrTestQueue::BasketQueue_HP_Counted_relax_align()
81     {
82         struct traits : public cds::container::basket_queue::traits
83         {
84             typedef cds::atomicity::item_counter item_counter;
85             typedef cds::opt::v::relaxed_ordering memory_model;
86             enum { alignment = 32 };
87         };
88         typedef cds::container::BasketQueue < cds::gc::HP, int, traits > queue_type;
89         test_ic< queue_type >();
90     }
91
92     void HdrTestQueue::BasketQueue_HP_seqcst_align()
93     {
94         typedef cds::container::BasketQueue < cds::gc::HP, int,
95             typename cds::container::basket_queue::make_traits <
96                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
97                 , cds::opt::alignment< cds::opt::no_special_alignment >
98             > ::type
99         > queue_type;
100         test_no_ic< queue_type >();
101     }
102
103     void HdrTestQueue::BasketQueue_HP_Counted_seqcst_align()
104     {
105         typedef cds::container::BasketQueue < cds::gc::HP, int,
106             typename cds::container::basket_queue::make_traits <
107                 cds::opt::item_counter< cds::atomicity::item_counter >
108                 ,cds::opt::memory_model< cds::opt::v::sequential_consistent>
109                 ,cds::opt::alignment< cds::opt::cache_line_alignment >
110             > ::type
111         > queue_type;
112         test_ic< queue_type >();
113     }
114
115 }   // namespace queue