intrusive::EllenBinTree test refactoring
[libcds.git] / tests / test-hdr / tree / hdr_intrusive_ellen_bintree_pool_dhp.h
1 //$$CDS-header$$
2
3 #ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_DHP_H
4 #define CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_DHP_H
5
6 #include "tree/hdr_intrusive_bintree.h"
7 #include <cds/intrusive/ellen_bintree_dhp.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_dhp {
15         typedef cds::intrusive::ellen_bintree::node_types<cds::gc::PTB, 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
22         // Internal node pool based on Vyukov's queue
23         struct internal_node_pool_traits : public cds::memory::vyukov_queue_pool_traits
24         {
25             typedef cds::opt::v::dynamic_buffer< cds::any_type > buffer;
26         };
27         typedef cds::memory::lazy_vyukov_queue_pool< internal_node, internal_node_pool_traits > internal_node_pool_type;
28         extern internal_node_pool_type s_InternalNodePool;
29
30         struct internal_node_pool_accessor {
31             typedef internal_node_pool_type::value_type     value_type;
32
33             internal_node_pool_type& operator()() const
34             {
35                 return s_InternalNodePool;
36             }
37         };
38
39         // Update descriptor pool based on Vyukov's queue
40         struct update_desc_pool_traits : public cds::memory::vyukov_queue_pool_traits
41         {
42             typedef cds::opt::v::static_buffer< cds::any_type, 16 > buffer;
43         };
44         typedef cds::memory::vyukov_queue_pool< update_desc, update_desc_pool_traits > update_desc_pool_type;
45         extern update_desc_pool_type s_UpdateDescPool;
46
47         struct update_desc_pool_accessor {
48             typedef update_desc_pool_type::value_type     value_type;
49
50             update_desc_pool_type& operator()() const
51             {
52                 return s_UpdateDescPool;
53             }
54         };
55
56     } // namespace ellen_bintree_dhp
57
58 } // namespace tree
59
60 #endif // #ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_DHP_H