3 #ifndef CDSTEST_HDR_INTRUSIVE_ELLEN_BINTREE_POOL_HP_H
4 #define CDSTEST_HDR_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;
21 // Internal node pool based on Vyukov's queue
22 struct internal_node_pool_traits : public cds::memory::vyukov_queue_pool_traits
24 typedef cds::opt::v::dynamic_buffer< cds::any_type > buffer;
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;
29 struct internal_node_pool_accessor {
30 typedef internal_node_pool_type::value_type value_type;
32 internal_node_pool_type& operator()() const
34 return s_InternalNodePool;
38 // Update descriptor pool based on Vyukov's queue
39 struct update_desc_pool_traits : public cds::memory::vyukov_queue_pool_traits
41 typedef cds::opt::v::static_buffer< cds::any_type, 16 > buffer;
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;
46 struct update_desc_pool_accessor {
47 typedef update_desc_pool_type::value_type value_type;
49 update_desc_pool_type& operator()() const
51 return s_UpdateDescPool;
55 } // namespace ellen_bintree_hp
59 #endif // #ifndef CDSTEST_HDR_INTRUSIVE_ELLEN_BINTREE_POOL_HP_H