41 #ifndef PB_DS_ASSOC_CNTNR_BASE_DS_DISPATCHER_HPP
42 #define PB_DS_ASSOC_CNTNR_BASE_DS_DISPATCHER_HPP
46 #define PB_DS_ASSERT_VALID(X) \
47 _GLIBCXX_DEBUG_ONLY(X.assert_valid(__FILE__, __LINE__);)
49 #define PB_DS_DEBUG_VERIFY(_Cond) \
50 _GLIBCXX_DEBUG_VERIFY_AT(_Cond, \
51 _M_message(#_Cond" assertion from %1;:%2;") \
52 ._M_string(__FILE__)._M_integer(__LINE__) \
55 #define PB_DS_CHECK_KEY_EXISTS(_Key) \
56 _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(_Key, __FILE__, __LINE__);)
58 #define PB_DS_CHECK_KEY_DOES_NOT_EXIST(_Key) \
59 _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(_Key, \
62 #define PB_DS_DATA_TRUE_INDICATOR
63 #define PB_DS_V2F(X) (X).first
64 #define PB_DS_V2S(X) (X).second
65 #define PB_DS_EP2VP(X)& ((X)->m_value)
74 #undef PB_DS_DATA_TRUE_INDICATOR
79 #define PB_DS_DATA_FALSE_INDICATOR
80 #define PB_DS_V2F(X) (X)
81 #define PB_DS_V2S(X) Mapped_Data()
82 #define PB_DS_EP2VP(X)& ((X)->m_value.first)
91 #undef PB_DS_DATA_FALSE_INDICATOR
96 #undef PB_DS_CHECK_KEY_DOES_NOT_EXIST
97 #undef PB_DS_CHECK_KEY_EXISTS
98 #undef PB_DS_DEBUG_VERIFY
99 #undef PB_DS_ASSERT_VALID
106 template<
typename Key,
typename Mapped,
typename _Alloc,
typename Policy_Tl>
111 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>
at0;
112 typedef typename at0::type
at0t;
113 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
114 typedef typename at1::type
at1t;
118 typedef lu_map<Key, Mapped, at0t, _Alloc, at1t>
type;
122 template<
typename Key,
typename _Alloc,
typename Policy_Tl>
127 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>
at0;
128 typedef typename at0::type
at0t;
129 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
130 typedef typename at1::type
at1t;
134 typedef lu_set<Key, null_type, at0t, _Alloc, at1t>
type;
138 template<
typename Key,
typename Mapped,
typename _Alloc,
typename Policy_Tl>
142 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
143 typedef typename at1::type
at1t;
146 typedef pat_trie_map<Key, Mapped, at1t, _Alloc>
type;
150 template<
typename Key,
typename _Alloc,
typename Policy_Tl>
155 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
156 typedef typename at1::type
at1t;
160 typedef pat_trie_set<Key, null_type, at1t, _Alloc>
type;
164 template<
typename Key,
typename Mapped,
typename _Alloc,
typename Policy_Tl>
168 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>
at0;
169 typedef typename at0::type
at0t;
170 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
171 typedef typename at1::type
at1t;
175 typedef rb_tree_map<Key, Mapped, at0t, at1t, _Alloc>
type;
179 template<
typename Key,
typename _Alloc,
typename Policy_Tl>
184 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>
at0;
185 typedef typename at0::type
at0t;
186 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
187 typedef typename at1::type
at1t;
190 typedef rb_tree_set<Key, null_type, at0t, at1t, _Alloc>
type;
194 template<
typename Key,
typename Mapped,
typename _Alloc,
typename Policy_Tl>
199 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>
at0;
200 typedef typename at0::type
at0t;
201 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
202 typedef typename at1::type
at1t;
206 typedef splay_tree_map<Key, Mapped, at0t, at1t, _Alloc>
type;
210 template<
typename Key,
typename _Alloc,
typename Policy_Tl>
215 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>
at0;
216 typedef typename at0::type
at0t;
217 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
218 typedef typename at1::type
at1t;
222 typedef splay_tree_set<Key, null_type, at0t, at1t, _Alloc>
type;
226 template<
typename Key,
typename Mapped,
typename _Alloc,
typename Policy_Tl>
230 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>
at0;
231 typedef typename at0::type
at0t;
232 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
233 typedef typename at1::type
at1t;
237 typedef ov_tree_map<Key, Mapped, at0t, at1t, _Alloc>
type;
241 template<
typename Key,
typename _Alloc,
typename Policy_Tl>
246 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>
at0;
247 typedef typename at0::type
at0t;
248 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
249 typedef typename at1::type
at1t;
253 typedef ov_tree_set<Key, null_type, at0t, at1t, _Alloc>
type;
257 template<
typename Key,
typename Mapped,
typename _Alloc,
typename Policy_Tl>
261 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>
at0;
262 typedef typename at0::type
at0t;
263 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
264 typedef typename at1::type
at1t;
265 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2>
at2;
266 typedef typename at2::type
at2t;
267 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3>
at3;
268 typedef typename at3::type
at3t;
269 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4>
at4;
270 typedef typename at4::type
at4t;
274 typedef cc_ht_map<Key, Mapped,
at0t,
at1t, _Alloc,
279 template<
typename Key,
typename _Alloc,
typename Policy_Tl>
284 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>
at0;
285 typedef typename at0::type
at0t;
286 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
287 typedef typename at1::type
at1t;
288 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2>
at2;
289 typedef typename at2::type
at2t;
290 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3>
at3;
291 typedef typename at3::type
at3t;
292 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4>
at4;
293 typedef typename at4::type
at4t;
302 template<
typename Key,
typename Mapped,
typename _Alloc,
typename Policy_Tl>
306 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>
at0;
307 typedef typename at0::type
at0t;
308 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
309 typedef typename at1::type
at1t;
310 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2>
at2;
311 typedef typename at2::type
at2t;
312 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3>
at3;
313 typedef typename at3::type
at3t;
314 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4>
at4;
315 typedef typename at4::type
at4t;
316 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 5>
at5;
317 typedef typename at5::type
at5t;
321 typedef gp_ht_map<Key, Mapped,
at0t,
at1t, _Alloc,
326 template<
typename Key,
typename _Alloc,
typename Policy_Tl>
331 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0>
at0;
332 typedef typename at0::type
at0t;
333 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1>
at1;
334 typedef typename at1::type
at1t;
335 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2>
at2;
336 typedef typename at2::type
at2t;
337 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3>
at3;
338 typedef typename at3::type
at3t;
339 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4>
at4;
340 typedef typename at4::type
at4t;
341 typedef __gnu_cxx::typelist::at_index<Policy_Tl, 5>
at5;
342 typedef typename at5::type
at5t;
General-probing hash.
Definition: tag_and_trait.hpp:144
at1::type at1t
Definition: container_base_dispatch.hpp:334
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:232
__gnu_cxx::typelist::at_index< Policy_Tl, 0 > at0
Definition: container_base_dispatch.hpp:199
__gnu_cxx::typelist::at_index< Policy_Tl, 0 > at0
Definition: container_base_dispatch.hpp:306
__gnu_cxx::typelist::at_index< Policy_Tl, 0 > at0
Definition: container_base_dispatch.hpp:331
splay_tree_map< Key, Mapped, at0t, at1t, _Alloc > type
Dispatched type.
Definition: container_base_dispatch.hpp:206
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:201
at1::type at1t
Definition: container_base_dispatch.hpp:187
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:308
rb_tree_set< Key, null_type, at0t, at1t, _Alloc > type
Definition: container_base_dispatch.hpp:190
__gnu_cxx::typelist::at_index< Policy_Tl, 0 > at0
Definition: container_base_dispatch.hpp:127
at4::type at4t
Definition: container_base_dispatch.hpp:340
__gnu_cxx::typelist::at_index< Policy_Tl, 4 > at4
Definition: container_base_dispatch.hpp:292
__gnu_cxx::typelist::at_index< Policy_Tl, 0 > at0
Definition: container_base_dispatch.hpp:284
at0::type at0t
Definition: container_base_dispatch.hpp:262
pat_trie_set< Key, null_type, at1t, _Alloc > type
Dispatched type.
Definition: container_base_dispatch.hpp:160
lu_set< Key, null_type, at0t, _Alloc, at1t > type
Dispatched type.
Definition: container_base_dispatch.hpp:134
__gnu_cxx::typelist::at_index< Policy_Tl, 0 > at0
Definition: container_base_dispatch.hpp:168
at1::type at1t
Definition: container_base_dispatch.hpp:114
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:155
Represents no type, or absence of type, for template tricks.
Definition: tag_and_trait.hpp:210
__gnu_cxx::typelist::at_index< Policy_Tl, 2 > at2
Definition: container_base_dispatch.hpp:335
rb_tree_map< Key, Mapped, at0t, at1t, _Alloc > type
Dispatched type.
Definition: container_base_dispatch.hpp:175
__gnu_cxx::typelist::at_index< Policy_Tl, 0 > at0
Definition: container_base_dispatch.hpp:215
__gnu_cxx::typelist::at_index< Policy_Tl, 0 > at0
Definition: container_base_dispatch.hpp:111
gp_ht_set< Key, null_type, at0t, at1t, _Alloc, at3t::value, at4t, at5t, at2t > type
Dispatched type.
Definition: container_base_dispatch.hpp:347
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:248
at0::type at0t
Definition: container_base_dispatch.hpp:285
Collision-chaining hash.
Definition: tag_and_trait.hpp:141
at5::type at5t
Definition: container_base_dispatch.hpp:317
Red-black tree.
Definition: tag_and_trait.hpp:153
at1::type at1t
Definition: container_base_dispatch.hpp:264
__gnu_cxx::typelist::at_index< Policy_Tl, 3 > at3
Definition: container_base_dispatch.hpp:312
at1::type at1t
Definition: container_base_dispatch.hpp:143
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:186
__gnu_cxx::typelist::at_index< Policy_Tl, 4 > at4
Definition: container_base_dispatch.hpp:314
at1::type at1t
Definition: container_base_dispatch.hpp:233
at4::type at4t
Definition: container_base_dispatch.hpp:270
gp_ht_map< Key, Mapped, at0t, at1t, _Alloc, at3t::value, at4t, at5t, at2t > type
Dispatched type.
Definition: container_base_dispatch.hpp:322
__gnu_cxx::typelist::at_index< Policy_Tl, 3 > at3
Definition: container_base_dispatch.hpp:290
__gnu_cxx::typelist::at_index< Policy_Tl, 5 > at5
Definition: container_base_dispatch.hpp:341
at1::type at1t
Definition: container_base_dispatch.hpp:249
__gnu_cxx::typelist::at_index< Policy_Tl, 0 > at0
Definition: container_base_dispatch.hpp:246
PATRICIA trie.
Definition: tag_and_trait.hpp:165
__gnu_cxx::typelist::at_index< Policy_Tl, 2 > at2
Definition: container_base_dispatch.hpp:265
at1::type at1t
Definition: container_base_dispatch.hpp:218
at1::type at1t
Definition: container_base_dispatch.hpp:156
at1::type at1t
Definition: container_base_dispatch.hpp:171
at1::type at1t
Definition: container_base_dispatch.hpp:130
at4::type at4t
Definition: container_base_dispatch.hpp:315
__gnu_cxx::typelist::at_index< Policy_Tl, 0 > at0
Definition: container_base_dispatch.hpp:230
lu_map< Key, Mapped, at0t, _Alloc, at1t > type
Dispatched type.
Definition: container_base_dispatch.hpp:118
at0::type at0t
Definition: container_base_dispatch.hpp:332
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:333
__gnu_cxx::typelist::at_index< Policy_Tl, 2 > at2
Definition: container_base_dispatch.hpp:310
__gnu_cxx::typelist::at_index< Policy_Tl, 5 > at5
Definition: container_base_dispatch.hpp:316
Ordered-vector tree.
Definition: tag_and_trait.hpp:159
__gnu_cxx::typelist::at_index< Policy_Tl, 2 > at2
Definition: container_base_dispatch.hpp:288
ov_tree_map< Key, Mapped, at0t, at1t, _Alloc > type
Dispatched type.
Definition: container_base_dispatch.hpp:237
__gnu_cxx::typelist::at_index< Policy_Tl, 0 > at0
Definition: container_base_dispatch.hpp:261
__gnu_cxx::typelist::at_index< Policy_Tl, 3 > at3
Definition: container_base_dispatch.hpp:337
at2::type at2t
Definition: container_base_dispatch.hpp:266
at2::type at2t
Definition: container_base_dispatch.hpp:289
at4::type at4t
Definition: container_base_dispatch.hpp:293
__gnu_cxx::typelist::at_index< Policy_Tl, 4 > at4
Definition: container_base_dispatch.hpp:269
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:129
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:142
at1::type at1t
Definition: container_base_dispatch.hpp:309
Dispatch mechanism, primary template for associative types.
Definition: tag_and_trait.hpp:449
at0::type at0t
Definition: container_base_dispatch.hpp:200
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:217
cc_ht_set< Key, null_type, at0t, at1t, _Alloc, at3t::value, at4t, at2t > type
Dispatched type.
Definition: container_base_dispatch.hpp:298
at5::type at5t
Definition: container_base_dispatch.hpp:342
at3::type at3t
Definition: container_base_dispatch.hpp:291
at3::type at3t
Definition: container_base_dispatch.hpp:338
__gnu_cxx::typelist::at_index< Policy_Tl, 4 > at4
Definition: container_base_dispatch.hpp:339
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:170
at0::type at0t
Definition: container_base_dispatch.hpp:307
at0::type at0t
Definition: container_base_dispatch.hpp:216
splay_tree_set< Key, null_type, at0t, at1t, _Alloc > type
Dispatched type.
Definition: container_base_dispatch.hpp:222
at0::type at0t
Definition: container_base_dispatch.hpp:169
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:113
at2::type at2t
Definition: container_base_dispatch.hpp:311
Splay tree.
Definition: tag_and_trait.hpp:156
__gnu_cxx::typelist::at_index< Policy_Tl, 0 > at0
Definition: container_base_dispatch.hpp:184
at0::type at0t
Definition: container_base_dispatch.hpp:112
cc_ht_map< Key, Mapped, at0t, at1t, _Alloc, at3t::value, at4t, at2t > type
Dispatched type.
Definition: container_base_dispatch.hpp:275
__gnu_cxx::typelist::at_index< Policy_Tl, 3 > at3
Definition: container_base_dispatch.hpp:267
ov_tree_set< Key, null_type, at0t, at1t, _Alloc > type
Dispatched type.
Definition: container_base_dispatch.hpp:253
at1::type at1t
Definition: container_base_dispatch.hpp:202
at0::type at0t
Definition: container_base_dispatch.hpp:128
at2::type at2t
Definition: container_base_dispatch.hpp:336
pat_trie_map< Key, Mapped, at1t, _Alloc > type
Definition: container_base_dispatch.hpp:146
at3::type at3t
Definition: container_base_dispatch.hpp:268
List-update.
Definition: tag_and_trait.hpp:168
at1::type at1t
Definition: container_base_dispatch.hpp:287
at0::type at0t
Definition: container_base_dispatch.hpp:247
at0::type at0t
Definition: container_base_dispatch.hpp:185
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:263
at3::type at3t
Definition: container_base_dispatch.hpp:313
at0::type at0t
Definition: container_base_dispatch.hpp:231
__gnu_cxx::typelist::at_index< Policy_Tl, 1 > at1
Definition: container_base_dispatch.hpp:286