3 #include "map/hdr_map.h"
4 #include <cds/container/michael_list_nogc.h>
5 #include <cds/container/split_list_map_nogc.h>
10 struct nogc_cmp_traits: public cc::split_list::traits
12 typedef cc::michael_list_tag ordered_list;
13 typedef HashMapHdrTest::hash_int hash;
14 typedef HashMapHdrTest::simple_item_counter item_counter;
15 typedef cc::opt::v::relaxed_ordering memory_model;
16 enum { dynamic_bucket_table = false };
18 struct ordered_list_traits: public cc::michael_list::traits
20 typedef HashMapHdrTest::cmp compare;
24 struct nogc_less_traits: public cc::split_list::traits
26 typedef cc::michael_list_tag ordered_list;
27 typedef HashMapHdrTest::hash_int hash;
28 typedef HashMapHdrTest::simple_item_counter item_counter;
29 typedef cc::opt::v::sequential_consistent memory_model;
30 enum { dynamic_bucket_table = false };
32 struct ordered_list_traits: public cc::michael_list::traits
34 typedef HashMapHdrTest::less less;
38 struct nogc_cmpmix_traits: public cc::split_list::traits
40 typedef cc::michael_list_tag ordered_list;
41 typedef HashMapHdrTest::hash_int hash;
42 typedef HashMapHdrTest::simple_item_counter item_counter;
44 struct ordered_list_traits: public cc::michael_list::traits
46 typedef HashMapHdrTest::cmp compare;
47 typedef std::less<HashMapHdrTest::key_type> less;
51 struct nogc_cmpmix_stat_traits : public nogc_cmpmix_traits
53 typedef cc::split_list::stat<> stat;
57 void HashMapHdrTest::Split_nogc_cmp()
59 // traits-based version
60 typedef cc::SplitListMap< cds::gc::nogc, key_type, value_type, nogc_cmp_traits > map_type;
61 test_int_nogc< map_type >();
63 // option-based version
64 typedef cc::SplitListMap< cds::gc::nogc,
67 cc::split_list::make_traits<
68 cc::split_list::ordered_list<cc::michael_list_tag>
69 ,cc::opt::hash< hash_int >
70 ,cc::opt::item_counter< simple_item_counter >
71 ,cc::opt::memory_model< cc::opt::v::relaxed_ordering >
72 ,cc::split_list::dynamic_bucket_table< true >
73 ,cc::split_list::ordered_list_traits<
74 cc::michael_list::make_traits<
75 cc::opt::compare< cmp >
80 test_int_nogc< opt_map >();
83 void HashMapHdrTest::Split_nogc_less()
85 // traits-based version
86 typedef cc::SplitListMap< cds::gc::nogc, key_type, value_type, nogc_less_traits > map_type;
87 test_int_nogc< map_type >();
89 // option-based version
90 typedef cc::SplitListMap< cds::gc::nogc,
93 cc::split_list::make_traits<
94 cc::split_list::ordered_list<cc::michael_list_tag>
95 ,cc::opt::hash< hash_int >
96 ,cc::opt::item_counter< simple_item_counter >
97 ,cc::opt::memory_model< cc::opt::v::relaxed_ordering >
98 ,cc::split_list::dynamic_bucket_table< true >
99 ,cc::split_list::ordered_list_traits<
100 cc::michael_list::make_traits<
101 cc::opt::less< less >
106 test_int_nogc< opt_map >();
109 void HashMapHdrTest::Split_nogc_cmpmix()
111 // traits-based version
112 typedef cc::SplitListMap< cds::gc::nogc, key_type, value_type, nogc_cmpmix_traits > map_type;
113 test_int_nogc< map_type >();
115 // option-based version
116 typedef cc::SplitListMap< cds::gc::nogc,
119 cc::split_list::make_traits<
120 cc::split_list::ordered_list<cc::michael_list_tag>
121 ,cc::opt::hash< hash_int >
122 ,cc::opt::item_counter< simple_item_counter >
123 , cc::opt::stat< cc::split_list::empty_stat >
124 ,cc::split_list::ordered_list_traits<
125 cc::michael_list::make_traits<
126 cc::opt::less< std::less<key_type> >
127 ,cc::opt::compare< cmp >
132 test_int_nogc< opt_map >();
135 void HashMapHdrTest::Split_nogc_cmpmix_stat()
137 // traits-based version
138 typedef cc::SplitListMap< cds::gc::nogc, key_type, value_type, nogc_cmpmix_stat_traits > map_type;
139 test_int_nogc< map_type >();
141 // option-based version
142 typedef cc::SplitListMap< cds::gc::nogc,
145 cc::split_list::make_traits<
146 cc::split_list::ordered_list<cc::michael_list_tag>
147 ,cc::opt::hash< hash_int >
148 ,cc::opt::item_counter< simple_item_counter >
149 ,cc::opt::stat< cc::split_list::stat<> >
150 ,cc::split_list::ordered_list_traits<
151 cc::michael_list::make_traits<
152 cc::opt::less< std::less<key_type> >
153 ,cc::opt::compare< cmp >
158 test_int_nogc< opt_map >();