From: khizmax Date: Fri, 31 Oct 2014 18:38:20 +0000 (+0300) Subject: Normalized split-list map types in unit-map tests X-Git-Tag: v2.0.0~155 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=5ba3ef582f5da48af267b1d57dfc51f4eded6bed;p=libcds.git Normalized split-list map types in unit-map tests --- diff --git a/tests/unit/map2/map_defs.h b/tests/unit/map2/map_defs.h index 0e949503..f4d8e008 100644 --- a/tests/unit/map2/map_defs.h +++ b/tests/unit/map2/map_defs.h @@ -98,39 +98,55 @@ #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED # define CDSUNIT_DECLARE_SplitList_RCU_signal \ TEST_MAP_EXTRACT(SplitList_Michael_RCU_SHB_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Michael_RCU_SHB_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_SHB_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_SHB_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_SHB_st_less)\ + TEST_MAP_EXTRACT(SplitList_Michael_RCU_SHB_st_less_stat)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_SHT_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Michael_RCU_SHT_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_SHT_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_SHT_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_SHT_st_less)\ + TEST_MAP_EXTRACT(SplitList_Michael_RCU_SHT_st_less_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHB_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHB_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHB_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHB_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHB_st_less)\ + TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHB_st_less_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHT_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHT_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHT_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHT_dyn_less)\ - TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHT_st_less) + TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHT_st_less)\ +TEST_MAP_EXTRACT(SplitList_Lazy_RCU_SHT_st_less_stat) # define CDSUNIT_TEST_SplitList_RCU_signal \ CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_less)\ + CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_less_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_less)\ + CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_less)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_less)\ - CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less) + CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less_stat) #else # define CDSUNIT_DECLARE_SplitList_RCU_signal @@ -139,88 +155,128 @@ #define CDSUNIT_DECLARE_SplitList \ TEST_MAP_EXTRACT(SplitList_Michael_HP_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Michael_HP_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Michael_HP_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Michael_HP_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Michael_HP_st_less)\ + TEST_MAP_EXTRACT(SplitList_Michael_HP_st_less_stat)\ TEST_MAP_EXTRACT(SplitList_Michael_DHP_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Michael_DHP_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Michael_DHP_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Michael_DHP_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Michael_DHP_st_less)\ + TEST_MAP_EXTRACT(SplitList_Michael_DHP_st_less_stat)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPI_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPI_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPI_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPI_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPI_st_less)\ + TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPI_st_less_stat)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPB_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPB_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPB_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPB_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPB_st_less)\ + TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPB_st_less_stat)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPT_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPT_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPT_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPT_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPT_st_less)\ + TEST_MAP_EXTRACT(SplitList_Michael_RCU_GPT_st_less_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_HP_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Lazy_HP_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_HP_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Lazy_HP_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Lazy_HP_st_less)\ + TEST_MAP_EXTRACT(SplitList_Lazy_HP_st_less_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_DHP_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Lazy_DHP_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_DHP_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Lazy_DHP_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Lazy_DHP_st_less)\ + TEST_MAP_EXTRACT(SplitList_Lazy_DHP_st_less_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPI_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPI_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPI_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPI_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPI_st_less)\ + TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPI_st_less_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPB_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPB_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPB_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPB_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPB_st_less)\ + TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPB_st_less_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPT_dyn_cmp)\ + TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPT_dyn_cmp_stat)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPT_st_cmp)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPT_dyn_less)\ TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPT_st_less)\ + TEST_MAP_EXTRACT(SplitList_Lazy_RCU_GPT_st_less_stat)\ CDSUNIT_DECLARE_SplitList_RCU_signal #define CDSUNIT_TEST_SplitList \ CPPUNIT_TEST(SplitList_Michael_HP_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_HP_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_HP_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_HP_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_HP_st_less)\ + CPPUNIT_TEST(SplitList_Michael_HP_st_less_stat)\ CPPUNIT_TEST(SplitList_Michael_DHP_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_DHP_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_DHP_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_DHP_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_DHP_st_less)\ + CPPUNIT_TEST(SplitList_Michael_DHP_st_less_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_less)\ + CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_less_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_less)\ + CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_less_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_less)\ + CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_HP_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_HP_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_HP_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_HP_dyn_less)\ CPPUNIT_TEST(SplitList_Lazy_HP_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_HP_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_DHP_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_DHP_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_DHP_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_DHP_dyn_less)\ CPPUNIT_TEST(SplitList_Lazy_DHP_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_DHP_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_less)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_less)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_less)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_less_stat)\ CDSUNIT_TEST_SplitList_RCU_signal #define CDSUNIT_DECLARE_SplitList_nogc \ diff --git a/tests/unit/map2/map_types.h b/tests/unit/map2/map_types.h index 734c35d9..3c7c7e06 100644 --- a/tests/unit/map2/map_types.h +++ b/tests/unit/map2/map_types.h @@ -679,7 +679,7 @@ namespace map2 { // SplitListMap based on MichaelList // HP - class traits_SplitList_Michael_HP_dyn_cmp: public cc::split_list::make_traits< + struct traits_SplitList_Michael_dyn_cmp: public cc::split_list::make_traits< cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::ordered_list_traits< @@ -689,9 +689,33 @@ namespace map2 { > >::type {}; - typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_dyn_cmp > SplitList_Michael_HP_dyn_cmp; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_HP_dyn_cmp; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_DHP_dyn_cmp; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, traits_SplitList_Michael_dyn_cmp >> SplitList_Michael_NOGC_dyn_cmp; + typedef cc::SplitListMap< rcu_gpi, Key, Value, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_GPI_dyn_cmp; + typedef cc::SplitListMap< rcu_gpb, Key, Value, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_GPB_dyn_cmp; + typedef cc::SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_GPT_dyn_cmp; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_SHB_dyn_cmp; + typedef cc::SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_SHT_dyn_cmp; +#endif + + struct traits_SplitList_Michael_dyn_cmp_stat : public traits_SplitList_Michael_dyn_cmp + { + typedef cc::split_list::stat<> stat; + }; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_HP_dyn_cmp_stat; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_DHP_dyn_cmp_stat; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, traits_SplitList_Michael_dyn_cmp_stat >> SplitList_Michael_NOGC_dyn_cmp_stat; + typedef cc::SplitListMap< rcu_gpi, Key, Value, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_GPI_dyn_cmp_stat; + typedef cc::SplitListMap< rcu_gpb, Key, Value, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_GPB_dyn_cmp_stat; + typedef cc::SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_GPT_dyn_cmp_stat; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_SHB_dyn_cmp_stat; + typedef cc::SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_SHT_dyn_cmp_stat; +#endif - class traits_SplitList_Michael_HP_dyn_cmp_seqcst: public cc::split_list::make_traits< + struct traits_SplitList_Michael_dyn_cmp_seqcst: public cc::split_list::make_traits< cc::split_list::ordered_list ,co::hash< hash > ,co::memory_model< co::v::sequential_consistent > @@ -703,9 +727,18 @@ namespace map2 { > >::type {}; - typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_dyn_cmp_seqcst > SplitList_Michael_HP_dyn_cmp_seqcst; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_HP_dyn_cmp_seqcst; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_DHP_dyn_cmp_seqcst; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, traits_SplitList_Michael_dyn_cmp_seqcst >> SplitList_Michael_NOGC_dyn_cmp_seqcst; + typedef cc::SplitListMap< rcu_gpi, Key, Value, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_GPI_dyn_cmp_seqcst; + typedef cc::SplitListMap< rcu_gpb, Key, Value, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_GPB_dyn_cmp_seqcst; + typedef cc::SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_GPT_dyn_cmp_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_SHB_dyn_cmp_seqcst; + typedef cc::SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_SHT_dyn_cmp_seqcst; +#endif - class traits_SplitList_Michael_HP_st_cmp: public cc::split_list::make_traits< + struct traits_SplitList_Michael_st_cmp: public cc::split_list::make_traits< cc::split_list::ordered_list ,cc::split_list::dynamic_bucket_table< false > ,co::hash< hash > @@ -716,9 +749,18 @@ namespace map2 { > >::type {}; - typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_st_cmp > SplitList_Michael_HP_st_cmp; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_st_cmp > SplitList_Michael_HP_st_cmp; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, traits_SplitList_Michael_st_cmp > SplitList_Michael_DHP_st_cmp; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, traits_SplitList_Michael_st_cmp >> SplitList_Michael_NOGC_st_cmp; + typedef cc::SplitListMap< rcu_gpi, Key, Value, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_GPI_st_cmp; + typedef cc::SplitListMap< rcu_gpb, Key, Value, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_GPB_st_cmp; + typedef cc::SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_GPT_st_cmp; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_SHB_st_cmp; + typedef cc::SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_SHT_st_cmp; +#endif - class traits_SplitList_Michael_HP_st_cmp_seqcst: public cc::split_list::make_traits< + struct traits_SplitList_Michael_st_cmp_seqcst: public cc::split_list::make_traits< cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::dynamic_bucket_table< false > @@ -731,10 +773,19 @@ namespace map2 { > >::type {}; - typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_st_cmp_seqcst > SplitList_Michael_HP_st_cmp_seqcst; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_st_cmp_seqcst > SplitList_Michael_HP_st_cmp_seqcst; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, traits_SplitList_Michael_st_cmp_seqcst > SplitList_Michael_DHP_st_cmp_seqcst; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, traits_SplitList_Michael_st_cmp_seqcst >> SplitList_Michael_NOGC_st_cmp_seqcst; + typedef cc::SplitListMap< rcu_gpi, Key, Value, traits_SplitList_Michael_st_cmp_seqcst > SplitList_Michael_RCU_GPI_st_cmp_seqcst; + typedef cc::SplitListMap< rcu_gpb, Key, Value, traits_SplitList_Michael_st_cmp_seqcst > SplitList_Michael_RCU_GPB_st_cmp_seqcst; + typedef cc::SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_st_cmp_seqcst > SplitList_Michael_RCU_GPT_st_cmp_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_st_cmp_seqcst > SplitList_Michael_RCU_SHB_st_cmp_seqcst; + typedef cc::SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_st_cmp_seqcst > SplitList_Michael_RCU_SHT_st_cmp_seqcst; +#endif //HP + less - class traits_SplitList_Michael_HP_dyn_less: public cc::split_list::make_traits< + struct traits_SplitList_Michael_dyn_less: public cc::split_list::make_traits< cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::ordered_list_traits< @@ -744,9 +795,19 @@ namespace map2 { > >::type {}; - typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_dyn_less > SplitList_Michael_HP_dyn_less; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_dyn_less > SplitList_Michael_HP_dyn_less; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, traits_SplitList_Michael_dyn_less > SplitList_Michael_DHP_dyn_less; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, traits_SplitList_Michael_dyn_less >> SplitList_Michael_NOGC_dyn_less; + typedef cc::SplitListMap< rcu_gpi, Key, Value, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_GPI_dyn_less; + typedef cc::SplitListMap< rcu_gpb, Key, Value, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_GPB_dyn_less; + typedef cc::SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_GPT_dyn_less; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_SHB_dyn_less; + typedef cc::SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_SHT_dyn_less; +#endif + - class traits_SplitList_Michael_HP_dyn_less_seqcst: public cc::split_list::make_traits< + struct traits_SplitList_Michael_dyn_less_seqcst: public cc::split_list::make_traits< cc::split_list::ordered_list ,co::hash< hash > ,co::memory_model< co::v::sequential_consistent > @@ -758,9 +819,18 @@ namespace map2 { > >::type {}; - typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_dyn_less_seqcst > SplitList_Michael_HP_dyn_less_seqcst; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_HP_dyn_less_seqcst; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_DHP_dyn_less_seqcst; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, traits_SplitList_Michael_dyn_less_seqcst >> SplitList_Michael_NOGC_dyn_less_seqcst; + typedef cc::SplitListMap< rcu_gpi, Key, Value, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_GPI_dyn_less_seqcst; + typedef cc::SplitListMap< rcu_gpb, Key, Value, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_GPB_dyn_less_seqcst; + typedef cc::SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_GPT_dyn_less_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_SHB_dyn_less_seqcst; + typedef cc::SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_SHT_dyn_less_seqcst; +#endif - class traits_SplitList_Michael_HP_st_less: public cc::split_list::make_traits< + struct traits_SplitList_Michael_st_less: public cc::split_list::make_traits< cc::split_list::ordered_list ,cc::split_list::dynamic_bucket_table< false > ,co::hash< hash > @@ -771,96 +841,38 @@ namespace map2 { > >::type {}; - typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_st_less > SplitList_Michael_HP_st_less; - - class traits_SplitList_Michael_HP_st_less_seqcst: public cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - {}; - typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_st_less_seqcst > SplitList_Michael_HP_st_less_seqcst; - - // DHP - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_DHP_dyn_cmp; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_st_less > SplitList_Michael_HP_st_less; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, traits_SplitList_Michael_st_less > SplitList_Michael_DHP_st_less; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, traits_SplitList_Michael_st_less >> SplitList_Michael_NOGC_st_less; + typedef cc::SplitListMap< rcu_gpi, Key, Value, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_GPI_st_less; + typedef cc::SplitListMap< rcu_gpb, Key, Value, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_GPB_st_less; + typedef cc::SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_GPT_st_less; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_SHB_st_less; + typedef cc::SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_SHT_st_less; +#endif - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_DHP_dyn_cmp_seqcst; + struct traits_SplitList_Michael_st_less_stat : traits_SplitList_Michael_st_less + { + typedef cc::split_list::stat<> stat; + }; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_st_less_stat > SplitList_Michael_HP_st_less_stat; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, traits_SplitList_Michael_st_less_stat > SplitList_Michael_DHP_st_less_stat; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, traits_SplitList_Michael_st_less_stat >> SplitList_Michael_NOGC_st_less_stat; + typedef cc::SplitListMap< rcu_gpi, Key, Value, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_GPI_st_less_stat; + typedef cc::SplitListMap< rcu_gpb, Key, Value, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_GPB_st_less_stat; + typedef cc::SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_GPT_st_less_stat; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_SHB_st_less_stat; + typedef cc::SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_SHT_st_less_stat; +#endif - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_DHP_st_cmp; - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< + class traits_SplitList_Michael_st_less_seqcst: public cc::split_list::make_traits< cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::dynamic_bucket_table< false > ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_DHP_st_cmp_seqcst; - - // DHP + less - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_DHP_dyn_less; - - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > ,cc::split_list::ordered_list_traits< typename cc::michael_list::make_traits< co::less< less > @@ -868,1583 +880,242 @@ namespace map2 { >::type > >::type - > SplitList_Michael_DHP_dyn_less_seqcst; - - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_DHP_st_less; + {}; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_HP_st_less_seqcst; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_DHP_st_less_seqcst; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, traits_SplitList_Michael_st_less_seqcst >> SplitList_Michael_NOGC_st_less_seqcst; + typedef cc::SplitListMap< rcu_gpi, Key, Value, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_GPI_st_less_seqcst; + typedef cc::SplitListMap< rcu_gpb, Key, Value, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_GPB_st_less_seqcst; + typedef cc::SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_GPT_st_less_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_SHB_st_less_seqcst; + typedef cc::SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_SHT_st_less_seqcst; +#endif - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_DHP_st_less_seqcst; - // RCU - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_dyn_cmp; + // *************************************************************************** + // SplitListMap based on LazyKVList - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct SplitList_Lazy_dyn_cmp : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< + typename cc::lazy_list::make_traits< co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > >::type > >::type - > SplitList_Michael_RCU_GPI_dyn_cmp_seqcst; + {}; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, SplitList_Lazy_dyn_cmp > SplitList_Lazy_HP_dyn_cmp; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, SplitList_Lazy_dyn_cmp > SplitList_Lazy_DHP_dyn_cmp; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, SplitList_Lazy_dyn_cmp >> SplitList_Lazy_NOGC_dyn_cmp; + typedef cc::SplitListMap< rcu_gpi, Key, Value, SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_GPI_dyn_cmp; + typedef cc::SplitListMap< rcu_gpb, Key, Value, SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_GPB_dyn_cmp; + typedef cc::SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_GPT_dyn_cmp; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHB_dyn_cmp; + typedef cc::SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHT_dyn_cmp; +#endif - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_st_cmp; + struct SplitList_Lazy_dyn_cmp_stat : public SplitList_Lazy_dyn_cmp + { + typedef cc::split_list::stat<> stat; + }; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_HP_dyn_cmp_stat; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_DHP_dyn_cmp_stat; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, SplitList_Lazy_dyn_cmp_stat >> SplitList_Lazy_NOGC_dyn_cmp_stat; + typedef cc::SplitListMap< rcu_gpi, Key, Value, SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_GPI_dyn_cmp_stat; + 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; +#endif - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct SplitList_Lazy_dyn_cmp_seqcst : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > ,co::memory_model< co::v::sequential_consistent > ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< + typename cc::lazy_list::make_traits< co::compare< compare > ,co::memory_model< co::v::sequential_consistent > >::type > >::type - > SplitList_Michael_RCU_GPI_st_cmp_seqcst; - - // RCU_GPI + less - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_dyn_less; - - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_dyn_less_seqcst; - - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_st_less; + {}; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_HP_dyn_cmp_seqcst; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_DHP_dyn_cmp_seqcst; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, SplitList_Lazy_dyn_cmp_seqcst >> SplitList_Lazy_NOGC_dyn_cmp_seqcst; + typedef cc::SplitListMap< rcu_gpi, Key, Value, SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_GPI_dyn_cmp_seqcst; + typedef cc::SplitListMap< rcu_gpb, Key, Value, SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_GPB_dyn_cmp_seqcst; + typedef cc::SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_GPT_dyn_cmp_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_SHB_dyn_cmp_seqcst; + typedef cc::SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_SHT_dyn_cmp_seqcst; +#endif - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > + struct SplitList_Lazy_st_cmp : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_st_less_seqcst; - - // - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_GPB_dyn_cmp; - - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< + typename cc::lazy_list::make_traits< co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > >::type > >::type - > SplitList_Michael_RCU_GPB_dyn_cmp_seqcst; + {}; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, SplitList_Lazy_st_cmp > SplitList_Lazy_HP_st_cmp; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, SplitList_Lazy_st_cmp > SplitList_Lazy_DHP_st_cmp; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, SplitList_Lazy_st_cmp >> SplitList_Lazy_NOGC_st_cmp; + typedef cc::SplitListMap< rcu_gpi, Key, Value, SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_GPI_st_cmp; + typedef cc::SplitListMap< rcu_gpb, Key, Value, SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_GPB_st_cmp; + typedef cc::SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_GPT_st_cmp; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_SHB_st_cmp; + typedef cc::SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_SHT_st_cmp; +#endif - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_GPB_st_cmp; - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct SplitList_Lazy_st_cmp_seqcst : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::dynamic_bucket_table< false > ,co::memory_model< co::v::sequential_consistent > ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< + typename cc::lazy_list::make_traits< co::compare< compare > ,co::memory_model< co::v::sequential_consistent > >::type > >::type - > SplitList_Michael_RCU_GPB_st_cmp_seqcst; + {}; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, SplitList_Lazy_st_cmp_seqcst> SplitList_Lazy_HP_st_cmp_seqcst; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, SplitList_Lazy_st_cmp_seqcst> SplitList_Lazy_DHP_st_cmp_seqcst; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, SplitList_Lazy_st_cmp_seqcst >> SplitList_Lazy_NOGC_st_cmp_seqcst; + typedef cc::SplitListMap< rcu_gpi, Key, Value, SplitList_Lazy_st_cmp_seqcst> SplitList_Lazy_RCU_GPI_st_cmp_seqcst; + typedef cc::SplitListMap< rcu_gpb, Key, Value, SplitList_Lazy_st_cmp_seqcst> SplitList_Lazy_RCU_GPB_st_cmp_seqcst; + typedef cc::SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_st_cmp_seqcst> SplitList_Lazy_RCU_GPT_st_cmp_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_st_cmp_seqcst> SplitList_Lazy_RCU_SHB_st_cmp_seqcst; + typedef cc::SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_st_cmp_seqcst> SplitList_Lazy_RCU_SHT_st_cmp_seqcst; +#endif - // RCU_GPB + less - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + + struct SplitList_Lazy_dyn_less : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< + typename cc::lazy_list::make_traits< co::less< less > >::type > >::type - > SplitList_Michael_RCU_GPB_dyn_less; + {}; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, SplitList_Lazy_dyn_less > SplitList_Lazy_HP_dyn_less; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, SplitList_Lazy_dyn_less > SplitList_Lazy_DHP_dyn_less; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, SplitList_Lazy_dyn_less >> SplitList_Lazy_NOGC_dyn_less; + typedef cc::SplitListMap< rcu_gpi, Key, Value, SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_GPI_dyn_less; + typedef cc::SplitListMap< rcu_gpb, Key, Value, SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_GPB_dyn_less; + typedef cc::SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_GPT_dyn_less; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_SHB_dyn_less; + typedef cc::SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_SHT_dyn_less; +#endif - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct SplitList_Lazy_dyn_less_seqcst: + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > ,co::memory_model< co::v::sequential_consistent > ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< + typename cc::lazy_list::make_traits< co::less< less > ,co::memory_model< co::v::sequential_consistent > >::type > >::type - > SplitList_Michael_RCU_GPB_dyn_less_seqcst; + {}; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_HP_dyn_less_seqcst; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_DHP_dyn_less_seqcst; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, SplitList_Lazy_dyn_less_seqcst >> SplitList_Lazy_NOGC_dyn_less_seqcst; + typedef cc::SplitListMap< rcu_gpi, Key, Value, SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_GPI_dyn_less_seqcst; + typedef cc::SplitListMap< rcu_gpb, Key, Value, SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_GPB_dyn_less_seqcst; + typedef cc::SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_GPT_dyn_less_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_SHB_dyn_less_seqcst; + typedef cc::SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_SHT_dyn_less_seqcst; +#endif - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct SplitList_Lazy_st_less : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,cc::split_list::dynamic_bucket_table< false > ,co::hash< hash > ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< + typename cc::lazy_list::make_traits< co::less< less > >::type > >::type - > SplitList_Michael_RCU_GPB_st_less; + {}; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, SplitList_Lazy_st_less > SplitList_Lazy_HP_st_less; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, SplitList_Lazy_st_less > SplitList_Lazy_DHP_st_less; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, SplitList_Lazy_st_less >> SplitList_Lazy_NOGC_st_less; + typedef cc::SplitListMap< rcu_gpi, Key, Value, SplitList_Lazy_st_less > SplitList_Lazy_RCU_GPI_st_less; + typedef cc::SplitListMap< rcu_gpb, Key, Value, SplitList_Lazy_st_less > SplitList_Lazy_RCU_GPB_st_less; + typedef cc::SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_st_less > SplitList_Lazy_RCU_GPT_st_less; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_st_less > SplitList_Lazy_RCU_SHB_st_less; + typedef cc::SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_st_less > SplitList_Lazy_RCU_SHT_st_less; +#endif - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct SplitList_Lazy_st_less_stat : public SplitList_Lazy_st_less + { + typedef cc::split_list::stat<> stat; + }; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, SplitList_Lazy_st_less_stat > SplitList_Lazy_HP_st_less_stat; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, SplitList_Lazy_st_less_stat > SplitList_Lazy_DHP_st_less_stat; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, SplitList_Lazy_st_less_stat >> SplitList_Lazy_NOGC_st_less_stat; + typedef cc::SplitListMap< rcu_gpi, Key, Value, SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_GPI_st_less_stat; + typedef cc::SplitListMap< rcu_gpb, Key, Value, SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_GPB_st_less_stat; + typedef cc::SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_GPT_st_less_stat; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_SHB_st_less_stat; + typedef cc::SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_SHT_st_less_stat; +#endif + + struct SplitList_Lazy_st_less_seqcst : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::dynamic_bucket_table< false > ,co::memory_model< co::v::sequential_consistent > ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< + typename cc::lazy_list::make_traits< co::less< less > ,co::memory_model< co::v::sequential_consistent > >::type > >::type - > SplitList_Michael_RCU_GPB_st_less_seqcst; - - // - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_dyn_cmp; - - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_dyn_cmp_seqcst; - - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_st_cmp; - - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_st_cmp_seqcst; - - // RCU_GPT + less - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_dyn_less; - - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_dyn_less_seqcst; - - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_st_less; - - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_st_less_seqcst; - -#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_dyn_cmp; - - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_dyn_cmp_seqcst; - - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_st_cmp; - - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_st_cmp_seqcst; - - // RCU_SHB + less - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_dyn_less; - - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_dyn_less_seqcst; - - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_st_less; - - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_st_less_seqcst; - - // - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_dyn_cmp; - - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_dyn_cmp_seqcst; - - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_st_cmp; - - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_st_cmp_seqcst; - - // RCU_SHT + less - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_dyn_less; - - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_dyn_less_seqcst; - - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_st_less; - - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_st_less_seqcst; -#endif - - // gc::nogc - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > > SplitList_Michael_NOGC_dyn_cmp; - - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > > SplitList_Michael_NOGC_dyn_cmp_seqcst; - - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > > SplitList_Michael_NOGC_st_cmp; - - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > > SplitList_Michael_NOGC_st_cmp_seqcst; - - //NOGC + less - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > > SplitList_Michael_NOGC_dyn_less; - - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > > SplitList_Michael_NOGC_dyn_less_seqcst; - - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > > SplitList_Michael_NOGC_st_less; - - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > > SplitList_Michael_NOGC_st_less_seqcst; - - - // *************************************************************************** - // SplitListMap based on LazyKVList - - // HP - typedef cc::SplitListMap< cds::gc::HP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_HP_dyn_cmp; - - typedef cc::SplitListMap< cds::gc::HP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_HP_dyn_cmp_seqcst; - - typedef cc::SplitListMap< cds::gc::HP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_HP_st_cmp; - - typedef cc::SplitListMap< cds::gc::HP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_HP_st_cmp_seqcst; - - - // HP + less - typedef cc::SplitListMap< cds::gc::HP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_HP_dyn_less; - - typedef cc::SplitListMap< cds::gc::HP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_HP_dyn_less_seqcst; - - typedef cc::SplitListMap< cds::gc::HP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_HP_st_less; - - typedef cc::SplitListMap< cds::gc::HP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_HP_st_less_seqcst; - - // DHP - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_DHP_dyn_cmp; - - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_DHP_dyn_cmp_seqcst; - - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_DHP_st_cmp; - - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_DHP_st_cmp_seqcst; - - // DHP + less - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_DHP_dyn_less; - - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_DHP_dyn_less_seqcst; - - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_DHP_st_less; - - typedef cc::SplitListMap< cds::gc::DHP, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_DHP_st_less_seqcst; - - // RCU - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_dyn_cmp; - - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_dyn_cmp_seqcst; - - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_st_cmp; - - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_st_cmp_seqcst; - - // RCU_GPI + less - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_dyn_less; - - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_dyn_less_seqcst; - - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_st_less; - - typedef cc::SplitListMap< rcu_gpi, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_st_less_seqcst; - - // - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_dyn_cmp; - - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_dyn_cmp_seqcst; - - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_st_cmp; - - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_st_cmp_seqcst; - - // RCU_GPB + less - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_dyn_less; - - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_dyn_less_seqcst; - - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_st_less; - - typedef cc::SplitListMap< rcu_gpb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_st_less_seqcst; - - // - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_GPT_dyn_cmp; - - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPT_dyn_cmp_seqcst; - - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_GPT_st_cmp; - - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPT_st_cmp_seqcst; - - // RCU_GPT + less - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_GPT_dyn_less; - - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPT_dyn_less_seqcst; - - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_GPT_st_less; - - typedef cc::SplitListMap< rcu_gpt, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPT_st_less_seqcst; - + {}; + typedef cc::SplitListMap< cds::gc::HP, Key, Value, SplitList_Lazy_st_less_seqcst > SplitList_Lazy_HP_st_less_seqcst; + typedef cc::SplitListMap< cds::gc::DHP, Key, Value, SplitList_Lazy_st_less_seqcst > SplitList_Lazy_DHP_st_less_seqcst; + typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, SplitList_Lazy_st_less_seqcst >> SplitList_Lazy_NOGC_st_less_seqcst; + typedef cc::SplitListMap< rcu_gpi, Key, Value, SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_GPI_st_less_seqcst; + typedef cc::SplitListMap< rcu_gpb, Key, Value, SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_GPB_st_less_seqcst; + typedef cc::SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_GPT_st_less_seqcst; #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_dyn_cmp; - - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_dyn_cmp_seqcst; - - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_st_cmp; - - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_st_cmp_seqcst; - - // RCU_SHB + less - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_dyn_less; - - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_dyn_less_seqcst; - - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_st_less; - - typedef cc::SplitListMap< rcu_shb, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_st_less_seqcst; - - // - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_SHT_dyn_cmp; - - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_SHT_dyn_cmp_seqcst; - - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_SHT_st_cmp; - - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_SHT_st_cmp_seqcst; - - // RCU_SHT + less - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_SHT_dyn_less; - - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_SHT_dyn_less_seqcst; - - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_SHT_st_less; - - typedef cc::SplitListMap< rcu_sht, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_SHT_st_less_seqcst; + typedef cc::SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_SHB_st_less_seqcst; + typedef cc::SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_SHT_st_less_seqcst; #endif - // gc::nogc - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > > SplitList_Lazy_NOGC_dyn_cmp; - - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > > SplitList_Lazy_NOGC_dyn_cmp_seqcst; - - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > > SplitList_Lazy_NOGC_st_cmp; - - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > > SplitList_Lazy_NOGC_st_cmp_seqcst; - - - // NOGC + less - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > > SplitList_Lazy_NOGC_dyn_less; - - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > > SplitList_Lazy_NOGC_dyn_less_seqcst; - - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > > SplitList_Lazy_NOGC_st_less; - - typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > > SplitList_Lazy_NOGC_st_less_seqcst; // ***************************************************************************