issue#11: cds: changed __CDS_ guard prefix to CDSLIB_ for all .h files
[libcds.git] / tests / test-hdr / tree / hdr_intrusive_ellen_bintree_pool_hp.h
1 //$$CDS-header$$
2
3 #ifndef CDSTEST_HDR_INTRUSIVE_ELLEN_BINTREE_POOL_HP_H
4 #define CDSTEST_HDR_INTRUSIVE_ELLEN_BINTREE_POOL_HP_H
5
6 #include "tree/hdr_intrusive_bintree.h"
7 #include <cds/intrusive/ellen_bintree_hp.h>
8
9 #include <cds/memory/vyukov_queue_pool.h>
10 #include <cds/memory/pool_allocator.h>
11
12 namespace tree {
13
14     namespace ellen_bintree_hp {
15         typedef cds::intrusive::ellen_bintree::node_types<cds::gc::HP, IntrusiveBinTreeHdrTest::key_type>   node_types;
16         typedef node_types::leaf_node_type                                  leaf_node;
17         typedef IntrusiveBinTreeHdrTest::base_hook_value< leaf_node >       base_value;
18         typedef node_types::internal_node_type                              internal_node;
19         typedef node_types::update_desc_type                                update_desc;
20
21         // Internal node pool based on Vyukov's queue
22         struct internal_node_pool_traits : public cds::memory::vyukov_queue_pool_traits
23         {
24             typedef cds::opt::v::dynamic_buffer< cds::any_type > buffer;
25         };
26         typedef cds::memory::lazy_vyukov_queue_pool< internal_node, internal_node_pool_traits > internal_node_pool_type;
27         extern internal_node_pool_type s_InternalNodePool;
28
29         struct internal_node_pool_accessor {
30             typedef internal_node_pool_type::value_type     value_type;
31
32             internal_node_pool_type& operator()() const
33             {
34                 return s_InternalNodePool;
35             }
36         };
37
38         // Update descriptor pool based on Vyukov's queue
39         struct update_desc_pool_traits : public cds::memory::vyukov_queue_pool_traits
40         {
41             typedef cds::opt::v::static_buffer< cds::any_type, 16 > buffer;
42         };
43         typedef cds::memory::vyukov_queue_pool< update_desc, update_desc_pool_traits > update_desc_pool_type;
44         extern update_desc_pool_type s_UpdateDescPool;
45
46         struct update_desc_pool_accessor {
47             typedef update_desc_pool_type::value_type     value_type;
48
49             update_desc_pool_type& operator()() const
50             {
51                 return s_UpdateDescPool;
52             }
53         };
54
55     } // namespace ellen_bintree_hp
56
57 } // namespace tree
58
59 #endif // #ifndef CDSTEST_HDR_INTRUSIVE_ELLEN_BINTREE_POOL_HP_H