2 This file is a part of libcds - Concurrent Data Structures library
4 (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
6 Source code repo: http://github.com/khizmax/libcds/
7 Download: http://sourceforge.net/projects/libcds/files/
9 Redistribution and use in source and binary forms, with or without
10 modification, are permitted provided that the following conditions are met:
12 * Redistributions of source code must retain the above copyright notice, this
13 list of conditions and the following disclaimer.
15 * Redistributions in binary form must reproduce the above copyright notice,
16 this list of conditions and the following disclaimer in the documentation
17 and/or other materials provided with the distribution.
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 #include "set/hdr_intrusive_cuckoo_set.h"
32 #include <cds/intrusive/cuckoo_set.h>
34 #include "set/intrusive_cuckoo_set_common.h"
35 #include "../unit/print_cuckoo_stat.h"
39 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_basehook_equal()
41 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
42 typedef ci::CuckooSet< item_type
43 ,ci::cuckoo::make_traits<
44 co::hash< std::tuple< hash1, hash2 > >
45 ,co::mutex_policy< ci::cuckoo::refinable<> >
46 ,co::equal_to< equal_to<item_type> >
50 test_cuckoo<set_type>();
53 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_basehook_equal()
55 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 > > item_type;
57 typedef ci::CuckooSet< item_type
58 ,ci::cuckoo::make_traits<
59 ci::opt::hook< ci::cuckoo::base_hook<
60 ci::cuckoo::probeset_type< item_type::probeset_type >
62 ,co::hash< std::tuple< hash1, hash2 > >
63 ,co::equal_to< equal_to<item_type> >
64 ,co::mutex_policy< ci::cuckoo::refinable<> >
68 test_cuckoo<set_type>();
71 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_basehook_sort_cmp()
73 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
75 typedef ci::CuckooSet< item_type
76 ,ci::cuckoo::make_traits<
77 ci::opt::hook< ci::cuckoo::base_hook<
78 ci::cuckoo::probeset_type< item_type::probeset_type >
80 ,co::mutex_policy< ci::cuckoo::refinable<> >
81 ,co::hash< std::tuple< hash1, hash2 > >
82 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
86 test_cuckoo<set_type>();
89 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_basehook_sort_cmp()
91 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 > > item_type;
93 typedef ci::CuckooSet< item_type
94 ,ci::cuckoo::make_traits<
95 ci::opt::hook< ci::cuckoo::base_hook<
96 ci::cuckoo::probeset_type< item_type::probeset_type >
98 ,co::mutex_policy< ci::cuckoo::refinable<> >
99 ,co::hash< std::tuple< hash1, hash2 > >
100 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
104 test_cuckoo<set_type>();
107 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_basehook_sort_less()
109 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
111 typedef ci::CuckooSet< item_type
112 ,ci::cuckoo::make_traits<
113 ci::opt::hook< ci::cuckoo::base_hook<
114 ci::cuckoo::probeset_type< item_type::probeset_type >
116 ,co::mutex_policy< ci::cuckoo::refinable<> >
117 ,co::hash< std::tuple< hash1, hash2 > >
118 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
122 test_cuckoo<set_type>();
125 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_basehook_sort_less()
127 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 > > item_type;
129 typedef ci::CuckooSet< item_type
130 ,ci::cuckoo::make_traits<
131 ci::opt::hook< ci::cuckoo::base_hook<
132 ci::cuckoo::probeset_type< item_type::probeset_type >
134 ,co::mutex_policy< ci::cuckoo::refinable<> >
135 ,co::hash< std::tuple< hash1, hash2 > >
136 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
140 test_cuckoo<set_type>();
143 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_basehook_sort_cmpmix()
145 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
147 typedef ci::CuckooSet< item_type
148 ,ci::cuckoo::make_traits<
149 ci::opt::hook< ci::cuckoo::base_hook<
150 ci::cuckoo::probeset_type< item_type::probeset_type >
152 ,co::mutex_policy< ci::cuckoo::refinable<> >
153 ,co::hash< std::tuple< hash1, hash2 > >
154 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
155 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
159 test_cuckoo<set_type>();
162 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_basehook_sort_cmpmix()
164 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 0 > > item_type;
166 typedef ci::CuckooSet< item_type
167 ,ci::cuckoo::make_traits<
168 ci::opt::hook< ci::cuckoo::base_hook<
169 ci::cuckoo::probeset_type< item_type::probeset_type >
171 ,co::mutex_policy< ci::cuckoo::refinable<> >
172 ,co::hash< std::tuple< hash1, hash2 > >
173 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
174 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
178 test_cuckoo<set_type>();
181 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_basehook_sort_cmpmix_stat()
183 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 0 > > item_type;
185 typedef ci::CuckooSet< item_type
186 ,ci::cuckoo::make_traits<
187 ci::opt::hook< ci::cuckoo::base_hook<
188 ci::cuckoo::probeset_type< item_type::probeset_type >
190 ,co::mutex_policy< ci::cuckoo::refinable<> >
191 ,co::hash< std::tuple< hash1, hash2 > >
192 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
193 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
194 ,co::stat< ci::cuckoo::stat >
198 unsigned int nProbesetSize = set_type::node_type::probeset_size ? set_type::node_type::probeset_size : 4;
199 set_type s( 256, nProbesetSize, nProbesetSize / 2 );
201 CPPUNIT_MSG( s.statistics() << s.mutex_policy_statistics() );
205 // base hook, store hash
206 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_basehook_equal_storehash()
208 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 2 > > item_type;
209 typedef ci::CuckooSet< item_type
210 ,ci::cuckoo::make_traits<
211 ci::opt::hook< ci::cuckoo::base_hook<
212 ci::cuckoo::probeset_type< item_type::probeset_type >
213 ,ci::cuckoo::store_hash< item_type::hash_array_size >
215 ,co::mutex_policy< ci::cuckoo::refinable<> >
216 ,co::hash< std::tuple< hash1, hash2 > >
217 ,co::equal_to< equal_to<item_type> >
221 test_cuckoo<set_type>();
224 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_basehook_equal_storehash()
226 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 > > item_type;
228 typedef ci::CuckooSet< item_type
229 ,ci::cuckoo::make_traits<
230 ci::opt::hook< ci::cuckoo::base_hook<
231 ci::cuckoo::probeset_type< item_type::probeset_type >
232 ,ci::cuckoo::store_hash< item_type::hash_array_size >
234 ,co::mutex_policy< ci::cuckoo::refinable<> >
235 ,co::hash< std::tuple< hash1, hash2 > >
236 ,co::equal_to< equal_to<item_type> >
240 test_cuckoo<set_type>();
243 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_basehook_sort_cmp_storehash()
245 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 2 > > item_type;
247 typedef ci::CuckooSet< item_type
248 ,ci::cuckoo::make_traits<
249 ci::opt::hook< ci::cuckoo::base_hook<
250 ci::cuckoo::probeset_type< item_type::probeset_type >
251 ,ci::cuckoo::store_hash< item_type::hash_array_size >
253 ,co::mutex_policy< ci::cuckoo::refinable<> >
254 ,co::hash< std::tuple< hash1, hash2 > >
255 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
259 test_cuckoo<set_type>();
262 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_basehook_sort_cmp_storehash()
264 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 > > item_type;
266 typedef ci::CuckooSet< item_type
267 ,ci::cuckoo::make_traits<
268 ci::opt::hook< ci::cuckoo::base_hook<
269 ci::cuckoo::probeset_type< item_type::probeset_type >
270 ,ci::cuckoo::store_hash< item_type::hash_array_size >
272 ,co::mutex_policy< ci::cuckoo::refinable<> >
273 ,co::hash< std::tuple< hash1, hash2 > >
274 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
278 test_cuckoo<set_type>();
281 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_basehook_sort_less_storehash()
283 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 2 > > item_type;
285 typedef ci::CuckooSet< item_type
286 ,ci::cuckoo::make_traits<
287 ci::opt::hook< ci::cuckoo::base_hook<
288 ci::cuckoo::probeset_type< item_type::probeset_type >
289 ,ci::cuckoo::store_hash< item_type::hash_array_size >
291 ,co::mutex_policy< ci::cuckoo::refinable<> >
292 ,co::hash< std::tuple< hash1, hash2 > >
293 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
297 test_cuckoo<set_type>();
300 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_basehook_sort_less_storehash()
302 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 > > item_type;
304 typedef ci::CuckooSet< item_type
305 ,ci::cuckoo::make_traits<
306 ci::opt::hook< ci::cuckoo::base_hook<
307 ci::cuckoo::probeset_type< item_type::probeset_type >
308 ,ci::cuckoo::store_hash< item_type::hash_array_size >
310 ,co::mutex_policy< ci::cuckoo::refinable<> >
311 ,co::hash< std::tuple< hash1, hash2 > >
312 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
316 test_cuckoo<set_type>();
319 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_basehook_sort_cmpmix_storehash()
321 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::list, 2 > > item_type;
323 typedef ci::CuckooSet< item_type
324 ,ci::cuckoo::make_traits<
325 ci::opt::hook< ci::cuckoo::base_hook<
326 ci::cuckoo::probeset_type< item_type::probeset_type >
327 ,ci::cuckoo::store_hash< item_type::hash_array_size >
329 ,co::mutex_policy< ci::cuckoo::refinable<> >
330 ,co::hash< std::tuple< hash1, hash2 > >
331 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
332 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
336 test_cuckoo<set_type>();
339 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_basehook_sort_cmpmix_storehash()
341 typedef IntrusiveCuckooSetHdrTest::base_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 2 > > item_type;
343 typedef ci::CuckooSet< item_type
344 ,ci::cuckoo::make_traits<
345 ci::opt::hook< ci::cuckoo::base_hook<
346 ci::cuckoo::probeset_type< item_type::probeset_type >
347 ,ci::cuckoo::store_hash< item_type::hash_array_size >
349 ,co::mutex_policy< ci::cuckoo::refinable<> >
350 ,co::hash< std::tuple< hash1, hash2 > >
351 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
352 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
356 test_cuckoo<set_type>();
361 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_memberhook_equal()
363 typedef IntrusiveCuckooSetHdrTest::member_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
364 typedef ci::CuckooSet< item_type
365 ,ci::cuckoo::make_traits<
366 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember)> >
367 ,co::mutex_policy< ci::cuckoo::refinable<> >
368 ,co::hash< std::tuple< hash1, hash2 > >
369 ,co::equal_to< equal_to<item_type> >
373 test_cuckoo<set_type>();
376 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_memberhook_equal()
378 typedef ci::cuckoo::node< ci::cuckoo::vector<4>, 0 > node_type;
379 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
381 typedef ci::CuckooSet< item_type
382 ,ci::cuckoo::make_traits<
383 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
384 ci::cuckoo::probeset_type< node_type::probeset_type >
386 ,co::mutex_policy< ci::cuckoo::refinable<> >
387 ,co::hash< std::tuple< hash1, hash2 > >
388 ,co::equal_to< equal_to<item_type> >
392 test_cuckoo<set_type>();
395 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_memberhook_sort_cmp()
397 typedef ci::cuckoo::node< ci::cuckoo::list, 0 > node_type;
398 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
400 typedef ci::CuckooSet< item_type
401 ,ci::cuckoo::make_traits<
402 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
403 ci::cuckoo::probeset_type< node_type::probeset_type >
405 ,co::mutex_policy< ci::cuckoo::refinable<> >
406 ,co::hash< std::tuple< hash1, hash2 > >
407 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
411 test_cuckoo<set_type>();
414 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_memberhook_sort_cmp()
416 typedef ci::cuckoo::node< ci::cuckoo::vector<4>, 0 > node_type;
417 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
419 typedef ci::CuckooSet< item_type
420 ,ci::cuckoo::make_traits<
421 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
422 ci::cuckoo::probeset_type< node_type::probeset_type >
424 ,co::mutex_policy< ci::cuckoo::refinable<> >
425 ,co::hash< std::tuple< hash1, hash2 > >
426 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
430 test_cuckoo<set_type>();
433 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_memberhook_sort_less()
435 typedef ci::cuckoo::node< ci::cuckoo::list, 0 > node_type;
436 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
438 typedef ci::CuckooSet< item_type
439 ,ci::cuckoo::make_traits<
440 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
441 ci::cuckoo::probeset_type< node_type::probeset_type >
443 ,co::mutex_policy< ci::cuckoo::refinable<> >
444 ,co::hash< std::tuple< hash1, hash2 > >
445 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
449 test_cuckoo<set_type>();
452 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_memberhook_sort_less()
454 typedef ci::cuckoo::node< ci::cuckoo::vector<4>, 0 > node_type;
455 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
457 typedef ci::CuckooSet< item_type
458 ,ci::cuckoo::make_traits<
459 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
460 ci::cuckoo::probeset_type< node_type::probeset_type >
462 ,co::mutex_policy< ci::cuckoo::refinable<> >
463 ,co::hash< std::tuple< hash1, hash2 > >
464 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
468 test_cuckoo<set_type>();
471 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_memberhook_sort_cmpmix()
473 typedef ci::cuckoo::node< ci::cuckoo::list, 0 > node_type;
474 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
476 typedef ci::CuckooSet< item_type
477 ,ci::cuckoo::make_traits<
478 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
479 ci::cuckoo::probeset_type< node_type::probeset_type >
481 ,co::mutex_policy< ci::cuckoo::refinable<> >
482 ,co::hash< std::tuple< hash1, hash2 > >
483 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
484 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
488 test_cuckoo<set_type>();
491 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_memberhook_sort_cmpmix()
493 typedef ci::cuckoo::node< ci::cuckoo::vector<8>, 0 > node_type;
494 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
496 typedef ci::CuckooSet< item_type
497 ,ci::cuckoo::make_traits<
498 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
499 ci::cuckoo::probeset_type< node_type::probeset_type >
501 ,co::mutex_policy< ci::cuckoo::refinable<> >
502 ,co::hash< std::tuple< hash1, hash2 > >
503 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
504 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
508 test_cuckoo<set_type>();
512 // member hook, store hash
513 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_memberhook_equal_storehash()
515 typedef ci::cuckoo::node< ci::cuckoo::list, 2 > node_type;
516 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
517 typedef ci::CuckooSet< item_type
518 ,ci::cuckoo::make_traits<
519 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
520 ci::cuckoo::probeset_type< node_type::probeset_type >
521 ,ci::cuckoo::store_hash< node_type::hash_array_size >
523 ,co::mutex_policy< ci::cuckoo::refinable<> >
524 ,co::hash< std::tuple< hash1, hash2 > >
525 ,co::equal_to< equal_to<item_type> >
529 test_cuckoo<set_type>();
532 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_memberhook_equal_storehash()
534 typedef ci::cuckoo::node< ci::cuckoo::vector<4>, 2 > node_type;
535 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
537 typedef ci::CuckooSet< item_type
538 ,ci::cuckoo::make_traits<
539 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
540 ci::cuckoo::probeset_type< node_type::probeset_type >
541 ,ci::cuckoo::store_hash< node_type::hash_array_size >
543 ,co::mutex_policy< ci::cuckoo::refinable<> >
544 ,co::hash< std::tuple< hash1, hash2 > >
545 ,co::equal_to< equal_to<item_type> >
549 test_cuckoo<set_type>();
552 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_memberhook_sort_cmp_storehash()
554 typedef ci::cuckoo::node< ci::cuckoo::list, 2 > node_type;
555 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
557 typedef ci::CuckooSet< item_type
558 ,ci::cuckoo::make_traits<
559 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
560 ci::cuckoo::probeset_type< node_type::probeset_type >
561 ,ci::cuckoo::store_hash< node_type::hash_array_size >
563 ,co::mutex_policy< ci::cuckoo::refinable<> >
564 ,co::hash< std::tuple< hash1, hash2 > >
565 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
569 test_cuckoo<set_type>();
572 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_memberhook_sort_cmp_storehash()
574 typedef ci::cuckoo::node< ci::cuckoo::vector<4>, 2 > node_type;
575 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
577 typedef ci::CuckooSet< item_type
578 ,ci::cuckoo::make_traits<
579 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
580 ci::cuckoo::probeset_type< node_type::probeset_type >
581 ,ci::cuckoo::store_hash< node_type::hash_array_size >
583 ,co::mutex_policy< ci::cuckoo::refinable<> >
584 ,co::hash< std::tuple< hash1, hash2 > >
585 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
589 test_cuckoo<set_type>();
592 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_memberhook_sort_less_storehash()
594 typedef ci::cuckoo::node< ci::cuckoo::list, 2 > node_type;
595 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
597 typedef ci::CuckooSet< item_type
598 ,ci::cuckoo::make_traits<
599 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
600 ci::cuckoo::probeset_type< node_type::probeset_type >
601 ,ci::cuckoo::store_hash< node_type::hash_array_size >
603 ,co::mutex_policy< ci::cuckoo::refinable<> >
604 ,co::hash< std::tuple< hash1, hash2 > >
605 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
609 test_cuckoo<set_type>();
612 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_memberhook_sort_less_storehash()
614 typedef ci::cuckoo::node< ci::cuckoo::vector<4>, 2 > node_type;
615 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
617 typedef ci::CuckooSet< item_type
618 ,ci::cuckoo::make_traits<
619 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
620 ci::cuckoo::probeset_type< node_type::probeset_type >
621 ,ci::cuckoo::store_hash< node_type::hash_array_size >
623 ,co::mutex_policy< ci::cuckoo::refinable<> >
624 ,co::hash< std::tuple< hash1, hash2 > >
625 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
629 test_cuckoo<set_type>();
632 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_list_memberhook_sort_cmpmix_storehash()
634 typedef ci::cuckoo::node< ci::cuckoo::list, 2 > node_type;
635 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
637 typedef ci::CuckooSet< item_type
638 ,ci::cuckoo::make_traits<
639 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
640 ci::cuckoo::probeset_type< node_type::probeset_type >
641 ,ci::cuckoo::store_hash< node_type::hash_array_size >
643 ,co::mutex_policy< ci::cuckoo::refinable<> >
644 ,co::hash< std::tuple< hash1, hash2 > >
645 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
646 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
650 test_cuckoo<set_type>();
653 void IntrusiveCuckooSetHdrTest::Cuckoo_refinable_vector_memberhook_sort_cmpmix_storehash()
655 typedef ci::cuckoo::node< ci::cuckoo::vector<8>, 2 > node_type;
656 typedef IntrusiveCuckooSetHdrTest::member_item< node_type > item_type;
658 typedef ci::CuckooSet< item_type
659 ,ci::cuckoo::make_traits<
660 ci::opt::hook< ci::cuckoo::member_hook< offsetof(item_type, hMember),
661 ci::cuckoo::probeset_type< node_type::probeset_type >
662 ,ci::cuckoo::store_hash< node_type::hash_array_size >
664 ,co::mutex_policy< ci::cuckoo::refinable<> >
665 ,co::hash< std::tuple< hash1, hash2 > >
666 ,co::less< IntrusiveCuckooSetHdrTest::less<item_type> >
667 ,co::compare< IntrusiveCuckooSetHdrTest::cmp<item_type> >
671 test_cuckoo<set_type>();