OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [libstdc++-v3/] [include/] [ext/] [pb_ds/] [detail/] [container_base_dispatch.hpp] - Blame information for rev 424

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
// Under Section 7 of GPL version 3, you are granted additional
17
// permissions described in the GCC Runtime Library Exception, version
18
// 3.1, as published by the Free Software Foundation.
19
 
20
// You should have received a copy of the GNU General Public License and
21
// a copy of the GCC Runtime Library Exception along with this program;
22
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23
// <http://www.gnu.org/licenses/>.
24
 
25
// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
26
 
27
// Permission to use, copy, modify, sell, and distribute this software
28
// is hereby granted without fee, provided that the above copyright
29
// notice appears in all copies, and that both that copyright notice
30
// and this permission notice appear in supporting documentation. None
31
// of the above authors, nor IBM Haifa Research Laboratories, make any
32
// representation about the suitability of this software for any
33
// purpose. It is provided "as is" without express or implied
34
// warranty.
35
 
36
/**
37
 * @file container_base_dispatch.hpp
38
 * Contains an associative container dispatching base.
39
 */
40
 
41
#ifndef PB_DS_ASSOC_CNTNR_BASE_DS_DISPATCHER_HPP
42
#define PB_DS_ASSOC_CNTNR_BASE_DS_DISPATCHER_HPP
43
 
44
#include <ext/typelist.h>
45
 
46
#define PB_DS_DATA_TRUE_INDICATOR
47
#include <ext/pb_ds/detail/list_update_map_/lu_map_.hpp>
48
#undef PB_DS_DATA_TRUE_INDICATOR
49
 
50
#define PB_DS_DATA_FALSE_INDICATOR
51
#include <ext/pb_ds/detail/list_update_map_/lu_map_.hpp>
52
#undef PB_DS_DATA_FALSE_INDICATOR
53
 
54
#define PB_DS_DATA_TRUE_INDICATOR
55
#include <ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp>
56
#undef PB_DS_DATA_TRUE_INDICATOR
57
 
58
#define PB_DS_DATA_FALSE_INDICATOR
59
#include <ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp>
60
#undef PB_DS_DATA_FALSE_INDICATOR
61
 
62
#define PB_DS_DATA_TRUE_INDICATOR
63
#include <ext/pb_ds/detail/splay_tree_/splay_tree_.hpp>
64
#undef PB_DS_DATA_TRUE_INDICATOR
65
 
66
#define PB_DS_DATA_FALSE_INDICATOR
67
#include <ext/pb_ds/detail/splay_tree_/splay_tree_.hpp>
68
#undef PB_DS_DATA_FALSE_INDICATOR
69
 
70
#define PB_DS_DATA_TRUE_INDICATOR
71
#include <ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp>
72
#undef PB_DS_DATA_TRUE_INDICATOR
73
 
74
#define PB_DS_DATA_FALSE_INDICATOR
75
#include <ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp>
76
#undef PB_DS_DATA_FALSE_INDICATOR
77
 
78
#define PB_DS_DATA_TRUE_INDICATOR
79
#include <ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp>
80
#undef PB_DS_DATA_TRUE_INDICATOR
81
 
82
#define PB_DS_DATA_FALSE_INDICATOR
83
#include <ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp>
84
#undef PB_DS_DATA_FALSE_INDICATOR
85
 
86
#define PB_DS_DATA_TRUE_INDICATOR
87
#include <ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp>
88
#undef PB_DS_DATA_TRUE_INDICATOR
89
 
90
#define PB_DS_DATA_FALSE_INDICATOR
91
#include <ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp>
92
#undef PB_DS_DATA_FALSE_INDICATOR
93
 
94
#define PB_DS_DATA_TRUE_INDICATOR
95
#include <ext/pb_ds/detail/pat_trie_/pat_trie_.hpp>
96
#undef PB_DS_DATA_TRUE_INDICATOR
97
 
98
#define PB_DS_DATA_FALSE_INDICATOR
99
#include <ext/pb_ds/detail/pat_trie_/pat_trie_.hpp>
100
#undef PB_DS_DATA_FALSE_INDICATOR
101
 
