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;
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;
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;
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;
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;
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;
297 typedef cc_ht_set<Key,
null_type, at0t, at1t, _Alloc,
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,
322 at3t::value, at4t, at5t, at2t>
type;
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;
346 typedef gp_ht_set<Key,
null_type, at0t, at1t, _Alloc,
347 at3t::value, at4t, at5t, at2t>
type;
cc_ht_set< Key, null_type, at0t, at1t, _Alloc, at3t::value, at4t, at2t > type
Dispatched type.
splay_tree_map< Key, Mapped, at0t, at1t, _Alloc > type
Dispatched type.
rb_tree_map< Key, Mapped, at0t, at1t, _Alloc > type
Dispatched type.
lu_set< Key, null_type, at0t, _Alloc, at1t > type
Dispatched type.
gp_ht_set< Key, null_type, at0t, at1t, _Alloc, at3t::value, at4t, at5t, at2t > type
Dispatched type.
pat_trie_set< Key, null_type, at1t, _Alloc > type
Dispatched type.
Ordered-vector tree associative-container.
ov_tree_map< Key, Mapped, at0t, at1t, _Alloc > type
Dispatched type.
gp_ht_map< Key, Mapped, at0t, at1t, _Alloc, at3t::value, at4t, at5t, at2t > type
Dispatched type.
ov_tree_set< Key, null_type, at0t, at1t, _Alloc > type
Dispatched type.
Represents no type, or absence of type, for template tricks.
lu_map< Key, Mapped, at0t, _Alloc, at1t > type
Dispatched type.
PATRICIA trie.This implementation loosely borrows ideas from: 1) Fast Mergeable Integer Maps...
cc_ht_map< Key, Mapped, at0t, at1t, _Alloc, at3t::value, at4t, at2t > type
Dispatched type.
list-based (with updates) associative container. Skip to the lu, my darling.
splay_tree_set< Key, null_type, at0t, at1t, _Alloc > type
Dispatched type.
Red-Black tree.This implementation uses an idea from the SGI STL (using a header node which is needed...
Dispatch mechanism, primary template for associative types.