intrusive::EllenBinTree test refactoring
authorkhizmax <khizmax@gmail.com>
Fri, 7 Nov 2014 11:41:09 +0000 (14:41 +0300)
committerkhizmax <khizmax@gmail.com>
Fri, 7 Nov 2014 11:41:09 +0000 (14:41 +0300)
18 files changed:
cds/intrusive/details/ellen_bintree_base.h
cds/intrusive/ellen_bintree_rcu.h
cds/intrusive/impl/ellen_bintree.h
projects/Win/vc12/hdr-test-tree.vcxproj
projects/Win/vc12/hdr-test-tree.vcxproj.filters
tests/test-hdr/tree/hdr_ellenbintree_map_ptb.cpp
tests/test-hdr/tree/hdr_ellenbintree_set_ptb.cpp
tests/test-hdr/tree/hdr_intrusive_bintree.h
tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp.cpp [new file with mode: 0644]
tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp_member.cpp [new file with mode: 0644]
tests/test-hdr/tree/hdr_intrusive_ellen_bintree_hp.cpp
tests/test-hdr/tree/hdr_intrusive_ellen_bintree_hp_member.cpp
tests/test-hdr/tree/hdr_intrusive_ellen_bintree_pool_dhp.h [new file with mode: 0644]
tests/test-hdr/tree/hdr_intrusive_ellen_bintree_pool_ptb.h [deleted file]
tests/test-hdr/tree/hdr_intrusive_ellen_bintree_ptb.cpp [deleted file]
tests/test-hdr/tree/hdr_intrusive_ellen_bintree_ptb_member.cpp [deleted file]
tests/test-hdr/tree/hdr_intrusive_ellen_bintree_rcu_gpb.cpp
tests/test-hdr/tree/hdr_tree_reg.cpp

