Move libcds 1.6.0 from SVN
[libcds.git] / tests / test-hdr / tree / hdr_intrusive_ellen_bintree_pool_hp.h
1 //$$CDS-header$$
2
3 #ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_HP_H
4 #define CDSHDRTEST_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
22         // Internal node pool based on Vyukov's queue
23         typedef cds::memory::lazy_vyukov_queue_pool<
24             internal_node,
25             cds::opt::buffer< cds::opt::v::dynamic_buffer< cds::any_type > >
26         > internal_node_pool_type;
27
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         typedef cds::memory::vyukov_queue_pool<
41             update_desc,
42             cds::opt::buffer< cds::opt::v::static_buffer< cds::any_type, 16 > >
43         > update_desc_pool_type;
44
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_hp
57
58 } // namespace tree
59
60 #endif // #ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_HP_H