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