index 2c32d9abf9d4e14147faba73e2d83473b611a9c9..f0d9ffc3da819e168e17c3c55e55391bbfc117d8 100644 (file)
@@ -285,7 +285,7 @@ namespace cds { namespace intrusive {
         struct member_hook: public hook< opt::member_hook_tag, Options... >
         {
             //@cond
-            static const size_t c_nMemberOffset = MemberOffset;
+            static CDS_CONSTEXPR const size_t c_nMemberOffset = MemberOffset;
             //@endcond
         };
 
index 31611fb443c93e6d05ed003a4b75a23260716988..df52c4e70e97163c28177ee82869d4f93369c646 100644 (file)
@@ -1109,6 +1109,13 @@ namespace cds { namespace intrusive {
         {
             return find_( key, f );
         }
+        //@cond
+        template <typename Q, typename Func>
+        bool find( Q const& key, Func f ) const
+        {
+            return find_( key, f );
+        }
+        //@endcond
 
         /// Finds the key \p key with comparing functor \p pred
         /**
@@ -1123,6 +1130,13 @@ namespace cds { namespace intrusive {
         {
             return find_with_( key, pred, f );
         }
+        //@cond
+        template <typename Q, typename Less, typename Func>
+        bool find_with( Q const& key, Less pred, Func f ) const
+        {
+            return find_with_( key, pred, f );
+        }
+        //@endcond
 
         /// Finds \p key and return the item found
         /** \anchor cds_intrusive_EllenBinTree_rcu_get
index 577f6c860abcfc75c3642fedb15dcb6f64a6413d..dc54c6192fd37e49ac09513c40d6b2e7fcb14080 100644 (file)
@@ -684,6 +684,13 @@ namespace cds { namespace intrusive {
         {
             return find_( key, f );
         }
+        //@cond
+        template <typename Q, typename Func>
+        bool find( Q const& key, Func f ) const
+        {
+            return find_( key, f );
+        }
+        //@endcond
 
         /// Finds the key \p key with comparing functor \p pred
         /**
@@ -698,6 +705,13 @@ namespace cds { namespace intrusive {
         {
             return find_with_( key, pred, f );
         }
+        //@cond
+        template <typename Q, typename Less, typename Func>
+        bool find_with( Q const& key, Less pred, Func f ) const
+        {
+            return find_with_( key, pred, f );
+        }
+        //@endcond
 
         /// Finds \p key and returns the item found
         /** @anchor cds_intrusive_EllenBinTree_get
index 30ac4451aea295bf6a8688ed3be0275396f9587e..c21ab5c6ab9074690f947c3345c673659eefe516 100644 (file)
     <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_map.h" />\r
     <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_set.h" />\r
     <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_bintree.h" />\r
+    <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_dhp.h" />\r
     <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_hp.h" />\r
-    <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_ptb.h" />\r
     <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_rcu.h" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_set_rcu_gpt.cpp" />\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_set_rcu_shb.cpp" />\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_set_rcu_sht.cpp" />\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_dhp.cpp" />\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_dhp_member.cpp" />\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_hp.cpp" />\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_hp_member.cpp" />\r
-    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_ptb.cpp" />\r
-    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_ptb_member.cpp" />\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_rcu_gpb.cpp" />\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_rcu_gpb_member.cpp" />\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_rcu_gpi.cpp" />\r
index 9f196a6daa55d77ffe6ffc4fb7d908017857ac04..343c96a1bf9f5ac658074ec24174d7ebddb82b74 100644 (file)
@@ -24,7 +24,7 @@
     <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_hp.h">\r
       <Filter>intrusive</Filter>\r
     </ClInclude>\r
-    <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_ptb.h">\r
+    <ClInclude Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_pool_dhp.h">\r
       <Filter>intrusive</Filter>\r
     </ClInclude>\r
   </ItemGroup>\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_hp_member.cpp">\r
       <Filter>intrusive</Filter>\r
     </ClCompile>\r
-    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_ptb.cpp">\r
-      <Filter>intrusive</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_ptb_member.cpp">\r
-      <Filter>intrusive</Filter>\r
-    </ClCompile>\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_map_hp.cpp">\r
       <Filter>container</Filter>\r
     </ClCompile>\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_set_ptb.cpp">\r
       <Filter>container</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_dhp.cpp">\r
+      <Filter>intrusive</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_intrusive_ellen_bintree_dhp_member.cpp">\r
+      <Filter>intrusive</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
 </Project>
\ No newline at end of file
index d05f06bbbaf72de45e32b393d756299c045992de..3fef81b3910915b4de8800948968f57379226cb6 100644 (file)
@@ -3,7 +3,7 @@
 #include "tree/hdr_ellenbintree_map.h"
 #include <cds/container/ellen_bintree_map_ptb.h>
 
-#include "tree/hdr_intrusive_ellen_bintree_pool_ptb.h"
+#include "tree/hdr_intrusive_ellen_bintree_pool_dhp.h"
 #include "unit/print_ellenbintree_stat.h"
 
 namespace tree {
@@ -114,8 +114,8 @@ namespace tree {
         typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
             cc::ellen_bintree::make_map_traits<
                 co::less< less >
-                ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
-                ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
+                ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+                ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
             >::type
         > set_type;
 
@@ -127,8 +127,8 @@ namespace tree {
         typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
             cc::ellen_bintree::make_map_traits<
                 co::less< less >
-                ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
-                ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
+                ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+                ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
                 ,co::item_counter< cds::atomicity::item_counter >
                 ,co::stat< cc::ellen_bintree::stat<> >
             >::type
index 269fd78240c5519b3344bfdfbe27ba1caa20bfc7..d5bef869901b3f4fbd7da5e72f7444ebaa05298d 100644 (file)
@@ -3,7 +3,7 @@
 #include "tree/hdr_ellenbintree_set.h"
 #include <cds/container/ellen_bintree_set_ptb.h>
 
-#include "tree/hdr_intrusive_ellen_bintree_pool_ptb.h"
+#include "tree/hdr_intrusive_ellen_bintree_pool_dhp.h"
 #include "unit/print_ellenbintree_stat.h"
 
 namespace tree {
@@ -122,8 +122,8 @@ namespace tree {
             cc::ellen_bintree::make_set_traits<
                 cc::ellen_bintree::key_extractor< key_extractor >
                 ,co::less< less >
-                ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
-                ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
+                ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+                ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
             >::type
         > set_type;
 
@@ -136,8 +136,8 @@ namespace tree {
             cc::ellen_bintree::make_set_traits<
                 cc::ellen_bintree::key_extractor< key_extractor >
                 ,co::less< less >
-                ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
-                ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
+                ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+                ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
                 ,co::item_counter< cds::atomicity::item_counter >
                 ,co::stat< cc::ellen_bintree::stat<> >
             >::type
index 32ce3b1f0caf91c2cfb1a30ad91d52c161e33946..3091d5c1d57dafe9c3ab9349a8885f6c8b11d723 100644 (file)
@@ -936,25 +936,25 @@ namespace tree {
         void EllenBinTree_hp_member_less_pool();
         void EllenBinTree_hp_member_less_pool_ic_stat();
 
-        void EllenBinTree_ptb_base_less();
-        void EllenBinTree_ptb_base_cmp();
-        void EllenBinTree_ptb_base_cmpless();
-        void EllenBinTree_ptb_base_less_ic();
-        void EllenBinTree_ptb_base_cmp_ic();
-        void EllenBinTree_ptb_base_less_stat();
-        void EllenBinTree_ptb_base_cmp_ic_stat();
-        void EllenBinTree_ptb_base_less_pool();
-        void EllenBinTree_ptb_base_less_pool_ic_stat();
-
-        void EllenBinTree_ptb_member_less();
-        void EllenBinTree_ptb_member_cmp();
-        void EllenBinTree_ptb_member_cmpless();
-        void EllenBinTree_ptb_member_less_ic();
-        void EllenBinTree_ptb_member_cmp_ic();
-        void EllenBinTree_ptb_member_less_stat();
-        void EllenBinTree_ptb_member_cmp_ic_stat();
-        void EllenBinTree_ptb_member_less_pool();
-        void EllenBinTree_ptb_member_less_pool_ic_stat();
+        void EllenBinTree_dhp_base_less();
+        void EllenBinTree_dhp_base_cmp();
+        void EllenBinTree_dhp_base_cmpless();
+        void EllenBinTree_dhp_base_less_ic();
+        void EllenBinTree_dhp_base_cmp_ic();
+        void EllenBinTree_dhp_base_less_stat();
+        void EllenBinTree_dhp_base_cmp_ic_stat();
+        void EllenBinTree_dhp_base_less_pool();
+        void EllenBinTree_dhp_base_less_pool_ic_stat();
+
+        void EllenBinTree_dhp_member_less();
+        void EllenBinTree_dhp_member_cmp();
+        void EllenBinTree_dhp_member_cmpless();
+        void EllenBinTree_dhp_member_less_ic();
+        void EllenBinTree_dhp_member_cmp_ic();
+        void EllenBinTree_dhp_member_less_stat();
+        void EllenBinTree_dhp_member_cmp_ic_stat();
+        void EllenBinTree_dhp_member_less_pool();
+        void EllenBinTree_dhp_member_less_pool_ic_stat();
 
         void EllenBinTree_rcu_gpi_base_less();
         void EllenBinTree_rcu_gpi_base_cmp();
@@ -1077,25 +1077,25 @@ namespace tree {
             CPPUNIT_TEST(EllenBinTree_hp_member_less_pool)
             CPPUNIT_TEST(EllenBinTree_hp_member_less_pool_ic_stat)
 
-            CPPUNIT_TEST(EllenBinTree_ptb_base_less)
-            CPPUNIT_TEST(EllenBinTree_ptb_base_cmp)
-            CPPUNIT_TEST(EllenBinTree_ptb_base_less_stat)
-            CPPUNIT_TEST(EllenBinTree_ptb_base_cmpless)
-            CPPUNIT_TEST(EllenBinTree_ptb_base_less_ic)
-            CPPUNIT_TEST(EllenBinTree_ptb_base_cmp_ic)
-            CPPUNIT_TEST(EllenBinTree_ptb_base_cmp_ic_stat)
-            CPPUNIT_TEST(EllenBinTree_ptb_base_less_pool)
-            CPPUNIT_TEST(EllenBinTree_ptb_base_less_pool_ic_stat)
-
-            CPPUNIT_TEST(EllenBinTree_ptb_member_less)
-            CPPUNIT_TEST(EllenBinTree_ptb_member_cmp)
-            CPPUNIT_TEST(EllenBinTree_ptb_member_less_stat)
-            CPPUNIT_TEST(EllenBinTree_ptb_member_cmpless)
-            CPPUNIT_TEST(EllenBinTree_ptb_member_less_ic)
-            CPPUNIT_TEST(EllenBinTree_ptb_member_cmp_ic)
-            CPPUNIT_TEST(EllenBinTree_ptb_member_cmp_ic_stat)
-            CPPUNIT_TEST(EllenBinTree_ptb_member_less_pool)
-            CPPUNIT_TEST(EllenBinTree_ptb_member_less_pool_ic_stat)
+            CPPUNIT_TEST(EllenBinTree_dhp_base_less)
+            CPPUNIT_TEST(EllenBinTree_dhp_base_cmp)
+            CPPUNIT_TEST(EllenBinTree_dhp_base_less_stat)
+            CPPUNIT_TEST(EllenBinTree_dhp_base_cmpless)
+            CPPUNIT_TEST(EllenBinTree_dhp_base_less_ic)
+            CPPUNIT_TEST(EllenBinTree_dhp_base_cmp_ic)
+            CPPUNIT_TEST(EllenBinTree_dhp_base_cmp_ic_stat)
+            CPPUNIT_TEST(EllenBinTree_dhp_base_less_pool)
+            CPPUNIT_TEST(EllenBinTree_dhp_base_less_pool_ic_stat)
+
+            CPPUNIT_TEST(EllenBinTree_dhp_member_less)
+            CPPUNIT_TEST(EllenBinTree_dhp_member_cmp)
+            CPPUNIT_TEST(EllenBinTree_dhp_member_less_stat)
+            CPPUNIT_TEST(EllenBinTree_dhp_member_cmpless)
+            CPPUNIT_TEST(EllenBinTree_dhp_member_less_ic)
+            CPPUNIT_TEST(EllenBinTree_dhp_member_cmp_ic)
+            CPPUNIT_TEST(EllenBinTree_dhp_member_cmp_ic_stat)
+            CPPUNIT_TEST(EllenBinTree_dhp_member_less_pool)
+            CPPUNIT_TEST(EllenBinTree_dhp_member_less_pool_ic_stat)
 
             CPPUNIT_TEST(EllenBinTree_rcu_gpi_base_less)
             CPPUNIT_TEST(EllenBinTree_rcu_gpi_base_cmp)
diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp.cpp
new file mode 100644 (file)
index 0000000..209e933
--- /dev/null
@@ -0,0 +1,167 @@
+//$$CDS-header$$
+
+#include "tree/hdr_intrusive_bintree.h"
+#include <cds/intrusive/ellen_bintree_dhp.h>
+
+#include "tree/hdr_intrusive_ellen_bintree_pool_dhp.h"
+#include "unit/print_ellenbintree_stat.h"
+
+namespace tree {
+    namespace ci = cds::intrusive;
+    namespace co = cds::opt;
+    namespace {
+        typedef ci::ellen_bintree::node<cds::gc::DHP>                       leaf_node;
+        typedef IntrusiveBinTreeHdrTest::base_hook_value< leaf_node >       base_value;
+
+        struct print_stat {
+            template <typename Tree>
+            void operator()( Tree const& t)
+            {
+                std::cout << t.statistics();
+            }
+        };
+
+        typedef ci::ellen_bintree::internal_node< IntrusiveBinTreeHdrTest::key_type, leaf_node > internal_node;
+        typedef ci::ellen_bintree::update_desc< leaf_node, internal_node >   update_desc;
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less()
+    {
+        struct tree_traits : public ci::ellen_bintree::traits
+        {
+            typedef ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP >> hook;
+            typedef IntrusiveBinTreeHdrTest::key_extractor< base_value > key_extractor;
+            typedef IntrusiveBinTreeHdrTest::less< base_value > less;
+            typedef IntrusiveBinTreeHdrTest::disposer< base_value > disposer;
+        };
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value, tree_traits > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_stat()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+            ci::ellen_bintree::make_traits<
+                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+                ,co::less< less< base_value > >
+                ,ci::opt::disposer< disposer< base_value > >
+                ,co::stat< ci::ellen_bintree::stat<> >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+            ci::ellen_bintree::make_traits<
+                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+                ,co::compare< compare< base_value > >
+                ,ci::opt::disposer< disposer< base_value > >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmpless()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+            ci::ellen_bintree::make_traits<
+                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+                ,co::compare< compare< base_value > >
+                ,co::less< less< base_value > >
+                ,ci::opt::disposer< disposer< base_value > >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_ic()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+            ci::ellen_bintree::make_traits<
+                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+                ,co::less< less< base_value > >
+                ,ci::opt::disposer< disposer< base_value > >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp_ic()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+            ci::ellen_bintree::make_traits<
+                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+                ,co::compare< compare< base_value > >
+                ,ci::opt::disposer< disposer< base_value > >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+        void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_cmp_ic_stat()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+            ci::ellen_bintree::make_traits<
+                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+                ,co::compare< compare< base_value > >
+                ,ci::opt::disposer< disposer< base_value > >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< ci::ellen_bintree::stat<> >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_pool()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+            ci::ellen_bintree::make_traits<
+                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+                ,co::less< less< base_value > >
+                ,ci::opt::disposer< disposer< base_value > >
+                ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+                ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_base_less_pool_ic_stat()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, base_value,
+            ci::ellen_bintree::make_traits<
+                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::DHP > > >
+                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
+                ,co::less< less< base_value > >
+                ,ci::opt::disposer< disposer< base_value > >
+                ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+                ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< ci::ellen_bintree::stat<> >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+
+} //namespace tree
diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp_member.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_dhp_member.cpp
new file mode 100644 (file)
index 0000000..2275c29
--- /dev/null
@@ -0,0 +1,169 @@
+//$$CDS-header$$
+
+#include "tree/hdr_intrusive_bintree.h"
+#include <cds/intrusive/ellen_bintree_dhp.h>
+
+#include "tree/hdr_intrusive_ellen_bintree_pool_dhp.h"
+#include "unit/print_ellenbintree_stat.h"
+
+namespace tree {
+    namespace ci = cds::intrusive;
+    namespace co = cds::opt;
+    namespace {
+        typedef ci::ellen_bintree::node<cds::gc::DHP>                        leaf_node;
+        typedef IntrusiveBinTreeHdrTest::member_hook_value< leaf_node >     member_value;
+
+        typedef ci::opt::hook< ci::ellen_bintree::member_hook< offsetof(member_value, hook), co::gc< cds::gc::DHP > > > member_hook;
+
+        struct print_stat {
+            template <typename Tree>
+            void operator()( Tree const& t)
+            {
+                std::cout << t.statistics();
+            }
+        };
+
+        typedef ci::ellen_bintree::internal_node< IntrusiveBinTreeHdrTest::key_type, leaf_node > internal_node;
+        typedef ci::ellen_bintree::update_desc< leaf_node, internal_node >   update_desc;
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_less()
+    {
+        struct tree_traits : public ci::ellen_bintree::traits
+        {
+            typedef ci::ellen_bintree::member_hook< offsetof( member_value, hook ), co::gc< cds::gc::DHP >> hook;
+            typedef IntrusiveBinTreeHdrTest::key_extractor< member_value > key_extractor;
+            typedef IntrusiveBinTreeHdrTest::less< member_value > less;
+            typedef IntrusiveBinTreeHdrTest::disposer< member_value > disposer;
+        };
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value, tree_traits > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_less_stat()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+            ci::ellen_bintree::make_traits<
+                member_hook
+                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+                ,co::less< less< member_value > >
+                ,ci::opt::disposer< disposer< member_value > >
+                ,co::stat< ci::ellen_bintree::stat<> >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_cmp()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+            ci::ellen_bintree::make_traits<
+                member_hook
+                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+                ,co::compare< compare< member_value > >
+                ,ci::opt::disposer< disposer< member_value > >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_cmpless()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+            ci::ellen_bintree::make_traits<
+                member_hook
+                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+                ,co::compare< compare< member_value > >
+                ,co::less< less< member_value > >
+                ,ci::opt::disposer< disposer< member_value > >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_less_ic()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+            ci::ellen_bintree::make_traits<
+                member_hook
+                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+                ,co::less< less< member_value > >
+                ,ci::opt::disposer< disposer< member_value > >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_cmp_ic()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+            ci::ellen_bintree::make_traits<
+                member_hook
+                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+                ,co::compare< compare< member_value > >
+                ,ci::opt::disposer< disposer< member_value > >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+        void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_cmp_ic_stat()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+            ci::ellen_bintree::make_traits<
+                member_hook
+                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+                ,co::compare< compare< member_value > >
+                ,ci::opt::disposer< disposer< member_value > >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< ci::ellen_bintree::stat<> >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_less_pool()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+            ci::ellen_bintree::make_traits<
+                member_hook
+                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+                ,co::less< less< member_value > >
+                ,ci::opt::disposer< disposer< member_value > >
+                ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+                ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+    void IntrusiveBinTreeHdrTest::EllenBinTree_dhp_member_less_pool_ic_stat()
+    {
+        typedef ci::EllenBinTree< cds::gc::DHP, key_type, member_value,
+            ci::ellen_bintree::make_traits<
+                member_hook
+                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
+                ,co::less< less< member_value > >
+                ,ci::opt::disposer< disposer< member_value > >
+                ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_dhp::internal_node_pool_accessor > >
+                ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_dhp::update_desc_pool_accessor > >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< ci::ellen_bintree::stat<> >
+            >::type
+        > tree_type;
+
+        test<tree_type, print_stat>();
+    }
+
+
+} //namespace tree
index 39a189f4a4ea0b976887db5d9bacd544a8779149..f2faad097fbdd0e1b6fcfc45fad25ab09cfcd691 100644 (file)
@@ -27,14 +27,14 @@ namespace tree {
 
     void IntrusiveBinTreeHdrTest::EllenBinTree_hp_base_less()
     {
-        typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value,
-            ci::ellen_bintree::make_traits<
-                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::HP > > >
-                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
-                ,co::less< less< base_value > >
-                ,ci::opt::disposer< disposer< base_value > >
-            >::type
-        > tree_type;
+        struct tree_traits : public ci::ellen_bintree::traits
+        {
+            typedef ci::ellen_bintree::base_hook< co::gc< cds::gc::HP >> hook;
+            typedef IntrusiveBinTreeHdrTest::key_extractor< base_value > key_extractor;
+            typedef IntrusiveBinTreeHdrTest::less< base_value > less;
+            typedef IntrusiveBinTreeHdrTest::disposer< base_value > disposer;
+        };
+        typedef ci::EllenBinTree< cds::gc::HP, key_type, base_value, tree_traits > tree_type;
 
         test<tree_type, print_stat>();
     }
index 24473a7c248e5eda1d99a9236a67f67f0320a27c..a68eafd7d688fe9cbc5557fc1440e7183c9abe8d 100644 (file)
@@ -29,6 +29,13 @@ namespace tree {
 
     void IntrusiveBinTreeHdrTest::EllenBinTree_hp_member_less()
     {
+        struct tree_traits : public ci::ellen_bintree::traits
+        {
+            typedef ci::ellen_bintree::member_hook< offsetof( member_value, hook ), co::gc< cds::gc::HP >> hook;
+            typedef IntrusiveBinTreeHdrTest::key_extractor< member_value > key_extractor;
+            typedef IntrusiveBinTreeHdrTest::less< member_value > less;
+            typedef IntrusiveBinTreeHdrTest::disposer< member_value > disposer;
+        };
         typedef ci::EllenBinTree< cds::gc::HP, key_type, member_value,
             ci::ellen_bintree::make_traits<
                 member_hook
diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_pool_dhp.h b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_pool_dhp.h
new file mode 100644 (file)
index 0000000..8c67b65
--- /dev/null
@@ -0,0 +1,60 @@
+//$$CDS-header$$
+
+#ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_DHP_H
+#define CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_DHP_H
+
+#include "tree/hdr_intrusive_bintree.h"
+#include <cds/intrusive/ellen_bintree_dhp.h>
+
+#include <cds/memory/vyukov_queue_pool.h>
+#include <cds/memory/pool_allocator.h>
+
+namespace tree {
+
+    namespace ellen_bintree_dhp {
+        typedef cds::intrusive::ellen_bintree::node_types<cds::gc::PTB, IntrusiveBinTreeHdrTest::key_type>   node_types;
+        typedef node_types::leaf_node_type                                  leaf_node;
+        typedef IntrusiveBinTreeHdrTest::base_hook_value< leaf_node >       base_value;
+        typedef node_types::internal_node_type                              internal_node;
+        typedef node_types::update_desc_type                                update_desc;
+
+
+        // Internal node pool based on Vyukov's queue
+        struct internal_node_pool_traits : public cds::memory::vyukov_queue_pool_traits
+        {
+            typedef cds::opt::v::dynamic_buffer< cds::any_type > buffer;
+        };
+        typedef cds::memory::lazy_vyukov_queue_pool< internal_node, internal_node_pool_traits > internal_node_pool_type;
+        extern internal_node_pool_type s_InternalNodePool;
+
+        struct internal_node_pool_accessor {
+            typedef internal_node_pool_type::value_type     value_type;
+
+            internal_node_pool_type& operator()() const
+            {
+                return s_InternalNodePool;
+            }
+        };
+
+        // Update descriptor pool based on Vyukov's queue
+        struct update_desc_pool_traits : public cds::memory::vyukov_queue_pool_traits
+        {
+            typedef cds::opt::v::static_buffer< cds::any_type, 16 > buffer;
+        };
+        typedef cds::memory::vyukov_queue_pool< update_desc, update_desc_pool_traits > update_desc_pool_type;
+        extern update_desc_pool_type s_UpdateDescPool;
+
+        struct update_desc_pool_accessor {
+            typedef update_desc_pool_type::value_type     value_type;
+
+            update_desc_pool_type& operator()() const
+            {
+                return s_UpdateDescPool;
+            }
+        };
+
+    } // namespace ellen_bintree_dhp
+
+} // namespace tree
+
+#endif // #ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_DHP_H
diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_pool_ptb.h b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_pool_ptb.h
deleted file mode 100644 (file)
index 17fb5c1..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//$$CDS-header$$
-
-#ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_PTB_H
-#define CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_PTB_H
-
-#include "tree/hdr_intrusive_bintree.h"
-#include <cds/intrusive/ellen_bintree_dhp.h>
-
-#include <cds/memory/vyukov_queue_pool.h>
-#include <cds/memory/pool_allocator.h>
-
-namespace tree {
-
-    namespace ellen_bintree_ptb {
-        typedef cds::intrusive::ellen_bintree::node_types<cds::gc::PTB, IntrusiveBinTreeHdrTest::key_type>   node_types;
-        typedef node_types::leaf_node_type                                  leaf_node;
-        typedef IntrusiveBinTreeHdrTest::base_hook_value< leaf_node >       base_value;
-        typedef node_types::internal_node_type                              internal_node;
-        typedef node_types::update_desc_type                                update_desc;
-
-
-        // Internal node pool based on Vyukov's queue
-        struct internal_node_pool_traits : public cds::memory::vyukov_queue_pool_traits
-        {
-            typedef cds::opt::v::dynamic_buffer< cds::any_type > buffer;
-        };
-        typedef cds::memory::lazy_vyukov_queue_pool< internal_node, internal_node_pool_traits > internal_node_pool_type;
-        extern internal_node_pool_type s_InternalNodePool;
-
-        struct internal_node_pool_accessor {
-            typedef internal_node_pool_type::value_type     value_type;
-
-            internal_node_pool_type& operator()() const
-            {
-                return s_InternalNodePool;
-            }
-        };
-
-        // Update descriptor pool based on Vyukov's queue
-        struct update_desc_pool_traits : public cds::memory::vyukov_queue_pool_traits
-        {
-            typedef cds::opt::v::static_buffer< cds::any_type, 16 > buffer;
-        };
-        typedef cds::memory::vyukov_queue_pool< update_desc, update_desc_pool_traits > update_desc_pool_type;
-        extern update_desc_pool_type s_UpdateDescPool;
-
-        struct update_desc_pool_accessor {
-            typedef update_desc_pool_type::value_type     value_type;
-
-            update_desc_pool_type& operator()() const
-            {
-                return s_UpdateDescPool;
-            }
-        };
-
-    } // namespace ellen_bintree_ptb
-
-} // namespace tree
-
-#endif // #ifndef CDSHDRTEST_INTRUSIVE_ELLEN_BINTREE_POOL_PTB_H
diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_ptb.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_ptb.cpp
deleted file mode 100644 (file)
index 3f95b5c..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-//$$CDS-header$$
-
-#include "tree/hdr_intrusive_bintree.h"
-#include <cds/intrusive/ellen_bintree_dhp.h>
-
-#include "tree/hdr_intrusive_ellen_bintree_pool_ptb.h"
-#include "unit/print_ellenbintree_stat.h"
-
-namespace tree {
-    namespace ci = cds::intrusive;
-    namespace co = cds::opt;
-    namespace {
-        typedef ci::ellen_bintree::node<cds::gc::PTB>                        leaf_node;
-        typedef IntrusiveBinTreeHdrTest::base_hook_value< leaf_node >       base_value;
-
-        struct print_stat {
-            template <typename Tree>
-            void operator()( Tree const& t)
-            {
-                std::cout << t.statistics();
-            }
-        };
-
-        typedef ci::ellen_bintree::internal_node< IntrusiveBinTreeHdrTest::key_type, leaf_node > internal_node;
-        typedef ci::ellen_bintree::update_desc< leaf_node, internal_node >   update_desc;
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_less()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
-            ci::ellen_bintree::make_traits<
-                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
-                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
-                ,co::less< less< base_value > >
-                ,ci::opt::disposer< disposer< base_value > >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_less_stat()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
-            ci::ellen_bintree::make_traits<
-                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
-                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
-                ,co::less< less< base_value > >
-                ,ci::opt::disposer< disposer< base_value > >
-                ,co::stat< ci::ellen_bintree::stat<> >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_cmp()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
-            ci::ellen_bintree::make_traits<
-                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
-                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
-                ,co::compare< compare< base_value > >
-                ,ci::opt::disposer< disposer< base_value > >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_cmpless()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
-            ci::ellen_bintree::make_traits<
-                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
-                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
-                ,co::compare< compare< base_value > >
-                ,co::less< less< base_value > >
-                ,ci::opt::disposer< disposer< base_value > >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_less_ic()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
-            ci::ellen_bintree::make_traits<
-                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
-                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
-                ,co::less< less< base_value > >
-                ,ci::opt::disposer< disposer< base_value > >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_cmp_ic()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
-            ci::ellen_bintree::make_traits<
-                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
-                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
-                ,co::compare< compare< base_value > >
-                ,ci::opt::disposer< disposer< base_value > >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-        void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_cmp_ic_stat()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
-            ci::ellen_bintree::make_traits<
-                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
-                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
-                ,co::compare< compare< base_value > >
-                ,ci::opt::disposer< disposer< base_value > >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< ci::ellen_bintree::stat<> >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_less_pool()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
-            ci::ellen_bintree::make_traits<
-                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
-                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
-                ,co::less< less< base_value > >
-                ,ci::opt::disposer< disposer< base_value > >
-                ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
-                ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_base_less_pool_ic_stat()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, base_value,
-            ci::ellen_bintree::make_traits<
-                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< cds::gc::PTB > > >
-                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
-                ,co::less< less< base_value > >
-                ,ci::opt::disposer< disposer< base_value > >
-                ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
-                ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< ci::ellen_bintree::stat<> >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-
-} //namespace tree
diff --git a/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_ptb_member.cpp b/tests/test-hdr/tree/hdr_intrusive_ellen_bintree_ptb_member.cpp
deleted file mode 100644 (file)
index e0ac4f7..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-//$$CDS-header$$
-
-#include "tree/hdr_intrusive_bintree.h"
-#include <cds/intrusive/ellen_bintree_dhp.h>
-
-#include "tree/hdr_intrusive_ellen_bintree_pool_ptb.h"
-#include "unit/print_ellenbintree_stat.h"
-
-namespace tree {
-    namespace ci = cds::intrusive;
-    namespace co = cds::opt;
-    namespace {
-        typedef ci::ellen_bintree::node<cds::gc::PTB>                        leaf_node;
-        typedef IntrusiveBinTreeHdrTest::member_hook_value< leaf_node >     member_value;
-
-        typedef ci::opt::hook< ci::ellen_bintree::member_hook< offsetof(member_value, hook), co::gc< cds::gc::PTB > > > member_hook;
-
-        struct print_stat {
-            template <typename Tree>
-            void operator()( Tree const& t)
-            {
-                std::cout << t.statistics();
-            }
-        };
-
-        typedef ci::ellen_bintree::internal_node< IntrusiveBinTreeHdrTest::key_type, leaf_node > internal_node;
-        typedef ci::ellen_bintree::update_desc< leaf_node, internal_node >   update_desc;
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_less()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
-            ci::ellen_bintree::make_traits<
-                member_hook
-                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
-                ,co::less< less< member_value > >
-                ,ci::opt::disposer< disposer< member_value > >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_less_stat()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
-            ci::ellen_bintree::make_traits<
-                member_hook
-                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
-                ,co::less< less< member_value > >
-                ,ci::opt::disposer< disposer< member_value > >
-                ,co::stat< ci::ellen_bintree::stat<> >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_cmp()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
-            ci::ellen_bintree::make_traits<
-                member_hook
-                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
-                ,co::compare< compare< member_value > >
-                ,ci::opt::disposer< disposer< member_value > >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_cmpless()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
-            ci::ellen_bintree::make_traits<
-                member_hook
-                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
-                ,co::compare< compare< member_value > >
-                ,co::less< less< member_value > >
-                ,ci::opt::disposer< disposer< member_value > >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_less_ic()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
-            ci::ellen_bintree::make_traits<
-                member_hook
-                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
-                ,co::less< less< member_value > >
-                ,ci::opt::disposer< disposer< member_value > >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_cmp_ic()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
-            ci::ellen_bintree::make_traits<
-                member_hook
-                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
-                ,co::compare< compare< member_value > >
-                ,ci::opt::disposer< disposer< member_value > >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-        void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_cmp_ic_stat()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
-            ci::ellen_bintree::make_traits<
-                member_hook
-                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
-                ,co::compare< compare< member_value > >
-                ,ci::opt::disposer< disposer< member_value > >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< ci::ellen_bintree::stat<> >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_less_pool()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
-            ci::ellen_bintree::make_traits<
-                member_hook
-                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
-                ,co::less< less< member_value > >
-                ,ci::opt::disposer< disposer< member_value > >
-                ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
-                ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-    void IntrusiveBinTreeHdrTest::EllenBinTree_ptb_member_less_pool_ic_stat()
-    {
-        typedef ci::EllenBinTree< cds::gc::PTB, key_type, member_value,
-            ci::ellen_bintree::make_traits<
-                member_hook
-                ,ci::ellen_bintree::key_extractor< key_extractor< member_value > >
-                ,co::less< less< member_value > >
-                ,ci::opt::disposer< disposer< member_value > >
-                ,co::node_allocator< cds::memory::pool_allocator< internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
-                ,ci::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< ci::ellen_bintree::stat<> >
-            >::type
-        > tree_type;
-
-        test<tree_type, print_stat>();
-    }
-
-
-} //namespace tree
index 642f2222ef4d7b8cbcb2dafbe7da9a2fa8a2f72d..8843fb69d6159897fd0abd46e8c52ae87c1ccde7 100644 (file)
@@ -30,14 +30,14 @@ namespace tree {
 
     void IntrusiveBinTreeHdrTest::EllenBinTree_rcu_gpb_base_less()
     {
-        typedef ci::EllenBinTree< rcu_type, key_type, base_value,
-            ci::ellen_bintree::make_traits<
-                ci::opt::hook< ci::ellen_bintree::base_hook< co::gc< rcu_type > > >
-                ,ci::ellen_bintree::key_extractor< key_extractor< base_value > >
-                ,co::less< less< base_value > >
-                ,ci::opt::disposer< disposer< base_value > >
-            >::type
-        > tree_type;
+        struct tree_traits : public ci::ellen_bintree::traits
+        {
+            typedef ci::ellen_bintree::base_hook< co::gc< rcu_type >> hook;
+            typedef IntrusiveBinTreeHdrTest::key_extractor< base_value > key_extractor;
+            typedef IntrusiveBinTreeHdrTest::less< base_value > less;
+            typedef IntrusiveBinTreeHdrTest::disposer< base_value > disposer;
+        };
+        typedef ci::EllenBinTree< rcu_type, key_type, base_value, tree_traits > tree_type;
 
         test_rcu<tree_type, print_stat>();
     }
index 9e55483712b2d0867969defa9d1dd7374a38d3c7..b9d57eaba6a152771d3a6736ce7a9e2d9adbdf6d 100644 (file)
@@ -3,7 +3,7 @@
 #include "tree/hdr_intrusive_bintree.h"
 #include "tree/hdr_intrusive_ellen_bintree_pool_rcu.h"
 #include "tree/hdr_intrusive_ellen_bintree_pool_hp.h"
-#include "tree/hdr_intrusive_ellen_bintree_pool_ptb.h"
+#include "tree/hdr_intrusive_ellen_bintree_pool_dhp.h"
 
 #include "tree/hdr_ellenbintree_set.h"
 #include "tree/hdr_ellenbintree_map.h"
@@ -17,7 +17,7 @@ namespace tree {
         internal_node_pool_type s_InternalNodePool( 1024 * 8 );
         update_desc_pool_type   s_UpdateDescPool;
     }
-    namespace ellen_bintree_ptb {
+    namespace ellen_bintree_dhp {
         internal_node_pool_type s_InternalNodePool( 1024 * 8 );
         update_desc_pool_type   s_UpdateDescPool;
     }