102
namespace __gnu_pbds
103
{
104
namespace detail
105
{
106
  // Primary template.
107
  template<typename Key, typename Mapped, typename Data_Structure_Taq,
108
           typename Policy_Tl, typename Alloc>
109
    struct container_base_dispatch;
110
 
111
  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
112
    struct container_base_dispatch<Key, Mapped, list_update_tag,
113
                                   Policy_Tl, Alloc>
114
    {
115
    private:
116
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>        at0;
117
      typedef typename at0::type                                at0t;
118
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
119
      typedef typename at1::type                                at1t;
120
 
121
    public:
122
      typedef lu_map_data_<Key, Mapped, at0t, Alloc, at1t>      type;
123
    };
124
 
125
  template<typename Key, typename Policy_Tl, typename Alloc>
126
    struct container_base_dispatch<Key, null_mapped_type, list_update_tag,
127
                                   Policy_Tl, Alloc>
128
    {
129
    private:
130
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>        at0;
131
      typedef typename at0::type                                at0t;
132
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
133
      typedef typename at1::type                                at1t;
134
 
135
    public:
136
      typedef lu_map_no_data_<Key, null_mapped_type, at0t, Alloc, at1t> type;
137
    };
138
 
139
  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
140
    struct container_base_dispatch<Key, Mapped, pat_trie_tag, Policy_Tl, Alloc>
141
    {
142
    private:
143
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
144
      typedef typename at1::type                                at1t;
145
 
146
    public:
147
      typedef pat_trie_data_<Key, Mapped, at1t, Alloc>          type;
148
    };
149
 
150
  template<typename Key, typename Policy_Tl, typename Alloc>
151
    struct container_base_dispatch<Key, null_mapped_type, pat_trie_tag,
152
                                   Policy_Tl, Alloc>
153
    {
154
    private:
155
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
156
      typedef typename at1::type                                at1t;
157
 
158
    public:
159
      typedef pat_trie_no_data_<Key, null_mapped_type, at1t, Alloc> type;
160
    };
161
 
162
  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
163
    struct container_base_dispatch<Key, Mapped, rb_tree_tag, Policy_Tl, Alloc>
164
    {
165
    private:
166
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>        at0;
167
      typedef typename at0::type                                at0t;
168
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
169
      typedef typename at1::type                                at1t;
170
 
171
    public:
172
      typedef rb_tree_data_<Key, Mapped, at0t, at1t, Alloc>     type;
173
    };
174
 
175
  template<typename Key, typename Policy_Tl, typename Alloc>
176
    struct container_base_dispatch<Key, null_mapped_type, rb_tree_tag,
177
                                   Policy_Tl, Alloc>
178
    {
179
    private:
180
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>        at0;
181
      typedef typename at0::type                                at0t;
182
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
183
      typedef typename at1::type                                at1t;
184
 
185
    public:
186
      typedef rb_tree_no_data_<Key, null_mapped_type, at0t, at1t, Alloc> type;
187
    };
188
 
189
  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
190
    struct container_base_dispatch<Key, Mapped, splay_tree_tag,
191
                                   Policy_Tl, Alloc>
192
    {
193
    private:
194
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>        at0;
195
      typedef typename at0::type                                at0t;
196
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
197
      typedef typename at1::type                                at1t;
198
 
199
    public:
200
      typedef splay_tree_data_<Key, Mapped, at0t, at1t, Alloc>  type;
201
    };
202
 
203
  template<typename Key, typename Policy_Tl, typename Alloc>
204
    struct container_base_dispatch<Key, null_mapped_type, splay_tree_tag,
205
                                   Policy_Tl, Alloc>
206
    {
207
    private:
208
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>        at0;
209
      typedef typename at0::type                                at0t;
210
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
211
      typedef typename at1::type                                at1t;
212
 
213
    public:
214
      typedef splay_tree_no_data_<Key, null_mapped_type, at0t, at1t, Alloc> type;
215
  };
216
 
217
  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
218
    struct container_base_dispatch<Key, Mapped, ov_tree_tag, Policy_Tl, Alloc>
219
    {
220
    private:
221
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>        at0;
222
      typedef typename at0::type                                at0t;
223
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
224
      typedef typename at1::type                                at1t;
225
 
226
    public:
227
      typedef ov_tree_data_<Key, Mapped, at0t, at1t, Alloc>     type;
228
  };
229
 
230
  template<typename Key, typename Policy_Tl, typename Alloc>
231
    struct container_base_dispatch<Key, null_mapped_type, ov_tree_tag,
232
                                   Policy_Tl, Alloc>
233
    {
234
    private:
235
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>        at0;
236
      typedef typename at0::type                                at0t;
237
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
238
      typedef typename at1::type                                at1t;
239
 
240
    public:
241
      typedef ov_tree_no_data_<Key, null_mapped_type, at0t, at1t, Alloc> type;
242
  };
243
 
244
  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
245
    struct container_base_dispatch<Key, Mapped, cc_hash_tag, Policy_Tl, Alloc>
246
    {
247
    private:
248
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>        at0;
249
      typedef typename at0::type                                at0t;
250
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
251
      typedef typename at1::type                                at1t;
252
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2>       at2;
253
      typedef typename at2::type                                at2t;
254
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3>       at3;
255
      typedef typename at3::type                                at3t;
256
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4>       at4;
257
      typedef typename at4::type                                at4t;
258
 
259
    public:
260
      typedef cc_ht_map_data_<Key, Mapped, at0t, at1t, Alloc, at3t::value,
261
                              at4t, at2t>                       type;
262
  };
263
 
264
  template<typename Key, typename Policy_Tl, typename Alloc>
265
    struct container_base_dispatch<Key, null_mapped_type, cc_hash_tag,
266
                                   Policy_Tl, Alloc>
267
    {
268
    private:
269
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>        at0;
270
      typedef typename at0::type                                at0t;
271
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
272
      typedef typename at1::type                                at1t;
273
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2>       at2;
274
      typedef typename at2::type                                at2t;
275
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3>       at3;
276
      typedef typename at3::type                                at3t;
277
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4>       at4;
278
      typedef typename at4::type                                at4t;
279
 
280
    public:
281
      typedef cc_ht_map_no_data_<Key, null_mapped_type, at0t, at1t, Alloc,
282
                                 at3t::value, at4t, at2t>       type;
283
  };
284
 
285
  template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
286
    struct container_base_dispatch<Key, Mapped, gp_hash_tag, Policy_Tl, Alloc>
287
    {
288
    private:
289
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>        at0;
290
      typedef typename at0::type                                at0t;
291
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
292
      typedef typename at1::type                                at1t;
293
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2>       at2;
294
      typedef typename at2::type                                at2t;
295
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3>       at3;
296
      typedef typename at3::type                                at3t;
297
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4>       at4;
298
      typedef typename at4::type                                at4t;
299
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 5>       at5;
300
      typedef typename at5::type                                at5t;
301
 
302
    public:
303
      typedef gp_ht_map_data_<Key, Mapped, at0t, at1t, Alloc, at3t::value,
304
                              at4t, at5t, at2t>                 type;
305
  };
306
 
307
  template<typename Key, typename Policy_Tl, typename Alloc>
308
    struct container_base_dispatch<Key, null_mapped_type, gp_hash_tag,
309
                                   Policy_Tl, Alloc>
310
    {
311
    private:
312
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>        at0;
313
      typedef typename at0::type                                at0t;
314
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>       at1;
315
      typedef typename at1::type                                at1t;
316
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2>       at2;
317
      typedef typename at2::type                                at2t;
318
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3>       at3;
319
      typedef typename at3::type                                at3t;
320
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4>       at4;
321
      typedef typename at4::type                                at4t;
322
      typedef __gnu_cxx::typelist::at_index<Policy_Tl, 5>       at5;
323
      typedef typename at5::type                                at5t;
324
 
325
    public:
326
      typedef gp_ht_map_no_data_<Key, null_mapped_type, at0t, at1t, Alloc,
327
                                 at3t::value, at4t, at5t, at2t> type;
328
  };
329
} // namespace detail
330
} // namespace __gnu_pbds
331
 
332
#endif 

powered by: WebSVN 2.1.0

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