OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc3/] [libstdc++-v3/] [testsuite/] [util/] [common_type/] [assoc/] [common_type.hpp] - Blame information for rev 516

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 424 jeremybenn
// -*- C++ -*-
2
 
3
// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
4
//
5
// This file is part of the GNU ISO C++ Library.  This library is free
6
// software; you can redistribute it and/or modify it under the terms
7
// of the GNU General Public License as published by the Free Software
8
// Foundation; either version 3, or (at your option) any later
9
// version.
10
 
11
// This library is distributed in the hope that it will be useful, but
12
// WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
// General Public License for more details.
15
 
16
// You should have received a copy of the GNU General Public License
17
// along with this library; see the file COPYING3.  If not see
18
// <http://www.gnu.org/licenses/>.
19
 
20
 
21
// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
22
 
23
// Permission to use, copy, modify, sell, and distribute this software
24
// is hereby granted without fee, provided that the above copyright
25
// notice appears in all copies, and that both that copyright notice
26
// and this permission notice appear in supporting documentation. None
27
// of the above authors, nor IBM Haifa Research Laboratories, make any
28
// representation about the suitability of this software for any
29
// purpose. It is provided "as is" without express or implied
30
// warranty.
31
 
32
/**
33
 * @file common_type.hpp
34
 * Contains common types.
35
 */
36
 
37
#ifndef PB_DS_COMMON_TYPES_ASSOC_HPP
38
#define PB_DS_COMMON_TYPES_ASSOC_HPP
39
 
40
#include <ext/pb_ds/detail/type_utils.hpp>
41
#include <common_type/assoc/template_policy.hpp>
42
#include <ext/pb_ds/assoc_container.hpp>
43
 
