3 #ifndef _CDSUNIT_MAP2_MAP_TYPES_H
4 #define _CDSUNIT_MAP2_MAP_TYPES_H
6 #include <cds/urcu/general_instant.h>
7 #include <cds/urcu/general_buffered.h>
8 #include <cds/urcu/general_threaded.h>
9 #include <cds/urcu/signal_buffered.h>
10 #include <cds/urcu/signal_threaded.h>
12 #include <cds/container/michael_kvlist_hp.h>
13 #include <cds/container/michael_kvlist_hrc.h>
14 #include <cds/container/michael_kvlist_ptb.h>
15 #include <cds/container/michael_kvlist_rcu.h>
16 #include <cds/container/michael_kvlist_nogc.h>
18 #include <cds/container/lazy_kvlist_hp.h>
19 #include <cds/container/lazy_kvlist_hrc.h>
20 #include <cds/container/lazy_kvlist_ptb.h>
21 #include <cds/container/lazy_kvlist_rcu.h>
22 #include <cds/container/lazy_kvlist_nogc.h>
24 #include <cds/container/michael_map.h>
25 #include <cds/container/michael_map_rcu.h>
26 #include <cds/container/michael_map_nogc.h>
28 #include <cds/container/split_list_map.h>
29 #include <cds/container/split_list_map_rcu.h>
30 #include <cds/container/split_list_map_nogc.h>
32 #include <cds/container/striped_map/std_list.h>
33 #include <cds/container/striped_map/std_map.h>
34 #include <cds/container/striped_map/std_hash_map.h>
35 #include <cds/container/cuckoo_map.h>
37 #include <cds/container/skip_list_map_hp.h>
38 #include <cds/container/skip_list_map_hrc.h>
39 #include <cds/container/skip_list_map_ptb.h>
40 #include <cds/container/skip_list_map_rcu.h>
41 #include <cds/container/skip_list_map_nogc.h>
43 #include <cds/container/ellen_bintree_map_rcu.h>
44 #include <cds/container/ellen_bintree_map_hp.h>
45 #include <cds/container/ellen_bintree_map_ptb.h>
47 #include <boost/version.hpp>
48 #if BOOST_VERSION >= 104800
49 # include <cds/container/striped_map/boost_list.h>
50 # include <cds/container/striped_map/boost_slist.h>
51 # include <cds/container/striped_map/boost_map.h>
52 # include <cds/container/striped_map/boost_flat_map.h>
54 #include <cds/container/striped_map/boost_unordered_map.h>
55 #include <cds/container/striped_map.h>
57 #include <cds/lock/spinlock.h>
59 #include "cppunit/cppunit_mini.h"
60 #include "lock/nolock.h"
61 #include "map2/std_map.h"
62 #include "map2/std_hash_map.h"
63 #include "michael_alloc.h"
64 #include "print_cuckoo_stat.h"
65 #include "print_skip_list_stat.h"
66 #include "print_ellenbintree_stat.h"
67 #include "ellen_bintree_update_desc_pool.h"
70 namespace cc = cds::container;
71 namespace co = cds::opt;
73 typedef cds::urcu::gc< cds::urcu::general_instant<> > rcu_gpi;
74 typedef cds::urcu::gc< cds::urcu::general_buffered<> > rcu_gpb;
75 typedef cds::urcu::gc< cds::urcu::general_threaded<> > rcu_gpt;
76 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
77 typedef cds::urcu::gc< cds::urcu::signal_buffered<> > rcu_shb;
78 typedef cds::urcu::gc< cds::urcu::signal_threaded<> > rcu_sht;
81 template <typename Key>
83 int operator ()(Key const& k1, Key const& k2) const
85 if ( std::less<Key>( k1, k2 ) )
87 return std::less<Key>( k2, k1 ) ? 1 : 0;
91 #define CDSUNIT_INT_COMPARE(t) template <> struct cmp<t> { int operator()( t k1, t k2 ){ return (int)(k1 - k2); } }
92 CDSUNIT_INT_COMPARE(char);
93 CDSUNIT_INT_COMPARE(unsigned char);
94 CDSUNIT_INT_COMPARE(int);
95 CDSUNIT_INT_COMPARE(unsigned int);
96 CDSUNIT_INT_COMPARE(long);
97 CDSUNIT_INT_COMPARE(unsigned long);
98 CDSUNIT_INT_COMPARE(long long);
99 CDSUNIT_INT_COMPARE(unsigned long long);
100 #undef CDSUNIT_INT_COMPARE
103 struct cmp<std::string>
105 int operator()(std::string const& s1, std::string const& s2)
107 return s1.compare( s2 );
109 int operator()(std::string const& s1, char const * s2)
111 return s1.compare( s2 );
113 int operator()(char const * s1, std::string const& s2)
115 return -s2.compare( s1 );
119 template <typename K, typename V, CDS_DECL_OPTIONS10>
120 class CuckooStripedMap:
121 public cc::CuckooMap< K, V,
122 typename cc::cuckoo::make_traits<
123 co::mutex_policy< cc::cuckoo::striping<> >
129 typedef typename cc::cuckoo::make_traits<
130 co::mutex_policy< cc::cuckoo::striping<> >
132 >::type cuckoo_traits;
134 typedef cc::CuckooMap< K, V, cuckoo_traits > cuckoo_base_class;
137 CuckooStripedMap( size_t nCapacity, size_t nLoadFactor )
138 : cuckoo_base_class( nCapacity / (nLoadFactor * 16), (unsigned int) 4 )
141 template <typename Q, typename Pred>
142 bool erase_with( Q const& key, Pred pred )
144 return cuckoo_base_class::erase_with( key, typename std::conditional< cuckoo_base_class::c_isSorted, Pred, typename Pred::equal_to>::type() );
148 template <typename K, typename V, CDS_DECL_OPTIONS10>
149 class CuckooRefinableMap:
150 public cc::CuckooMap< K, V,
151 typename cc::cuckoo::make_traits<
152 co::mutex_policy< cc::cuckoo::refinable<> >
158 typedef typename cc::cuckoo::make_traits<
159 co::mutex_policy< cc::cuckoo::refinable<> >
161 >::type cuckoo_traits;
163 typedef cc::CuckooMap< K, V, cuckoo_traits > cuckoo_base_class;
166 CuckooRefinableMap( size_t nCapacity, size_t nLoadFactor )
167 : cuckoo_base_class( nCapacity / (nLoadFactor * 16), (unsigned int) 4 )
170 template <typename Q, typename Pred>
171 bool erase_with( Q const& key, Pred pred )
173 return cuckoo_base_class::erase_with( key, typename std::conditional< cuckoo_base_class::c_isSorted, Pred, typename Pred::equal_to>::type() );
177 template <typename Key, typename Value>
179 typedef co::v::hash<Key> key_hash;
180 typedef std::less<Key> less;
181 typedef cmp<Key> compare;
184 bool operator()( Key const& k1, Key const& k2 ) const
186 return compare()( k1, k2 ) == 0;
190 struct hash: public key_hash
192 size_t operator()( Key const& k ) const
194 return key_hash::operator()( k );
196 template <typename Q>
197 size_t operator()( Q const& k ) const
199 return key_hash::operator()( k );
203 struct hash2: public key_hash
205 size_t operator()( Key const& k ) const
207 size_t seed = ~key_hash::operator ()( k );
208 boost::hash_combine( seed, k );
211 template <typename Q>
212 size_t operator()( Q const& k ) const
214 size_t seed = ~key_hash::operator()( k );
215 boost::hash_combine( seed, k );
220 // ***************************************************************************
223 typedef cc::MichaelKVList< cds::gc::HP, Key, Value,
224 typename cc::michael_list::make_traits<
225 co::compare< compare >
227 > MichaelList_HP_cmp_stdAlloc;
229 typedef cc::MichaelKVList< cds::gc::HP, Key, Value,
230 typename cc::michael_list::make_traits<
231 co::compare< compare >
232 ,co::memory_model< co::v::sequential_consistent >
234 > MichaelList_HP_cmp_stdAlloc_seqcst;
236 typedef cc::MichaelKVList< cds::gc::HP, Key, Value,
237 typename cc::michael_list::make_traits<
238 co::compare< compare >,
239 co::allocator< memory::MichaelAllocator<int> >
241 > MichaelList_HP_cmp_michaelAlloc;
243 typedef cc::MichaelKVList< cds::gc::HP, Key, Value,
244 typename cc::michael_list::make_traits<
247 > MichaelList_HP_less_stdAlloc;
249 typedef cc::MichaelKVList< cds::gc::HP, Key, Value,
250 typename cc::michael_list::make_traits<
252 ,co::memory_model< co::v::sequential_consistent >
254 > MichaelList_HP_less_stdAlloc_seqcst;
256 typedef cc::MichaelKVList< cds::gc::HP, Key, Value,
257 typename cc::michael_list::make_traits<
259 co::allocator< memory::MichaelAllocator<int> >
261 > MichaelList_HP_less_michaelAlloc;
263 typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
264 typename cc::michael_list::make_traits<
265 co::compare< compare >
267 > MichaelList_HRC_cmp_stdAlloc;
269 typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
270 typename cc::michael_list::make_traits<
271 co::compare< compare >
272 ,co::memory_model< co::v::sequential_consistent >
274 > MichaelList_HRC_cmp_stdAlloc_seqcst;
276 typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
277 typename cc::michael_list::make_traits<
278 co::compare< compare >,
279 co::allocator< memory::MichaelAllocator<int> >
281 > MichaelList_HRC_cmp_michaelAlloc;
283 typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
284 typename cc::michael_list::make_traits<
287 > MichaelList_HRC_less_stdAlloc;
289 typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
290 typename cc::michael_list::make_traits<
292 ,co::memory_model< co::v::sequential_consistent >
294 > MichaelList_HRC_less_stdAlloc_seqcst;
296 typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
297 typename cc::michael_list::make_traits<
299 co::allocator< memory::MichaelAllocator<int> >
301 > MichaelList_HRC_less_michaelAlloc;
303 typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
304 typename cc::michael_list::make_traits<
305 co::compare< compare >
307 > MichaelList_PTB_cmp_stdAlloc;
309 typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
310 typename cc::michael_list::make_traits<
311 co::compare< compare >
312 ,co::memory_model< co::v::sequential_consistent >
314 > MichaelList_PTB_cmp_stdAlloc_seqcst;
316 typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
317 typename cc::michael_list::make_traits<
318 co::compare< compare >,
319 co::allocator< memory::MichaelAllocator<int> >
321 > MichaelList_PTB_cmp_michaelAlloc;
323 typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
324 typename cc::michael_list::make_traits<
327 > MichaelList_PTB_less_stdAlloc;
329 typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
330 typename cc::michael_list::make_traits<
332 ,co::memory_model< co::v::sequential_consistent >
334 > MichaelList_PTB_less_stdAlloc_seqcst;
336 typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
337 typename cc::michael_list::make_traits<
339 co::allocator< memory::MichaelAllocator<int> >
341 > MichaelList_PTB_less_michaelAlloc;
344 typedef cc::MichaelKVList< rcu_gpi, Key, Value,
345 typename cc::michael_list::make_traits<
346 co::compare< compare >
348 > MichaelList_RCU_GPI_cmp_stdAlloc;
350 typedef cc::MichaelKVList< rcu_gpi, Key, Value,
351 typename cc::michael_list::make_traits<
352 co::compare< compare >
353 ,co::memory_model< co::v::sequential_consistent >
355 > MichaelList_RCU_GPI_cmp_stdAlloc_seqcst;
357 typedef cc::MichaelKVList< rcu_gpi, Key, Value,
358 typename cc::michael_list::make_traits<
359 co::compare< compare >,
360 co::allocator< memory::MichaelAllocator<int> >
362 > MichaelList_RCU_GPI_cmp_michaelAlloc;
364 typedef cc::MichaelKVList< rcu_gpi, Key, Value,
365 typename cc::michael_list::make_traits<
368 > MichaelList_RCU_GPI_less_stdAlloc;
370 typedef cc::MichaelKVList< rcu_gpi, Key, Value,
371 typename cc::michael_list::make_traits<
373 ,co::memory_model< co::v::sequential_consistent >
375 > MichaelList_RCU_GPI_less_stdAlloc_seqcst;
377 typedef cc::MichaelKVList< rcu_gpi, Key, Value,
378 typename cc::michael_list::make_traits<
380 co::allocator< memory::MichaelAllocator<int> >
382 > MichaelList_RCU_GPI_less_michaelAlloc;
385 typedef cc::MichaelKVList< rcu_gpb, Key, Value,
386 typename cc::michael_list::make_traits<
387 co::compare< compare >
389 > MichaelList_RCU_GPB_cmp_stdAlloc;
391 typedef cc::MichaelKVList< rcu_gpb, Key, Value,
392 typename cc::michael_list::make_traits<
393 co::compare< compare >
394 ,co::memory_model< co::v::sequential_consistent >
396 > MichaelList_RCU_GPB_cmp_stdAlloc_seqcst;
398 typedef cc::MichaelKVList< rcu_gpb, Key, Value,
399 typename cc::michael_list::make_traits<
400 co::compare< compare >,
401 co::allocator< memory::MichaelAllocator<int> >
403 > MichaelList_RCU_GPB_cmp_michaelAlloc;
405 typedef cc::MichaelKVList< rcu_gpb, Key, Value,
406 typename cc::michael_list::make_traits<
409 > MichaelList_RCU_GPB_less_stdAlloc;
411 typedef cc::MichaelKVList< rcu_gpb, Key, Value,
412 typename cc::michael_list::make_traits<
414 ,co::memory_model< co::v::sequential_consistent >
416 > MichaelList_RCU_GPB_less_stdAlloc_seqcst;
418 typedef cc::MichaelKVList< rcu_gpb, Key, Value,
419 typename cc::michael_list::make_traits<
421 co::allocator< memory::MichaelAllocator<int> >
423 > MichaelList_RCU_GPB_less_michaelAlloc;
426 typedef cc::MichaelKVList< rcu_gpt, Key, Value,
427 typename cc::michael_list::make_traits<
428 co::compare< compare >
430 > MichaelList_RCU_GPT_cmp_stdAlloc;
432 typedef cc::MichaelKVList< rcu_gpt, Key, Value,
433 typename cc::michael_list::make_traits<
434 co::compare< compare >
435 ,co::memory_model< co::v::sequential_consistent >
437 > MichaelList_RCU_GPT_cmp_stdAlloc_seqcst;
439 typedef cc::MichaelKVList< rcu_gpt, Key, Value,
440 typename cc::michael_list::make_traits<
441 co::compare< compare >,
442 co::allocator< memory::MichaelAllocator<int> >
444 > MichaelList_RCU_GPT_cmp_michaelAlloc;
446 typedef cc::MichaelKVList< rcu_gpt, Key, Value,
447 typename cc::michael_list::make_traits<
450 > MichaelList_RCU_GPT_less_stdAlloc;
452 typedef cc::MichaelKVList< rcu_gpt, Key, Value,
453 typename cc::michael_list::make_traits<
455 ,co::memory_model< co::v::sequential_consistent >
457 > MichaelList_RCU_GPT_less_stdAlloc_seqcst;
459 typedef cc::MichaelKVList< rcu_gpt, Key, Value,
460 typename cc::michael_list::make_traits<
462 co::allocator< memory::MichaelAllocator<int> >
464 > MichaelList_RCU_GPT_less_michaelAlloc;
466 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
467 typedef cc::MichaelKVList< rcu_shb, Key, Value,
468 typename cc::michael_list::make_traits<
469 co::compare< compare >
471 > MichaelList_RCU_SHB_cmp_stdAlloc;
473 typedef cc::MichaelKVList< rcu_shb, Key, Value,
474 typename cc::michael_list::make_traits<
475 co::compare< compare >
476 ,co::memory_model< co::v::sequential_consistent >
478 > MichaelList_RCU_SHB_cmp_stdAlloc_seqcst;
480 typedef cc::MichaelKVList< rcu_shb, Key, Value,
481 typename cc::michael_list::make_traits<
482 co::compare< compare >,
483 co::allocator< memory::MichaelAllocator<int> >
485 > MichaelList_RCU_SHB_cmp_michaelAlloc;
487 typedef cc::MichaelKVList< rcu_shb, Key, Value,
488 typename cc::michael_list::make_traits<
491 > MichaelList_RCU_SHB_less_stdAlloc;
493 typedef cc::MichaelKVList< rcu_shb, Key, Value,
494 typename cc::michael_list::make_traits<
496 ,co::memory_model< co::v::sequential_consistent >
498 > MichaelList_RCU_SHB_less_stdAlloc_seqcst;
500 typedef cc::MichaelKVList< rcu_shb, Key, Value,
501 typename cc::michael_list::make_traits<
503 co::allocator< memory::MichaelAllocator<int> >
505 > MichaelList_RCU_SHB_less_michaelAlloc;
508 typedef cc::MichaelKVList< rcu_sht, Key, Value,
509 typename cc::michael_list::make_traits<
510 co::compare< compare >
512 > MichaelList_RCU_SHT_cmp_stdAlloc;
514 typedef cc::MichaelKVList< rcu_sht, Key, Value,
515 typename cc::michael_list::make_traits<
516 co::compare< compare >
517 ,co::memory_model< co::v::sequential_consistent >
519 > MichaelList_RCU_SHT_cmp_stdAlloc_seqcst;
521 typedef cc::MichaelKVList< rcu_sht, Key, Value,
522 typename cc::michael_list::make_traits<
523 co::compare< compare >,
524 co::allocator< memory::MichaelAllocator<int> >
526 > MichaelList_RCU_SHT_cmp_michaelAlloc;
528 typedef cc::MichaelKVList< rcu_sht, Key, Value,
529 typename cc::michael_list::make_traits<
532 > MichaelList_RCU_SHT_less_stdAlloc;
534 typedef cc::MichaelKVList< rcu_sht, Key, Value,
535 typename cc::michael_list::make_traits<
537 ,co::memory_model< co::v::sequential_consistent >
539 > MichaelList_RCU_SHT_less_stdAlloc_seqcst;
541 typedef cc::MichaelKVList< rcu_sht, Key, Value,
542 typename cc::michael_list::make_traits<
544 co::allocator< memory::MichaelAllocator<int> >
546 > MichaelList_RCU_SHT_less_michaelAlloc;
550 typedef cc::MichaelKVList< cds::gc::nogc, Key, Value,
551 typename cc::michael_list::make_traits<
552 co::compare< compare >
554 > MichaelList_NOGC_cmp_stdAlloc;
556 typedef cc::MichaelKVList< cds::gc::nogc, Key, Value,
557 typename cc::michael_list::make_traits<
558 co::compare< compare >
559 ,co::memory_model< co::v::sequential_consistent >
561 > MichaelList_NOGC_cmp_stdAlloc_seqcst;
563 typedef cc::MichaelKVList< cds::gc::nogc, Key, Value,
564 typename cc::michael_list::make_traits<
565 co::compare< compare >,
566 co::allocator< memory::MichaelAllocator<int> >
568 > MichaelList_NOGC_cmp_michaelAlloc;
570 typedef cc::MichaelKVList< cds::gc::nogc, Key, Value,
571 typename cc::michael_list::make_traits<
574 > MichaelList_NOGC_less_stdAlloc;
576 typedef cc::MichaelKVList< cds::gc::nogc, Key, Value,
577 typename cc::michael_list::make_traits<
579 ,co::memory_model< co::v::sequential_consistent >
581 > MichaelList_NOGC_less_stdAlloc_seqcst;
583 typedef cc::MichaelKVList< cds::gc::nogc, Key, Value,
584 typename cc::michael_list::make_traits<
586 co::allocator< memory::MichaelAllocator<int> >
588 > MichaelList_NOGC_less_michaelAlloc;
590 template <typename Base>
591 class NogcMapWrapper: public Base
593 typedef Base base_class;
595 NogcMapWrapper( size_t nMaxItemCount, size_t nLoadFactor )
596 : base_class( nMaxItemCount, nLoadFactor )
599 template <typename K>
600 bool insert( K const& key )
602 return base_class::insert( key ) != base_class::end();
605 template <typename K, typename V>
606 bool insert( K const& key, V const& val )
608 return base_class::insert( key, val ) != base_class::end();
611 template <typename K, typename Func>
612 bool insert_key( K const& key, Func func )
614 return base_class::insert_key( key, func ) != base_class::end();
617 template <typename K>
618 bool find( K const& key )
620 return base_class::find( key ) != base_class::end();
629 template <typename Base>
630 class NogcMapWrapper_dctor: public Base
632 typedef Base base_class;
634 NogcMapWrapper_dctor()
637 template <typename K>
638 bool insert( K const& key )
640 return base_class::insert( key ) != base_class::end();
643 template <typename K, typename V>
644 bool insert( K const& key, V const& val )
646 return base_class::insert( key, val ) != base_class::end();
649 template <typename K, typename Func>
650 bool insert_key( K const& key, Func func )
652 return base_class::insert_key( key, func ) != base_class::end();
655 template <typename K>
656 bool find( K const& key )
658 return base_class::find( key ) != base_class::end();
662 // SplitListMap<gc::nogc> has no clear() method
663 template <typename Base>
664 class NogcSplitMapWrapper: public Base
666 typedef Base base_class;
668 NogcSplitMapWrapper( size_t nMaxItemCount, size_t nLoadFactor )
669 : base_class( nMaxItemCount, nLoadFactor )
672 template <typename K>
673 bool insert( K const& key )
675 return base_class::insert( key ) != base_class::end();
678 template <typename K, typename V>
679 bool insert( K const& key, V const& val )
681 return base_class::insert( key, val ) != base_class::end();
684 template <typename K, typename Func>
685 bool insert_key( K const& key, Func func )
687 return base_class::insert_key( key, func ) != base_class::end();
690 template <typename K>
691 bool find( K const& key )
693 return base_class::find( key ) != base_class::end();
701 // ***************************************************************************
702 // MichaelHashMap based on MichaelKVList
704 typedef cc::MichaelHashMap< cds::gc::HP, MichaelList_HP_cmp_stdAlloc,
705 typename cc::michael_map::make_traits<
708 > MichaelMap_HP_cmp_stdAlloc;
710 typedef cc::MichaelHashMap< cds::gc::HP, MichaelList_HP_cmp_stdAlloc_seqcst,
711 typename cc::michael_map::make_traits<
714 > MichaelMap_HP_cmp_stdAlloc_seqcst;
716 typedef cc::MichaelHashMap< cds::gc::HP, MichaelList_HP_cmp_michaelAlloc,
717 typename cc::michael_map::make_traits<
719 co::allocator< memory::MichaelAllocator<int> >
721 > MichaelMap_HP_cmp_michaelAlloc;
723 typedef cc::MichaelHashMap< cds::gc::HP, MichaelList_HP_less_stdAlloc,
724 typename cc::michael_map::make_traits<
727 > MichaelMap_HP_less_stdAlloc;
729 typedef cc::MichaelHashMap< cds::gc::HP, MichaelList_HP_less_stdAlloc_seqcst,
730 typename cc::michael_map::make_traits<
733 > MichaelMap_HP_less_stdAlloc_seqcst;
735 typedef cc::MichaelHashMap< cds::gc::HP, MichaelList_HP_less_michaelAlloc,
736 typename cc::michael_map::make_traits<
738 co::allocator< memory::MichaelAllocator<int> >
740 > MichaelMap_HP_less_michaelAlloc;
742 typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_cmp_stdAlloc,
743 typename cc::michael_map::make_traits<
746 > MichaelMap_HRC_cmp_stdAlloc;
748 typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_cmp_stdAlloc_seqcst,
749 typename cc::michael_map::make_traits<
752 > MichaelMap_HRC_cmp_stdAlloc_seqcst;
754 typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_cmp_michaelAlloc,
755 typename cc::michael_map::make_traits<
757 co::allocator< memory::MichaelAllocator<int> >
759 > MichaelMap_HRC_cmp_michaelAlloc;
761 typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_less_stdAlloc,
762 typename cc::michael_map::make_traits<
765 > MichaelMap_HRC_less_stdAlloc;
767 typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_less_stdAlloc_seqcst,
768 typename cc::michael_map::make_traits<
771 > MichaelMap_HRC_less_stdAlloc_seqcst;
773 typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_less_michaelAlloc,
774 typename cc::michael_map::make_traits<
776 co::allocator< memory::MichaelAllocator<int> >
778 > MichaelMap_HRC_less_michaelAlloc;
780 typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_cmp_stdAlloc,
781 typename cc::michael_map::make_traits<
784 > MichaelMap_PTB_cmp_stdAlloc;
786 typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_cmp_stdAlloc_seqcst,
787 typename cc::michael_map::make_traits<
790 > MichaelMap_PTB_cmp_stdAlloc_seqcst;
792 typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_cmp_michaelAlloc,
793 typename cc::michael_map::make_traits<
795 co::allocator< memory::MichaelAllocator<int> >
797 > MichaelMap_PTB_cmp_michaelAlloc;
799 typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_less_stdAlloc,
800 typename cc::michael_map::make_traits<
803 > MichaelMap_PTB_less_stdAlloc;
805 typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_less_stdAlloc_seqcst,
806 typename cc::michael_map::make_traits<
809 > MichaelMap_PTB_less_stdAlloc_seqcst;
811 typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_less_michaelAlloc,
812 typename cc::michael_map::make_traits<
814 co::allocator< memory::MichaelAllocator<int> >
816 > MichaelMap_PTB_less_michaelAlloc;
819 typedef cc::MichaelHashMap< rcu_gpi, MichaelList_RCU_GPI_cmp_stdAlloc,
820 typename cc::michael_map::make_traits<
823 > MichaelMap_RCU_GPI_cmp_stdAlloc;
825 typedef cc::MichaelHashMap< rcu_gpi, MichaelList_RCU_GPI_cmp_stdAlloc_seqcst,
826 typename cc::michael_map::make_traits<
829 > MichaelMap_RCU_GPI_cmp_stdAlloc_seqcst;
831 typedef cc::MichaelHashMap< rcu_gpi, MichaelList_RCU_GPI_cmp_michaelAlloc,
832 typename cc::michael_map::make_traits<
834 co::allocator< memory::MichaelAllocator<int> >
836 > MichaelMap_RCU_GPI_cmp_michaelAlloc;
838 typedef cc::MichaelHashMap< rcu_gpi, MichaelList_RCU_GPI_less_stdAlloc,
839 typename cc::michael_map::make_traits<
842 > MichaelMap_RCU_GPI_less_stdAlloc;
844 typedef cc::MichaelHashMap< rcu_gpi, MichaelList_RCU_GPI_less_stdAlloc_seqcst,
845 typename cc::michael_map::make_traits<
848 > MichaelMap_RCU_GPI_less_stdAlloc_seqcst;
850 typedef cc::MichaelHashMap< rcu_gpi, MichaelList_RCU_GPI_less_michaelAlloc,
851 typename cc::michael_map::make_traits<
853 co::allocator< memory::MichaelAllocator<int> >
855 > MichaelMap_RCU_GPI_less_michaelAlloc;
858 typedef cc::MichaelHashMap< rcu_gpb, MichaelList_RCU_GPB_cmp_stdAlloc,
859 typename cc::michael_map::make_traits<
862 > MichaelMap_RCU_GPB_cmp_stdAlloc;
864 typedef cc::MichaelHashMap< rcu_gpb, MichaelList_RCU_GPB_cmp_stdAlloc_seqcst,
865 typename cc::michael_map::make_traits<
868 > MichaelMap_RCU_GPB_cmp_stdAlloc_seqcst;
870 typedef cc::MichaelHashMap< rcu_gpb, MichaelList_RCU_GPB_cmp_michaelAlloc,
871 typename cc::michael_map::make_traits<
873 co::allocator< memory::MichaelAllocator<int> >
875 > MichaelMap_RCU_GPB_cmp_michaelAlloc;
877 typedef cc::MichaelHashMap< rcu_gpb, MichaelList_RCU_GPB_less_stdAlloc,
878 typename cc::michael_map::make_traits<
881 > MichaelMap_RCU_GPB_less_stdAlloc;
883 typedef cc::MichaelHashMap< rcu_gpb, MichaelList_RCU_GPB_less_stdAlloc_seqcst,
884 typename cc::michael_map::make_traits<
887 > MichaelMap_RCU_GPB_less_stdAlloc_seqcst;
889 typedef cc::MichaelHashMap< rcu_gpb, MichaelList_RCU_GPB_less_michaelAlloc,
890 typename cc::michael_map::make_traits<
892 co::allocator< memory::MichaelAllocator<int> >
894 > MichaelMap_RCU_GPB_less_michaelAlloc;
897 typedef cc::MichaelHashMap< rcu_gpt, MichaelList_RCU_GPT_cmp_stdAlloc,
898 typename cc::michael_map::make_traits<
901 > MichaelMap_RCU_GPT_cmp_stdAlloc;
903 typedef cc::MichaelHashMap< rcu_gpt, MichaelList_RCU_GPT_cmp_stdAlloc_seqcst,
904 typename cc::michael_map::make_traits<
907 > MichaelMap_RCU_GPT_cmp_stdAlloc_seqcst;
909 typedef cc::MichaelHashMap< rcu_gpt, MichaelList_RCU_GPT_cmp_michaelAlloc,
910 typename cc::michael_map::make_traits<
912 co::allocator< memory::MichaelAllocator<int> >
914 > MichaelMap_RCU_GPT_cmp_michaelAlloc;
916 typedef cc::MichaelHashMap< rcu_gpt, MichaelList_RCU_GPT_less_stdAlloc,
917 typename cc::michael_map::make_traits<
920 > MichaelMap_RCU_GPT_less_stdAlloc;
922 typedef cc::MichaelHashMap< rcu_gpt, MichaelList_RCU_GPT_less_stdAlloc_seqcst,
923 typename cc::michael_map::make_traits<
926 > MichaelMap_RCU_GPT_less_stdAlloc_seqcst;
928 typedef cc::MichaelHashMap< rcu_gpt, MichaelList_RCU_GPT_less_michaelAlloc,
929 typename cc::michael_map::make_traits<
931 co::allocator< memory::MichaelAllocator<int> >
933 > MichaelMap_RCU_GPT_less_michaelAlloc;
935 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
936 typedef cc::MichaelHashMap< rcu_shb, MichaelList_RCU_SHB_cmp_stdAlloc,
937 typename cc::michael_map::make_traits<
940 > MichaelMap_RCU_SHB_cmp_stdAlloc;
942 typedef cc::MichaelHashMap< rcu_shb, MichaelList_RCU_SHB_cmp_stdAlloc_seqcst,
943 typename cc::michael_map::make_traits<
946 > MichaelMap_RCU_SHB_cmp_stdAlloc_seqcst;
948 typedef cc::MichaelHashMap< rcu_shb, MichaelList_RCU_SHB_cmp_michaelAlloc,
949 typename cc::michael_map::make_traits<
951 co::allocator< memory::MichaelAllocator<int> >
953 > MichaelMap_RCU_SHB_cmp_michaelAlloc;
955 typedef cc::MichaelHashMap< rcu_shb, MichaelList_RCU_SHB_less_stdAlloc,
956 typename cc::michael_map::make_traits<
959 > MichaelMap_RCU_SHB_less_stdAlloc;
961 typedef cc::MichaelHashMap< rcu_shb, MichaelList_RCU_SHB_less_stdAlloc_seqcst,
962 typename cc::michael_map::make_traits<
965 > MichaelMap_RCU_SHB_less_stdAlloc_seqcst;
967 typedef cc::MichaelHashMap< rcu_shb, MichaelList_RCU_SHB_less_michaelAlloc,
968 typename cc::michael_map::make_traits<
970 co::allocator< memory::MichaelAllocator<int> >
972 > MichaelMap_RCU_SHB_less_michaelAlloc;
975 typedef cc::MichaelHashMap< rcu_sht, MichaelList_RCU_SHT_cmp_stdAlloc,
976 typename cc::michael_map::make_traits<
979 > MichaelMap_RCU_SHT_cmp_stdAlloc;
981 typedef cc::MichaelHashMap< rcu_sht, MichaelList_RCU_SHT_cmp_stdAlloc_seqcst,
982 typename cc::michael_map::make_traits<
985 > MichaelMap_RCU_SHT_cmp_stdAlloc_seqcst;
987 typedef cc::MichaelHashMap< rcu_sht, MichaelList_RCU_SHT_cmp_michaelAlloc,
988 typename cc::michael_map::make_traits<
990 co::allocator< memory::MichaelAllocator<int> >
992 > MichaelMap_RCU_SHT_cmp_michaelAlloc;
994 typedef cc::MichaelHashMap< rcu_sht, MichaelList_RCU_SHT_less_stdAlloc,
995 typename cc::michael_map::make_traits<
998 > MichaelMap_RCU_SHT_less_stdAlloc;
1000 typedef cc::MichaelHashMap< rcu_sht, MichaelList_RCU_SHT_less_stdAlloc_seqcst,
1001 typename cc::michael_map::make_traits<
1004 > MichaelMap_RCU_SHT_less_stdAlloc_seqcst;
1006 typedef cc::MichaelHashMap< rcu_sht, MichaelList_RCU_SHT_less_michaelAlloc,
1007 typename cc::michael_map::make_traits<
1009 co::allocator< memory::MichaelAllocator<int> >
1011 > MichaelMap_RCU_SHT_less_michaelAlloc;
1015 typedef NogcMapWrapper< cc::MichaelHashMap< cds::gc::nogc, MichaelList_NOGC_cmp_stdAlloc,
1016 typename cc::michael_map::make_traits<
1019 > > MichaelMap_NOGC_cmp_stdAlloc;
1021 typedef NogcMapWrapper< cc::MichaelHashMap< cds::gc::nogc, MichaelList_NOGC_cmp_stdAlloc_seqcst,
1022 typename cc::michael_map::make_traits<
1025 > > MichaelMap_NOGC_cmp_stdAlloc_seqcst;
1027 typedef NogcMapWrapper< cc::MichaelHashMap< cds::gc::nogc, MichaelList_NOGC_cmp_michaelAlloc,
1028 typename cc::michael_map::make_traits<
1030 co::allocator< memory::MichaelAllocator<int> >
1032 > > MichaelMap_NOGC_cmp_michaelAlloc;
1034 typedef NogcMapWrapper< cc::MichaelHashMap< cds::gc::nogc, MichaelList_NOGC_less_stdAlloc,
1035 typename cc::michael_map::make_traits<
1038 > > MichaelMap_NOGC_less_stdAlloc;
1040 typedef NogcMapWrapper< cc::MichaelHashMap< cds::gc::nogc, MichaelList_NOGC_less_stdAlloc_seqcst,
1041 typename cc::michael_map::make_traits<
1044 > > MichaelMap_NOGC_less_stdAlloc_seqcst;
1046 typedef NogcMapWrapper< cc::MichaelHashMap< cds::gc::nogc, MichaelList_NOGC_less_michaelAlloc,
1047 typename cc::michael_map::make_traits<
1049 co::allocator< memory::MichaelAllocator<int> >
1051 > > MichaelMap_NOGC_less_michaelAlloc;
1054 // ***************************************************************************
1057 typedef cc::LazyKVList< cds::gc::HP, Key, Value,
1058 typename cc::lazy_list::make_traits<
1059 co::compare< compare >
1061 > LazyList_HP_cmp_stdAlloc;
1063 typedef cc::LazyKVList< cds::gc::HP, Key, Value,
1064 typename cc::lazy_list::make_traits<
1065 co::compare< compare >
1066 ,co::memory_model< co::v::sequential_consistent >
1068 > LazyList_HP_cmp_stdAlloc_seqcst;
1070 typedef cc::LazyKVList< cds::gc::HP, Key, Value,
1071 typename cc::lazy_list::make_traits<
1072 co::compare< compare >,
1073 co::allocator< memory::MichaelAllocator<int> >
1075 > LazyList_HP_cmp_michaelAlloc;
1077 typedef cc::LazyKVList< cds::gc::HP, Key, Value,
1078 typename cc::lazy_list::make_traits<
1081 > LazyList_HP_less_stdAlloc;
1083 typedef cc::LazyKVList< cds::gc::HP, Key, Value,
1084 typename cc::lazy_list::make_traits<
1086 ,co::memory_model< co::v::sequential_consistent >
1088 > LazyList_HP_less_stdAlloc_seqcst;
1090 typedef cc::LazyKVList< cds::gc::HP, Key, Value,
1091 typename cc::lazy_list::make_traits<
1093 co::allocator< memory::MichaelAllocator<int> >
1095 > LazyList_HP_less_michaelAlloc;
1097 typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
1098 typename cc::lazy_list::make_traits<
1099 co::compare< compare >
1101 > LazyList_HRC_cmp_stdAlloc;
1103 typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
1104 typename cc::lazy_list::make_traits<
1105 co::compare< compare >
1106 ,co::memory_model< co::v::sequential_consistent >
1108 > LazyList_HRC_cmp_stdAlloc_seqcst;
1110 typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
1111 typename cc::lazy_list::make_traits<
1112 co::compare< compare >,
1113 co::allocator< memory::MichaelAllocator<int> >
1115 > LazyList_HRC_cmp_michaelAlloc;
1117 typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
1118 typename cc::lazy_list::make_traits<
1121 > LazyList_HRC_less_stdAlloc;
1123 typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
1124 typename cc::lazy_list::make_traits<
1126 ,co::memory_model< co::v::sequential_consistent >
1128 > LazyList_HRC_less_stdAlloc_seqcst;
1130 typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
1131 typename cc::lazy_list::make_traits<
1133 co::allocator< memory::MichaelAllocator<int> >
1135 > LazyList_HRC_less_michaelAlloc;
1137 typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
1138 typename cc::lazy_list::make_traits<
1139 co::compare< compare >
1141 > LazyList_PTB_cmp_stdAlloc;
1143 typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
1144 typename cc::lazy_list::make_traits<
1145 co::compare< compare >
1146 ,co::memory_model< co::v::sequential_consistent >
1148 > LazyList_PTB_cmp_stdAlloc_seqcst;
1150 typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
1151 typename cc::lazy_list::make_traits<
1152 co::compare< compare >,
1153 co::allocator< memory::MichaelAllocator<int> >
1155 > LazyList_PTB_cmp_michaelAlloc;
1157 typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
1158 typename cc::lazy_list::make_traits<
1161 > LazyList_PTB_less_stdAlloc;
1163 typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
1164 typename cc::lazy_list::make_traits<
1166 ,co::memory_model< co::v::sequential_consistent >
1168 > LazyList_PTB_less_stdAlloc_seqcst;
1170 typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
1171 typename cc::lazy_list::make_traits<
1173 co::allocator< memory::MichaelAllocator<int> >
1175 > LazyList_PTB_less_michaelAlloc;
1178 typedef cc::LazyKVList< rcu_gpi, Key, Value,
1179 typename cc::lazy_list::make_traits<
1180 co::compare< compare >
1182 > LazyList_RCU_GPI_cmp_stdAlloc;
1184 typedef cc::LazyKVList< rcu_gpi, Key, Value,
1185 typename cc::lazy_list::make_traits<
1186 co::compare< compare >
1187 ,co::memory_model< co::v::sequential_consistent >
1189 > LazyList_RCU_GPI_cmp_stdAlloc_seqcst;
1191 typedef cc::LazyKVList< rcu_gpi, Key, Value,
1192 typename cc::lazy_list::make_traits<
1193 co::compare< compare >,
1194 co::allocator< memory::MichaelAllocator<int> >
1196 > LazyList_RCU_GPI_cmp_michaelAlloc;
1198 typedef cc::LazyKVList< rcu_gpi, Key, Value,
1199 typename cc::lazy_list::make_traits<
1202 > LazyList_RCU_GPI_less_stdAlloc;
1204 typedef cc::LazyKVList< rcu_gpi, Key, Value,
1205 typename cc::lazy_list::make_traits<
1207 ,co::memory_model< co::v::sequential_consistent >
1209 > LazyList_RCU_GPI_less_stdAlloc_seqcst;
1211 typedef cc::LazyKVList< rcu_gpi, Key, Value,
1212 typename cc::lazy_list::make_traits<
1214 co::allocator< memory::MichaelAllocator<int> >
1216 > LazyList_RCU_GPI_less_michaelAlloc;
1219 typedef cc::LazyKVList< rcu_gpb, Key, Value,
1220 typename cc::lazy_list::make_traits<
1221 co::compare< compare >
1223 > LazyList_RCU_GPB_cmp_stdAlloc;
1225 typedef cc::LazyKVList< rcu_gpb, Key, Value,
1226 typename cc::lazy_list::make_traits<
1227 co::compare< compare >
1228 ,co::memory_model< co::v::sequential_consistent >
1230 > LazyList_RCU_GPB_cmp_stdAlloc_seqcst;
1232 typedef cc::LazyKVList< rcu_gpb, Key, Value,
1233 typename cc::lazy_list::make_traits<
1234 co::compare< compare >,
1235 co::allocator< memory::MichaelAllocator<int> >
1237 > LazyList_RCU_GPB_cmp_michaelAlloc;
1239 typedef cc::LazyKVList< rcu_gpb, Key, Value,
1240 typename cc::lazy_list::make_traits<
1243 > LazyList_RCU_GPB_less_stdAlloc;
1245 typedef cc::LazyKVList< rcu_gpb, Key, Value,
1246 typename cc::lazy_list::make_traits<
1248 ,co::memory_model< co::v::sequential_consistent >
1250 > LazyList_RCU_GPB_less_stdAlloc_seqcst;
1252 typedef cc::LazyKVList< rcu_gpb, Key, Value,
1253 typename cc::lazy_list::make_traits<
1255 co::allocator< memory::MichaelAllocator<int> >
1257 > LazyList_RCU_GPB_less_michaelAlloc;
1260 typedef cc::LazyKVList< rcu_gpt, Key, Value,
1261 typename cc::lazy_list::make_traits<
1262 co::compare< compare >
1264 > LazyList_RCU_GPT_cmp_stdAlloc;
1266 typedef cc::LazyKVList< rcu_gpt, Key, Value,
1267 typename cc::lazy_list::make_traits<
1268 co::compare< compare >
1269 ,co::memory_model< co::v::sequential_consistent >
1271 > LazyList_RCU_GPT_cmp_stdAlloc_seqcst;
1273 typedef cc::LazyKVList< rcu_gpt, Key, Value,
1274 typename cc::lazy_list::make_traits<
1275 co::compare< compare >,
1276 co::allocator< memory::MichaelAllocator<int> >
1278 > LazyList_RCU_GPT_cmp_michaelAlloc;
1280 typedef cc::LazyKVList< rcu_gpt, Key, Value,
1281 typename cc::lazy_list::make_traits<
1284 > LazyList_RCU_GPT_less_stdAlloc;
1286 typedef cc::LazyKVList< rcu_gpt, Key, Value,
1287 typename cc::lazy_list::make_traits<
1289 ,co::memory_model< co::v::sequential_consistent >
1291 > LazyList_RCU_GPT_less_stdAlloc_seqcst;
1293 typedef cc::LazyKVList< rcu_gpt, Key, Value,
1294 typename cc::lazy_list::make_traits<
1296 co::allocator< memory::MichaelAllocator<int> >
1298 > LazyList_RCU_GPT_less_michaelAlloc;
1300 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
1301 typedef cc::LazyKVList< rcu_shb, Key, Value,
1302 typename cc::lazy_list::make_traits<
1303 co::compare< compare >
1305 > LazyList_RCU_SHB_cmp_stdAlloc;
1307 typedef cc::LazyKVList< rcu_shb, Key, Value,
1308 typename cc::lazy_list::make_traits<
1309 co::compare< compare >
1310 ,co::memory_model< co::v::sequential_consistent >
1312 > LazyList_RCU_SHB_cmp_stdAlloc_seqcst;
1314 typedef cc::LazyKVList< rcu_shb, Key, Value,
1315 typename cc::lazy_list::make_traits<
1316 co::compare< compare >,
1317 co::allocator< memory::MichaelAllocator<int> >
1319 > LazyList_RCU_SHB_cmp_michaelAlloc;
1321 typedef cc::LazyKVList< rcu_shb, Key, Value,
1322 typename cc::lazy_list::make_traits<
1325 > LazyList_RCU_SHB_less_stdAlloc;
1327 typedef cc::LazyKVList< rcu_shb, Key, Value,
1328 typename cc::lazy_list::make_traits<
1330 ,co::memory_model< co::v::sequential_consistent >
1332 > LazyList_RCU_SHB_less_stdAlloc_seqcst;
1334 typedef cc::LazyKVList< rcu_shb, Key, Value,
1335 typename cc::lazy_list::make_traits<
1337 co::allocator< memory::MichaelAllocator<int> >
1339 > LazyList_RCU_SHB_less_michaelAlloc;
1342 typedef cc::LazyKVList< rcu_sht, Key, Value,
1343 typename cc::lazy_list::make_traits<
1344 co::compare< compare >
1346 > LazyList_RCU_SHT_cmp_stdAlloc;
1348 typedef cc::LazyKVList< rcu_sht, Key, Value,
1349 typename cc::lazy_list::make_traits<
1350 co::compare< compare >
1351 ,co::memory_model< co::v::sequential_consistent >
1353 > LazyList_RCU_SHT_cmp_stdAlloc_seqcst;
1355 typedef cc::LazyKVList< rcu_sht, Key, Value,
1356 typename cc::lazy_list::make_traits<
1357 co::compare< compare >,
1358 co::allocator< memory::MichaelAllocator<int> >
1360 > LazyList_RCU_SHT_cmp_michaelAlloc;
1362 typedef cc::LazyKVList< rcu_sht, Key, Value,
1363 typename cc::lazy_list::make_traits<
1366 > LazyList_RCU_SHT_less_stdAlloc;
1368 typedef cc::LazyKVList< rcu_sht, Key, Value,
1369 typename cc::lazy_list::make_traits<
1371 ,co::memory_model< co::v::sequential_consistent >
1373 > LazyList_RCU_SHT_less_stdAlloc_seqcst;
1375 typedef cc::LazyKVList< rcu_sht, Key, Value,
1376 typename cc::lazy_list::make_traits<
1378 co::allocator< memory::MichaelAllocator<int> >
1380 > LazyList_RCU_SHT_less_michaelAlloc;
1384 typedef cc::LazyKVList< cds::gc::nogc, Key, Value,
1385 typename cc::lazy_list::make_traits<
1386 co::compare< compare >
1388 > LazyList_NOGC_cmp_stdAlloc;
1390 typedef cc::LazyKVList< cds::gc::nogc, Key, Value,
1391 typename cc::lazy_list::make_traits<
1392 co::compare< compare >
1393 ,co::memory_model< co::v::sequential_consistent >
1395 > LazyList_NOGC_cmp_stdAlloc_seqcst;
1397 typedef cc::LazyKVList< cds::gc::nogc, Key, Value,
1398 typename cc::lazy_list::make_traits<
1399 co::compare< compare >,
1400 co::allocator< memory::MichaelAllocator<int> >
1402 > LazyList_NOGC_cmp_michaelAlloc;
1404 typedef cc::LazyKVList< cds::gc::nogc, Key, Value,
1405 typename cc::lazy_list::make_traits<
1408 > LazyList_NOGC_less_stdAlloc;
1410 typedef cc::LazyKVList< cds::gc::nogc, Key, Value,
1411 typename cc::lazy_list::make_traits<
1413 ,co::memory_model< co::v::sequential_consistent >
1415 > LazyList_NOGC_less_stdAlloc_seqcst;
1417 typedef cc::LazyKVList< cds::gc::nogc, Key, Value,
1418 typename cc::lazy_list::make_traits<
1420 co::allocator< memory::MichaelAllocator<int> >
1422 > LazyList_NOGC_less_michaelAlloc;
1425 // ***************************************************************************
1426 // MichaelHashMap based on LazyKVList
1428 typedef cc::MichaelHashMap< cds::gc::HP, LazyList_HP_cmp_stdAlloc,
1429 typename cc::michael_map::make_traits<
1432 > MichaelMap_Lazy_HP_cmp_stdAlloc;
1434 typedef cc::MichaelHashMap< cds::gc::HP, LazyList_HP_cmp_stdAlloc_seqcst,
1435 typename cc::michael_map::make_traits<
1438 > MichaelMap_Lazy_HP_cmp_stdAlloc_seqcst;
1440 typedef cc::MichaelHashMap< cds::gc::HP, LazyList_HP_cmp_michaelAlloc,
1441 typename cc::michael_map::make_traits<
1443 co::allocator< memory::MichaelAllocator<int> >
1445 > MichaelMap_Lazy_HP_cmp_michaelAlloc;
1447 typedef cc::MichaelHashMap< cds::gc::HP, LazyList_HP_less_stdAlloc,
1448 typename cc::michael_map::make_traits<
1451 > MichaelMap_Lazy_HP_less_stdAlloc;
1453 typedef cc::MichaelHashMap< cds::gc::HP, LazyList_HP_less_stdAlloc_seqcst,
1454 typename cc::michael_map::make_traits<
1457 > MichaelMap_Lazy_HP_less_stdAlloc_seqcst;
1459 typedef cc::MichaelHashMap< cds::gc::HP, LazyList_HP_less_michaelAlloc,
1460 typename cc::michael_map::make_traits<
1462 co::allocator< memory::MichaelAllocator<int> >
1464 > MichaelMap_Lazy_HP_less_michaelAlloc;
1466 typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_cmp_stdAlloc,
1467 typename cc::michael_map::make_traits<
1470 > MichaelMap_Lazy_HRC_cmp_stdAlloc;
1472 typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_cmp_stdAlloc_seqcst,
1473 typename cc::michael_map::make_traits<
1476 > MichaelMap_Lazy_HRC_cmp_stdAlloc_seqcst;
1478 typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_cmp_michaelAlloc,
1479 typename cc::michael_map::make_traits<
1481 co::allocator< memory::MichaelAllocator<int> >
1483 > MichaelMap_Lazy_HRC_cmp_michaelAlloc;
1485 typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_less_stdAlloc,
1486 typename cc::michael_map::make_traits<
1489 > MichaelMap_Lazy_HRC_less_stdAlloc;
1491 typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_less_stdAlloc_seqcst,
1492 typename cc::michael_map::make_traits<
1495 > MichaelMap_Lazy_HRC_less_stdAlloc_seqcst;
1497 typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_less_michaelAlloc,
1498 typename cc::michael_map::make_traits<
1500 co::allocator< memory::MichaelAllocator<int> >
1502 > MichaelMap_Lazy_HRC_less_michaelAlloc;
1504 typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_cmp_stdAlloc,
1505 typename cc::michael_map::make_traits<
1508 > MichaelMap_Lazy_PTB_cmp_stdAlloc;
1510 typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_cmp_stdAlloc_seqcst,
1511 typename cc::michael_map::make_traits<
1514 > MichaelMap_Lazy_PTB_cmp_stdAlloc_seqcst;
1516 typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_cmp_michaelAlloc,
1517 typename cc::michael_map::make_traits<
1519 co::allocator< memory::MichaelAllocator<int> >
1521 > MichaelMap_Lazy_PTB_cmp_michaelAlloc;
1523 typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_less_stdAlloc,
1524 typename cc::michael_map::make_traits<
1527 > MichaelMap_Lazy_PTB_less_stdAlloc;
1529 typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_less_stdAlloc_seqcst,
1530 typename cc::michael_map::make_traits<
1533 > MichaelMap_Lazy_PTB_less_stdAlloc_seqcst;
1535 typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_less_michaelAlloc,
1536 typename cc::michael_map::make_traits<
1538 co::allocator< memory::MichaelAllocator<int> >
1540 > MichaelMap_Lazy_PTB_less_michaelAlloc;
1543 typedef cc::MichaelHashMap< rcu_gpi, LazyList_RCU_GPI_cmp_stdAlloc,
1544 typename cc::michael_map::make_traits<
1547 > MichaelMap_Lazy_RCU_GPI_cmp_stdAlloc;
1549 typedef cc::MichaelHashMap< rcu_gpi, LazyList_RCU_GPI_cmp_stdAlloc_seqcst,
1550 typename cc::michael_map::make_traits<
1553 > MichaelMap_Lazy_RCU_GPI_cmp_stdAlloc_seqcst;
1555 typedef cc::MichaelHashMap< rcu_gpi, LazyList_RCU_GPI_cmp_michaelAlloc,
1556 typename cc::michael_map::make_traits<
1558 co::allocator< memory::MichaelAllocator<int> >
1560 > MichaelMap_Lazy_RCU_GPI_cmp_michaelAlloc;
1562 typedef cc::MichaelHashMap< rcu_gpi, LazyList_RCU_GPI_less_stdAlloc,
1563 typename cc::michael_map::make_traits<
1566 > MichaelMap_Lazy_RCU_GPI_less_stdAlloc;
1568 typedef cc::MichaelHashMap< rcu_gpi, LazyList_RCU_GPI_less_stdAlloc_seqcst,
1569 typename cc::michael_map::make_traits<
1572 > MichaelMap_Lazy_RCU_GPI_less_stdAlloc_seqcst;
1574 typedef cc::MichaelHashMap< rcu_gpi, LazyList_RCU_GPI_less_michaelAlloc,
1575 typename cc::michael_map::make_traits<
1577 co::allocator< memory::MichaelAllocator<int> >
1579 > MichaelMap_Lazy_RCU_GPI_less_michaelAlloc;
1582 typedef cc::MichaelHashMap< rcu_gpb, LazyList_RCU_GPB_cmp_stdAlloc,
1583 typename cc::michael_map::make_traits<
1586 > MichaelMap_Lazy_RCU_GPB_cmp_stdAlloc;
1588 typedef cc::MichaelHashMap< rcu_gpb, LazyList_RCU_GPB_cmp_stdAlloc_seqcst,
1589 typename cc::michael_map::make_traits<
1592 > MichaelMap_Lazy_RCU_GPB_cmp_stdAlloc_seqcst;
1594 typedef cc::MichaelHashMap< rcu_gpb, LazyList_RCU_GPB_cmp_michaelAlloc,
1595 typename cc::michael_map::make_traits<
1597 co::allocator< memory::MichaelAllocator<int> >
1599 > MichaelMap_Lazy_RCU_GPB_cmp_michaelAlloc;
1601 typedef cc::MichaelHashMap< rcu_gpb, LazyList_RCU_GPB_less_stdAlloc,
1602 typename cc::michael_map::make_traits<
1605 > MichaelMap_Lazy_RCU_GPB_less_stdAlloc;
1607 typedef cc::MichaelHashMap< rcu_gpb, LazyList_RCU_GPB_less_stdAlloc_seqcst,
1608 typename cc::michael_map::make_traits<
1611 > MichaelMap_Lazy_RCU_GPB_less_stdAlloc_seqcst;
1613 typedef cc::MichaelHashMap< rcu_gpb, LazyList_RCU_GPB_less_michaelAlloc,
1614 typename cc::michael_map::make_traits<
1616 co::allocator< memory::MichaelAllocator<int> >
1618 > MichaelMap_Lazy_RCU_GPB_less_michaelAlloc;
1621 typedef cc::MichaelHashMap< rcu_gpt, LazyList_RCU_GPT_cmp_stdAlloc,
1622 typename cc::michael_map::make_traits<
1625 > MichaelMap_Lazy_RCU_GPT_cmp_stdAlloc;
1627 typedef cc::MichaelHashMap< rcu_gpt, LazyList_RCU_GPT_cmp_stdAlloc_seqcst,
1628 typename cc::michael_map::make_traits<
1631 > MichaelMap_Lazy_RCU_GPT_cmp_stdAlloc_seqcst;
1633 typedef cc::MichaelHashMap< rcu_gpt, LazyList_RCU_GPT_cmp_michaelAlloc,
1634 typename cc::michael_map::make_traits<
1636 co::allocator< memory::MichaelAllocator<int> >
1638 > MichaelMap_Lazy_RCU_GPT_cmp_michaelAlloc;
1640 typedef cc::MichaelHashMap< rcu_gpt, LazyList_RCU_GPT_less_stdAlloc,
1641 typename cc::michael_map::make_traits<
1644 > MichaelMap_Lazy_RCU_GPT_less_stdAlloc;
1646 typedef cc::MichaelHashMap< rcu_gpt, LazyList_RCU_GPT_less_stdAlloc_seqcst,
1647 typename cc::michael_map::make_traits<
1650 > MichaelMap_Lazy_RCU_GPT_less_stdAlloc_seqcst;
1652 typedef cc::MichaelHashMap< rcu_gpt, LazyList_RCU_GPT_less_michaelAlloc,
1653 typename cc::michael_map::make_traits<
1655 co::allocator< memory::MichaelAllocator<int> >
1657 > MichaelMap_Lazy_RCU_GPT_less_michaelAlloc;
1660 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
1661 typedef cc::MichaelHashMap< rcu_shb, LazyList_RCU_SHB_cmp_stdAlloc,
1662 typename cc::michael_map::make_traits<
1665 > MichaelMap_Lazy_RCU_SHB_cmp_stdAlloc;
1667 typedef cc::MichaelHashMap< rcu_shb, LazyList_RCU_SHB_cmp_stdAlloc_seqcst,
1668 typename cc::michael_map::make_traits<
1671 > MichaelMap_Lazy_RCU_SHB_cmp_stdAlloc_seqcst;
1673 typedef cc::MichaelHashMap< rcu_shb, LazyList_RCU_SHB_cmp_michaelAlloc,
1674 typename cc::michael_map::make_traits<
1676 co::allocator< memory::MichaelAllocator<int> >
1678 > MichaelMap_Lazy_RCU_SHB_cmp_michaelAlloc;
1680 typedef cc::MichaelHashMap< rcu_shb, LazyList_RCU_SHB_less_stdAlloc,
1681 typename cc::michael_map::make_traits<
1684 > MichaelMap_Lazy_RCU_SHB_less_stdAlloc;
1686 typedef cc::MichaelHashMap< rcu_shb, LazyList_RCU_SHB_less_stdAlloc_seqcst,
1687 typename cc::michael_map::make_traits<
1690 > MichaelMap_Lazy_RCU_SHB_less_stdAlloc_seqcst;
1692 typedef cc::MichaelHashMap< rcu_shb, LazyList_RCU_SHB_less_michaelAlloc,
1693 typename cc::michael_map::make_traits<
1695 co::allocator< memory::MichaelAllocator<int> >
1697 > MichaelMap_Lazy_RCU_SHB_less_michaelAlloc;
1700 typedef cc::MichaelHashMap< rcu_sht, LazyList_RCU_SHT_cmp_stdAlloc,
1701 typename cc::michael_map::make_traits<
1704 > MichaelMap_Lazy_RCU_SHT_cmp_stdAlloc;
1706 typedef cc::MichaelHashMap< rcu_sht, LazyList_RCU_SHT_cmp_stdAlloc_seqcst,
1707 typename cc::michael_map::make_traits<
1710 > MichaelMap_Lazy_RCU_SHT_cmp_stdAlloc_seqcst;
1712 typedef cc::MichaelHashMap< rcu_sht, LazyList_RCU_SHT_cmp_michaelAlloc,
1713 typename cc::michael_map::make_traits<
1715 co::allocator< memory::MichaelAllocator<int> >
1717 > MichaelMap_Lazy_RCU_SHT_cmp_michaelAlloc;
1719 typedef cc::MichaelHashMap< rcu_sht, LazyList_RCU_SHT_less_stdAlloc,
1720 typename cc::michael_map::make_traits<
1723 > MichaelMap_Lazy_RCU_SHT_less_stdAlloc;
1725 typedef cc::MichaelHashMap< rcu_sht, LazyList_RCU_SHT_less_stdAlloc_seqcst,
1726 typename cc::michael_map::make_traits<
1729 > MichaelMap_Lazy_RCU_SHT_less_stdAlloc_seqcst;
1731 typedef cc::MichaelHashMap< rcu_sht, LazyList_RCU_SHT_less_michaelAlloc,
1732 typename cc::michael_map::make_traits<
1734 co::allocator< memory::MichaelAllocator<int> >
1736 > MichaelMap_Lazy_RCU_SHT_less_michaelAlloc;
1740 typedef NogcMapWrapper< cc::MichaelHashMap< cds::gc::nogc, LazyList_NOGC_cmp_stdAlloc,
1741 typename cc::michael_map::make_traits<
1744 > > MichaelMap_Lazy_NOGC_cmp_stdAlloc;
1746 typedef NogcMapWrapper< cc::MichaelHashMap< cds::gc::nogc, LazyList_NOGC_cmp_stdAlloc_seqcst,
1747 typename cc::michael_map::make_traits<
1750 > > MichaelMap_Lazy_NOGC_cmp_stdAlloc_seqcst;
1752 typedef NogcMapWrapper< cc::MichaelHashMap< cds::gc::nogc, LazyList_NOGC_cmp_michaelAlloc,
1753 typename cc::michael_map::make_traits<
1755 co::allocator< memory::MichaelAllocator<int> >
1757 > > MichaelMap_Lazy_NOGC_cmp_michaelAlloc;
1759 typedef NogcMapWrapper< cc::MichaelHashMap< cds::gc::nogc, LazyList_NOGC_less_stdAlloc,
1760 typename cc::michael_map::make_traits<
1763 > > MichaelMap_Lazy_NOGC_less_stdAlloc;
1765 typedef NogcMapWrapper< cc::MichaelHashMap< cds::gc::nogc, LazyList_NOGC_less_stdAlloc_seqcst,
1766 typename cc::michael_map::make_traits<
1769 > > MichaelMap_Lazy_NOGC_less_stdAlloc_seqcst;
1771 typedef NogcMapWrapper< cc::MichaelHashMap< cds::gc::nogc, LazyList_NOGC_less_michaelAlloc,
1772 typename cc::michael_map::make_traits<
1774 co::allocator< memory::MichaelAllocator<int> >
1776 > > MichaelMap_Lazy_NOGC_less_michaelAlloc;
1779 // ***************************************************************************
1780 // SplitListMap based on MichaelList
1783 class traits_SplitList_Michael_HP_dyn_cmp: public cc::split_list::make_traits<
1784 cc::split_list::ordered_list<cc::michael_list_tag>
1786 ,cc::split_list::ordered_list_traits<
1787 typename cc::michael_list::make_traits<
1788 co::compare< compare >
1793 typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_dyn_cmp > SplitList_Michael_HP_dyn_cmp;
1795 class traits_SplitList_Michael_HP_dyn_cmp_seqcst: public cc::split_list::make_traits<
1796 cc::split_list::ordered_list<cc::michael_list_tag>
1798 ,co::memory_model< co::v::sequential_consistent >
1799 ,cc::split_list::ordered_list_traits<
1800 typename cc::michael_list::make_traits<
1801 co::compare< compare >
1802 ,co::memory_model< co::v::sequential_consistent >
1807 typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_dyn_cmp_seqcst > SplitList_Michael_HP_dyn_cmp_seqcst;
1809 class traits_SplitList_Michael_HP_st_cmp: public cc::split_list::make_traits<
1810 cc::split_list::ordered_list<cc::michael_list_tag>
1811 ,cc::split_list::dynamic_bucket_table< false >
1813 ,cc::split_list::ordered_list_traits<
1814 typename cc::michael_list::make_traits<
1815 co::compare< compare >
1820 typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_st_cmp > SplitList_Michael_HP_st_cmp;
1822 class traits_SplitList_Michael_HP_st_cmp_seqcst: public cc::split_list::make_traits<
1823 cc::split_list::ordered_list<cc::michael_list_tag>
1825 ,cc::split_list::dynamic_bucket_table< false >
1826 ,co::memory_model< co::v::sequential_consistent >
1827 ,cc::split_list::ordered_list_traits<
1828 typename cc::michael_list::make_traits<
1829 co::compare< compare >
1830 ,co::memory_model< co::v::sequential_consistent >
1835 typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_st_cmp_seqcst > SplitList_Michael_HP_st_cmp_seqcst;
1838 class traits_SplitList_Michael_HP_dyn_less: public cc::split_list::make_traits<
1839 cc::split_list::ordered_list<cc::michael_list_tag>
1841 ,cc::split_list::ordered_list_traits<
1842 typename cc::michael_list::make_traits<
1848 typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_dyn_less > SplitList_Michael_HP_dyn_less;
1850 class traits_SplitList_Michael_HP_dyn_less_seqcst: public cc::split_list::make_traits<
1851 cc::split_list::ordered_list<cc::michael_list_tag>
1853 ,co::memory_model< co::v::sequential_consistent >
1854 ,cc::split_list::ordered_list_traits<
1855 typename cc::michael_list::make_traits<
1857 ,co::memory_model< co::v::sequential_consistent >
1862 typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_dyn_less_seqcst > SplitList_Michael_HP_dyn_less_seqcst;
1864 class traits_SplitList_Michael_HP_st_less: public cc::split_list::make_traits<
1865 cc::split_list::ordered_list<cc::michael_list_tag>
1866 ,cc::split_list::dynamic_bucket_table< false >
1868 ,cc::split_list::ordered_list_traits<
1869 typename cc::michael_list::make_traits<
1875 typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_st_less > SplitList_Michael_HP_st_less;
1877 class traits_SplitList_Michael_HP_st_less_seqcst: public cc::split_list::make_traits<
1878 cc::split_list::ordered_list<cc::michael_list_tag>
1880 ,cc::split_list::dynamic_bucket_table< false >
1881 ,co::memory_model< co::v::sequential_consistent >
1882 ,cc::split_list::ordered_list_traits<
1883 typename cc::michael_list::make_traits<
1885 ,co::memory_model< co::v::sequential_consistent >
1890 typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_st_less_seqcst > SplitList_Michael_HP_st_less_seqcst;
1893 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
1894 typename cc::split_list::make_traits<
1895 cc::split_list::ordered_list<cc::michael_list_tag>
1897 ,cc::split_list::ordered_list_traits<
1898 typename cc::michael_list::make_traits<
1899 co::compare< compare >
1903 > SplitList_Michael_HRC_dyn_cmp;
1905 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
1906 typename cc::split_list::make_traits<
1907 cc::split_list::ordered_list<cc::michael_list_tag>
1909 ,co::memory_model< co::v::sequential_consistent >
1910 ,cc::split_list::ordered_list_traits<
1911 typename cc::michael_list::make_traits<
1912 co::compare< compare >
1913 ,co::memory_model< co::v::sequential_consistent >
1917 > SplitList_Michael_HRC_dyn_cmp_seqcst;
1919 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
1920 typename cc::split_list::make_traits<
1921 cc::split_list::ordered_list<cc::michael_list_tag>
1922 ,cc::split_list::dynamic_bucket_table< false >
1924 ,cc::split_list::ordered_list_traits<
1925 typename cc::michael_list::make_traits<
1926 co::compare< compare >
1930 > SplitList_Michael_HRC_st_cmp;
1932 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
1933 typename cc::split_list::make_traits<
1934 cc::split_list::ordered_list<cc::michael_list_tag>
1936 ,cc::split_list::dynamic_bucket_table< false >
1937 ,co::memory_model< co::v::sequential_consistent >
1938 ,cc::split_list::ordered_list_traits<
1939 typename cc::michael_list::make_traits<
1940 co::compare< compare >
1941 ,co::memory_model< co::v::sequential_consistent >
1945 > SplitList_Michael_HRC_st_cmp_seqcst;
1948 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
1949 typename cc::split_list::make_traits<
1950 cc::split_list::ordered_list<cc::michael_list_tag>
1952 ,cc::split_list::ordered_list_traits<
1953 typename cc::michael_list::make_traits<
1958 > SplitList_Michael_HRC_dyn_less;
1960 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
1961 typename cc::split_list::make_traits<
1962 cc::split_list::ordered_list<cc::michael_list_tag>
1964 ,co::memory_model< co::v::sequential_consistent >
1965 ,cc::split_list::ordered_list_traits<
1966 typename cc::michael_list::make_traits<
1968 ,co::memory_model< co::v::sequential_consistent >
1972 > SplitList_Michael_HRC_dyn_less_seqcst;
1974 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
1975 typename cc::split_list::make_traits<
1976 cc::split_list::ordered_list<cc::michael_list_tag>
1977 ,cc::split_list::dynamic_bucket_table< false >
1979 ,cc::split_list::ordered_list_traits<
1980 typename cc::michael_list::make_traits<
1985 > SplitList_Michael_HRC_st_less;
1987 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
1988 typename cc::split_list::make_traits<
1989 cc::split_list::ordered_list<cc::michael_list_tag>
1991 ,cc::split_list::dynamic_bucket_table< false >
1992 ,co::memory_model< co::v::sequential_consistent >
1993 ,cc::split_list::ordered_list_traits<
1994 typename cc::michael_list::make_traits<
1996 ,co::memory_model< co::v::sequential_consistent >
2000 > SplitList_Michael_HRC_st_less_seqcst;
2003 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
2004 typename cc::split_list::make_traits<
2005 cc::split_list::ordered_list<cc::michael_list_tag>
2007 ,cc::split_list::ordered_list_traits<
2008 typename cc::michael_list::make_traits<
2009 co::compare< compare >
2013 > SplitList_Michael_PTB_dyn_cmp;
2015 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
2016 typename cc::split_list::make_traits<
2017 cc::split_list::ordered_list<cc::michael_list_tag>
2019 ,co::memory_model< co::v::sequential_consistent >
2020 ,cc::split_list::ordered_list_traits<
2021 typename cc::michael_list::make_traits<
2022 co::compare< compare >
2023 ,co::memory_model< co::v::sequential_consistent >
2027 > SplitList_Michael_PTB_dyn_cmp_seqcst;
2029 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
2030 typename cc::split_list::make_traits<
2031 cc::split_list::ordered_list<cc::michael_list_tag>
2032 ,cc::split_list::dynamic_bucket_table< false >
2034 ,cc::split_list::ordered_list_traits<
2035 typename cc::michael_list::make_traits<
2036 co::compare< compare >
2040 > SplitList_Michael_PTB_st_cmp;
2042 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
2043 typename cc::split_list::make_traits<
2044 cc::split_list::ordered_list<cc::michael_list_tag>
2046 ,cc::split_list::dynamic_bucket_table< false >
2047 ,co::memory_model< co::v::sequential_consistent >
2048 ,cc::split_list::ordered_list_traits<
2049 typename cc::michael_list::make_traits<
2050 co::compare< compare >
2051 ,co::memory_model< co::v::sequential_consistent >
2055 > SplitList_Michael_PTB_st_cmp_seqcst;
2058 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
2059 typename cc::split_list::make_traits<
2060 cc::split_list::ordered_list<cc::michael_list_tag>
2062 ,cc::split_list::ordered_list_traits<
2063 typename cc::michael_list::make_traits<
2068 > SplitList_Michael_PTB_dyn_less;
2070 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
2071 typename cc::split_list::make_traits<
2072 cc::split_list::ordered_list<cc::michael_list_tag>
2074 ,co::memory_model< co::v::sequential_consistent >
2075 ,cc::split_list::ordered_list_traits<
2076 typename cc::michael_list::make_traits<
2078 ,co::memory_model< co::v::sequential_consistent >
2082 > SplitList_Michael_PTB_dyn_less_seqcst;
2084 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
2085 typename cc::split_list::make_traits<
2086 cc::split_list::ordered_list<cc::michael_list_tag>
2087 ,cc::split_list::dynamic_bucket_table< false >
2089 ,cc::split_list::ordered_list_traits<
2090 typename cc::michael_list::make_traits<
2095 > SplitList_Michael_PTB_st_less;
2097 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
2098 typename cc::split_list::make_traits<
2099 cc::split_list::ordered_list<cc::michael_list_tag>
2101 ,cc::split_list::dynamic_bucket_table< false >
2102 ,co::memory_model< co::v::sequential_consistent >
2103 ,cc::split_list::ordered_list_traits<
2104 typename cc::michael_list::make_traits<
2106 ,co::memory_model< co::v::sequential_consistent >
2110 > SplitList_Michael_PTB_st_less_seqcst;
2113 typedef cc::SplitListMap< rcu_gpi, Key, Value,
2114 typename cc::split_list::make_traits<
2115 cc::split_list::ordered_list<cc::michael_list_tag>
2117 ,cc::split_list::ordered_list_traits<
2118 typename cc::michael_list::make_traits<
2119 co::compare< compare >
2123 > SplitList_Michael_RCU_GPI_dyn_cmp;
2125 typedef cc::SplitListMap< rcu_gpi, Key, Value,
2126 typename cc::split_list::make_traits<
2127 cc::split_list::ordered_list<cc::michael_list_tag>
2129 ,co::memory_model< co::v::sequential_consistent >
2130 ,cc::split_list::ordered_list_traits<
2131 typename cc::michael_list::make_traits<
2132 co::compare< compare >
2133 ,co::memory_model< co::v::sequential_consistent >
2137 > SplitList_Michael_RCU_GPI_dyn_cmp_seqcst;
2139 typedef cc::SplitListMap< rcu_gpi, Key, Value,
2140 typename cc::split_list::make_traits<
2141 cc::split_list::ordered_list<cc::michael_list_tag>
2142 ,cc::split_list::dynamic_bucket_table< false >
2144 ,cc::split_list::ordered_list_traits<
2145 typename cc::michael_list::make_traits<
2146 co::compare< compare >
2150 > SplitList_Michael_RCU_GPI_st_cmp;
2152 typedef cc::SplitListMap< rcu_gpi, Key, Value,
2153 typename cc::split_list::make_traits<
2154 cc::split_list::ordered_list<cc::michael_list_tag>
2156 ,cc::split_list::dynamic_bucket_table< false >
2157 ,co::memory_model< co::v::sequential_consistent >
2158 ,cc::split_list::ordered_list_traits<
2159 typename cc::michael_list::make_traits<
2160 co::compare< compare >
2161 ,co::memory_model< co::v::sequential_consistent >
2165 > SplitList_Michael_RCU_GPI_st_cmp_seqcst;
2168 typedef cc::SplitListMap< rcu_gpi, Key, Value,
2169 typename cc::split_list::make_traits<
2170 cc::split_list::ordered_list<cc::michael_list_tag>
2172 ,cc::split_list::ordered_list_traits<
2173 typename cc::michael_list::make_traits<
2178 > SplitList_Michael_RCU_GPI_dyn_less;
2180 typedef cc::SplitListMap< rcu_gpi, Key, Value,
2181 typename cc::split_list::make_traits<
2182 cc::split_list::ordered_list<cc::michael_list_tag>
2184 ,co::memory_model< co::v::sequential_consistent >
2185 ,cc::split_list::ordered_list_traits<
2186 typename cc::michael_list::make_traits<
2188 ,co::memory_model< co::v::sequential_consistent >
2192 > SplitList_Michael_RCU_GPI_dyn_less_seqcst;
2194 typedef cc::SplitListMap< rcu_gpi, Key, Value,
2195 typename cc::split_list::make_traits<
2196 cc::split_list::ordered_list<cc::michael_list_tag>
2197 ,cc::split_list::dynamic_bucket_table< false >
2199 ,cc::split_list::ordered_list_traits<
2200 typename cc::michael_list::make_traits<
2205 > SplitList_Michael_RCU_GPI_st_less;
2207 typedef cc::SplitListMap< rcu_gpi, Key, Value,
2208 typename cc::split_list::make_traits<
2209 cc::split_list::ordered_list<cc::michael_list_tag>
2211 ,cc::split_list::dynamic_bucket_table< false >
2212 ,co::memory_model< co::v::sequential_consistent >
2213 ,cc::split_list::ordered_list_traits<
2214 typename cc::michael_list::make_traits<
2216 ,co::memory_model< co::v::sequential_consistent >
2220 > SplitList_Michael_RCU_GPI_st_less_seqcst;
2223 typedef cc::SplitListMap< rcu_gpb, Key, Value,
2224 typename cc::split_list::make_traits<
2225 cc::split_list::ordered_list<cc::michael_list_tag>
2227 ,cc::split_list::ordered_list_traits<
2228 typename cc::michael_list::make_traits<
2229 co::compare< compare >
2233 > SplitList_Michael_RCU_GPB_dyn_cmp;
2235 typedef cc::SplitListMap< rcu_gpb, Key, Value,
2236 typename cc::split_list::make_traits<
2237 cc::split_list::ordered_list<cc::michael_list_tag>
2239 ,co::memory_model< co::v::sequential_consistent >
2240 ,cc::split_list::ordered_list_traits<
2241 typename cc::michael_list::make_traits<
2242 co::compare< compare >
2243 ,co::memory_model< co::v::sequential_consistent >
2247 > SplitList_Michael_RCU_GPB_dyn_cmp_seqcst;
2249 typedef cc::SplitListMap< rcu_gpb, Key, Value,
2250 typename cc::split_list::make_traits<
2251 cc::split_list::ordered_list<cc::michael_list_tag>
2252 ,cc::split_list::dynamic_bucket_table< false >
2254 ,cc::split_list::ordered_list_traits<
2255 typename cc::michael_list::make_traits<
2256 co::compare< compare >
2260 > SplitList_Michael_RCU_GPB_st_cmp;
2262 typedef cc::SplitListMap< rcu_gpb, Key, Value,
2263 typename cc::split_list::make_traits<
2264 cc::split_list::ordered_list<cc::michael_list_tag>
2266 ,cc::split_list::dynamic_bucket_table< false >
2267 ,co::memory_model< co::v::sequential_consistent >
2268 ,cc::split_list::ordered_list_traits<
2269 typename cc::michael_list::make_traits<
2270 co::compare< compare >
2271 ,co::memory_model< co::v::sequential_consistent >
2275 > SplitList_Michael_RCU_GPB_st_cmp_seqcst;
2278 typedef cc::SplitListMap< rcu_gpb, Key, Value,
2279 typename cc::split_list::make_traits<
2280 cc::split_list::ordered_list<cc::michael_list_tag>
2282 ,cc::split_list::ordered_list_traits<
2283 typename cc::michael_list::make_traits<
2288 > SplitList_Michael_RCU_GPB_dyn_less;
2290 typedef cc::SplitListMap< rcu_gpb, Key, Value,
2291 typename cc::split_list::make_traits<
2292 cc::split_list::ordered_list<cc::michael_list_tag>
2294 ,co::memory_model< co::v::sequential_consistent >
2295 ,cc::split_list::ordered_list_traits<
2296 typename cc::michael_list::make_traits<
2298 ,co::memory_model< co::v::sequential_consistent >
2302 > SplitList_Michael_RCU_GPB_dyn_less_seqcst;
2304 typedef cc::SplitListMap< rcu_gpb, Key, Value,
2305 typename cc::split_list::make_traits<
2306 cc::split_list::ordered_list<cc::michael_list_tag>
2307 ,cc::split_list::dynamic_bucket_table< false >
2309 ,cc::split_list::ordered_list_traits<
2310 typename cc::michael_list::make_traits<
2315 > SplitList_Michael_RCU_GPB_st_less;
2317 typedef cc::SplitListMap< rcu_gpb, Key, Value,
2318 typename cc::split_list::make_traits<
2319 cc::split_list::ordered_list<cc::michael_list_tag>
2321 ,cc::split_list::dynamic_bucket_table< false >
2322 ,co::memory_model< co::v::sequential_consistent >
2323 ,cc::split_list::ordered_list_traits<
2324 typename cc::michael_list::make_traits<
2326 ,co::memory_model< co::v::sequential_consistent >
2330 > SplitList_Michael_RCU_GPB_st_less_seqcst;
2333 typedef cc::SplitListMap< rcu_gpt, Key, Value,
2334 typename cc::split_list::make_traits<
2335 cc::split_list::ordered_list<cc::michael_list_tag>
2337 ,cc::split_list::ordered_list_traits<
2338 typename cc::michael_list::make_traits<
2339 co::compare< compare >
2343 > SplitList_Michael_RCU_GPT_dyn_cmp;
2345 typedef cc::SplitListMap< rcu_gpt, Key, Value,
2346 typename cc::split_list::make_traits<
2347 cc::split_list::ordered_list<cc::michael_list_tag>
2349 ,co::memory_model< co::v::sequential_consistent >
2350 ,cc::split_list::ordered_list_traits<
2351 typename cc::michael_list::make_traits<
2352 co::compare< compare >
2353 ,co::memory_model< co::v::sequential_consistent >
2357 > SplitList_Michael_RCU_GPT_dyn_cmp_seqcst;
2359 typedef cc::SplitListMap< rcu_gpt, Key, Value,
2360 typename cc::split_list::make_traits<
2361 cc::split_list::ordered_list<cc::michael_list_tag>
2362 ,cc::split_list::dynamic_bucket_table< false >
2364 ,cc::split_list::ordered_list_traits<
2365 typename cc::michael_list::make_traits<
2366 co::compare< compare >
2370 > SplitList_Michael_RCU_GPT_st_cmp;
2372 typedef cc::SplitListMap< rcu_gpt, Key, Value,
2373 typename cc::split_list::make_traits<
2374 cc::split_list::ordered_list<cc::michael_list_tag>
2376 ,cc::split_list::dynamic_bucket_table< false >
2377 ,co::memory_model< co::v::sequential_consistent >
2378 ,cc::split_list::ordered_list_traits<
2379 typename cc::michael_list::make_traits<
2380 co::compare< compare >
2381 ,co::memory_model< co::v::sequential_consistent >
2385 > SplitList_Michael_RCU_GPT_st_cmp_seqcst;
2388 typedef cc::SplitListMap< rcu_gpt, Key, Value,
2389 typename cc::split_list::make_traits<
2390 cc::split_list::ordered_list<cc::michael_list_tag>
2392 ,cc::split_list::ordered_list_traits<
2393 typename cc::michael_list::make_traits<
2398 > SplitList_Michael_RCU_GPT_dyn_less;
2400 typedef cc::SplitListMap< rcu_gpt, Key, Value,
2401 typename cc::split_list::make_traits<
2402 cc::split_list::ordered_list<cc::michael_list_tag>
2404 ,co::memory_model< co::v::sequential_consistent >
2405 ,cc::split_list::ordered_list_traits<
2406 typename cc::michael_list::make_traits<
2408 ,co::memory_model< co::v::sequential_consistent >
2412 > SplitList_Michael_RCU_GPT_dyn_less_seqcst;
2414 typedef cc::SplitListMap< rcu_gpt, Key, Value,
2415 typename cc::split_list::make_traits<
2416 cc::split_list::ordered_list<cc::michael_list_tag>
2417 ,cc::split_list::dynamic_bucket_table< false >
2419 ,cc::split_list::ordered_list_traits<
2420 typename cc::michael_list::make_traits<
2425 > SplitList_Michael_RCU_GPT_st_less;
2427 typedef cc::SplitListMap< rcu_gpt, Key, Value,
2428 typename cc::split_list::make_traits<
2429 cc::split_list::ordered_list<cc::michael_list_tag>
2431 ,cc::split_list::dynamic_bucket_table< false >
2432 ,co::memory_model< co::v::sequential_consistent >
2433 ,cc::split_list::ordered_list_traits<
2434 typename cc::michael_list::make_traits<
2436 ,co::memory_model< co::v::sequential_consistent >
2440 > SplitList_Michael_RCU_GPT_st_less_seqcst;
2442 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
2443 typedef cc::SplitListMap< rcu_shb, Key, Value,
2444 typename cc::split_list::make_traits<
2445 cc::split_list::ordered_list<cc::michael_list_tag>
2447 ,cc::split_list::ordered_list_traits<
2448 typename cc::michael_list::make_traits<
2449 co::compare< compare >
2453 > SplitList_Michael_RCU_SHB_dyn_cmp;
2455 typedef cc::SplitListMap< rcu_shb, Key, Value,
2456 typename cc::split_list::make_traits<
2457 cc::split_list::ordered_list<cc::michael_list_tag>
2459 ,co::memory_model< co::v::sequential_consistent >
2460 ,cc::split_list::ordered_list_traits<
2461 typename cc::michael_list::make_traits<
2462 co::compare< compare >
2463 ,co::memory_model< co::v::sequential_consistent >
2467 > SplitList_Michael_RCU_SHB_dyn_cmp_seqcst;
2469 typedef cc::SplitListMap< rcu_shb, Key, Value,
2470 typename cc::split_list::make_traits<
2471 cc::split_list::ordered_list<cc::michael_list_tag>
2472 ,cc::split_list::dynamic_bucket_table< false >
2474 ,cc::split_list::ordered_list_traits<
2475 typename cc::michael_list::make_traits<
2476 co::compare< compare >
2480 > SplitList_Michael_RCU_SHB_st_cmp;
2482 typedef cc::SplitListMap< rcu_shb, Key, Value,
2483 typename cc::split_list::make_traits<
2484 cc::split_list::ordered_list<cc::michael_list_tag>
2486 ,cc::split_list::dynamic_bucket_table< false >
2487 ,co::memory_model< co::v::sequential_consistent >
2488 ,cc::split_list::ordered_list_traits<
2489 typename cc::michael_list::make_traits<
2490 co::compare< compare >
2491 ,co::memory_model< co::v::sequential_consistent >
2495 > SplitList_Michael_RCU_SHB_st_cmp_seqcst;
2498 typedef cc::SplitListMap< rcu_shb, Key, Value,
2499 typename cc::split_list::make_traits<
2500 cc::split_list::ordered_list<cc::michael_list_tag>
2502 ,cc::split_list::ordered_list_traits<
2503 typename cc::michael_list::make_traits<
2508 > SplitList_Michael_RCU_SHB_dyn_less;
2510 typedef cc::SplitListMap< rcu_shb, Key, Value,
2511 typename cc::split_list::make_traits<
2512 cc::split_list::ordered_list<cc::michael_list_tag>
2514 ,co::memory_model< co::v::sequential_consistent >
2515 ,cc::split_list::ordered_list_traits<
2516 typename cc::michael_list::make_traits<
2518 ,co::memory_model< co::v::sequential_consistent >
2522 > SplitList_Michael_RCU_SHB_dyn_less_seqcst;
2524 typedef cc::SplitListMap< rcu_shb, Key, Value,
2525 typename cc::split_list::make_traits<
2526 cc::split_list::ordered_list<cc::michael_list_tag>
2527 ,cc::split_list::dynamic_bucket_table< false >
2529 ,cc::split_list::ordered_list_traits<
2530 typename cc::michael_list::make_traits<
2535 > SplitList_Michael_RCU_SHB_st_less;
2537 typedef cc::SplitListMap< rcu_shb, Key, Value,
2538 typename cc::split_list::make_traits<
2539 cc::split_list::ordered_list<cc::michael_list_tag>
2541 ,cc::split_list::dynamic_bucket_table< false >
2542 ,co::memory_model< co::v::sequential_consistent >
2543 ,cc::split_list::ordered_list_traits<
2544 typename cc::michael_list::make_traits<
2546 ,co::memory_model< co::v::sequential_consistent >
2550 > SplitList_Michael_RCU_SHB_st_less_seqcst;
2553 typedef cc::SplitListMap< rcu_sht, Key, Value,
2554 typename cc::split_list::make_traits<
2555 cc::split_list::ordered_list<cc::michael_list_tag>
2557 ,cc::split_list::ordered_list_traits<
2558 typename cc::michael_list::make_traits<
2559 co::compare< compare >
2563 > SplitList_Michael_RCU_SHT_dyn_cmp;
2565 typedef cc::SplitListMap< rcu_sht, Key, Value,
2566 typename cc::split_list::make_traits<
2567 cc::split_list::ordered_list<cc::michael_list_tag>
2569 ,co::memory_model< co::v::sequential_consistent >
2570 ,cc::split_list::ordered_list_traits<
2571 typename cc::michael_list::make_traits<
2572 co::compare< compare >
2573 ,co::memory_model< co::v::sequential_consistent >
2577 > SplitList_Michael_RCU_SHT_dyn_cmp_seqcst;
2579 typedef cc::SplitListMap< rcu_sht, Key, Value,
2580 typename cc::split_list::make_traits<
2581 cc::split_list::ordered_list<cc::michael_list_tag>
2582 ,cc::split_list::dynamic_bucket_table< false >
2584 ,cc::split_list::ordered_list_traits<
2585 typename cc::michael_list::make_traits<
2586 co::compare< compare >
2590 > SplitList_Michael_RCU_SHT_st_cmp;
2592 typedef cc::SplitListMap< rcu_sht, Key, Value,
2593 typename cc::split_list::make_traits<
2594 cc::split_list::ordered_list<cc::michael_list_tag>
2596 ,cc::split_list::dynamic_bucket_table< false >
2597 ,co::memory_model< co::v::sequential_consistent >
2598 ,cc::split_list::ordered_list_traits<
2599 typename cc::michael_list::make_traits<
2600 co::compare< compare >
2601 ,co::memory_model< co::v::sequential_consistent >
2605 > SplitList_Michael_RCU_SHT_st_cmp_seqcst;
2608 typedef cc::SplitListMap< rcu_sht, Key, Value,
2609 typename cc::split_list::make_traits<
2610 cc::split_list::ordered_list<cc::michael_list_tag>
2612 ,cc::split_list::ordered_list_traits<
2613 typename cc::michael_list::make_traits<
2618 > SplitList_Michael_RCU_SHT_dyn_less;
2620 typedef cc::SplitListMap< rcu_sht, Key, Value,
2621 typename cc::split_list::make_traits<
2622 cc::split_list::ordered_list<cc::michael_list_tag>
2624 ,co::memory_model< co::v::sequential_consistent >
2625 ,cc::split_list::ordered_list_traits<
2626 typename cc::michael_list::make_traits<
2628 ,co::memory_model< co::v::sequential_consistent >
2632 > SplitList_Michael_RCU_SHT_dyn_less_seqcst;
2634 typedef cc::SplitListMap< rcu_sht, Key, Value,
2635 typename cc::split_list::make_traits<
2636 cc::split_list::ordered_list<cc::michael_list_tag>
2637 ,cc::split_list::dynamic_bucket_table< false >
2639 ,cc::split_list::ordered_list_traits<
2640 typename cc::michael_list::make_traits<
2645 > SplitList_Michael_RCU_SHT_st_less;
2647 typedef cc::SplitListMap< rcu_sht, Key, Value,
2648 typename cc::split_list::make_traits<
2649 cc::split_list::ordered_list<cc::michael_list_tag>
2651 ,cc::split_list::dynamic_bucket_table< false >
2652 ,co::memory_model< co::v::sequential_consistent >
2653 ,cc::split_list::ordered_list_traits<
2654 typename cc::michael_list::make_traits<
2656 ,co::memory_model< co::v::sequential_consistent >
2660 > SplitList_Michael_RCU_SHT_st_less_seqcst;
2664 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
2665 typename cc::split_list::make_traits<
2666 cc::split_list::ordered_list<cc::michael_list_tag>
2668 ,cc::split_list::ordered_list_traits<
2669 typename cc::michael_list::make_traits<
2670 co::compare< compare >
2674 > > SplitList_Michael_NOGC_dyn_cmp;
2676 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
2677 typename cc::split_list::make_traits<
2678 cc::split_list::ordered_list<cc::michael_list_tag>
2680 ,co::memory_model< co::v::sequential_consistent >
2681 ,cc::split_list::ordered_list_traits<
2682 typename cc::michael_list::make_traits<
2683 co::compare< compare >
2684 ,co::memory_model< co::v::sequential_consistent >
2688 > > SplitList_Michael_NOGC_dyn_cmp_seqcst;
2690 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
2691 typename cc::split_list::make_traits<
2692 cc::split_list::ordered_list<cc::michael_list_tag>
2693 ,cc::split_list::dynamic_bucket_table< false >
2695 ,cc::split_list::ordered_list_traits<
2696 typename cc::michael_list::make_traits<
2697 co::compare< compare >
2701 > > SplitList_Michael_NOGC_st_cmp;
2703 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
2704 typename cc::split_list::make_traits<
2705 cc::split_list::ordered_list<cc::michael_list_tag>
2707 ,cc::split_list::dynamic_bucket_table< false >
2708 ,co::memory_model< co::v::sequential_consistent >
2709 ,cc::split_list::ordered_list_traits<
2710 typename cc::michael_list::make_traits<
2711 co::compare< compare >
2712 ,co::memory_model< co::v::sequential_consistent >
2716 > > SplitList_Michael_NOGC_st_cmp_seqcst;
2719 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
2720 typename cc::split_list::make_traits<
2721 cc::split_list::ordered_list<cc::michael_list_tag>
2723 ,cc::split_list::ordered_list_traits<
2724 typename cc::michael_list::make_traits<
2729 > > SplitList_Michael_NOGC_dyn_less;
2731 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
2732 typename cc::split_list::make_traits<
2733 cc::split_list::ordered_list<cc::michael_list_tag>
2735 ,co::memory_model< co::v::sequential_consistent >
2736 ,cc::split_list::ordered_list_traits<
2737 typename cc::michael_list::make_traits<
2739 ,co::memory_model< co::v::sequential_consistent >
2743 > > SplitList_Michael_NOGC_dyn_less_seqcst;
2745 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
2746 typename cc::split_list::make_traits<
2747 cc::split_list::ordered_list<cc::michael_list_tag>
2748 ,cc::split_list::dynamic_bucket_table< false >
2750 ,cc::split_list::ordered_list_traits<
2751 typename cc::michael_list::make_traits<
2756 > > SplitList_Michael_NOGC_st_less;
2758 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
2759 typename cc::split_list::make_traits<
2760 cc::split_list::ordered_list<cc::michael_list_tag>
2762 ,cc::split_list::dynamic_bucket_table< false >
2763 ,co::memory_model< co::v::sequential_consistent >
2764 ,cc::split_list::ordered_list_traits<
2765 typename cc::michael_list::make_traits<
2767 ,co::memory_model< co::v::sequential_consistent >
2771 > > SplitList_Michael_NOGC_st_less_seqcst;
2774 // ***************************************************************************
2775 // SplitListMap based on LazyKVList
2778 typedef cc::SplitListMap< cds::gc::HP, Key, Value,
2779 typename cc::split_list::make_traits<
2780 cc::split_list::ordered_list<cc::lazy_list_tag>
2782 ,cc::split_list::ordered_list_traits<
2783 typename cc::lazy_list::make_traits<
2784 co::compare< compare >
2788 > SplitList_Lazy_HP_dyn_cmp;
2790 typedef cc::SplitListMap< cds::gc::HP, Key, Value,
2791 typename cc::split_list::make_traits<
2792 cc::split_list::ordered_list<cc::lazy_list_tag>
2794 ,co::memory_model< co::v::sequential_consistent >
2795 ,cc::split_list::ordered_list_traits<
2796 typename cc::lazy_list::make_traits<
2797 co::compare< compare >
2798 ,co::memory_model< co::v::sequential_consistent >
2802 > SplitList_Lazy_HP_dyn_cmp_seqcst;
2804 typedef cc::SplitListMap< cds::gc::HP, Key, Value,
2805 typename cc::split_list::make_traits<
2806 cc::split_list::ordered_list<cc::lazy_list_tag>
2807 ,cc::split_list::dynamic_bucket_table< false >
2809 ,cc::split_list::ordered_list_traits<
2810 typename cc::lazy_list::make_traits<
2811 co::compare< compare >
2815 > SplitList_Lazy_HP_st_cmp;
2817 typedef cc::SplitListMap< cds::gc::HP, Key, Value,
2818 typename cc::split_list::make_traits<
2819 cc::split_list::ordered_list<cc::lazy_list_tag>
2821 ,cc::split_list::dynamic_bucket_table< false >
2822 ,co::memory_model< co::v::sequential_consistent >
2823 ,cc::split_list::ordered_list_traits<
2824 typename cc::lazy_list::make_traits<
2825 co::compare< compare >
2826 ,co::memory_model< co::v::sequential_consistent >
2830 > SplitList_Lazy_HP_st_cmp_seqcst;
2834 typedef cc::SplitListMap< cds::gc::HP, Key, Value,
2835 typename cc::split_list::make_traits<
2836 cc::split_list::ordered_list<cc::lazy_list_tag>
2838 ,cc::split_list::ordered_list_traits<
2839 typename cc::lazy_list::make_traits<
2844 > SplitList_Lazy_HP_dyn_less;
2846 typedef cc::SplitListMap< cds::gc::HP, Key, Value,
2847 typename cc::split_list::make_traits<
2848 cc::split_list::ordered_list<cc::lazy_list_tag>
2850 ,co::memory_model< co::v::sequential_consistent >
2851 ,cc::split_list::ordered_list_traits<
2852 typename cc::lazy_list::make_traits<
2854 ,co::memory_model< co::v::sequential_consistent >
2858 > SplitList_Lazy_HP_dyn_less_seqcst;
2860 typedef cc::SplitListMap< cds::gc::HP, Key, Value,
2861 typename cc::split_list::make_traits<
2862 cc::split_list::ordered_list<cc::lazy_list_tag>
2863 ,cc::split_list::dynamic_bucket_table< false >
2865 ,cc::split_list::ordered_list_traits<
2866 typename cc::lazy_list::make_traits<
2871 > SplitList_Lazy_HP_st_less;
2873 typedef cc::SplitListMap< cds::gc::HP, Key, Value,
2874 typename cc::split_list::make_traits<
2875 cc::split_list::ordered_list<cc::lazy_list_tag>
2877 ,cc::split_list::dynamic_bucket_table< false >
2878 ,co::memory_model< co::v::sequential_consistent >
2879 ,cc::split_list::ordered_list_traits<
2880 typename cc::lazy_list::make_traits<
2882 ,co::memory_model< co::v::sequential_consistent >
2886 > SplitList_Lazy_HP_st_less_seqcst;
2889 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
2890 typename cc::split_list::make_traits<
2891 cc::split_list::ordered_list<cc::lazy_list_tag>
2893 ,cc::split_list::ordered_list_traits<
2894 typename cc::lazy_list::make_traits<
2895 co::compare< compare >
2899 > SplitList_Lazy_HRC_dyn_cmp;
2901 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
2902 typename cc::split_list::make_traits<
2903 cc::split_list::ordered_list<cc::lazy_list_tag>
2905 ,co::memory_model< co::v::sequential_consistent >
2906 ,cc::split_list::ordered_list_traits<
2907 typename cc::lazy_list::make_traits<
2908 co::compare< compare >
2909 ,co::memory_model< co::v::sequential_consistent >
2913 > SplitList_Lazy_HRC_dyn_cmp_seqcst;
2915 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
2916 typename cc::split_list::make_traits<
2917 cc::split_list::ordered_list<cc::lazy_list_tag>
2918 ,cc::split_list::dynamic_bucket_table< false >
2920 ,cc::split_list::ordered_list_traits<
2921 typename cc::lazy_list::make_traits<
2922 co::compare< compare >
2926 > SplitList_Lazy_HRC_st_cmp;
2928 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
2929 typename cc::split_list::make_traits<
2930 cc::split_list::ordered_list<cc::lazy_list_tag>
2932 ,cc::split_list::dynamic_bucket_table< false >
2933 ,co::memory_model< co::v::sequential_consistent >
2934 ,cc::split_list::ordered_list_traits<
2935 typename cc::lazy_list::make_traits<
2936 co::compare< compare >
2937 ,co::memory_model< co::v::sequential_consistent >
2941 > SplitList_Lazy_HRC_st_cmp_seqcst;
2944 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
2945 typename cc::split_list::make_traits<
2946 cc::split_list::ordered_list<cc::lazy_list_tag>
2948 ,cc::split_list::ordered_list_traits<
2949 typename cc::lazy_list::make_traits<
2954 > SplitList_Lazy_HRC_dyn_less;
2956 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
2957 typename cc::split_list::make_traits<
2958 cc::split_list::ordered_list<cc::lazy_list_tag>
2960 ,co::memory_model< co::v::sequential_consistent >
2961 ,cc::split_list::ordered_list_traits<
2962 typename cc::lazy_list::make_traits<
2964 ,co::memory_model< co::v::sequential_consistent >
2968 > SplitList_Lazy_HRC_dyn_less_seqcst;
2970 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
2971 typename cc::split_list::make_traits<
2972 cc::split_list::ordered_list<cc::lazy_list_tag>
2973 ,cc::split_list::dynamic_bucket_table< false >
2975 ,cc::split_list::ordered_list_traits<
2976 typename cc::lazy_list::make_traits<
2981 > SplitList_Lazy_HRC_st_less;
2983 typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
2984 typename cc::split_list::make_traits<
2985 cc::split_list::ordered_list<cc::lazy_list_tag>
2987 ,cc::split_list::dynamic_bucket_table< false >
2988 ,co::memory_model< co::v::sequential_consistent >
2989 ,cc::split_list::ordered_list_traits<
2990 typename cc::lazy_list::make_traits<
2992 ,co::memory_model< co::v::sequential_consistent >
2996 > SplitList_Lazy_HRC_st_less_seqcst;
3000 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
3001 typename cc::split_list::make_traits<
3002 cc::split_list::ordered_list<cc::lazy_list_tag>
3004 ,cc::split_list::ordered_list_traits<
3005 typename cc::lazy_list::make_traits<
3006 co::compare< compare >
3010 > SplitList_Lazy_PTB_dyn_cmp;
3012 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
3013 typename cc::split_list::make_traits<
3014 cc::split_list::ordered_list<cc::lazy_list_tag>
3016 ,co::memory_model< co::v::sequential_consistent >
3017 ,cc::split_list::ordered_list_traits<
3018 typename cc::lazy_list::make_traits<
3019 co::compare< compare >
3020 ,co::memory_model< co::v::sequential_consistent >
3024 > SplitList_Lazy_PTB_dyn_cmp_seqcst;
3026 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
3027 typename cc::split_list::make_traits<
3028 cc::split_list::ordered_list<cc::lazy_list_tag>
3029 ,cc::split_list::dynamic_bucket_table< false >
3031 ,cc::split_list::ordered_list_traits<
3032 typename cc::lazy_list::make_traits<
3033 co::compare< compare >
3037 > SplitList_Lazy_PTB_st_cmp;
3039 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
3040 typename cc::split_list::make_traits<
3041 cc::split_list::ordered_list<cc::lazy_list_tag>
3043 ,cc::split_list::dynamic_bucket_table< false >
3044 ,co::memory_model< co::v::sequential_consistent >
3045 ,cc::split_list::ordered_list_traits<
3046 typename cc::lazy_list::make_traits<
3047 co::compare< compare >
3048 ,co::memory_model< co::v::sequential_consistent >
3052 > SplitList_Lazy_PTB_st_cmp_seqcst;
3055 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
3056 typename cc::split_list::make_traits<
3057 cc::split_list::ordered_list<cc::lazy_list_tag>
3059 ,cc::split_list::ordered_list_traits<
3060 typename cc::lazy_list::make_traits<
3065 > SplitList_Lazy_PTB_dyn_less;
3067 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
3068 typename cc::split_list::make_traits<
3069 cc::split_list::ordered_list<cc::lazy_list_tag>
3071 ,co::memory_model< co::v::sequential_consistent >
3072 ,cc::split_list::ordered_list_traits<
3073 typename cc::lazy_list::make_traits<
3075 ,co::memory_model< co::v::sequential_consistent >
3079 > SplitList_Lazy_PTB_dyn_less_seqcst;
3081 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
3082 typename cc::split_list::make_traits<
3083 cc::split_list::ordered_list<cc::lazy_list_tag>
3084 ,cc::split_list::dynamic_bucket_table< false >
3086 ,cc::split_list::ordered_list_traits<
3087 typename cc::lazy_list::make_traits<
3092 > SplitList_Lazy_PTB_st_less;
3094 typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
3095 typename cc::split_list::make_traits<
3096 cc::split_list::ordered_list<cc::lazy_list_tag>
3098 ,cc::split_list::dynamic_bucket_table< false >
3099 ,co::memory_model< co::v::sequential_consistent >
3100 ,cc::split_list::ordered_list_traits<
3101 typename cc::lazy_list::make_traits<
3103 ,co::memory_model< co::v::sequential_consistent >
3107 > SplitList_Lazy_PTB_st_less_seqcst;
3110 typedef cc::SplitListMap< rcu_gpi, Key, Value,
3111 typename cc::split_list::make_traits<
3112 cc::split_list::ordered_list<cc::lazy_list_tag>
3114 ,cc::split_list::ordered_list_traits<
3115 typename cc::lazy_list::make_traits<
3116 co::compare< compare >
3120 > SplitList_Lazy_RCU_GPI_dyn_cmp;
3122 typedef cc::SplitListMap< rcu_gpi, Key, Value,
3123 typename cc::split_list::make_traits<
3124 cc::split_list::ordered_list<cc::lazy_list_tag>
3126 ,co::memory_model< co::v::sequential_consistent >
3127 ,cc::split_list::ordered_list_traits<
3128 typename cc::lazy_list::make_traits<
3129 co::compare< compare >
3130 ,co::memory_model< co::v::sequential_consistent >
3134 > SplitList_Lazy_RCU_GPI_dyn_cmp_seqcst;
3136 typedef cc::SplitListMap< rcu_gpi, Key, Value,
3137 typename cc::split_list::make_traits<
3138 cc::split_list::ordered_list<cc::lazy_list_tag>
3139 ,cc::split_list::dynamic_bucket_table< false >
3141 ,cc::split_list::ordered_list_traits<
3142 typename cc::lazy_list::make_traits<
3143 co::compare< compare >
3147 > SplitList_Lazy_RCU_GPI_st_cmp;
3149 typedef cc::SplitListMap< rcu_gpi, Key, Value,
3150 typename cc::split_list::make_traits<
3151 cc::split_list::ordered_list<cc::lazy_list_tag>
3153 ,cc::split_list::dynamic_bucket_table< false >
3154 ,co::memory_model< co::v::sequential_consistent >
3155 ,cc::split_list::ordered_list_traits<
3156 typename cc::lazy_list::make_traits<
3157 co::compare< compare >
3158 ,co::memory_model< co::v::sequential_consistent >
3162 > SplitList_Lazy_RCU_GPI_st_cmp_seqcst;
3165 typedef cc::SplitListMap< rcu_gpi, Key, Value,
3166 typename cc::split_list::make_traits<
3167 cc::split_list::ordered_list<cc::lazy_list_tag>
3169 ,cc::split_list::ordered_list_traits<
3170 typename cc::lazy_list::make_traits<
3175 > SplitList_Lazy_RCU_GPI_dyn_less;
3177 typedef cc::SplitListMap< rcu_gpi, Key, Value,
3178 typename cc::split_list::make_traits<
3179 cc::split_list::ordered_list<cc::lazy_list_tag>
3181 ,co::memory_model< co::v::sequential_consistent >
3182 ,cc::split_list::ordered_list_traits<
3183 typename cc::lazy_list::make_traits<
3185 ,co::memory_model< co::v::sequential_consistent >
3189 > SplitList_Lazy_RCU_GPI_dyn_less_seqcst;
3191 typedef cc::SplitListMap< rcu_gpi, Key, Value,
3192 typename cc::split_list::make_traits<
3193 cc::split_list::ordered_list<cc::lazy_list_tag>
3194 ,cc::split_list::dynamic_bucket_table< false >
3196 ,cc::split_list::ordered_list_traits<
3197 typename cc::lazy_list::make_traits<
3202 > SplitList_Lazy_RCU_GPI_st_less;
3204 typedef cc::SplitListMap< rcu_gpi, Key, Value,
3205 typename cc::split_list::make_traits<
3206 cc::split_list::ordered_list<cc::lazy_list_tag>
3208 ,cc::split_list::dynamic_bucket_table< false >
3209 ,co::memory_model< co::v::sequential_consistent >
3210 ,cc::split_list::ordered_list_traits<
3211 typename cc::lazy_list::make_traits<
3213 ,co::memory_model< co::v::sequential_consistent >
3217 > SplitList_Lazy_RCU_GPI_st_less_seqcst;
3220 typedef cc::SplitListMap< rcu_gpb, Key, Value,
3221 typename cc::split_list::make_traits<
3222 cc::split_list::ordered_list<cc::lazy_list_tag>
3224 ,cc::split_list::ordered_list_traits<
3225 typename cc::lazy_list::make_traits<
3226 co::compare< compare >
3230 > SplitList_Lazy_RCU_GPB_dyn_cmp;
3232 typedef cc::SplitListMap< rcu_gpb, Key, Value,
3233 typename cc::split_list::make_traits<
3234 cc::split_list::ordered_list<cc::lazy_list_tag>
3236 ,co::memory_model< co::v::sequential_consistent >
3237 ,cc::split_list::ordered_list_traits<
3238 typename cc::lazy_list::make_traits<
3239 co::compare< compare >
3240 ,co::memory_model< co::v::sequential_consistent >
3244 > SplitList_Lazy_RCU_GPB_dyn_cmp_seqcst;
3246 typedef cc::SplitListMap< rcu_gpb, Key, Value,
3247 typename cc::split_list::make_traits<
3248 cc::split_list::ordered_list<cc::lazy_list_tag>
3249 ,cc::split_list::dynamic_bucket_table< false >
3251 ,cc::split_list::ordered_list_traits<
3252 typename cc::lazy_list::make_traits<
3253 co::compare< compare >
3257 > SplitList_Lazy_RCU_GPB_st_cmp;
3259 typedef cc::SplitListMap< rcu_gpb, Key, Value,
3260 typename cc::split_list::make_traits<
3261 cc::split_list::ordered_list<cc::lazy_list_tag>
3263 ,cc::split_list::dynamic_bucket_table< false >
3264 ,co::memory_model< co::v::sequential_consistent >
3265 ,cc::split_list::ordered_list_traits<
3266 typename cc::lazy_list::make_traits<
3267 co::compare< compare >
3268 ,co::memory_model< co::v::sequential_consistent >
3272 > SplitList_Lazy_RCU_GPB_st_cmp_seqcst;
3275 typedef cc::SplitListMap< rcu_gpb, Key, Value,
3276 typename cc::split_list::make_traits<
3277 cc::split_list::ordered_list<cc::lazy_list_tag>
3279 ,cc::split_list::ordered_list_traits<
3280 typename cc::lazy_list::make_traits<
3285 > SplitList_Lazy_RCU_GPB_dyn_less;
3287 typedef cc::SplitListMap< rcu_gpb, Key, Value,
3288 typename cc::split_list::make_traits<
3289 cc::split_list::ordered_list<cc::lazy_list_tag>
3291 ,co::memory_model< co::v::sequential_consistent >
3292 ,cc::split_list::ordered_list_traits<
3293 typename cc::lazy_list::make_traits<
3295 ,co::memory_model< co::v::sequential_consistent >
3299 > SplitList_Lazy_RCU_GPB_dyn_less_seqcst;
3301 typedef cc::SplitListMap< rcu_gpb, Key, Value,
3302 typename cc::split_list::make_traits<
3303 cc::split_list::ordered_list<cc::lazy_list_tag>
3304 ,cc::split_list::dynamic_bucket_table< false >
3306 ,cc::split_list::ordered_list_traits<
3307 typename cc::lazy_list::make_traits<
3312 > SplitList_Lazy_RCU_GPB_st_less;
3314 typedef cc::SplitListMap< rcu_gpb, Key, Value,
3315 typename cc::split_list::make_traits<
3316 cc::split_list::ordered_list<cc::lazy_list_tag>
3318 ,cc::split_list::dynamic_bucket_table< false >
3319 ,co::memory_model< co::v::sequential_consistent >
3320 ,cc::split_list::ordered_list_traits<
3321 typename cc::lazy_list::make_traits<
3323 ,co::memory_model< co::v::sequential_consistent >
3327 > SplitList_Lazy_RCU_GPB_st_less_seqcst;
3330 typedef cc::SplitListMap< rcu_gpt, Key, Value,
3331 typename cc::split_list::make_traits<
3332 cc::split_list::ordered_list<cc::lazy_list_tag>
3334 ,cc::split_list::ordered_list_traits<
3335 typename cc::lazy_list::make_traits<
3336 co::compare< compare >
3340 > SplitList_Lazy_RCU_GPT_dyn_cmp;
3342 typedef cc::SplitListMap< rcu_gpt, Key, Value,
3343 typename cc::split_list::make_traits<
3344 cc::split_list::ordered_list<cc::lazy_list_tag>
3346 ,co::memory_model< co::v::sequential_consistent >
3347 ,cc::split_list::ordered_list_traits<
3348 typename cc::lazy_list::make_traits<
3349 co::compare< compare >
3350 ,co::memory_model< co::v::sequential_consistent >
3354 > SplitList_Lazy_RCU_GPT_dyn_cmp_seqcst;
3356 typedef cc::SplitListMap< rcu_gpt, Key, Value,
3357 typename cc::split_list::make_traits<
3358 cc::split_list::ordered_list<cc::lazy_list_tag>
3359 ,cc::split_list::dynamic_bucket_table< false >
3361 ,cc::split_list::ordered_list_traits<
3362 typename cc::lazy_list::make_traits<
3363 co::compare< compare >
3367 > SplitList_Lazy_RCU_GPT_st_cmp;
3369 typedef cc::SplitListMap< rcu_gpt, Key, Value,
3370 typename cc::split_list::make_traits<
3371 cc::split_list::ordered_list<cc::lazy_list_tag>
3373 ,cc::split_list::dynamic_bucket_table< false >
3374 ,co::memory_model< co::v::sequential_consistent >
3375 ,cc::split_list::ordered_list_traits<
3376 typename cc::lazy_list::make_traits<
3377 co::compare< compare >
3378 ,co::memory_model< co::v::sequential_consistent >
3382 > SplitList_Lazy_RCU_GPT_st_cmp_seqcst;
3385 typedef cc::SplitListMap< rcu_gpt, Key, Value,
3386 typename cc::split_list::make_traits<
3387 cc::split_list::ordered_list<cc::lazy_list_tag>
3389 ,cc::split_list::ordered_list_traits<
3390 typename cc::lazy_list::make_traits<
3395 > SplitList_Lazy_RCU_GPT_dyn_less;
3397 typedef cc::SplitListMap< rcu_gpt, Key, Value,
3398 typename cc::split_list::make_traits<
3399 cc::split_list::ordered_list<cc::lazy_list_tag>
3401 ,co::memory_model< co::v::sequential_consistent >
3402 ,cc::split_list::ordered_list_traits<
3403 typename cc::lazy_list::make_traits<
3405 ,co::memory_model< co::v::sequential_consistent >
3409 > SplitList_Lazy_RCU_GPT_dyn_less_seqcst;
3411 typedef cc::SplitListMap< rcu_gpt, Key, Value,
3412 typename cc::split_list::make_traits<
3413 cc::split_list::ordered_list<cc::lazy_list_tag>
3414 ,cc::split_list::dynamic_bucket_table< false >
3416 ,cc::split_list::ordered_list_traits<
3417 typename cc::lazy_list::make_traits<
3422 > SplitList_Lazy_RCU_GPT_st_less;
3424 typedef cc::SplitListMap< rcu_gpt, Key, Value,
3425 typename cc::split_list::make_traits<
3426 cc::split_list::ordered_list<cc::lazy_list_tag>
3428 ,cc::split_list::dynamic_bucket_table< false >
3429 ,co::memory_model< co::v::sequential_consistent >
3430 ,cc::split_list::ordered_list_traits<
3431 typename cc::lazy_list::make_traits<
3433 ,co::memory_model< co::v::sequential_consistent >
3437 > SplitList_Lazy_RCU_GPT_st_less_seqcst;
3439 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
3440 typedef cc::SplitListMap< rcu_shb, Key, Value,
3441 typename cc::split_list::make_traits<
3442 cc::split_list::ordered_list<cc::lazy_list_tag>
3444 ,cc::split_list::ordered_list_traits<
3445 typename cc::lazy_list::make_traits<
3446 co::compare< compare >
3450 > SplitList_Lazy_RCU_SHB_dyn_cmp;
3452 typedef cc::SplitListMap< rcu_shb, Key, Value,
3453 typename cc::split_list::make_traits<
3454 cc::split_list::ordered_list<cc::lazy_list_tag>
3456 ,co::memory_model< co::v::sequential_consistent >
3457 ,cc::split_list::ordered_list_traits<
3458 typename cc::lazy_list::make_traits<
3459 co::compare< compare >
3460 ,co::memory_model< co::v::sequential_consistent >
3464 > SplitList_Lazy_RCU_SHB_dyn_cmp_seqcst;
3466 typedef cc::SplitListMap< rcu_shb, Key, Value,
3467 typename cc::split_list::make_traits<
3468 cc::split_list::ordered_list<cc::lazy_list_tag>
3469 ,cc::split_list::dynamic_bucket_table< false >
3471 ,cc::split_list::ordered_list_traits<
3472 typename cc::lazy_list::make_traits<
3473 co::compare< compare >
3477 > SplitList_Lazy_RCU_SHB_st_cmp;
3479 typedef cc::SplitListMap< rcu_shb, Key, Value,
3480 typename cc::split_list::make_traits<
3481 cc::split_list::ordered_list<cc::lazy_list_tag>
3483 ,cc::split_list::dynamic_bucket_table< false >
3484 ,co::memory_model< co::v::sequential_consistent >
3485 ,cc::split_list::ordered_list_traits<
3486 typename cc::lazy_list::make_traits<
3487 co::compare< compare >
3488 ,co::memory_model< co::v::sequential_consistent >
3492 > SplitList_Lazy_RCU_SHB_st_cmp_seqcst;
3495 typedef cc::SplitListMap< rcu_shb, Key, Value,
3496 typename cc::split_list::make_traits<
3497 cc::split_list::ordered_list<cc::lazy_list_tag>
3499 ,cc::split_list::ordered_list_traits<
3500 typename cc::lazy_list::make_traits<
3505 > SplitList_Lazy_RCU_SHB_dyn_less;
3507 typedef cc::SplitListMap< rcu_shb, Key, Value,
3508 typename cc::split_list::make_traits<
3509 cc::split_list::ordered_list<cc::lazy_list_tag>
3511 ,co::memory_model< co::v::sequential_consistent >
3512 ,cc::split_list::ordered_list_traits<
3513 typename cc::lazy_list::make_traits<
3515 ,co::memory_model< co::v::sequential_consistent >
3519 > SplitList_Lazy_RCU_SHB_dyn_less_seqcst;
3521 typedef cc::SplitListMap< rcu_shb, Key, Value,
3522 typename cc::split_list::make_traits<
3523 cc::split_list::ordered_list<cc::lazy_list_tag>
3524 ,cc::split_list::dynamic_bucket_table< false >
3526 ,cc::split_list::ordered_list_traits<
3527 typename cc::lazy_list::make_traits<
3532 > SplitList_Lazy_RCU_SHB_st_less;
3534 typedef cc::SplitListMap< rcu_shb, Key, Value,
3535 typename cc::split_list::make_traits<
3536 cc::split_list::ordered_list<cc::lazy_list_tag>
3538 ,cc::split_list::dynamic_bucket_table< false >
3539 ,co::memory_model< co::v::sequential_consistent >
3540 ,cc::split_list::ordered_list_traits<
3541 typename cc::lazy_list::make_traits<
3543 ,co::memory_model< co::v::sequential_consistent >
3547 > SplitList_Lazy_RCU_SHB_st_less_seqcst;
3550 typedef cc::SplitListMap< rcu_sht, Key, Value,
3551 typename cc::split_list::make_traits<
3552 cc::split_list::ordered_list<cc::lazy_list_tag>
3554 ,cc::split_list::ordered_list_traits<
3555 typename cc::lazy_list::make_traits<
3556 co::compare< compare >
3560 > SplitList_Lazy_RCU_SHT_dyn_cmp;
3562 typedef cc::SplitListMap< rcu_sht, Key, Value,
3563 typename cc::split_list::make_traits<
3564 cc::split_list::ordered_list<cc::lazy_list_tag>
3566 ,co::memory_model< co::v::sequential_consistent >
3567 ,cc::split_list::ordered_list_traits<
3568 typename cc::lazy_list::make_traits<
3569 co::compare< compare >
3570 ,co::memory_model< co::v::sequential_consistent >
3574 > SplitList_Lazy_RCU_SHT_dyn_cmp_seqcst;
3576 typedef cc::SplitListMap< rcu_sht, Key, Value,
3577 typename cc::split_list::make_traits<
3578 cc::split_list::ordered_list<cc::lazy_list_tag>
3579 ,cc::split_list::dynamic_bucket_table< false >
3581 ,cc::split_list::ordered_list_traits<
3582 typename cc::lazy_list::make_traits<
3583 co::compare< compare >
3587 > SplitList_Lazy_RCU_SHT_st_cmp;
3589 typedef cc::SplitListMap< rcu_sht, Key, Value,
3590 typename cc::split_list::make_traits<
3591 cc::split_list::ordered_list<cc::lazy_list_tag>
3593 ,cc::split_list::dynamic_bucket_table< false >
3594 ,co::memory_model< co::v::sequential_consistent >
3595 ,cc::split_list::ordered_list_traits<
3596 typename cc::lazy_list::make_traits<
3597 co::compare< compare >
3598 ,co::memory_model< co::v::sequential_consistent >
3602 > SplitList_Lazy_RCU_SHT_st_cmp_seqcst;
3605 typedef cc::SplitListMap< rcu_sht, Key, Value,
3606 typename cc::split_list::make_traits<
3607 cc::split_list::ordered_list<cc::lazy_list_tag>
3609 ,cc::split_list::ordered_list_traits<
3610 typename cc::lazy_list::make_traits<
3615 > SplitList_Lazy_RCU_SHT_dyn_less;
3617 typedef cc::SplitListMap< rcu_sht, Key, Value,
3618 typename cc::split_list::make_traits<
3619 cc::split_list::ordered_list<cc::lazy_list_tag>
3621 ,co::memory_model< co::v::sequential_consistent >
3622 ,cc::split_list::ordered_list_traits<
3623 typename cc::lazy_list::make_traits<
3625 ,co::memory_model< co::v::sequential_consistent >
3629 > SplitList_Lazy_RCU_SHT_dyn_less_seqcst;
3631 typedef cc::SplitListMap< rcu_sht, Key, Value,
3632 typename cc::split_list::make_traits<
3633 cc::split_list::ordered_list<cc::lazy_list_tag>
3634 ,cc::split_list::dynamic_bucket_table< false >
3636 ,cc::split_list::ordered_list_traits<
3637 typename cc::lazy_list::make_traits<
3642 > SplitList_Lazy_RCU_SHT_st_less;
3644 typedef cc::SplitListMap< rcu_sht, Key, Value,
3645 typename cc::split_list::make_traits<
3646 cc::split_list::ordered_list<cc::lazy_list_tag>
3648 ,cc::split_list::dynamic_bucket_table< false >
3649 ,co::memory_model< co::v::sequential_consistent >
3650 ,cc::split_list::ordered_list_traits<
3651 typename cc::lazy_list::make_traits<
3653 ,co::memory_model< co::v::sequential_consistent >
3657 > SplitList_Lazy_RCU_SHT_st_less_seqcst;
3661 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
3662 typename cc::split_list::make_traits<
3663 cc::split_list::ordered_list<cc::lazy_list_tag>
3665 ,cc::split_list::ordered_list_traits<
3666 typename cc::lazy_list::make_traits<
3667 co::compare< compare >
3671 > > SplitList_Lazy_NOGC_dyn_cmp;
3673 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
3674 typename cc::split_list::make_traits<
3675 cc::split_list::ordered_list<cc::lazy_list_tag>
3677 ,co::memory_model< co::v::sequential_consistent >
3678 ,cc::split_list::ordered_list_traits<
3679 typename cc::lazy_list::make_traits<
3680 co::compare< compare >
3681 ,co::memory_model< co::v::sequential_consistent >
3685 > > SplitList_Lazy_NOGC_dyn_cmp_seqcst;
3687 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
3688 typename cc::split_list::make_traits<
3689 cc::split_list::ordered_list<cc::lazy_list_tag>
3690 ,cc::split_list::dynamic_bucket_table< false >
3692 ,cc::split_list::ordered_list_traits<
3693 typename cc::lazy_list::make_traits<
3694 co::compare< compare >
3698 > > SplitList_Lazy_NOGC_st_cmp;
3700 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
3701 typename cc::split_list::make_traits<
3702 cc::split_list::ordered_list<cc::lazy_list_tag>
3704 ,cc::split_list::dynamic_bucket_table< false >
3705 ,co::memory_model< co::v::sequential_consistent >
3706 ,cc::split_list::ordered_list_traits<
3707 typename cc::lazy_list::make_traits<
3708 co::compare< compare >
3709 ,co::memory_model< co::v::sequential_consistent >
3713 > > SplitList_Lazy_NOGC_st_cmp_seqcst;
3717 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
3718 typename cc::split_list::make_traits<
3719 cc::split_list::ordered_list<cc::lazy_list_tag>
3721 ,cc::split_list::ordered_list_traits<
3722 typename cc::lazy_list::make_traits<
3727 > > SplitList_Lazy_NOGC_dyn_less;
3729 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
3730 typename cc::split_list::make_traits<
3731 cc::split_list::ordered_list<cc::lazy_list_tag>
3733 ,co::memory_model< co::v::sequential_consistent >
3734 ,cc::split_list::ordered_list_traits<
3735 typename cc::lazy_list::make_traits<
3737 ,co::memory_model< co::v::sequential_consistent >
3741 > > SplitList_Lazy_NOGC_dyn_less_seqcst;
3743 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
3744 typename cc::split_list::make_traits<
3745 cc::split_list::ordered_list<cc::lazy_list_tag>
3746 ,cc::split_list::dynamic_bucket_table< false >
3748 ,cc::split_list::ordered_list_traits<
3749 typename cc::lazy_list::make_traits<
3754 > > SplitList_Lazy_NOGC_st_less;
3756 typedef NogcSplitMapWrapper< cc::SplitListMap< cds::gc::nogc, Key, Value,
3757 typename cc::split_list::make_traits<
3758 cc::split_list::ordered_list<cc::lazy_list_tag>
3760 ,cc::split_list::dynamic_bucket_table< false >
3761 ,co::memory_model< co::v::sequential_consistent >
3762 ,cc::split_list::ordered_list_traits<
3763 typename cc::lazy_list::make_traits<
3765 ,co::memory_model< co::v::sequential_consistent >
3769 > > SplitList_Lazy_NOGC_st_less_seqcst;
3772 // ***************************************************************************
3775 // for sequential containers
3776 template <class BucketEntry, CDS_DECL_OPTIONS7>
3777 class StripedHashMap_seq:
3778 public cc::StripedMap< BucketEntry,
3779 co::mutex_policy< cc::striped_set::striping<> >
3780 ,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
3784 typedef cc::StripedMap< BucketEntry,
3785 co::mutex_policy< cc::striped_set::striping<> >
3786 ,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
3789 typedef typename base_class::resizing_policy resizing_policy_t;
3791 resizing_policy_t m_placeHolder;
3793 StripedHashMap_seq( size_t nCapacity, size_t nLoadFactor )
3794 : base_class( nCapacity / nLoadFactor / 16, *(new(&m_placeHolder) resizing_policy_t( nLoadFactor )) )
3798 // for non-sequential ordered containers
3799 template <class BucketEntry, CDS_DECL_OPTIONS7>
3800 class StripedHashMap_ord:
3801 public cc::StripedMap< BucketEntry,
3802 co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
3803 ,co::mutex_policy< cc::striped_set::striping<> >
3807 typedef cc::StripedMap< BucketEntry,
3808 co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
3809 ,co::mutex_policy< cc::striped_set::striping<> >
3812 typedef typename base_class::resizing_policy resizing_policy_t;
3814 resizing_policy_t m_placeHolder;
3816 StripedHashMap_ord( size_t nCapacity, size_t nLoadFactor )
3817 : base_class( 0, *(new(&m_placeHolder) resizing_policy_t( nLoadFactor * 1024 )) )
3822 typedef StripedHashMap_seq<
3823 std::list< std::pair< Key const, Value > >
3828 #if (CDS_COMPILER == CDS_COMPILER_MSVC || CDS_COMPILER == CDS_COMPILER_INTEL) && _MSC_VER < 1600
3829 typedef StripedHashMap_ord<
3830 stdext::hash_map< Key, Value, stdext::hash_compare<Key, less > >
3832 > StripedMap_hashmap;
3834 typedef StripedHashMap_ord<
3835 std::unordered_map< Key, Value, hash, equal_to >
3837 > StripedMap_hashmap;
3840 typedef StripedHashMap_ord<
3841 std::map< Key, Value, less >
3845 typedef StripedHashMap_ord<
3846 boost::unordered_map< Key, Value, hash, equal_to >
3848 > StripedMap_boost_unordered_map;
3850 #if BOOST_VERSION >= 104800
3851 typedef StripedHashMap_seq<
3852 boost::container::slist< std::pair< Key const, Value > >
3857 typedef StripedHashMap_seq<
3858 boost::container::list< std::pair< Key const, Value > >
3861 > StripedMap_boost_list;
3863 typedef StripedHashMap_ord<
3864 boost::container::map< Key, Value, less >
3866 > StripedMap_boost_map;
3868 //# ifdef CDS_UNIT_MAP_TYPES_ENABLE_BOOST_FLAT_CONTAINERS
3869 typedef StripedHashMap_ord<
3870 boost::container::flat_map< Key, Value, less >
3872 > StripedMap_boost_flat_map;
3874 #endif // BOOST_VERSION >= 104800
3876 // ***************************************************************************
3879 // for sequential containers
3880 template <class BucketEntry, CDS_DECL_OPTIONS7>
3881 class RefinableHashMap_seq:
3882 public cc::StripedMap< BucketEntry,
3883 co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
3884 ,co::mutex_policy< cc::striped_set::refinable<> >
3888 typedef cc::StripedMap< BucketEntry,
3889 co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
3890 ,co::mutex_policy< cc::striped_set::refinable<> >
3893 typedef typename base_class::resizing_policy resizing_policy_t;
3895 resizing_policy_t m_placeHolder;
3897 RefinableHashMap_seq( size_t nCapacity, size_t nLoadFactor )
3898 : base_class( nCapacity / nLoadFactor / 16, *(new(&m_placeHolder) resizing_policy_t( nLoadFactor )) )
3902 // for non-sequential ordered containers
3903 template <class BucketEntry, CDS_DECL_OPTIONS7>
3904 class RefinableHashMap_ord:
3905 public cc::StripedMap< BucketEntry,
3906 co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
3907 ,co::mutex_policy< cc::striped_set::refinable<> >
3911 typedef cc::StripedMap< BucketEntry,
3912 co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
3913 ,co::mutex_policy< cc::striped_set::refinable<> >
3916 typedef typename base_class::resizing_policy resizing_policy_t;
3918 resizing_policy_t m_placeHolder;
3920 RefinableHashMap_ord( size_t nCapacity, size_t nLoadFactor )
3921 : base_class( 0, *(new(&m_placeHolder) resizing_policy_t( nLoadFactor * 1024 )) )
3926 typedef RefinableHashMap_seq<
3927 std::list< std::pair< Key const, Value > >
3930 > RefinableMap_list;
3932 #if BOOST_VERSION >= 104800
3933 typedef RefinableHashMap_seq<
3934 boost::container::slist< std::pair< Key const, Value > >
3937 > RefinableMap_slist;
3940 typedef RefinableHashMap_ord<
3941 std::map< Key, Value, less >
3945 #if (CDS_COMPILER == CDS_COMPILER_MSVC || CDS_COMPILER == CDS_COMPILER_INTEL) && _MSC_VER < 1600
3946 typedef RefinableHashMap_ord<
3947 stdext::hash_map< Key, Value, stdext::hash_compare<Key, less > >
3949 > RefinableMap_hashmap;
3951 typedef RefinableHashMap_ord<
3952 std::unordered_map< Key, Value, hash, equal_to >
3954 > RefinableMap_hashmap;
3956 typedef RefinableHashMap_ord<
3957 boost::unordered_map< Key, Value, hash, equal_to >
3959 > RefinableMap_boost_unordered_map;
3961 #if BOOST_VERSION >= 104800
3962 typedef RefinableHashMap_seq<
3963 boost::container::list< std::pair< Key const, Value > >
3966 > RefinableMap_boost_list;
3968 typedef RefinableHashMap_ord<
3969 boost::container::map< Key, Value, less >
3971 > RefinableMap_boost_map;
3973 //# ifdef CDS_UNIT_MAP_TYPES_ENABLE_BOOST_FLAT_CONTAINERS
3974 typedef RefinableHashMap_ord<
3975 boost::container::flat_map< Key, Value, less >
3977 > RefinableMap_boost_flat_map;
3979 #endif // #if BOOST_VERSION >= 104800
3982 // ***************************************************************************
3985 typedef CuckooStripedMap< Key, Value,
3986 cc::cuckoo::probeset_type< cc::cuckoo::list >
3987 ,co::equal_to< equal_to >
3988 ,co::hash< std::tuple< hash, hash2 > >
3989 > CuckooStripedMap_list_unord;
3991 typedef CuckooStripedMap< Key, Value,
3992 cc::cuckoo::probeset_type< cc::cuckoo::list >
3993 ,co::equal_to< equal_to >
3994 ,co::hash< std::tuple< hash, hash2 > >
3995 ,co::stat< cc::cuckoo::stat >
3996 > CuckooStripedMap_list_unord_stat;
3998 typedef CuckooStripedMap< Key, Value,
3999 cc::cuckoo::probeset_type< cc::cuckoo::list >
4000 ,co::equal_to< equal_to >
4001 ,co::hash< std::tuple< hash, hash2 > >
4002 ,cc::cuckoo::store_hash< true >
4003 > CuckooStripedMap_list_unord_storehash;
4005 typedef CuckooStripedMap< Key, Value,
4006 cc::cuckoo::probeset_type< cc::cuckoo::list >
4007 ,co::compare< compare >
4008 ,co::hash< std::tuple< hash, hash2 > >
4009 > CuckooStripedMap_list_ord;
4011 typedef CuckooStripedMap< Key, Value,
4012 cc::cuckoo::probeset_type< cc::cuckoo::list >
4013 ,co::compare< compare >
4014 ,co::hash< std::tuple< hash, hash2 > >
4015 ,co::stat< cc::cuckoo::stat >
4016 > CuckooStripedMap_list_ord_stat;
4018 typedef CuckooStripedMap< Key, Value,
4019 cc::cuckoo::probeset_type< cc::cuckoo::list >
4020 ,co::compare< compare >
4021 ,co::hash< std::tuple< hash, hash2 > >
4022 ,cc::cuckoo::store_hash< true >
4023 > CuckooStripedMap_list_ord_storehash;
4025 typedef CuckooStripedMap< Key, Value,
4026 cc::cuckoo::probeset_type< cc::cuckoo::vector<4> >
4027 ,co::equal_to< equal_to >
4028 ,co::hash< std::tuple< hash, hash2 > >
4029 > CuckooStripedMap_vector_unord;
4031 typedef CuckooStripedMap< Key, Value,
4032 cc::cuckoo::probeset_type< cc::cuckoo::vector<4> >
4033 ,co::equal_to< equal_to >
4034 ,co::hash< std::tuple< hash, hash2 > >
4035 ,co::stat< cc::cuckoo::stat >
4036 > CuckooStripedMap_vector_unord_stat;
4038 typedef CuckooStripedMap< Key, Value,
4039 cc::cuckoo::probeset_type< cc::cuckoo::vector<4> >
4040 ,co::equal_to< equal_to >
4041 ,co::hash< std::tuple< hash, hash2 > >
4042 ,cc::cuckoo::store_hash< true >
4043 > CuckooStripedMap_vector_unord_storehash;
4045 typedef CuckooStripedMap< Key, Value,
4046 cc::cuckoo::probeset_type< cc::cuckoo::vector<4> >
4047 ,co::compare< compare >
4048 ,co::hash< std::tuple< hash, hash2 > >
4049 > CuckooStripedMap_vector_ord;
4051 typedef CuckooStripedMap< Key, Value,
4052 cc::cuckoo::probeset_type< cc::cuckoo::vector<4> >
4053 ,co::compare< compare >
4054 ,co::hash< std::tuple< hash, hash2 > >
4055 ,co::stat< cc::cuckoo::stat >
4056 > CuckooStripedMap_vector_ord_stat;
4058 typedef CuckooStripedMap< Key, Value,
4059 cc::cuckoo::probeset_type< cc::cuckoo::vector<4> >
4060 ,co::compare< compare >
4061 ,co::hash< std::tuple< hash, hash2 > >
4062 ,cc::cuckoo::store_hash< true >
4063 > CuckooStripedMap_vector_ord_storehash;
4065 typedef CuckooRefinableMap< Key, Value,
4066 cc::cuckoo::probeset_type< cc::cuckoo::list >
4067 ,co::equal_to< equal_to >
4068 ,co::hash< std::tuple< hash, hash2 > >
4069 > CuckooRefinableMap_list_unord;
4071 typedef CuckooRefinableMap< Key, Value,
4072 cc::cuckoo::probeset_type< cc::cuckoo::list >
4073 ,co::equal_to< equal_to >
4074 ,co::hash< std::tuple< hash, hash2 > >
4075 ,co::stat< cc::cuckoo::stat >
4076 > CuckooRefinableMap_list_unord_stat;
4078 typedef CuckooRefinableMap< Key, Value,
4079 cc::cuckoo::probeset_type< cc::cuckoo::list >
4080 ,co::equal_to< equal_to >
4081 ,co::hash< std::tuple< hash, hash2 > >
4082 ,cc::cuckoo::store_hash< true >
4083 > CuckooRefinableMap_list_unord_storehash;
4085 typedef CuckooRefinableMap< Key, Value,
4086 cc::cuckoo::probeset_type< cc::cuckoo::list >
4087 ,co::compare< compare >
4088 ,co::hash< std::tuple< hash, hash2 > >
4089 > CuckooRefinableMap_list_ord;
4091 typedef CuckooRefinableMap< Key, Value,
4092 cc::cuckoo::probeset_type< cc::cuckoo::list >
4093 ,co::compare< compare >
4094 ,co::hash< std::tuple< hash, hash2 > >
4095 ,co::stat< cc::cuckoo::stat >
4096 > CuckooRefinableMap_list_ord_stat;
4098 typedef CuckooRefinableMap< Key, Value,
4099 cc::cuckoo::probeset_type< cc::cuckoo::list >
4100 ,co::compare< compare >
4101 ,co::hash< std::tuple< hash, hash2 > >
4102 ,cc::cuckoo::store_hash< true >
4103 > CuckooRefinableMap_list_ord_storehash;
4105 typedef CuckooRefinableMap< Key, Value,
4106 cc::cuckoo::probeset_type< cc::cuckoo::vector<4> >
4107 ,co::equal_to< equal_to >
4108 ,co::hash< std::tuple< hash, hash2 > >
4109 > CuckooRefinableMap_vector_unord;
4111 typedef CuckooRefinableMap< Key, Value,
4112 cc::cuckoo::probeset_type< cc::cuckoo::vector<4> >
4113 ,co::equal_to< equal_to >
4114 ,co::hash< std::tuple< hash, hash2 > >
4115 ,co::stat< cc::cuckoo::stat >
4116 > CuckooRefinableMap_vector_unord_stat;
4118 typedef CuckooRefinableMap< Key, Value,
4119 cc::cuckoo::probeset_type< cc::cuckoo::vector<4> >
4120 ,co::equal_to< equal_to >
4121 ,co::hash< std::tuple< hash, hash2 > >
4122 ,cc::cuckoo::store_hash< true >
4123 > CuckooRefinableMap_vector_unord_storehash;
4125 typedef CuckooRefinableMap< Key, Value,
4126 cc::cuckoo::probeset_type< cc::cuckoo::vector<4> >
4127 ,co::compare< compare >
4128 ,co::hash< std::tuple< hash, hash2 > >
4129 > CuckooRefinableMap_vector_ord;
4131 typedef CuckooRefinableMap< Key, Value,
4132 cc::cuckoo::probeset_type< cc::cuckoo::vector<4> >
4133 ,co::compare< compare >
4134 ,co::hash< std::tuple< hash, hash2 > >
4135 ,co::stat< cc::cuckoo::stat >
4136 > CuckooRefinableMap_vector_ord_stat;
4138 typedef CuckooRefinableMap< Key, Value,
4139 cc::cuckoo::probeset_type< cc::cuckoo::vector<4> >
4140 ,co::compare< compare >
4141 ,co::hash< std::tuple< hash, hash2 > >
4142 ,cc::cuckoo::store_hash< true >
4143 > CuckooRefinableMap_vector_ord_storehash;
4145 // ***************************************************************************
4148 class traits_SkipListMap_hp_less_pascal: public cc::skip_list::make_traits <
4150 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4151 ,co::item_counter< cds::atomicity::item_counter >
4154 typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_less_pascal > SkipListMap_hp_less_pascal;
4156 class traits_SkipListMap_hp_less_pascal_seqcst: public cc::skip_list::make_traits <
4158 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4159 ,co::memory_model< co::v::sequential_consistent >
4160 ,co::item_counter< cds::atomicity::item_counter >
4163 typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_less_pascal_seqcst > SkipListMap_hp_less_pascal_seqcst;
4165 class traits_SkipListMap_hp_less_pascal_stat: public cc::skip_list::make_traits <
4167 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4168 ,co::stat< cc::skip_list::stat<> >
4169 ,co::item_counter< cds::atomicity::item_counter >
4172 typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_less_pascal_stat > SkipListMap_hp_less_pascal_stat;
4174 class traits_SkipListMap_hp_cmp_pascal: public cc::skip_list::make_traits <
4175 co::compare< compare >
4176 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4177 ,co::item_counter< cds::atomicity::item_counter >
4180 typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_cmp_pascal > SkipListMap_hp_cmp_pascal;
4182 class traits_SkipListMap_hp_cmp_pascal_stat: public cc::skip_list::make_traits <
4183 co::compare< compare >
4184 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4185 ,co::stat< cc::skip_list::stat<> >
4186 ,co::item_counter< cds::atomicity::item_counter >
4189 typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_cmp_pascal_stat > SkipListMap_hp_cmp_pascal_stat;
4191 class traits_SkipListMap_hp_less_xorshift: public cc::skip_list::make_traits <
4193 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4194 ,co::item_counter< cds::atomicity::item_counter >
4197 typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_less_xorshift > SkipListMap_hp_less_xorshift;
4199 class traits_SkipListMap_hp_less_xorshift_stat: public cc::skip_list::make_traits <
4201 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4202 ,co::stat< cc::skip_list::stat<> >
4203 ,co::item_counter< cds::atomicity::item_counter >
4206 typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_less_xorshift_stat > SkipListMap_hp_less_xorshift_stat;
4208 class traits_SkipListMap_hp_cmp_xorshift: public cc::skip_list::make_traits <
4209 co::compare< compare >
4210 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4211 ,co::item_counter< cds::atomicity::item_counter >
4214 typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_cmp_xorshift > SkipListMap_hp_cmp_xorshift;
4216 class traits_SkipListMap_hp_cmp_xorshift_stat: public cc::skip_list::make_traits <
4217 co::compare< compare >
4218 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4219 ,co::stat< cc::skip_list::stat<> >
4220 ,co::item_counter< cds::atomicity::item_counter >
4223 typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_cmp_xorshift_stat > SkipListMap_hp_cmp_xorshift_stat;
4225 // ***************************************************************************
4226 // SkipListMap - HRC
4228 class traits_SkipListMap_hrc_less_pascal: public cc::skip_list::make_traits <
4230 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4231 ,co::item_counter< cds::atomicity::item_counter >
4234 typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_pascal > SkipListMap_hrc_less_pascal;
4236 class traits_SkipListMap_hrc_less_pascal_seqcst: public cc::skip_list::make_traits <
4238 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4239 ,co::memory_model< co::v::sequential_consistent >
4240 ,co::item_counter< cds::atomicity::item_counter >
4243 typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_pascal_seqcst > SkipListMap_hrc_less_pascal_seqcst;
4245 class traits_SkipListMap_hrc_less_pascal_stat: public cc::skip_list::make_traits <
4247 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4248 ,co::stat< cc::skip_list::stat<> >
4249 ,co::item_counter< cds::atomicity::item_counter >
4252 typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_pascal_stat > SkipListMap_hrc_less_pascal_stat;
4254 class traits_SkipListMap_hrc_cmp_pascal: public cc::skip_list::make_traits <
4255 co::compare< compare >
4256 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4257 ,co::item_counter< cds::atomicity::item_counter >
4260 typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_cmp_pascal > SkipListMap_hrc_cmp_pascal;
4262 class traits_SkipListMap_hrc_cmp_pascal_stat: public cc::skip_list::make_traits <
4263 co::compare< compare >
4264 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4265 ,co::stat< cc::skip_list::stat<> >
4266 ,co::item_counter< cds::atomicity::item_counter >
4269 typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_cmp_pascal_stat > SkipListMap_hrc_cmp_pascal_stat;
4271 class traits_SkipListMap_hrc_less_xorshift: public cc::skip_list::make_traits <
4273 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4274 ,co::item_counter< cds::atomicity::item_counter >
4277 typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_xorshift > SkipListMap_hrc_less_xorshift;
4279 class traits_SkipListMap_hrc_less_xorshift_stat: public cc::skip_list::make_traits <
4281 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4282 ,co::stat< cc::skip_list::stat<> >
4283 ,co::item_counter< cds::atomicity::item_counter >
4286 typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_xorshift_stat > SkipListMap_hrc_less_xorshift_stat;
4288 class traits_SkipListMap_hrc_cmp_xorshift: public cc::skip_list::make_traits <
4289 co::compare< compare >
4290 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4291 ,co::item_counter< cds::atomicity::item_counter >
4294 typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_cmp_xorshift > SkipListMap_hrc_cmp_xorshift;
4296 class traits_SkipListMap_hrc_cmp_xorshift_stat: public cc::skip_list::make_traits <
4297 co::compare< compare >
4298 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4299 ,co::stat< cc::skip_list::stat<> >
4300 ,co::item_counter< cds::atomicity::item_counter >
4303 typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_cmp_xorshift_stat > SkipListMap_hrc_cmp_xorshift_stat;
4305 // ***************************************************************************
4306 // SkipListMap - PTB
4308 class traits_SkipListMap_ptb_less_pascal: public cc::skip_list::make_traits <
4310 ,co::item_counter< cds::atomicity::item_counter >
4311 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4314 typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_less_pascal > SkipListMap_ptb_less_pascal;
4316 class traits_SkipListMap_ptb_less_pascal_seqcst: public cc::skip_list::make_traits <
4318 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4319 ,co::memory_model< co::v::sequential_consistent >
4320 ,co::item_counter< cds::atomicity::item_counter >
4323 typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_less_pascal_seqcst > SkipListMap_ptb_less_pascal_seqcst;
4325 class traits_SkipListMap_ptb_less_pascal_stat: public cc::skip_list::make_traits <
4327 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4328 ,co::stat< cc::skip_list::stat<> >
4329 ,co::item_counter< cds::atomicity::item_counter >
4332 typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_less_pascal_stat > SkipListMap_ptb_less_pascal_stat;
4334 class traits_SkipListMap_ptb_cmp_pascal: public cc::skip_list::make_traits <
4335 co::compare< compare >
4336 ,co::item_counter< cds::atomicity::item_counter >
4337 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4340 typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_cmp_pascal > SkipListMap_ptb_cmp_pascal;
4342 class traits_SkipListMap_ptb_cmp_pascal_stat: public cc::skip_list::make_traits <
4343 co::compare< compare >
4344 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4345 ,co::item_counter< cds::atomicity::item_counter >
4346 ,co::stat< cc::skip_list::stat<> >
4349 typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_cmp_pascal_stat > SkipListMap_ptb_cmp_pascal_stat;
4351 class traits_SkipListMap_ptb_less_xorshift: public cc::skip_list::make_traits <
4353 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4354 ,co::item_counter< cds::atomicity::item_counter >
4357 typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_less_xorshift > SkipListMap_ptb_less_xorshift;
4359 class traits_SkipListMap_ptb_less_xorshift_stat: public cc::skip_list::make_traits <
4361 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4362 ,co::stat< cc::skip_list::stat<> >
4363 ,co::item_counter< cds::atomicity::item_counter >
4366 typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_less_xorshift_stat > SkipListMap_ptb_less_xorshift_stat;
4368 class traits_SkipListMap_ptb_cmp_xorshift: public cc::skip_list::make_traits <
4369 co::compare< compare >
4370 ,co::item_counter< cds::atomicity::item_counter >
4371 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4374 typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_cmp_xorshift > SkipListMap_ptb_cmp_xorshift;
4376 class traits_SkipListMap_ptb_cmp_xorshift_stat: public cc::skip_list::make_traits <
4377 co::compare< compare >
4378 ,co::item_counter< cds::atomicity::item_counter >
4379 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4380 ,co::stat< cc::skip_list::stat<> >
4383 typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_cmp_xorshift_stat > SkipListMap_ptb_cmp_xorshift_stat;
4385 // ***************************************************************************
4386 // SkipListMap< gc::nogc >
4388 class traits_SkipListMap_nogc_less_pascal: public cc::skip_list::make_traits <
4390 ,co::item_counter< cds::atomicity::item_counter >
4391 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4394 typedef NogcMapWrapper_dctor<
4395 cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_pascal >
4396 > SkipListMap_nogc_less_pascal;
4398 class traits_SkipListMap_nogc_less_pascal_seqcst: public cc::skip_list::make_traits <
4400 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4401 ,co::memory_model< co::v::sequential_consistent >
4402 ,co::item_counter< cds::atomicity::item_counter >
4405 typedef NogcMapWrapper_dctor<
4406 cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_pascal_seqcst >
4407 > SkipListMap_nogc_less_pascal_seqcst;
4409 class traits_SkipListMap_nogc_less_pascal_stat: public cc::skip_list::make_traits <
4411 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4412 ,co::stat< cc::skip_list::stat<> >
4413 ,co::item_counter< cds::atomicity::item_counter >
4416 typedef NogcMapWrapper_dctor<
4417 cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_pascal_stat >
4418 > SkipListMap_nogc_less_pascal_stat;
4420 class traits_SkipListMap_nogc_cmp_pascal: public cc::skip_list::make_traits <
4421 co::compare< compare >
4422 ,co::item_counter< cds::atomicity::item_counter >
4423 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4426 typedef NogcMapWrapper_dctor<
4427 cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_pascal >
4428 > SkipListMap_nogc_cmp_pascal;
4430 class traits_SkipListMap_nogc_cmp_pascal_stat: public cc::skip_list::make_traits <
4431 co::compare< compare >
4432 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4433 ,co::item_counter< cds::atomicity::item_counter >
4434 ,co::stat< cc::skip_list::stat<> >
4437 typedef NogcMapWrapper_dctor<
4438 cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_pascal_stat >
4439 > SkipListMap_nogc_cmp_pascal_stat;
4441 class traits_SkipListMap_nogc_less_xorshift: public cc::skip_list::make_traits <
4443 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4444 ,co::item_counter< cds::atomicity::item_counter >
4447 typedef NogcMapWrapper_dctor<
4448 cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_xorshift >
4449 > SkipListMap_nogc_less_xorshift;
4451 class traits_SkipListMap_nogc_less_xorshift_stat: public cc::skip_list::make_traits <
4453 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4454 ,co::stat< cc::skip_list::stat<> >
4455 ,co::item_counter< cds::atomicity::item_counter >
4458 typedef NogcMapWrapper_dctor<
4459 cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_xorshift_stat >
4460 > SkipListMap_nogc_less_xorshift_stat;
4462 class traits_SkipListMap_nogc_cmp_xorshift: public cc::skip_list::make_traits <
4463 co::compare< compare >
4464 ,co::item_counter< cds::atomicity::item_counter >
4465 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4468 typedef NogcMapWrapper_dctor< cc::SkipListMap<
4469 cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_xorshift >
4470 > SkipListMap_nogc_cmp_xorshift;
4472 class traits_SkipListMap_nogc_cmp_xorshift_stat: public cc::skip_list::make_traits <
4473 co::compare< compare >
4474 ,co::item_counter< cds::atomicity::item_counter >
4475 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4476 ,co::stat< cc::skip_list::stat<> >
4479 typedef NogcMapWrapper_dctor<
4480 cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_xorshift_stat >
4481 > SkipListMap_nogc_cmp_xorshift_stat;
4483 // ***************************************************************************
4484 // SkipListMap - RCU general_instant
4486 class traits_SkipListMap_rcu_gpi_less_pascal: public cc::skip_list::make_traits <
4488 ,co::item_counter< cds::atomicity::item_counter >
4489 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4492 typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_less_pascal > SkipListMap_rcu_gpi_less_pascal;
4494 class traits_SkipListMap_rcu_gpi_less_pascal_seqcst: public cc::skip_list::make_traits <
4496 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4497 ,co::memory_model< co::v::sequential_consistent >
4498 ,co::item_counter< cds::atomicity::item_counter >
4501 typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_less_pascal_seqcst > SkipListMap_rcu_gpi_less_pascal_seqcst;
4503 class traits_SkipListMap_rcu_gpi_less_pascal_stat: public cc::skip_list::make_traits <
4505 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4506 ,co::stat< cc::skip_list::stat<> >
4507 ,co::item_counter< cds::atomicity::item_counter >
4510 typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_less_pascal_stat > SkipListMap_rcu_gpi_less_pascal_stat;
4512 class traits_SkipListMap_rcu_gpi_cmp_pascal: public cc::skip_list::make_traits <
4513 co::compare< compare >
4514 ,co::item_counter< cds::atomicity::item_counter >
4515 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4518 typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_cmp_pascal > SkipListMap_rcu_gpi_cmp_pascal;
4520 class traits_SkipListMap_rcu_gpi_cmp_pascal_stat: public cc::skip_list::make_traits <
4521 co::compare< compare >
4522 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4523 ,co::item_counter< cds::atomicity::item_counter >
4524 ,co::stat< cc::skip_list::stat<> >
4527 typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_cmp_pascal_stat > SkipListMap_rcu_gpi_cmp_pascal_stat;
4529 class traits_SkipListMap_rcu_gpi_less_xorshift: public cc::skip_list::make_traits <
4531 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4532 ,co::item_counter< cds::atomicity::item_counter >
4535 typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_less_xorshift > SkipListMap_rcu_gpi_less_xorshift;
4537 class traits_SkipListMap_rcu_gpi_less_xorshift_stat: public cc::skip_list::make_traits <
4539 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4540 ,co::stat< cc::skip_list::stat<> >
4541 ,co::item_counter< cds::atomicity::item_counter >
4544 typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_less_xorshift_stat > SkipListMap_rcu_gpi_less_xorshift_stat;
4546 class traits_SkipListMap_rcu_gpi_cmp_xorshift: public cc::skip_list::make_traits <
4547 co::compare< compare >
4548 ,co::item_counter< cds::atomicity::item_counter >
4549 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4552 typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_cmp_xorshift > SkipListMap_rcu_gpi_cmp_xorshift;
4554 class traits_SkipListMap_rcu_gpi_cmp_xorshift_stat: public cc::skip_list::make_traits <
4555 co::compare< compare >
4556 ,co::item_counter< cds::atomicity::item_counter >
4557 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4558 ,co::stat< cc::skip_list::stat<> >
4561 typedef cc::SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_rcu_gpi_cmp_xorshift_stat > SkipListMap_rcu_gpi_cmp_xorshift_stat;
4563 // ***************************************************************************
4564 // SkipListMap - RCU general_buffered
4566 class traits_SkipListMap_rcu_gpb_less_pascal: public cc::skip_list::make_traits <
4568 ,co::item_counter< cds::atomicity::item_counter >
4569 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4572 typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_less_pascal > SkipListMap_rcu_gpb_less_pascal;
4574 class traits_SkipListMap_rcu_gpb_less_pascal_seqcst: public cc::skip_list::make_traits <
4576 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4577 ,co::memory_model< co::v::sequential_consistent >
4578 ,co::item_counter< cds::atomicity::item_counter >
4581 typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_less_pascal_seqcst > SkipListMap_rcu_gpb_less_pascal_seqcst;
4583 class traits_SkipListMap_rcu_gpb_less_pascal_stat: public cc::skip_list::make_traits <
4585 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4586 ,co::stat< cc::skip_list::stat<> >
4587 ,co::item_counter< cds::atomicity::item_counter >
4590 typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_less_pascal_stat > SkipListMap_rcu_gpb_less_pascal_stat;
4592 class traits_SkipListMap_rcu_gpb_cmp_pascal: public cc::skip_list::make_traits <
4593 co::compare< compare >
4594 ,co::item_counter< cds::atomicity::item_counter >
4595 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4598 typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_cmp_pascal > SkipListMap_rcu_gpb_cmp_pascal;
4600 class traits_SkipListMap_rcu_gpb_cmp_pascal_stat: public cc::skip_list::make_traits <
4601 co::compare< compare >
4602 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4603 ,co::item_counter< cds::atomicity::item_counter >
4604 ,co::stat< cc::skip_list::stat<> >
4607 typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_cmp_pascal_stat > SkipListMap_rcu_gpb_cmp_pascal_stat;
4609 class traits_SkipListMap_rcu_gpb_less_xorshift: public cc::skip_list::make_traits <
4611 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4612 ,co::item_counter< cds::atomicity::item_counter >
4615 typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_less_xorshift > SkipListMap_rcu_gpb_less_xorshift;
4617 class traits_SkipListMap_rcu_gpb_less_xorshift_stat: public cc::skip_list::make_traits <
4619 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4620 ,co::stat< cc::skip_list::stat<> >
4621 ,co::item_counter< cds::atomicity::item_counter >
4624 typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_less_xorshift_stat > SkipListMap_rcu_gpb_less_xorshift_stat;
4626 class traits_SkipListMap_rcu_gpb_cmp_xorshift: public cc::skip_list::make_traits <
4627 co::compare< compare >
4628 ,co::item_counter< cds::atomicity::item_counter >
4629 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4632 typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_cmp_xorshift > SkipListMap_rcu_gpb_cmp_xorshift;
4634 class traits_SkipListMap_rcu_gpb_cmp_xorshift_stat: public cc::skip_list::make_traits <
4635 co::compare< compare >
4636 ,co::item_counter< cds::atomicity::item_counter >
4637 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4638 ,co::stat< cc::skip_list::stat<> >
4641 typedef cc::SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_rcu_gpb_cmp_xorshift_stat > SkipListMap_rcu_gpb_cmp_xorshift_stat;
4643 // ***************************************************************************
4644 // SkipListMap - RCU general_threaded
4646 class traits_SkipListMap_rcu_gpt_less_pascal: public cc::skip_list::make_traits <
4648 ,co::item_counter< cds::atomicity::item_counter >
4649 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4652 typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_less_pascal > SkipListMap_rcu_gpt_less_pascal;
4654 class traits_SkipListMap_rcu_gpt_less_pascal_seqcst: public cc::skip_list::make_traits <
4656 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4657 ,co::memory_model< co::v::sequential_consistent >
4658 ,co::item_counter< cds::atomicity::item_counter >
4661 typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_less_pascal_seqcst > SkipListMap_rcu_gpt_less_pascal_seqcst;
4663 class traits_SkipListMap_rcu_gpt_less_pascal_stat: public cc::skip_list::make_traits <
4665 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4666 ,co::stat< cc::skip_list::stat<> >
4667 ,co::item_counter< cds::atomicity::item_counter >
4670 typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_less_pascal_stat > SkipListMap_rcu_gpt_less_pascal_stat;
4672 class traits_SkipListMap_rcu_gpt_cmp_pascal: public cc::skip_list::make_traits <
4673 co::compare< compare >
4674 ,co::item_counter< cds::atomicity::item_counter >
4675 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4678 typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_cmp_pascal > SkipListMap_rcu_gpt_cmp_pascal;
4680 class traits_SkipListMap_rcu_gpt_cmp_pascal_stat: public cc::skip_list::make_traits <
4681 co::compare< compare >
4682 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4683 ,co::item_counter< cds::atomicity::item_counter >
4684 ,co::stat< cc::skip_list::stat<> >
4687 typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_cmp_pascal_stat > SkipListMap_rcu_gpt_cmp_pascal_stat;
4689 class traits_SkipListMap_rcu_gpt_less_xorshift: public cc::skip_list::make_traits <
4691 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4692 ,co::item_counter< cds::atomicity::item_counter >
4695 typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_less_xorshift > SkipListMap_rcu_gpt_less_xorshift;
4697 class traits_SkipListMap_rcu_gpt_less_xorshift_stat: public cc::skip_list::make_traits <
4699 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4700 ,co::stat< cc::skip_list::stat<> >
4701 ,co::item_counter< cds::atomicity::item_counter >
4704 typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_less_xorshift_stat > SkipListMap_rcu_gpt_less_xorshift_stat;
4706 class traits_SkipListMap_rcu_gpt_cmp_xorshift: public cc::skip_list::make_traits <
4707 co::compare< compare >
4708 ,co::item_counter< cds::atomicity::item_counter >
4709 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4712 typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_cmp_xorshift > SkipListMap_rcu_gpt_cmp_xorshift;
4714 class traits_SkipListMap_rcu_gpt_cmp_xorshift_stat: public cc::skip_list::make_traits <
4715 co::compare< compare >
4716 ,co::item_counter< cds::atomicity::item_counter >
4717 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4718 ,co::stat< cc::skip_list::stat<> >
4721 typedef cc::SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_rcu_gpt_cmp_xorshift_stat > SkipListMap_rcu_gpt_cmp_xorshift_stat;
4723 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
4724 // ***************************************************************************
4725 // SkipListMap - RCU signal_buffered
4727 class traits_SkipListMap_rcu_shb_less_pascal: public cc::skip_list::make_traits <
4729 ,co::item_counter< cds::atomicity::item_counter >
4730 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4733 typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_less_pascal > SkipListMap_rcu_shb_less_pascal;
4735 class traits_SkipListMap_rcu_shb_less_pascal_seqcst: public cc::skip_list::make_traits <
4737 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4738 ,co::memory_model< co::v::sequential_consistent >
4739 ,co::item_counter< cds::atomicity::item_counter >
4742 typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_less_pascal_seqcst > SkipListMap_rcu_shb_less_pascal_seqcst;
4744 class traits_SkipListMap_rcu_shb_less_pascal_stat: public cc::skip_list::make_traits <
4746 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4747 ,co::stat< cc::skip_list::stat<> >
4748 ,co::item_counter< cds::atomicity::item_counter >
4751 typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_less_pascal_stat > SkipListMap_rcu_shb_less_pascal_stat;
4753 class traits_SkipListMap_rcu_shb_cmp_pascal: public cc::skip_list::make_traits <
4754 co::compare< compare >
4755 ,co::item_counter< cds::atomicity::item_counter >
4756 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4759 typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_cmp_pascal > SkipListMap_rcu_shb_cmp_pascal;
4761 class traits_SkipListMap_rcu_shb_cmp_pascal_stat: public cc::skip_list::make_traits <
4762 co::compare< compare >
4763 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4764 ,co::item_counter< cds::atomicity::item_counter >
4765 ,co::stat< cc::skip_list::stat<> >
4768 typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_cmp_pascal_stat > SkipListMap_rcu_shb_cmp_pascal_stat;
4770 class traits_SkipListMap_rcu_shb_less_xorshift: public cc::skip_list::make_traits <
4772 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4773 ,co::item_counter< cds::atomicity::item_counter >
4776 typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_less_xorshift > SkipListMap_rcu_shb_less_xorshift;
4778 class traits_SkipListMap_rcu_shb_less_xorshift_stat: public cc::skip_list::make_traits <
4780 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4781 ,co::stat< cc::skip_list::stat<> >
4782 ,co::item_counter< cds::atomicity::item_counter >
4785 typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_less_xorshift_stat > SkipListMap_rcu_shb_less_xorshift_stat;
4787 class traits_SkipListMap_rcu_shb_cmp_xorshift: public cc::skip_list::make_traits <
4788 co::compare< compare >
4789 ,co::item_counter< cds::atomicity::item_counter >
4790 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4793 typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_cmp_xorshift > SkipListMap_rcu_shb_cmp_xorshift;
4795 class traits_SkipListMap_rcu_shb_cmp_xorshift_stat: public cc::skip_list::make_traits <
4796 co::compare< compare >
4797 ,co::item_counter< cds::atomicity::item_counter >
4798 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4799 ,co::stat< cc::skip_list::stat<> >
4802 typedef cc::SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_rcu_shb_cmp_xorshift_stat > SkipListMap_rcu_shb_cmp_xorshift_stat;
4804 // ***************************************************************************
4805 // SkipListMap - RCU signal_threaded
4807 class traits_SkipListMap_rcu_sht_less_pascal: public cc::skip_list::make_traits <
4809 ,co::item_counter< cds::atomicity::item_counter >
4810 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4813 typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_less_pascal > SkipListMap_rcu_sht_less_pascal;
4815 class traits_SkipListMap_rcu_sht_less_pascal_seqcst: public cc::skip_list::make_traits <
4817 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4818 ,co::memory_model< co::v::sequential_consistent >
4819 ,co::item_counter< cds::atomicity::item_counter >
4822 typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_less_pascal_seqcst > SkipListMap_rcu_sht_less_pascal_seqcst;
4824 class traits_SkipListMap_rcu_sht_less_pascal_stat: public cc::skip_list::make_traits <
4826 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4827 ,co::stat< cc::skip_list::stat<> >
4828 ,co::item_counter< cds::atomicity::item_counter >
4831 typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_less_pascal_stat > SkipListMap_rcu_sht_less_pascal_stat;
4833 class traits_SkipListMap_rcu_sht_cmp_pascal: public cc::skip_list::make_traits <
4834 co::compare< compare >
4835 ,co::item_counter< cds::atomicity::item_counter >
4836 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4839 typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_cmp_pascal > SkipListMap_rcu_sht_cmp_pascal;
4841 class traits_SkipListMap_rcu_sht_cmp_pascal_stat: public cc::skip_list::make_traits <
4842 co::compare< compare >
4843 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
4844 ,co::item_counter< cds::atomicity::item_counter >
4845 ,co::stat< cc::skip_list::stat<> >
4848 typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_cmp_pascal_stat > SkipListMap_rcu_sht_cmp_pascal_stat;
4850 class traits_SkipListMap_rcu_sht_less_xorshift: public cc::skip_list::make_traits <
4852 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4853 ,co::item_counter< cds::atomicity::item_counter >
4856 typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_less_xorshift > SkipListMap_rcu_sht_less_xorshift;
4858 class traits_SkipListMap_rcu_sht_less_xorshift_stat: public cc::skip_list::make_traits <
4860 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4861 ,co::stat< cc::skip_list::stat<> >
4862 ,co::item_counter< cds::atomicity::item_counter >
4865 typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_less_xorshift_stat > SkipListMap_rcu_sht_less_xorshift_stat;
4867 class traits_SkipListMap_rcu_sht_cmp_xorshift: public cc::skip_list::make_traits <
4868 co::compare< compare >
4869 ,co::item_counter< cds::atomicity::item_counter >
4870 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4873 typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_cmp_xorshift > SkipListMap_rcu_sht_cmp_xorshift;
4875 class traits_SkipListMap_rcu_sht_cmp_xorshift_stat: public cc::skip_list::make_traits <
4876 co::compare< compare >
4877 ,co::item_counter< cds::atomicity::item_counter >
4878 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
4879 ,co::stat< cc::skip_list::stat<> >
4882 typedef cc::SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_rcu_sht_cmp_xorshift_stat > SkipListMap_rcu_sht_cmp_xorshift_stat;
4886 // ***************************************************************************
4888 struct ellen_bintree_props {
4890 typedef cc::ellen_bintree::map_node<cds::gc::HP, Key, Value> leaf_node;
4891 typedef cc::ellen_bintree::internal_node< Key, leaf_node > internal_node;
4892 typedef cc::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
4895 typedef cc::ellen_bintree::map_node<cds::gc::PTB, Key, Value> leaf_node;
4896 typedef cc::ellen_bintree::internal_node< Key, leaf_node > internal_node;
4897 typedef cc::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
4900 typedef cc::ellen_bintree::map_node<rcu_gpi, Key, Value> leaf_node;
4901 typedef cc::ellen_bintree::internal_node< Key, leaf_node > internal_node;
4902 typedef cc::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
4905 typedef cc::ellen_bintree::map_node<rcu_gpb, Key, Value> leaf_node;
4906 typedef cc::ellen_bintree::internal_node< Key, leaf_node > internal_node;
4907 typedef cc::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
4910 typedef cc::ellen_bintree::map_node<rcu_gpt, Key, Value> leaf_node;
4911 typedef cc::ellen_bintree::internal_node< Key, leaf_node > internal_node;
4912 typedef cc::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
4914 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
4916 typedef cc::ellen_bintree::map_node<rcu_shb, Key, Value> leaf_node;
4917 typedef cc::ellen_bintree::internal_node< Key, leaf_node > internal_node;
4918 typedef cc::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
4921 typedef cc::ellen_bintree::map_node<rcu_sht, Key, Value> leaf_node;
4922 typedef cc::ellen_bintree::internal_node< Key, leaf_node > internal_node;
4923 typedef cc::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
4929 // ***************************************************************************
4930 // EllenBinTreeMap - HP
4932 struct traits_EllenBinTreeMap_hp: public cc::ellen_bintree::make_set_traits<
4934 ,cc::ellen_bintree::update_desc_allocator<
4935 cds::memory::pool_allocator< typename ellen_bintree_props::hp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
4937 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
4938 ,co::item_counter< cds::atomicity::item_counter >
4941 typedef cc::EllenBinTreeMap< cds::gc::HP, Key, Value, traits_EllenBinTreeMap_hp >EllenBinTreeMap_hp;
4943 struct traits_EllenBinTreeMap_hp_stat: public cc::ellen_bintree::make_set_traits<
4945 ,cc::ellen_bintree::update_desc_allocator<
4946 cds::memory::pool_allocator< typename ellen_bintree_props::hp_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
4948 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
4949 ,co::stat< cc::ellen_bintree::stat<> >
4950 ,co::item_counter< cds::atomicity::item_counter >
4953 typedef cc::EllenBinTreeMap< cds::gc::HP, Key, Value, traits_EllenBinTreeMap_hp_stat > EllenBinTreeMap_hp_stat;
4955 // ***************************************************************************
4956 // EllenBinTreeMap - PTB
4958 struct traits_EllenBinTreeMap_ptb: public cc::ellen_bintree::make_set_traits<
4960 ,cc::ellen_bintree::update_desc_allocator<
4961 cds::memory::pool_allocator< typename ellen_bintree_props::ptb_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
4963 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
4964 ,co::item_counter< cds::atomicity::item_counter >
4967 typedef cc::EllenBinTreeMap< cds::gc::PTB, Key, Value, traits_EllenBinTreeMap_ptb> EllenBinTreeMap_ptb;
4969 struct traits_EllenBinTreeMap_ptb_stat: public cc::ellen_bintree::make_set_traits<
4971 ,cc::ellen_bintree::update_desc_allocator<
4972 cds::memory::pool_allocator< typename ellen_bintree_props::ptb_gc::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
4974 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
4975 ,co::stat< cc::ellen_bintree::stat<> >
4976 ,co::item_counter< cds::atomicity::item_counter >
4979 typedef cc::EllenBinTreeMap< cds::gc::PTB, Key, Value, traits_EllenBinTreeMap_ptb_stat > EllenBinTreeMap_ptb_stat;
4981 // ***************************************************************************
4982 // EllenBinTreeMap - RCU
4984 struct traits_EllenBinTreeMap_rcu_gpi: public cc::ellen_bintree::make_set_traits<
4986 ,cc::ellen_bintree::update_desc_allocator<
4987 cds::memory::pool_allocator< typename ellen_bintree_props::gpi::update_desc, ellen_bintree_pool::bounded_update_desc_pool_accessor >
4989 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
4990 ,co::item_counter< cds::atomicity::item_counter >
4993 typedef cc::EllenBinTreeMap< rcu_gpi, Key, Value, traits_EllenBinTreeMap_rcu_gpi > EllenBinTreeMap_rcu_gpi;
4995 struct traits_EllenBinTreeMap_rcu_gpi_stat: public cc::ellen_bintree::make_set_traits<
4997 ,cc::ellen_bintree::update_desc_allocator<
4998 cds::memory::pool_allocator< typename ellen_bintree_props::gpi::update_desc, ellen_bintree_pool::bounded_update_desc_pool_accessor >
5000 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
5001 ,co::stat< cc::ellen_bintree::stat<> >
5002 ,co::item_counter< cds::atomicity::item_counter >
5005 typedef cc::EllenBinTreeMap< rcu_gpi, Key, Value, traits_EllenBinTreeMap_rcu_gpi_stat > EllenBinTreeMap_rcu_gpi_stat;
5007 struct traits_EllenBinTreeMap_rcu_gpb: public cc::ellen_bintree::make_set_traits<
5009 ,cc::ellen_bintree::update_desc_allocator<
5010 cds::memory::pool_allocator< typename ellen_bintree_props::gpb::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
5012 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
5013 ,co::item_counter< cds::atomicity::item_counter >
5016 typedef cc::EllenBinTreeMap< rcu_gpb, Key, Value, traits_EllenBinTreeMap_rcu_gpb > EllenBinTreeMap_rcu_gpb;
5018 struct traits_EllenBinTreeMap_rcu_gpb_stat: public cc::ellen_bintree::make_set_traits<
5020 ,cc::ellen_bintree::update_desc_allocator<
5021 cds::memory::pool_allocator< typename ellen_bintree_props::gpb::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
5023 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
5024 ,co::stat< cc::ellen_bintree::stat<> >
5025 ,co::item_counter< cds::atomicity::item_counter >
5028 typedef cc::EllenBinTreeMap< rcu_gpb, Key, Value, traits_EllenBinTreeMap_rcu_gpb_stat > EllenBinTreeMap_rcu_gpb_stat;
5030 struct traits_EllenBinTreeMap_rcu_gpt: public cc::ellen_bintree::make_set_traits<
5032 ,cc::ellen_bintree::update_desc_allocator<
5033 cds::memory::pool_allocator< typename ellen_bintree_props::gpt::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
5035 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
5036 ,co::item_counter< cds::atomicity::item_counter >
5039 typedef cc::EllenBinTreeMap< rcu_gpt, Key, Value, traits_EllenBinTreeMap_rcu_gpt > EllenBinTreeMap_rcu_gpt;
5041 struct traits_EllenBinTreeMap_rcu_gpt_stat: public cc::ellen_bintree::make_set_traits<
5043 ,cc::ellen_bintree::update_desc_allocator<
5044 cds::memory::pool_allocator< typename ellen_bintree_props::gpt::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
5046 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
5047 ,co::stat< cc::ellen_bintree::stat<> >
5048 ,co::item_counter< cds::atomicity::item_counter >
5051 typedef cc::EllenBinTreeMap< rcu_gpt, Key, Value, traits_EllenBinTreeMap_rcu_gpt_stat > EllenBinTreeMap_rcu_gpt_stat;
5053 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
5054 struct traits_EllenBinTreeMap_rcu_shb: public cc::ellen_bintree::make_set_traits<
5056 ,cc::ellen_bintree::update_desc_allocator<
5057 cds::memory::pool_allocator< typename ellen_bintree_props::shb::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
5059 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
5060 ,co::item_counter< cds::atomicity::item_counter >
5063 typedef cc::EllenBinTreeMap< rcu_shb, Key, Value, traits_EllenBinTreeMap_rcu_shb > EllenBinTreeMap_rcu_shb;
5065 struct traits_EllenBinTreeMap_rcu_shb_stat: public cc::ellen_bintree::make_set_traits<
5067 ,cc::ellen_bintree::update_desc_allocator<
5068 cds::memory::pool_allocator< typename ellen_bintree_props::shb::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
5070 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
5071 ,co::item_counter< cds::atomicity::item_counter >
5072 ,co::stat< cc::ellen_bintree::stat<> >
5075 typedef cc::EllenBinTreeMap< rcu_shb, Key, Value, traits_EllenBinTreeMap_rcu_shb_stat > EllenBinTreeMap_rcu_shb_stat;
5077 struct traits_EllenBinTreeMap_rcu_sht: public cc::ellen_bintree::make_set_traits<
5079 ,cc::ellen_bintree::update_desc_allocator<
5080 cds::memory::pool_allocator< typename ellen_bintree_props::sht::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
5082 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
5083 ,co::item_counter< cds::atomicity::item_counter >
5086 typedef cc::EllenBinTreeMap< rcu_sht, Key, Value, traits_EllenBinTreeMap_rcu_sht > EllenBinTreeMap_rcu_sht;
5088 struct traits_EllenBinTreeMap_rcu_sht_stat: public cc::ellen_bintree::make_set_traits<
5090 ,cc::ellen_bintree::update_desc_allocator<
5091 cds::memory::pool_allocator< typename ellen_bintree_props::sht::update_desc, ellen_bintree_pool::update_desc_pool_accessor >
5093 ,co::node_allocator< ellen_bintree_pool::internal_node_allocator< int > >
5094 ,co::item_counter< cds::atomicity::item_counter >
5095 ,co::stat< cc::ellen_bintree::stat<> >
5098 typedef cc::EllenBinTreeMap< rcu_sht, Key, Value, traits_EllenBinTreeMap_rcu_sht_stat > EllenBinTreeMap_rcu_sht_stat;
5103 // ***************************************************************************
5104 // Standard implementations
5106 typedef StdMap< Key, Value, cds::SpinLock > StdMap_Spin;
5107 typedef StdMap< Key, Value, lock::NoLock> StdMap_NoLock;
5109 typedef StdHashMap< Key, Value, cds::SpinLock > StdHashMap_Spin;
5110 typedef StdHashMap< Key, Value, lock::NoLock > StdHashMap_NoLock;
5114 template <typename Map>
5115 static inline void print_stat( Map const& m )
5118 template <typename Map>
5119 static inline void additional_cleanup( Map& m )
5122 template <typename Map>
5123 static inline void additional_check( Map& m )
5127 template <typename K, typename T, typename Traits >
5128 static inline void print_stat( cc::CuckooMap< K, T, Traits > const& m )
5130 CPPUNIT_MSG( m.statistics() << m.mutex_policy_statistics() );
5133 template <typename GC, typename K, typename T, typename Traits >
5134 static inline void print_stat( cc::SkipListMap< GC, K, T, Traits > const& m )
5136 CPPUNIT_MSG( m.statistics() );
5140 template <typename GC, typename Key, typename T, typename Traits>
5141 static inline void print_stat( cc::EllenBinTreeMap<GC, Key, T, Traits> const& s )
5143 CPPUNIT_MSG( s.statistics() );
5145 template <typename GC, typename Key, typename T, typename Traits>
5146 static inline void additional_cleanup( cc::EllenBinTreeMap<GC, Key, T, Traits>& s )
5148 ellen_bintree_pool::internal_node_counter::reset();
5150 namespace ellen_bintree_check {
5151 static inline void check_stat( cds::intrusive::ellen_bintree::empty_stat const& s )
5153 // This check is not valid for thread-based RCU
5155 CPPUNIT_CHECK_CURRENT_EX( ellen_bintree_pool::internal_node_counter::m_nAlloc.get() == ellen_bintree_pool::internal_node_counter::m_nFree.get(),
5156 "m_nAlloc=" << ellen_bintree_pool::internal_node_counter::m_nAlloc.get()
5157 << ", m_nFree=" << ellen_bintree_pool::internal_node_counter::m_nFree.get()
5162 static inline void check_stat( cds::intrusive::ellen_bintree::stat<> const& stat )
5164 CPPUNIT_CHECK_CURRENT_EX( stat.m_nInternalNodeCreated == stat.m_nInternalNodeDeleted,
5165 "m_nInternalNodeCreated=" << stat.m_nInternalNodeCreated
5166 << " m_nInternalNodeDeleted=" << stat.m_nInternalNodeDeleted );
5167 CPPUNIT_CHECK_CURRENT_EX( stat.m_nUpdateDescCreated == stat.m_nUpdateDescDeleted,
5168 "m_nUpdateDescCreated=" << stat.m_nUpdateDescCreated
5169 << " m_nUpdateDescDeleted=" << stat.m_nUpdateDescDeleted );
5170 CPPUNIT_CHECK_CURRENT_EX( ellen_bintree_pool::internal_node_counter::m_nAlloc.get() == stat.m_nInternalNodeCreated,
5171 "allocated=" << ellen_bintree_pool::internal_node_counter::m_nAlloc.get()
5172 << "m_nInternalNodeCreated=" << stat.m_nInternalNodeCreated );
5174 } // namespace ellen_bintree_check
5175 template <typename GC, typename Key, typename T, typename Traits>
5176 static inline void additional_check( cc::EllenBinTreeMap<GC, Key, T, Traits>& s )
5178 GC::force_dispose();
5179 ellen_bintree_check::check_stat( s.statistics() );
5183 template <typename K, typename V, CDS_SPEC_OPTIONS10>
5184 static inline void print_stat( CuckooStripedMap< K, V, CDS_OPTIONS10 > const& m )
5186 typedef CuckooStripedMap< K, V, CDS_OPTIONS10 > map_type;
5187 print_stat( static_cast<typename map_type::cuckoo_base_class const&>(m) );
5190 template <typename K, typename V, CDS_SPEC_OPTIONS10>
5191 static inline void print_stat( CuckooRefinableMap< K, V, CDS_OPTIONS10 > const& m )
5193 typedef CuckooRefinableMap< K, V, CDS_OPTIONS10 > map_type;
5194 print_stat( static_cast<typename map_type::cuckoo_base_class const&>(m) );
5199 #endif // ifndef _CDSUNIT_MAP2_MAP_TYPES_H