41 #ifndef PB_DS_SYNTH_E_ACCESS_TRAITS_HPP
42 #define PB_DS_SYNTH_E_ACCESS_TRAITS_HPP
51 #define PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC \
52 template<typename Type_Traits, bool Set, typename _ATraits>
54 #define PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC \
55 synth_access_traits<Type_Traits, Set, _ATraits>
58 template<
typename Type_Traits,
bool Set,
typename _ATraits>
104 integral_constant<int,Set>
105 PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::s_set_ind;
108 PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
109 synth_access_traits()
113 PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
114 synth_access_traits(
const _ATraits& r_traits)
120 PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
121 equal_prefixes(const_iterator b_l, const_iterator e_l, const_iterator b_r,
122 const_iterator e_r,
bool compare_after )
const
128 if (base_type::e_pos(*b_l) != base_type::e_pos(*b_r))
133 return (!compare_after || b_r == e_r);
138 PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
139 equal_keys(key_const_reference r_lhs_key,
140 key_const_reference r_rhs_key)
const
142 return equal_prefixes(base_type::begin(r_lhs_key),
143 base_type::end(r_lhs_key),
144 base_type::begin(r_rhs_key),
145 base_type::end(r_rhs_key),
151 PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
152 cmp_prefixes(const_iterator b_l, const_iterator e_l, const_iterator b_r,
153 const_iterator e_r,
bool compare_after )
const
160 const typename base_type::size_type l_pos = base_type::e_pos(*b_l);
161 const typename base_type::size_type r_pos = base_type::e_pos(*b_r);
163 return l_pos < r_pos;
175 PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
176 cmp_keys(key_const_reference r_lhs_key,
177 key_const_reference r_rhs_key)
const
179 return cmp_prefixes(base_type::begin(r_lhs_key),
180 base_type::end(r_lhs_key),
181 base_type::begin(r_rhs_key),
182 base_type::end(r_rhs_key),
187 inline typename PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::key_const_reference
188 PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
189 extract_key(const_reference r_val)
190 {
return extract_key(r_val, s_set_ind); }
193 inline typename PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::key_const_reference
194 PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
195 extract_key(const_reference r_val,
true_type)
199 inline typename PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::key_const_reference
200 PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
201 extract_key(const_reference r_val,
false_type)
202 {
return r_val.first; }
204 #ifdef _GLIBCXX_DEBUG
207 PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
208 operator()(key_const_reference r_lhs, key_const_reference r_rhs)
209 {
return cmp_keys(r_lhs, r_rhs); }
212 #undef PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
213 #undef PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC
bool cmp_prefixes(const_iterator, const_iterator, const_iterator, const_iterator, bool compare_after=false) const
bool equal_prefixes(const_iterator, const_iterator, const_iterator, const_iterator, bool compare_after=true) const
static integral_constant< int, Set > s_set_ind
Definition: synth_access_traits.hpp:100
base_type::const_iterator const_iterator
Definition: synth_access_traits.hpp:62
bool equal_keys(key_const_reference, key_const_reference) const
_ATraits base_type
Definition: synth_access_traits.hpp:61
Synthetic element access traits.
Definition: synth_access_traits.hpp:59
Type_Traits type_traits
Definition: synth_access_traits.hpp:63
std::tr1::integral_constant< int, 1 > true_type
Definition: type_utils.hpp:70
static key_const_reference extract_key(const_reference)
bool cmp_keys(key_const_reference, key_const_reference) const
type_traits::key_const_reference key_const_reference
Definition: synth_access_traits.hpp:65
#define PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
Definition: synth_access_traits.hpp:51
type_traits::const_reference const_reference
Definition: synth_access_traits.hpp:64
std::tr1::integral_constant< int, 0 > false_type
Definition: type_utils.hpp:71