3 #ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_HP_H
4 #define CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_HP_H
6 #include "tree/hdr_intrusive_bintree.h"
7 #include <cds/intrusive/ellen_bintree_hp.h>
9 #include <cds/memory/vyukov_queue_pool.h>
10 #include <cds/memory/pool_allocator.h>
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;
22 // Internal node pool based on Vyukov's queue
23 typedef cds::memory::lazy_vyukov_queue_pool<
25 cds::opt::buffer< cds::opt::v::dynamic_buffer< cds::any_type > >
26 > internal_node_pool_type;
28 extern internal_node_pool_type s_InternalNodePool;
30 struct internal_node_pool_accessor {
31 typedef internal_node_pool_type::value_type value_type;
33 internal_node_pool_type& operator()() const
35 return s_InternalNodePool;
39 // Update descriptor pool based on Vyukov's queue
40 typedef cds::memory::vyukov_queue_pool<
42 cds::opt::buffer< cds::opt::v::static_buffer< cds::any_type, 16 > >
43 > update_desc_pool_type;
45 extern update_desc_pool_type s_UpdateDescPool;
47 struct update_desc_pool_accessor {
48 typedef update_desc_pool_type::value_type value_type;
50 update_desc_pool_type& operator()() const
52 return s_UpdateDescPool;
56 } // namespace ellen_bintree_hp
60 #endif // #ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_HP_H