SegmentedQueue refactoring
[libcds.git] / tests / test-hdr / queue / hdr_segmented_queue_hp.cpp
1 //$$CDS-header$$
2
3 #include "hdr_segmented_queue.h"
4 #include <cds/container/segmented_queue.h>
5 #include <cds/gc/hp.h>
6
7 namespace queue {
8
9     void HdrSegmentedQueue::SegmQueue_HP()
10     {
11         typedef cds::container::SegmentedQueue< cds::gc::HP, item > queue_type;
12         test<queue_type>();
13     }
14
15     void HdrSegmentedQueue::SegmQueue_HP_mutex()
16     {
17         typedef cds::container::SegmentedQueue< cds::gc::HP, item,
18             cds::container::segmented_queue::make_traits<
19                 cds::opt::lock_type< std::mutex >
20             >::type
21         > queue_type;
22
23         test<queue_type>();
24     }
25
26     void HdrSegmentedQueue::SegmQueue_HP_shuffle()
27     {
28         struct queue_traits : public cds::container::segmented_queue::traits
29         {
30             typedef cds::atomicity::item_counter item_counter;
31             typedef cds::opt::v::random_shuffle_permutation<> permutation_generator;
32         };
33         typedef cds::container::SegmentedQueue< cds::gc::HP, item, queue_traits > queue_type;
34
35         test<queue_type>();
36     }
37
38     void HdrSegmentedQueue::SegmQueue_HP_stat()
39     {
40         struct queue_traits : public
41             cds::container::segmented_queue::make_traits <
42                 cds::opt::item_counter< cds::atomicity::item_counter >
43                 , cds::opt::permutation_generator< cds::opt::v::random_permutation<> >
44                 , cds::opt::stat < cds::container::segmented_queue::stat<> >
45             > ::type
46         {};
47         typedef cds::container::SegmentedQueue< cds::gc::HP, item, queue_traits > queue_type;
48
49         test<queue_type>();
50     }
51
52 } // namespace queue