44
namespace __gnu_pbds
45
{
46
  namespace test
47
  {
48
    template<typename Key,
49
             typename Data,
50
             class Hash_Fn = typename __gnu_pbds::detail::default_hash_fn<Key>::type,
51
             class Eq_Fn = std::equal_to<Key>,
52
             class Allocator = std::allocator<std::pair<const Key, Data> > >
53
    struct hash_common_types
54
    {
55
    private:
56
      typedef typename Allocator::size_type size_type;
57
 
58
      typedef
59
      __gnu_pbds::test::hash_load_check_resize_trigger_t_<
60
        Allocator,
61
        1, 8,
62
        1, 2,
63
        false>
64
      no_access_half_load_check_resize_trigger_policy;
65
 
66
      typedef
67
      __gnu_pbds::test::hash_load_check_resize_trigger_t_<
68
        Allocator,
69
        1, 8,
70
        1, 2,
71
        true>
72
      access_half_load_check_resize_trigger_policy;
73
 
74
      typedef
75
      __gnu_pbds::test::hash_load_check_resize_trigger_t_<
76
        Allocator,
77
        1, 8,
78
        1, 1,
79
        false>
80
      no_access_one_load_check_resize_trigger_policy;
81
 
82
      typedef
83
      __gnu_pbds::test::cc_hash_max_collision_check_resize_trigger_t_<
84
        Allocator,
85
        1, 2,
86
        false>
87
      no_access_half_max_col_check_check_resize_trigger_policy;
88
 
89
      typedef
90
      __gnu_pbds::test::cc_hash_max_collision_check_resize_trigger_t_<
91
        Allocator,
92
        1, 2,
93
        true>
94
      access_half_max_col_check_check_resize_trigger_policy;
95
 
96
      typedef __gnu_pbds::test::linear_probe_fn_t_<Key, Allocator> lin_p_t;
97
 
98
      typedef __gnu_pbds::test::quadratic_probe_fn_t_<Key, Allocator> quad_p_t;
99
 
100
      typedef
101
      typename __gnu_cxx::typelist::create4<
102
        __gnu_pbds::detail::false_type,
103
        __gnu_pbds::test::direct_mask_range_hashing_t_<
104
        Allocator>,
105
        no_access_half_load_check_resize_trigger_policy,
106
        __gnu_pbds::test::hash_exponential_size_policy_t_<
107
        Allocator> >::type
108
      performance_cc_policy0;
109
 
110
      typedef
111
      typename __gnu_cxx::typelist::create4<
112
        __gnu_pbds::detail::false_type,
113
        __gnu_pbds::test::direct_mod_range_hashing_t_<
114
        Allocator>,
115
        no_access_half_load_check_resize_trigger_policy,
116
        __gnu_pbds::test::hash_prime_size_policy_t_>::type
117
      performance_cc_policy1;
118
 
119
      typedef
120
      typename __gnu_cxx::typelist::create4<
121
        __gnu_pbds::detail::false_type,
122
        __gnu_pbds::test::direct_mask_range_hashing_t_<
123
        Allocator>,
124
        no_access_one_load_check_resize_trigger_policy,
125
        __gnu_pbds::test::hash_exponential_size_policy_t_<
126
        Allocator> >::type
127
      performance_cc_policy2;
128
 
129
      typedef
130
      typename __gnu_cxx::typelist::create4<
131
        __gnu_pbds::detail::false_type,
132
        __gnu_pbds::test::direct_mod_range_hashing_t_<
133
        Allocator>,
134
        no_access_one_load_check_resize_trigger_policy,
135
        __gnu_pbds::test::hash_prime_size_policy_t_ >::type
136
      performance_cc_policy3;
137
 
138
      typedef
139
      typename __gnu_cxx::typelist::create4<
140
        __gnu_pbds::detail::true_type,
141
        __gnu_pbds::test::direct_mask_range_hashing_t_<
142
        Allocator>,
143
        no_access_half_load_check_resize_trigger_policy,
144
        __gnu_pbds::test::hash_exponential_size_policy_t_<
145
        Allocator> >::type
146
      performance_cc_policy4;
147
 
148
      typedef
149
      typename __gnu_cxx::typelist::create4<
150
        __gnu_pbds::detail::false_type,
151
        __gnu_pbds::test::direct_mask_range_hashing_t_<
152
        Allocator>,
153
        no_access_half_max_col_check_check_resize_trigger_policy,
154
        __gnu_pbds::test::hash_exponential_size_policy_t_<
155
        Allocator> >::type
156
      performance_cc_policy5;
157
 
158
      typedef
159
      typename __gnu_cxx::typelist::create4<
160
        __gnu_pbds::detail::false_type,
161
        __gnu_pbds::test::direct_mask_range_hashing_t_<
162
        Allocator>,
163
        access_half_max_col_check_check_resize_trigger_policy,
164
        __gnu_pbds::test::hash_exponential_size_policy_t_<
165
        Allocator> >::type
166
      regression_cc_policy0;
167
 
168
      typedef
169
      typename __gnu_cxx::typelist::create4<
170
        __gnu_pbds::detail::false_type,
171
        __gnu_pbds::test::direct_mask_range_hashing_t_<
172
        Allocator>,
173
        access_half_load_check_resize_trigger_policy,
174
        __gnu_pbds::test::hash_exponential_size_policy_t_<
175
        Allocator> >::type
176
      regression_cc_policy1;
177
 
178
      typedef
179
      typename __gnu_cxx::typelist::create4<
180
        __gnu_pbds::detail::true_type,
181
        __gnu_pbds::test::direct_mod_range_hashing_t_<
182
        Allocator>,
183
        no_access_half_load_check_resize_trigger_policy,
184
        __gnu_pbds::test::hash_prime_size_policy_t_ >::type
185
      regression_cc_policy2;
186
 
187
      typedef
188
      typename __gnu_cxx::typelist::create5<
189
        __gnu_pbds::detail::false_type,
190
        lin_p_t,
191
        __gnu_pbds::test::direct_mask_range_hashing_t_<
192
        Allocator>,
193
        no_access_half_load_check_resize_trigger_policy,
194
        __gnu_pbds::test::hash_exponential_size_policy_t_<
195
        Allocator> >::type
196
      performance_gp_policy0;
197
 
198
      typedef
199
      typename __gnu_cxx::typelist::create5<
200
        __gnu_pbds::detail::false_type,
201
        quad_p_t,
202
        __gnu_pbds::test::direct_mod_range_hashing_t_<
203
        Allocator>,
204
        no_access_half_load_check_resize_trigger_policy,
205
        __gnu_pbds::test::hash_prime_size_policy_t_ >::type
206
      performance_gp_policy1;
207
 
208
      typedef
209
      typename __gnu_cxx::typelist::create5<
210
        __gnu_pbds::detail::false_type,
211
        quad_p_t,
212
        __gnu_pbds::test::direct_mod_range_hashing_t_<
213
        Allocator>,
214
        access_half_load_check_resize_trigger_policy,
215
        __gnu_pbds::test::hash_prime_size_policy_t_>::type
216
      regression_gp_policy0;
217
 
218
      typedef
219
      typename __gnu_cxx::typelist::create5<
220
        __gnu_pbds::detail::true_type,
221
        lin_p_t,
222
        __gnu_pbds::test::direct_mask_range_hashing_t_<
223
        Allocator>,
224
        access_half_load_check_resize_trigger_policy,
225
        __gnu_pbds::test::hash_exponential_size_policy_t_<
226
        Allocator> >::type
227
      regression_gp_policy1;
228
 
229
      typedef
230
      typename __gnu_cxx::typelist::create6<
231
        performance_cc_policy0,
232
        performance_cc_policy1,
233
        performance_cc_policy2,
234
        performance_cc_policy3,
235
        performance_cc_policy4,
236
        performance_cc_policy5>::type
237
      performance_cc_range_hashing_policies;
238
 
239
      typedef
240
      typename __gnu_cxx::typelist::create3<
241
        regression_cc_policy0,
242
        regression_cc_policy1,
243
        regression_cc_policy2>::type
244
      regression_cc_range_hashing_policies;
245
 
246
      typedef
247
      typename __gnu_cxx::typelist::create2<
248
        performance_gp_policy0,
249
        performance_gp_policy1>::type
250
      performance_gp_range_hashing_policies;
251
 
252
      typedef
253
      typename __gnu_cxx::typelist::create2<
254
        regression_gp_policy0,
255
        regression_gp_policy1>::type
256
      regression_gp_range_hashing_policies;
257
 
258
      template<typename Policy_Tl>
259
      struct no_access_generic_cc_hash_table_t
260
      {
261
      private:
262
        typedef
263
        typename __gnu_cxx::typelist::at_index<
264
        Policy_Tl, 0>::type
265
        store_hash_indicator;
266
 
267
        enum
268
          {
269
            store_hash = store_hash_indicator::value
270
          };
271
 
272
        typedef
273
        typename __gnu_cxx::typelist::at_index<
274
          Policy_Tl, 1>::type
275
        comb_hash_fn;
276
 
277
        typedef
278
        typename __gnu_cxx::typelist::at_index<
279
          Policy_Tl, 2>::type
280
        trigger_policy;
281
 
282
        typedef
283
        typename __gnu_cxx::typelist::at_index<
284
          Policy_Tl, 3>::type
285
        size_policy;
286
 
287
      public:
288
        typedef
289
        __gnu_pbds::cc_hash_table<
290
        Key,
291
        Data,
292
        Hash_Fn,
293
        Eq_Fn,
294
        comb_hash_fn,
295
        __gnu_pbds::hash_standard_resize_policy<
296
        size_policy,
297
        trigger_policy,
298
        false>,
299
        store_hash,
300
        Allocator>
301
        type;
302
      };
303
 
304
      template<typename Policy_Tl>
305
      struct access_generic_cc_hash_table_t
306
      {
307
      private:
308
        typedef
309
        typename __gnu_cxx::typelist::at_index<
310
        Policy_Tl, 0>::type
311
        store_hash_indicator;
312
 
313
        enum
314
          {
315
            store_hash = store_hash_indicator::value
316
          };
317
 
318
        typedef
319
        typename __gnu_cxx::typelist::at_index<
320
          Policy_Tl, 1>::type
321
        comb_hash_fn;
322
 
323
        typedef
324
        typename __gnu_cxx::typelist::at_index<
325
          Policy_Tl, 2>::type
326
        trigger_policy;
327
 
328
        typedef
329
        typename __gnu_cxx::typelist::at_index<
330
          Policy_Tl, 3>::type
331
        size_policy;
332
 
333
      public:
334
        typedef
335
        __gnu_pbds::cc_hash_table<
336
        Key,
337
        Data,
338
        Hash_Fn,
339
        Eq_Fn,
340
        comb_hash_fn,
341
        __gnu_pbds::hash_standard_resize_policy<
342
        size_policy,
343
        trigger_policy,
344
        true>,
345
        store_hash,
346
        Allocator>
347
        type;
348
      };
349
 
350
      template<typename Policy_Tl>
351
      struct no_access_generic_gp_hash_table_t
352
      {
353
      private:
354
        typedef
355
        typename __gnu_cxx::typelist::at_index<
356
        Policy_Tl, 0>::type
357
        store_hash_indicator;
358
 
359
        enum
360
          {
361
            store_hash = store_hash_indicator::value
362
          };
363
 
364
        typedef
365
        typename __gnu_cxx::typelist::at_index<
366
          Policy_Tl, 1>::type
367
        probe_fn;
368
 
369
        typedef
370
        typename __gnu_cxx::typelist::at_index<
371
          Policy_Tl, 2>::type
372
        comb_probe_fn;
373
 
374
        typedef
375
        typename __gnu_cxx::typelist::at_index<
376
          Policy_Tl, 3>::type
377
        trigger_policy;
378
 
379
        typedef
380
        typename __gnu_cxx::typelist::at_index<
381
          Policy_Tl, 4>::type
382
        size_policy;
383
 
384
      public:
385
        typedef
386
        __gnu_pbds::gp_hash_table<
387
        Key,
388
        Data,
389
        Hash_Fn,
390
        Eq_Fn,
391
        comb_probe_fn,
392
        probe_fn,
393
        __gnu_pbds::hash_standard_resize_policy<
394
        size_policy,
395
        trigger_policy,
396
        false>,
397
        store_hash,
398
        Allocator>
399
        type;
400
      };
401
 
402
      template<typename Policy_Tl>
403
      struct access_generic_gp_hash_table_t
404
      {
405
      private:
406
        typedef
407
        typename __gnu_cxx::typelist::at_index<
408
        Policy_Tl, 0>::type
409
        store_hash_indicator;
410
 
411
        enum
412
          {
413
            store_hash = store_hash_indicator::value
414
          };
415
 
416
        typedef
417
        typename __gnu_cxx::typelist::at_index<
418
          Policy_Tl, 1>::type
419
        probe_fn;
420
 
421
        typedef
422
        typename __gnu_cxx::typelist::at_index<
423
          Policy_Tl, 2>::type
424
        comb_probe_fn;
425
 
426
        typedef
427
        typename __gnu_cxx::typelist::at_index<
428
          Policy_Tl, 3>::type
429
        trigger_policy;
430
 
431
        typedef
432
        typename __gnu_cxx::typelist::at_index<
433
          Policy_Tl, 4>::type
434
        size_policy;
435
 
436
      public:
437
        typedef
438
        __gnu_pbds::gp_hash_table<
439
        Key,
440
        Data,
441
        Hash_Fn,
442
        Eq_Fn,
443
        comb_probe_fn,
444
        probe_fn,
445
        __gnu_pbds::hash_standard_resize_policy<
446
        size_policy,
447
        trigger_policy,
448
        true>,
449
        store_hash,
450
        Allocator>
451
        type;
452
      };
453
 
454
      typedef
455
      typename __gnu_cxx::typelist::transform<
456
        performance_cc_range_hashing_policies,
457
        no_access_generic_cc_hash_table_t>::type
458
      performance_cc_types;
459
 
460
      typedef
461
      typename __gnu_cxx::typelist::transform<
462
        regression_cc_range_hashing_policies,
463
        access_generic_cc_hash_table_t>::type
464
      regression_cc_types;
465
 
466
      typedef
467
      typename __gnu_cxx::typelist::at_index<
468
        performance_cc_types,
469
        0>::type
470
      performance_min_cc_type;
471
 
472
      typedef
473
      typename __gnu_cxx::typelist::transform<
474
        performance_gp_range_hashing_policies,
475
        no_access_generic_gp_hash_table_t>::type
476
      performance_gp_types;
477
 
478
      typedef
479
      typename __gnu_cxx::typelist::transform<
480
        regression_gp_range_hashing_policies,
481
        access_generic_gp_hash_table_t>::type
482
      regression_gp_types;
483
 
484
      typedef
485
      typename __gnu_cxx::typelist::at_index<
486
        performance_gp_types,
487
        0>::type
488
      performance_min_gp_type;
489
 
490
    public:
491
      typedef
492
      typename __gnu_cxx::typelist::append<
493
      performance_cc_types,
494
      performance_gp_types>::type
495
      performance_tl;
496
 
497
      typedef
498
      typename __gnu_cxx::typelist::append<
499
        regression_gp_types,
500
        regression_cc_types>::type
501
      regression_tl;
502
 
503
      typedef
504
      typename __gnu_cxx::typelist::create1<
505
        performance_min_cc_type>::type
506
      performance_min_tl;
507
    };
508
 
509
    template<typename Key,
510
             typename Data,
511
             class Comb_Hash_Fn_TL,
512
             class Comb_Probe_Fn_TL,
513
             class Eq_Fn =
514
             std::equal_to<Key>,
515
             class Allocator =
516
             std::allocator<
517
      std::pair<
518
      const Key,
519
      Data> > >
520
    struct ranged_hash_common_types
521
    {
522
    private:
523
      typedef typename Allocator::size_type size_type;
524
 
525
      typedef
526
      __gnu_pbds::test::hash_load_check_resize_trigger_t_<
527
        Allocator,
528
        1, 8,
529
        1, 2,
530
        false>
531
      no_access_half_load_check_resize_trigger_policy;
532
 
533
      typedef
534
      __gnu_pbds::test::hash_load_check_resize_trigger_t_<
535
        Allocator,
536
        1, 8,
537
        1, 1,
538
        false>
539
      no_access_one_load_check_resize_trigger_policy;
540
 
541
      typedef
542
      __gnu_pbds::hash_standard_resize_policy<
543
        __gnu_pbds::test::hash_exponential_size_policy_t_<
544
        Allocator>,
545
        no_access_half_load_check_resize_trigger_policy>
546
      mask_half_resize_policy_t;
547
 
548
      typedef
549
      __gnu_pbds::hash_standard_resize_policy<
550
        __gnu_pbds::test::hash_exponential_size_policy_t_<
551
        Allocator>,
552
        no_access_one_load_check_resize_trigger_policy>
553
      mask_one_resize_policy_t;
554
 
555
      typedef
556
      __gnu_pbds::hash_standard_resize_policy<
557
        __gnu_pbds::test::hash_prime_size_policy_t_,
558
        no_access_half_load_check_resize_trigger_policy>
559
      mod_half_resize_policy_t;
560
 
561
      typedef
562
      __gnu_pbds::hash_standard_resize_policy<
563
        __gnu_pbds::test::hash_prime_size_policy_t_,
564
        no_access_one_load_check_resize_trigger_policy>
565
      mod_one_resize_policy_t;
566
 
567
      template<typename Comb_Hash_Fn_>
568
      struct half_resize_policy_selector;
569
 
570
      template<typename Allocator_>
571
      struct half_resize_policy_selector<
572
        __gnu_pbds::test::direct_mask_range_hashing_t_<
573
        Allocator_> >
574
      {
575
        typedef mask_half_resize_policy_t type;
576
      };
577
 
578
      template<typename Allocator_>
579
      struct half_resize_policy_selector<
580
        __gnu_pbds::test::direct_mod_range_hashing_t_<
581
        Allocator_> >
582
      {
583
        typedef mod_half_resize_policy_t type;
584
      };
585
 
586
      template<typename Comb_Hash_Fn_>
587
      struct one_resize_policy_selector;
588
 
589
      template<typename Allocator_>
590
      struct one_resize_policy_selector<
591
        __gnu_pbds::test::direct_mask_range_hashing_t_<
592
        Allocator_> >
593
      {
594
        typedef mask_one_resize_policy_t type;
595
      };
596
 
597
      template<typename Allocator_>
598
      struct one_resize_policy_selector<
599
        __gnu_pbds::test::direct_mod_range_hashing_t_<
600
        Allocator_> >
601
      {
602
        typedef mod_one_resize_policy_t type;
603
      };
604
 
605
      template<typename Comb_Hash_Fn>
606
      struct generic_cc_hash_table_t
607
      {
608
        typedef
609
        __gnu_pbds::cc_hash_table<
610
          Key,
611
          Data,
612
          __gnu_pbds::null_hash_fn,
613
          Eq_Fn,
614
          Comb_Hash_Fn,
615
          typename one_resize_policy_selector<
616
          typename Comb_Hash_Fn::comb_fn>::type,
617
          false,
618
          Allocator>
619
        type;
620
      };
621
 
622
      typedef
623
      typename __gnu_cxx::typelist::transform<
624
        Comb_Hash_Fn_TL,
625
        generic_cc_hash_table_t>::type
626
      performance_cc_types;
627
 
628
      template<typename Comb_Probe_Fn>
629
      struct no_access_generic_gp_hash_table_t
630
      {
631
        typedef
632
        __gnu_pbds::gp_hash_table<
633
          Key,
634
          Data,
635
          __gnu_pbds::null_hash_fn,
636
          Eq_Fn,
637
          Comb_Probe_Fn,
638
          __gnu_pbds::null_probe_fn,
639
          typename half_resize_policy_selector<
640
          typename Comb_Probe_Fn::comb_fn>::type,
641
          false,
642
          Allocator>
643
        type;
644
      };
645
 
646
      typedef
647
      typename __gnu_cxx::typelist::transform<
648
        Comb_Probe_Fn_TL,
649
        no_access_generic_gp_hash_table_t>::type
650
      performance_gp_types;
651
 
652
    public:
653
      typedef
654
      typename __gnu_cxx::typelist::append<
655
      performance_cc_types,
656
      performance_gp_types>::type
657
      performance_tl;
658
    };
659
 
660
    template<typename Key, typename Data, class Eq_Fn = std::equal_to<Key>,
661
             class Allocator =
662
             std::allocator<char> >
663
    class lu_common_types
664
    {
665
    private:
666
      typedef typename Allocator::size_type size_type;
667
 
668
      typedef __gnu_pbds::test::move_to_front_lu_policy_t_ mtf_u;
669
 
670
      typedef __gnu_pbds::test::counter_lu_policy_t_<Allocator, 5> cnt_5_u;
671
 
672
      typedef typename __gnu_cxx::typelist::create1<mtf_u>::type lu_policy0;
673
 
674
      typedef typename __gnu_cxx::typelist::create1<cnt_5_u>::type lu_policy1;
675
 
676
      typedef
677
      typename __gnu_cxx::typelist::create2<lu_policy0, lu_policy1>::type
678
      lu_policies;
679
 
680
      template<typename Policy_Tl>
681
      struct generic_list_update_t
682
      {
683
      private:
684
        typedef
685
        typename __gnu_cxx::typelist::at_index<Policy_Tl, 0>::type
686
        update_policy_t;
687
 
688
      public:
689
        typedef
690
        __gnu_pbds::list_update<Key, Data, Eq_Fn, update_policy_t, Allocator>
691
        type;
692
      };
693
 
694
      typedef
695
      typename __gnu_cxx::typelist::transform<
696
        lu_policies,
697
        generic_list_update_t>::type
698
      lu_types;
699
 
700
      typedef
701
      typename __gnu_cxx::typelist::at_index<
702
        lu_types,
703
        0>::type
704
      min_lu_type;
705
 
706
    public:
707
      typedef lu_types performance_tl;
708
      typedef lu_types regression_tl;
709
 
710
      typedef typename __gnu_cxx::typelist::create1<min_lu_type>::type performance_min_tl;
711
    };
712
 
713
    template<typename Key, typename Data, class Cmp_Fn = std::less<Key>,
714
             template<typename Const_Node_Iterator,
715
                      class Node_Iterator,
716
                      class Cmp_Fn_,
717
                      class Allocator_>
718
    class Node_Update = __gnu_pbds::null_tree_node_update,
719
             class Allocator = std::allocator<std::pair<const Key, Data> > >
720
    struct tree_common_types
721
    {
722
    private:
723
      typedef
724
      __gnu_pbds::tree<
725
      Key,
726
      Data,
727
      Cmp_Fn,
728
      __gnu_pbds::ov_tree_tag,
729
      Node_Update,
730
      Allocator>
731
      ov_tree_assoc_container_t;
732
 
733
      typedef
734
      __gnu_pbds::tree<
735
        Key,
736
        Data,
737
        Cmp_Fn,
738
        __gnu_pbds::rb_tree_tag,
739
        Node_Update,
740
        Allocator>
741
      rb_tree_assoc_container_t;
742
 
743
      typedef
744
      __gnu_pbds::tree<
745
        Key,
746
        Data,
747
        Cmp_Fn,
748
        __gnu_pbds::splay_tree_tag,
749
        Node_Update,
750
        Allocator>
751
      splay_tree_assoc_container_t;
752
 
753
    public:
754
      typedef
755
      typename __gnu_cxx::typelist::create3<
756
      splay_tree_assoc_container_t,
757
      rb_tree_assoc_container_t,
758
      ov_tree_assoc_container_t>::type
759
      performance_tl;
760
 
761
      typedef
762
      typename __gnu_cxx::typelist::create3<
763
        ov_tree_assoc_container_t,
764
        splay_tree_assoc_container_t,
765
        rb_tree_assoc_container_t>::type
766
      regression_tl;
767
 
768
      typedef
769
      typename __gnu_cxx::typelist::create1<
770
        rb_tree_assoc_container_t>::type
771
      performance_min_tl;
772
    };
773
 
774
    template<typename Key,
775
             typename Data,
776
             class E_Access_Traits =
777
             typename __gnu_pbds::detail::default_trie_e_access_traits<Key>::type,
778
             class Tag = __gnu_pbds::pat_trie_tag,
779
             template<typename Const_Node_Iterator,
780
                      typename Node_Iterator,
781
                      class E_Access_Traits_,
782
                      typename Allocator_>
783
    class Node_Update = __gnu_pbds::null_trie_node_update,
784
             class Allocator = std::allocator<char> >
785
    class trie_common_types
786
    {
787
    private:
788
      typedef __gnu_pbds::trie<Key, Data, E_Access_Traits, Tag, Node_Update, Allocator> type;
789
 
790
    public:
791
      typedef typename __gnu_cxx::typelist::create1<type>::type performance_tl;
792
      typedef typename __gnu_cxx::typelist::create1<type>::type regression_tl;
793
      typedef typename __gnu_cxx::typelist::create1<type>::type performance_min_tl;
794
    };
795
 
796
  } // namespace test
797
} // namespace __gnu_pbds
798
 
799
#endif // #ifndef PB_DS_COMMON_TYPES_ASSOC_HPP

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.