EllenBinTree refactoring
[libcds.git] / tests / unit / map2 / map_types.h
index 3c7c7e0657fabfbb5af2de7b276a0c6b7ca5a728..0050f73b6e3c0086db13f414aec9638a99539e66 100644 (file)
@@ -39,7 +39,7 @@
 
 #include <cds/container/ellen_bintree_map_rcu.h>
 #include <cds/container/ellen_bintree_map_hp.h>
-#include <cds/container/ellen_bintree_map_ptb.h>
+#include <cds/container/ellen_bintree_map_dhp.h>
 
 #include <boost/version.hpp>
 #if BOOST_VERSION >= 104800
@@ -59,6 +59,7 @@
 #include "map2/std_hash_map.h"
 #include "michael_alloc.h"
 #include "print_cuckoo_stat.h"
+#include "print_split_list_stat.h"
 #include "print_skip_list_stat.h"
 #include "print_ellenbintree_stat.h"
 #include "ellen_bintree_update_desc_pool.h"
@@ -929,8 +930,8 @@ namespace map2 {
         typedef cc::SplitListMap< rcu_gpb, Key, Value, SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_GPB_dyn_cmp_stat;
         typedef cc::SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_GPT_dyn_cmp_stat;
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        typedef cc::SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_SHB_dyn_cmp;
-        typedef cc::SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_SHT_dyn_cmp;
+        typedef cc::SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_SHB_dyn_cmp_stat;
+        typedef cc::SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_SHT_dyn_cmp_stat;
 #endif
 
         struct SplitList_Lazy_dyn_cmp_seqcst :
@@ -1291,17 +1292,11 @@ namespace map2 {
             , co::hash< hash2 >
         > RefinableMap_map;
 
-#if (CDS_COMPILER == CDS_COMPILER_MSVC || (CDS_COMPILER == CDS_COMPILER_INTEL && CDS_OS_INTERFACE == CDS_OSI_WINDOWS)) && _MSC_VER < 1600
-        typedef RefinableHashMap_ord<
-            stdext::hash_map< Key, Value, stdext::hash_compare<Key, less > >
-            , co::hash< hash2 >
-        > RefinableMap_hashmap;
-#else
         typedef RefinableHashMap_ord<
             std::unordered_map< Key, Value, hash, equal_to >
             , co::hash< hash2 >
         > RefinableMap_hashmap;
-#endif
+
         typedef RefinableHashMap_ord<
             boost::unordered_map< Key, Value, hash, equal_to >
             , co::hash< hash2 >
@@ -1319,12 +1314,10 @@ namespace map2 {
             , co::hash< hash2 >
         > RefinableMap_boost_map;
 
-//#   ifdef CDS_UNIT_MAP_TYPES_ENABLE_BOOST_FLAT_CONTAINERS
         typedef RefinableHashMap_ord<
             boost::container::flat_map< Key, Value, less >
             , co::hash< hash2 >
         > RefinableMap_boost_flat_map;
-//#   endif
 #endif // #if BOOST_VERSION >= 104800
 
 
@@ -1492,905 +1485,320 @@ namespace map2 {
         > CuckooRefinableMap_vector_ord_storehash;
 
         // ***************************************************************************
-        // SkipListMap - HP
+        // SkipListMap
 
-        class traits_SkipListMap_hp_less_pascal: public cc::skip_list::make_traits <
+        class traits_SkipListMap_less_pascal: public cc::skip_list::make_traits <
                 co::less< less >
                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_less_pascal > SkipListMap_hp_less_pascal;
+        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_hp_less_pascal;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_dhp_less_pascal;
+        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_rcu_gpi_less_pascal;
+        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_rcu_gpb_less_pascal;
+        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_rcu_gpt_less_pascal;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_rcu_shb_less_pascal;
+        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_rcu_sht_less_pascal;
+#endif
 
-        class traits_SkipListMap_hp_less_pascal_seqcst: public cc::skip_list::make_traits <
+        class traits_SkipListMap_less_pascal_seqcst: public cc::skip_list::make_traits <
                 co::less< less >
                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
                 ,co::memory_model< co::v::sequential_consistent >
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_less_pascal_seqcst > SkipListMap_hp_less_pascal_seqcst;
+        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_hp_less_pascal_seqcst;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_dhp_less_pascal_seqcst;
+        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_rcu_gpi_less_pascal_seqcst;
+        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_rcu_gpb_less_pascal_seqcst;
+        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_rcu_gpt_less_pascal_seqcst;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_rcu_shb_less_pascal_seqcst;
+        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_rcu_sht_less_pascal_seqcst;
+#endif
 
-        class traits_SkipListMap_hp_less_pascal_stat: public cc::skip_list::make_traits <
+        class traits_SkipListMap_less_pascal_stat: public cc::skip_list::make_traits <
                 co::less< less >
                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
                 ,co::stat< cc::skip_list::stat<> >
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_less_pascal_stat > SkipListMap_hp_less_pascal_stat;
+        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_hp_less_pascal_stat;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_dhp_less_pascal_stat;
+        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_rcu_gpi_less_pascal_stat;
+        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_rcu_gpb_less_pascal_stat;
+        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_rcu_gpt_less_pascal_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_rcu_shb_less_pascal_stat;
+        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_rcu_sht_less_pascal_stat;
+#endif
 
-        class traits_SkipListMap_hp_cmp_pascal: public cc::skip_list::make_traits <
+        class traits_SkipListMap_cmp_pascal: public cc::skip_list::make_traits <
                 co::compare< compare >
                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_cmp_pascal > SkipListMap_hp_cmp_pascal;
+        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_hp_cmp_pascal;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_dhp_cmp_pascal;
+        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_rcu_gpi_cmp_pascal;
+        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_rcu_gpb_cmp_pascal;
+        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_rcu_gpt_cmp_pascal;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_rcu_shb_cmp_pascal;
+        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_rcu_sht_cmp_pascal;
+#endif
 
-        class traits_SkipListMap_hp_cmp_pascal_stat: public cc::skip_list::make_traits <
+        class traits_SkipListMap_cmp_pascal_stat: public cc::skip_list::make_traits <
                 co::compare< compare >
                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
                 ,co::stat< cc::skip_list::stat<> >
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_cmp_pascal_stat > SkipListMap_hp_cmp_pascal_stat;
+        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_hp_cmp_pascal_stat;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_dhp_cmp_pascal_stat;
+        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_rcu_gpi_cmp_pascal_stat;
+        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_rcu_gpb_cmp_pascal_stat;
+        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_rcu_gpt_cmp_pascal_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_rcu_shb_cmp_pascal_stat;
+        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_rcu_sht_cmp_pascal_stat;
+#endif
 
-        class traits_SkipListMap_hp_less_xorshift: public cc::skip_list::make_traits <
+        class traits_SkipListMap_less_xorshift: public cc::skip_list::make_traits <
                 co::less< less >
                 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_less_xorshift > SkipListMap_hp_less_xorshift;
+        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_hp_less_xorshift;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_dhp_less_xorshift;
+        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_rcu_gpi_less_xorshift;
+        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_rcu_gpb_less_xorshift;
+        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_rcu_gpt_less_xorshift;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_rcu_shb_less_xorshift;
+        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_rcu_sht_less_xorshift;
+#endif
 
-        class traits_SkipListMap_hp_less_xorshift_stat: public cc::skip_list::make_traits <
+        class traits_SkipListMap_less_xorshift_stat: public cc::skip_list::make_traits <
                 co::less< less >
                 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
                 ,co::stat< cc::skip_list::stat<> >
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_less_xorshift_stat > SkipListMap_hp_less_xorshift_stat;
+        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_hp_less_xorshift_stat;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_dhp_less_xorshift_stat;
+        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_rcu_gpi_less_xorshift_stat;
+        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_rcu_gpb_less_xorshift_stat;
+        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_rcu_gpt_less_xorshift_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_rcu_shb_less_xorshift_stat;
+        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_rcu_sht_less_xorshift_stat;
+#endif
 
-        class traits_SkipListMap_hp_cmp_xorshift: public cc::skip_list::make_traits <
+        class traits_SkipListMap_cmp_xorshift: public cc::skip_list::make_traits <
                 co::compare< compare >
                 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_cmp_xorshift > SkipListMap_hp_cmp_xorshift;
+        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_hp_cmp_xorshift;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_dhp_cmp_xorshift;
+        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_rcu_gpi_cmp_xorshift;
+        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_rcu_gpb_cmp_xorshift;
+        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_rcu_gpt_cmp_xorshift;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_rcu_shb_cmp_xorshift;
+        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_rcu_sht_cmp_xorshift;
+#endif
 
-        class traits_SkipListMap_hp_cmp_xorshift_stat: public cc::skip_list::make_traits <
+        class traits_SkipListMap_cmp_xorshift_stat: public cc::skip_list::make_traits <
                 co::compare< compare >
                 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
                 ,co::stat< cc::skip_list::stat<> >
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_cmp_xorshift_stat > SkipListMap_hp_cmp_xorshift_stat;
-
-        // ***************************************************************************
-        // SkipListMap - DHP
+        typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_hp_cmp_xorshift_stat;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_dhp_cmp_xorshift_stat;
+        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_rcu_gpi_cmp_xorshift_stat;
+        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_rcu_gpb_cmp_xorshift_stat;
+        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_rcu_gpt_cmp_xorshift_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_rcu_shb_cmp_xorshift_stat;
+        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_rcu_sht_cmp_xorshift_stat;
+#endif
 
-        class traits_SkipListMap_ptb_less_pascal: public cc::skip_list::make_traits <
-                co::less< less >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_less_pascal > SkipListMap_ptb_less_pascal;
 
-        class traits_SkipListMap_ptb_less_pascal_seqcst: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_less_pascal_seqcst > SkipListMap_ptb_less_pascal_seqcst;
+        // ***************************************************************************
+        // EllenBinTreeMap
+        struct ellen_bintree_props {
+            struct hp_gc {
+                typedef cc::ellen_bintree::map_node<cds::gc::HP, Key, Value>        leaf_node;
+                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
+                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
+            };
+            struct dhp_gc {
+                typedef cc::ellen_bintree::map_node<cds::gc::DHP, Key, Value>       leaf_node;
+                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
+                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
+            };
+            struct gpi {
+                typedef cc::ellen_bintree::map_node<rcu_gpi, Key, Value>            leaf_node;
+                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
+                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
+            };
+            struct gpb {
+                typedef cc::ellen_bintree::map_node<rcu_gpb, Key, Value>            leaf_node;
+                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
+                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
+            };
+            struct gpt {
+                typedef cc::ellen_bintree::map_node<rcu_gpt, Key, Value>            leaf_node;
+                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
+                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
+            };
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+            struct shb {
+                typedef cc::ellen_bintree::map_node<rcu_shb, Key, Value>            leaf_node;
+                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
+                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
+            };
+            struct sht {
+                typedef cc::ellen_bintree::map_node<rcu_sht, Key, Value>            leaf_node;
+                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
+                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
+            };
+#endif
+        };
 
-        class traits_SkipListMap_ptb_less_pascal_stat: public cc::skip_list::make_traits <
+        struct traits_EllenBinTreeMap: public cc::ellen_bintree::make_set_traits<
                 co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_less_pascal_stat > SkipListMap_ptb_less_pascal_stat;
-
-        class traits_SkipListMap_ptb_cmp_pascal: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_cmp_pascal > SkipListMap_ptb_cmp_pascal;
-
-        class traits_SkipListMap_ptb_cmp_pascal_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
+                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
                 ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< cc::skip_list::stat<> >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_cmp_pascal_stat > SkipListMap_ptb_cmp_pascal_stat;
+        struct traits_EllenBinTreeMap_hp : traits_EllenBinTreeMap {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::hp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< cds::gc::HP, Key, Value, traits_EllenBinTreeMap_hp >EllenBinTreeMap_hp;
 
-        class traits_SkipListMap_ptb_less_xorshift: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_less_xorshift > SkipListMap_ptb_less_xorshift;
+        struct traits_EllenBinTreeMap_dhp : traits_EllenBinTreeMap {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::dhp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< cds::gc::DHP, Key, Value, traits_EllenBinTreeMap_dhp >EllenBinTreeMap_dhp;
 
-        class traits_SkipListMap_ptb_less_xorshift_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_less_xorshift_stat > SkipListMap_ptb_less_xorshift_stat;
+        struct traits_EllenBinTreeMap_gpi : traits_EllenBinTreeMap {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::gpi::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< rcu_gpi, Key, Value, traits_EllenBinTreeMap_gpi >EllenBinTreeMap_rcu_gpi;
 
-        class traits_SkipListMap_ptb_cmp_xorshift: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_cmp_xorshift > SkipListMap_ptb_cmp_xorshift;
+        struct traits_EllenBinTreeMap_gpb : traits_EllenBinTreeMap {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::gpb::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< rcu_gpb, Key, Value, traits_EllenBinTreeMap_gpb >EllenBinTreeMap_rcu_gpb;
 
-        class traits_SkipListMap_ptb_cmp_xorshift_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_cmp_xorshift_stat > SkipListMap_ptb_cmp_xorshift_stat;
+        struct traits_EllenBinTreeMap_gpt : traits_EllenBinTreeMap {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::gpt::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< rcu_gpt, Key, Value, traits_EllenBinTreeMap_gpt >EllenBinTreeMap_rcu_gpt;
 
-        // ***************************************************************************
-        // SkipListMap< gc::nogc >
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits_EllenBinTreeMap_shb : traits_EllenBinTreeMap {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::shb::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< rcu_shb, Key, Value, traits_EllenBinTreeMap_shb >EllenBinTreeMap_rcu_shb;
 
-        class traits_SkipListMap_nogc_less_pascal: public cc::skip_list::make_traits <
-                co::less< less >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef NogcMapWrapper_dctor<
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_pascal >
-        > SkipListMap_nogc_less_pascal;
+        struct traits_EllenBinTreeMap_sht : traits_EllenBinTreeMap {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::sht::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< rcu_sht, Key, Value, traits_EllenBinTreeMap_sht >EllenBinTreeMap_rcu_sht;
+#endif
 
-        class traits_SkipListMap_nogc_less_pascal_seqcst: public cc::skip_list::make_traits <
+        struct traits_EllenBinTreeMap_stat: public cc::ellen_bintree::make_set_traits<
                 co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::memory_model< co::v::sequential_consistent >
+                ,cc::ellen_bintree::update_desc_allocator<
+                    cds::memory::pool_allocator< typename ellen_bintree_props::hp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
+                >
+                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
+                ,co::stat< cc::ellen_bintree::stat<> >
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef NogcMapWrapper_dctor<
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_pascal_seqcst >
-        > SkipListMap_nogc_less_pascal_seqcst;
 
-        class traits_SkipListMap_nogc_less_pascal_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef NogcMapWrapper_dctor<
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_pascal_stat >
-        > SkipListMap_nogc_less_pascal_stat;
+        struct traits_EllenBinTreeMap_stat_hp : public traits_EllenBinTreeMap_stat
+        {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::hp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< cds::gc::HP, Key, Value, traits_EllenBinTreeMap_stat_hp > EllenBinTreeMap_hp_stat;
 
-        class traits_SkipListMap_nogc_cmp_pascal: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef NogcMapWrapper_dctor<
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_pascal >
-        > SkipListMap_nogc_cmp_pascal;
+        struct traits_EllenBinTreeMap_stat_dhp : public traits_EllenBinTreeMap_stat
+        {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::dhp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< cds::gc::HP, Key, Value, traits_EllenBinTreeMap_stat_dhp > EllenBinTreeMap_dhp_stat;
 
-        class traits_SkipListMap_nogc_cmp_pascal_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef NogcMapWrapper_dctor<
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_pascal_stat >
-        > SkipListMap_nogc_cmp_pascal_stat;
+        struct traits_EllenBinTreeMap_stat_gpi : public traits_EllenBinTreeMap_stat
+        {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::gpi::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< rcu_gpi, Key, Value, traits_EllenBinTreeMap_stat_gpi > EllenBinTreeMap_rcu_gpi_stat;
 
-        class traits_SkipListMap_nogc_less_xorshift: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef NogcMapWrapper_dctor<
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_xorshift >
-        > SkipListMap_nogc_less_xorshift;
+        struct traits_EllenBinTreeMap_stat_gpb : public traits_EllenBinTreeMap_stat
+        {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::gpb::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< rcu_gpb, Key, Value, traits_EllenBinTreeMap_stat_gpb > EllenBinTreeMap_rcu_gpb_stat;
 
-        class traits_SkipListMap_nogc_less_xorshift_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef NogcMapWrapper_dctor<
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_xorshift_stat >
-        > SkipListMap_nogc_less_xorshift_stat;
+        struct traits_EllenBinTreeMap_stat_gpt : public traits_EllenBinTreeMap_stat
+        {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::gpt::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< rcu_gpt, Key, Value, traits_EllenBinTreeMap_stat_gpt > EllenBinTreeMap_rcu_gpt_stat;
 
-        class traits_SkipListMap_nogc_cmp_xorshift: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-            >::type
-        {};
-        typedef NogcMapWrapper_dctor< cc::SkipListMap<
-            cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_xorshift >
-        > SkipListMap_nogc_cmp_xorshift;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits_EllenBinTreeMap_stat_shb : public traits_EllenBinTreeMap_stat
+        {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::shb::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< rcu_shb, Key, Value, traits_EllenBinTreeMap_stat_shb > EllenBinTreeMap_rcu_shb_stat;
 
-        class traits_SkipListMap_nogc_cmp_xorshift_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef NogcMapWrapper_dctor<
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_xorshift_stat >
-        > SkipListMap_nogc_cmp_xorshift_stat;
+        struct traits_EllenBinTreeMap_stat_sht : public traits_EllenBinTreeMap_stat
+        {
+            typedef cds::memory::pool_allocator< typename ellen_bintree_props::sht::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
+        };
+        typedef cc::EllenBinTreeMap< rcu_sht, Key, Value, traits_EllenBinTreeMap_stat_sht > EllenBinTreeMap_rcu_sht_stat;
+#endif
 
         // ***************************************************************************
-        // SkipListMap - RCU general_instant
+        // Standard implementations
 
-        class traits_SkipListMap_rcu_gpi_less_pascal: public cc::skip_list::make_traits <
-                co::less< less >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_less_pascal > SkipListMap_rcu_gpi_less_pascal;
+        typedef StdMap< Key, Value, cds::SpinLock >             StdMap_Spin;
+        typedef StdMap< Key, Value, lock::NoLock>               StdMap_NoLock;
 
-        class traits_SkipListMap_rcu_gpi_less_pascal_seqcst: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_less_pascal_seqcst > SkipListMap_rcu_gpi_less_pascal_seqcst;
+        typedef StdHashMap< Key, Value, cds::SpinLock >         StdHashMap_Spin;
+        typedef StdHashMap< Key, Value, lock::NoLock >          StdHashMap_NoLock;
 
-        class traits_SkipListMap_rcu_gpi_less_pascal_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_less_pascal_stat > SkipListMap_rcu_gpi_less_pascal_stat;
+    };
 
-        class traits_SkipListMap_rcu_gpi_cmp_pascal: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_cmp_pascal > SkipListMap_rcu_gpi_cmp_pascal;
+    template <typename Map>
+    static inline void print_stat( Map const& m )
+    {}
 
-        class traits_SkipListMap_rcu_gpi_cmp_pascal_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_cmp_pascal_stat > SkipListMap_rcu_gpi_cmp_pascal_stat;
+    template <typename Map>
+    static inline void additional_cleanup( Map& m )
+    {}
 
-        class traits_SkipListMap_rcu_gpi_less_xorshift: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_less_xorshift > SkipListMap_rcu_gpi_less_xorshift;
-
-        class traits_SkipListMap_rcu_gpi_less_xorshift_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_less_xorshift_stat > SkipListMap_rcu_gpi_less_xorshift_stat;
-
-        class traits_SkipListMap_rcu_gpi_cmp_xorshift: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_cmp_xorshift > SkipListMap_rcu_gpi_cmp_xorshift;
-
-        class traits_SkipListMap_rcu_gpi_cmp_xorshift_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_cmp_xorshift_stat > SkipListMap_rcu_gpi_cmp_xorshift_stat;
-
-        // ***************************************************************************
-        // SkipListMap - RCU general_buffered
-
-        class traits_SkipListMap_rcu_gpb_less_pascal: public cc::skip_list::make_traits <
-                co::less< less >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_less_pascal > SkipListMap_rcu_gpb_less_pascal;
-
-        class traits_SkipListMap_rcu_gpb_less_pascal_seqcst: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_less_pascal_seqcst > SkipListMap_rcu_gpb_less_pascal_seqcst;
-
-        class traits_SkipListMap_rcu_gpb_less_pascal_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_less_pascal_stat > SkipListMap_rcu_gpb_less_pascal_stat;
-
-        class traits_SkipListMap_rcu_gpb_cmp_pascal: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_cmp_pascal > SkipListMap_rcu_gpb_cmp_pascal;
-
-        class traits_SkipListMap_rcu_gpb_cmp_pascal_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_cmp_pascal_stat > SkipListMap_rcu_gpb_cmp_pascal_stat;
-
-        class traits_SkipListMap_rcu_gpb_less_xorshift: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_less_xorshift > SkipListMap_rcu_gpb_less_xorshift;
-
-        class traits_SkipListMap_rcu_gpb_less_xorshift_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_less_xorshift_stat > SkipListMap_rcu_gpb_less_xorshift_stat;
-
-        class traits_SkipListMap_rcu_gpb_cmp_xorshift: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_cmp_xorshift > SkipListMap_rcu_gpb_cmp_xorshift;
-
-        class traits_SkipListMap_rcu_gpb_cmp_xorshift_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_cmp_xorshift_stat > SkipListMap_rcu_gpb_cmp_xorshift_stat;
-
-        // ***************************************************************************
-        // SkipListMap - RCU general_threaded
-
-        class traits_SkipListMap_rcu_gpt_less_pascal: public cc::skip_list::make_traits <
-                co::less< less >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_less_pascal > SkipListMap_rcu_gpt_less_pascal;
-
-        class traits_SkipListMap_rcu_gpt_less_pascal_seqcst: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_less_pascal_seqcst > SkipListMap_rcu_gpt_less_pascal_seqcst;
-
-        class traits_SkipListMap_rcu_gpt_less_pascal_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_less_pascal_stat > SkipListMap_rcu_gpt_less_pascal_stat;
-
-        class traits_SkipListMap_rcu_gpt_cmp_pascal: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_cmp_pascal > SkipListMap_rcu_gpt_cmp_pascal;
-
-        class traits_SkipListMap_rcu_gpt_cmp_pascal_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_cmp_pascal_stat > SkipListMap_rcu_gpt_cmp_pascal_stat;
-
-        class traits_SkipListMap_rcu_gpt_less_xorshift: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_less_xorshift > SkipListMap_rcu_gpt_less_xorshift;
-
-        class traits_SkipListMap_rcu_gpt_less_xorshift_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_less_xorshift_stat > SkipListMap_rcu_gpt_less_xorshift_stat;
-
-        class traits_SkipListMap_rcu_gpt_cmp_xorshift: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_cmp_xorshift > SkipListMap_rcu_gpt_cmp_xorshift;
-
-        class traits_SkipListMap_rcu_gpt_cmp_xorshift_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_cmp_xorshift_stat > SkipListMap_rcu_gpt_cmp_xorshift_stat;
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        // ***************************************************************************
-        // SkipListMap - RCU signal_buffered
-
-        class traits_SkipListMap_rcu_shb_less_pascal: public cc::skip_list::make_traits <
-                co::less< less >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_less_pascal > SkipListMap_rcu_shb_less_pascal;
-
-        class traits_SkipListMap_rcu_shb_less_pascal_seqcst: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_less_pascal_seqcst > SkipListMap_rcu_shb_less_pascal_seqcst;
-
-        class traits_SkipListMap_rcu_shb_less_pascal_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_less_pascal_stat > SkipListMap_rcu_shb_less_pascal_stat;
-
-        class traits_SkipListMap_rcu_shb_cmp_pascal: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_cmp_pascal > SkipListMap_rcu_shb_cmp_pascal;
-
-        class traits_SkipListMap_rcu_shb_cmp_pascal_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_cmp_pascal_stat > SkipListMap_rcu_shb_cmp_pascal_stat;
-
-        class traits_SkipListMap_rcu_shb_less_xorshift: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_less_xorshift > SkipListMap_rcu_shb_less_xorshift;
-
-        class traits_SkipListMap_rcu_shb_less_xorshift_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_less_xorshift_stat > SkipListMap_rcu_shb_less_xorshift_stat;
-
-        class traits_SkipListMap_rcu_shb_cmp_xorshift: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_cmp_xorshift > SkipListMap_rcu_shb_cmp_xorshift;
-
-        class traits_SkipListMap_rcu_shb_cmp_xorshift_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_cmp_xorshift_stat > SkipListMap_rcu_shb_cmp_xorshift_stat;
-
-        // ***************************************************************************
-        // SkipListMap - RCU signal_threaded
-
-        class traits_SkipListMap_rcu_sht_less_pascal: public cc::skip_list::make_traits <
-                co::less< less >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_less_pascal > SkipListMap_rcu_sht_less_pascal;
-
-        class traits_SkipListMap_rcu_sht_less_pascal_seqcst: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_less_pascal_seqcst > SkipListMap_rcu_sht_less_pascal_seqcst;
-
-        class traits_SkipListMap_rcu_sht_less_pascal_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_less_pascal_stat > SkipListMap_rcu_sht_less_pascal_stat;
-
-        class traits_SkipListMap_rcu_sht_cmp_pascal: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_cmp_pascal > SkipListMap_rcu_sht_cmp_pascal;
-
-        class traits_SkipListMap_rcu_sht_cmp_pascal_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_cmp_pascal_stat > SkipListMap_rcu_sht_cmp_pascal_stat;
-
-        class traits_SkipListMap_rcu_sht_less_xorshift: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_less_xorshift > SkipListMap_rcu_sht_less_xorshift;
-
-        class traits_SkipListMap_rcu_sht_less_xorshift_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_less_xorshift_stat > SkipListMap_rcu_sht_less_xorshift_stat;
-
-        class traits_SkipListMap_rcu_sht_cmp_xorshift: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_cmp_xorshift > SkipListMap_rcu_sht_cmp_xorshift;
-
-        class traits_SkipListMap_rcu_sht_cmp_xorshift_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-            >::type
-        {};
-        typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_cmp_xorshift_stat > SkipListMap_rcu_sht_cmp_xorshift_stat;
-#endif
-
-
-        // ***************************************************************************
-        // EllenBinTreeMap
-        struct ellen_bintree_props {
-            struct hp_gc {
-                typedef cc::ellen_bintree::map_node<cds::gc::HP, Key, Value>        leaf_node;
-                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
-                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
-            };
-            struct ptb_gc {
-                typedef cc::ellen_bintree::map_node<cds::gc::DHP, Key, Value>       leaf_node;
-                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
-                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
-            };
-            struct gpi {
-                typedef cc::ellen_bintree::map_node<rcu_gpi, Key, Value>            leaf_node;
-                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
-                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
-            };
-            struct gpb {
-                typedef cc::ellen_bintree::map_node<rcu_gpb, Key, Value>            leaf_node;
-                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
-                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
-            };
-            struct gpt {
-                typedef cc::ellen_bintree::map_node<rcu_gpt, Key, Value>            leaf_node;
-                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
-                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
-            };
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-            struct shb {
-                typedef cc::ellen_bintree::map_node<rcu_shb, Key, Value>            leaf_node;
-                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
-                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
-            };
-            struct sht {
-                typedef cc::ellen_bintree::map_node<rcu_sht, Key, Value>            leaf_node;
-                typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
-                typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
-            };
-#endif
-        };
-
-
-        // ***************************************************************************
-        // EllenBinTreeMap - HP
-
-        struct traits_EllenBinTreeMap_hp: public cc::ellen_bintree::make_set_traits<
-                co::less< less >
-                ,cc::ellen_bintree::update_desc_allocator<
-                    cds::memory::pool_allocator< typename ellen_bintree_props::hp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
-                >
-                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::EllenBinTreeMap< cds::gc::HP, Key, Value, traits_EllenBinTreeMap_hp >EllenBinTreeMap_hp;
-
-        struct traits_EllenBinTreeMap_hp_stat: public cc::ellen_bintree::make_set_traits<
-                co::less< less >
-                ,cc::ellen_bintree::update_desc_allocator<
-                    cds::memory::pool_allocator< typename ellen_bintree_props::hp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
-                >
-                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-                ,co::stat< cc::ellen_bintree::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::EllenBinTreeMap< cds::gc::HP, Key, Value, traits_EllenBinTreeMap_hp_stat > EllenBinTreeMap_hp_stat;
-
-        // ***************************************************************************
-        // EllenBinTreeMap - DHP
-
-        struct traits_EllenBinTreeMap_ptb: public cc::ellen_bintree::make_set_traits<
-                co::less< less >
-                ,cc::ellen_bintree::update_desc_allocator<
-                    cds::memory::pool_allocator< typename ellen_bintree_props::ptb_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
-                >
-                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::EllenBinTreeMap< cds::gc::DHP, Key, Value, traits_EllenBinTreeMap_ptb> EllenBinTreeMap_ptb;
-
-        struct traits_EllenBinTreeMap_ptb_stat: public cc::ellen_bintree::make_set_traits<
-                co::less< less >
-                ,cc::ellen_bintree::update_desc_allocator<
-                    cds::memory::pool_allocator< typename ellen_bintree_props::ptb_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
-                >
-                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-                ,co::stat< cc::ellen_bintree::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::EllenBinTreeMap< cds::gc::DHP, Key, Value, traits_EllenBinTreeMap_ptb_stat > EllenBinTreeMap_ptb_stat;
-
-        // ***************************************************************************
-        // EllenBinTreeMap - RCU
-
-        struct traits_EllenBinTreeMap_rcu_gpi: public cc::ellen_bintree::make_set_traits<
-                co::less< less >
-                ,cc::ellen_bintree::update_desc_allocator<
-                    cds::memory::pool_allocator< typename ellen_bintree_props::gpi::update_desc, ellen_bintree_pool::bounded_update_desc_pool_accessor >
-                >
-                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::EllenBinTreeMap< rcu_gpi, Key, Value, traits_EllenBinTreeMap_rcu_gpi > EllenBinTreeMap_rcu_gpi;
-
-        struct traits_EllenBinTreeMap_rcu_gpi_stat: public cc::ellen_bintree::make_set_traits<
-                co::less< less >
-                ,cc::ellen_bintree::update_desc_allocator<
-                    cds::memory::pool_allocator< typename ellen_bintree_props::gpi::update_desc, ellen_bintree_pool::bounded_update_desc_pool_accessor >
-                >
-                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-                ,co::stat< cc::ellen_bintree::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::EllenBinTreeMap< rcu_gpi, Key, Value, traits_EllenBinTreeMap_rcu_gpi_stat > EllenBinTreeMap_rcu_gpi_stat;
-
-        struct traits_EllenBinTreeMap_rcu_gpb: public cc::ellen_bintree::make_set_traits<
-                co::less< less >
-                ,cc::ellen_bintree::update_desc_allocator<
-                    cds::memory::pool_allocator< typename ellen_bintree_props::gpb::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
-                >
-                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::EllenBinTreeMap< rcu_gpb, Key, Value, traits_EllenBinTreeMap_rcu_gpb > EllenBinTreeMap_rcu_gpb;
-
-        struct traits_EllenBinTreeMap_rcu_gpb_stat: public cc::ellen_bintree::make_set_traits<
-                co::less< less >
-                ,cc::ellen_bintree::update_desc_allocator<
-                    cds::memory::pool_allocator< typename ellen_bintree_props::gpb::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
-                >
-                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-                ,co::stat< cc::ellen_bintree::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::EllenBinTreeMap< rcu_gpb, Key, Value, traits_EllenBinTreeMap_rcu_gpb_stat > EllenBinTreeMap_rcu_gpb_stat;
-
-        struct traits_EllenBinTreeMap_rcu_gpt: public cc::ellen_bintree::make_set_traits<
-            co::less< less >
-            ,cc::ellen_bintree::update_desc_allocator<
-            cds::memory::pool_allocator< typename ellen_bintree_props::gpt::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
-            >
-            ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-            ,co::item_counter< cds::atomicity::item_counter >
-        >::type
-        {};
-        typedef cc::EllenBinTreeMap< rcu_gpt, Key, Value, traits_EllenBinTreeMap_rcu_gpt > EllenBinTreeMap_rcu_gpt;
-
-        struct traits_EllenBinTreeMap_rcu_gpt_stat: public cc::ellen_bintree::make_set_traits<
-                co::less< less >
-                ,cc::ellen_bintree::update_desc_allocator<
-                    cds::memory::pool_allocator< typename ellen_bintree_props::gpt::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
-                >
-                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-                ,co::stat< cc::ellen_bintree::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::EllenBinTreeMap< rcu_gpt, Key, Value, traits_EllenBinTreeMap_rcu_gpt_stat > EllenBinTreeMap_rcu_gpt_stat;
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        struct traits_EllenBinTreeMap_rcu_shb: public cc::ellen_bintree::make_set_traits<
-            co::less< less >
-            ,cc::ellen_bintree::update_desc_allocator<
-                cds::memory::pool_allocator< typename ellen_bintree_props::shb::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
-            >
-            ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-            ,co::item_counter< cds::atomicity::item_counter >
-        >::type
-        {};
-        typedef cc::EllenBinTreeMap< rcu_shb, Key, Value, traits_EllenBinTreeMap_rcu_shb > EllenBinTreeMap_rcu_shb;
-
-        struct traits_EllenBinTreeMap_rcu_shb_stat: public cc::ellen_bintree::make_set_traits<
-                co::less< less >
-                ,cc::ellen_bintree::update_desc_allocator<
-                    cds::memory::pool_allocator< typename ellen_bintree_props::shb::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
-                >
-                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< cc::ellen_bintree::stat<> >
-            >::type
-        {};
-        typedef cc::EllenBinTreeMap< rcu_shb, Key, Value, traits_EllenBinTreeMap_rcu_shb_stat > EllenBinTreeMap_rcu_shb_stat;
-
-        struct traits_EllenBinTreeMap_rcu_sht: public cc::ellen_bintree::make_set_traits<
-                co::less< less >
-                ,cc::ellen_bintree::update_desc_allocator<
-                    cds::memory::pool_allocator< typename ellen_bintree_props::sht::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
-                >
-                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::EllenBinTreeMap< rcu_sht, Key, Value, traits_EllenBinTreeMap_rcu_sht > EllenBinTreeMap_rcu_sht;
-
-        struct traits_EllenBinTreeMap_rcu_sht_stat: public cc::ellen_bintree::make_set_traits<
-                co::less< less >
-                ,cc::ellen_bintree::update_desc_allocator<
-                    cds::memory::pool_allocator< typename ellen_bintree_props::sht::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
-                >
-                ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
-                ,co::item_counter< cds::atomicity::item_counter >
-                ,co::stat< cc::ellen_bintree::stat<> >
-            >::type
-        {};
-        typedef cc::EllenBinTreeMap< rcu_sht, Key, Value, traits_EllenBinTreeMap_rcu_sht_stat > EllenBinTreeMap_rcu_sht_stat;
-
-#endif
-
-
-        // ***************************************************************************
-        // Standard implementations
-
-        typedef StdMap< Key, Value, cds::SpinLock >             StdMap_Spin;
-        typedef StdMap< Key, Value, lock::NoLock>               StdMap_NoLock;
-
-        typedef StdHashMap< Key, Value, cds::SpinLock >         StdHashMap_Spin;
-        typedef StdHashMap< Key, Value, lock::NoLock >          StdHashMap_NoLock;
-
-    };
-
-    template <typename Map>
-    static inline void print_stat( Map const& m )
-    {}
-
-    template <typename Map>
-    static inline void additional_cleanup( Map& m )
-    {}
-
-    template <typename Map>
-    static inline void additional_check( Map& m )
-    {}
+    template <typename Map>
+    static inline void additional_check( Map& m )
+    {}
 
 
     template <typename K, typename T, typename Traits >
@@ -2405,6 +1813,12 @@ namespace map2 {
         CPPUNIT_MSG( m.statistics() );
     }
 
+    template <typename GC, typename K, typename T, typename Traits >
+    static inline void print_stat( cc::SplitListMap< GC, K, T, Traits > const& m )
+    {
+        CPPUNIT_MSG( m.statistics() );
+    }
+
     // EllenBinTreeMap
     template <typename GC, typename Key, typename T, typename Traits>
     static inline void print_stat( cc::EllenBinTreeMap<GC, Key, T, Traits> const& s )