63 #ifdef PB_DS_DATA_TRUE_INDICATOR
64 #define PB_DS_OV_TREE_NAME ov_tree_map
65 #define PB_DS_CONST_NODE_ITERATOR_NAME ov_tree_node_const_iterator_map
68 #ifdef PB_DS_DATA_FALSE_INDICATOR
69 #define PB_DS_OV_TREE_NAME ov_tree_set
70 #define PB_DS_CONST_NODE_ITERATOR_NAME ov_tree_node_const_iterator_set
73 #define PB_DS_CLASS_T_DEC \
74 template<typename Key, typename Mapped, typename Cmp_Fn, \
75 typename Node_And_It_Traits, typename _Alloc>
77 #define PB_DS_CLASS_C_DEC \
78 PB_DS_OV_TREE_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, _Alloc>
80 #define PB_DS_OV_TREE_TRAITS_BASE \
81 types_traits<Key, Mapped, _Alloc, false>
84 #define PB_DS_DEBUG_MAP_BASE_C_DEC \
85 debug_map_base<Key, eq_by_less<Key, Cmp_Fn>, \
86 typename _Alloc::template rebind<Key>::other::const_reference>
89 #ifdef PB_DS_TREE_TRACE
90 #define PB_DS_TREE_TRACE_BASE_C_DEC \
91 tree_trace_base<typename Node_And_It_Traits::node_const_iterator, \
92 typename Node_And_It_Traits::node_iterator, \
93 Cmp_Fn, false, _Alloc>
96 #ifndef PB_DS_CHECK_KEY_EXISTS
97 # error Missing definition
104 template<
typename Key,
typename Mapped,
typename Cmp_Fn,
105 typename Node_And_It_Traits,
typename _Alloc>
107 #ifdef _GLIBCXX_DEBUG
108 protected PB_DS_DEBUG_MAP_BASE_C_DEC,
110 #ifdef PB_DS_TREE_TRACE
111 public PB_DS_TREE_TRACE_BASE_C_DEC,
114 public Node_And_It_Traits::node_update,
123 typedef typename _Alloc::template rebind<non_const_value_type>::other
value_allocator;
126 #ifdef _GLIBCXX_DEBUG
127 typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
130 #ifdef PB_DS_TREE_TRACE
131 typedef PB_DS_TREE_TRACE_BASE_C_DEC trace_base;
144 typedef typename traits_type::null_node_update_pointer
165 typedef typename traits_base::pointer
pointer;
171 #ifdef PB_DS_DATA_TRUE_INDICATOR
181 template<
typename Size_Type>
186 Size_Type total_size)
235 template<
typename It>
257 #ifdef PB_DS_DATA_TRUE_INDICATOR
260 if (it !=
end() && !Cmp_Fn::operator()(r_key,
PB_DS_V2F(*it)))
269 return traits_base::s_null_type;
273 inline std::pair<point_iterator, bool>
280 if (it !=
end()&& !Cmp_Fn::operator()(r_key,
PB_DS_V2F(*it)))
284 return std::make_pair(it,
false);
297 pointer mid_it = it + ((e_it - it) >> 1);
298 if (cmp_fn::operator()(
PB_DS_V2F(*mid_it), r_key))
314 if (pot_it !=
end() && !Cmp_Fn::operator()(r_key,
PB_DS_V2F(*pot_it)))
333 if (pot_it !=
end() && !Cmp_Fn::operator()(r_key,
PB_DS_V2F(*pot_it)))
345 {
return (const_cast<PB_DS_CLASS_C_DEC&>(*this).find(r_key)); }
350 template<
typename Pred>
356 {
return erase_imp<iterator>(it); }
408 template<
typename Node_Update>
415 template<
typename Node_Update_>
419 template<
typename It>
426 template<
typename It>
430 template<
typename Ptr>
435 return (p_begin + (p_end - p_begin) / 2);
441 #ifdef PB_DS_REGRESSION
442 typename _Alloc::group_adjustor adjust(
m_size);
455 while (source_it != it)
457 new (
const_cast<void*
>(
static_cast<const void*
>(target_it)))
462 new (
const_cast<void*
>(
static_cast<const void*
>(ret_it = target_it)))
466 while (source_it != source_end_it)
468 new (
const_cast<void*
>(
static_cast<const void*
>(target_it)))
489 #ifdef _GLIBCXX_DEBUG
491 assert_valid(
const char*,
int)
const;
494 assert_iterators(
const char*,
int)
const;
497 template<
typename It>
532 #undef PB_DS_CLASS_C_DEC
533 #undef PB_DS_CLASS_T_DEC
534 #undef PB_DS_OV_TREE_NAME
535 #undef PB_DS_OV_TREE_TRAITS_BASE
536 #undef PB_DS_DEBUG_MAP_BASE_C_DEC
537 #ifdef PB_DS_TREE_TRACE
538 #undef PB_DS_TREE_TRACE_BASE_C_DEC
540 #undef PB_DS_CONST_NODE_ITERATOR_NAME
traits_type::metadata_type metadata_type
Definition: ov_tree_map_.hpp:137
point_const_iterator find(key_const_reference r_key) const
Definition: ov_tree_map_.hpp:344
const_iterator end() const
Definition: ov_tree_map_.hpp:380
const_iterator begin() const
Definition: ov_tree_map_.hpp:372
PB_DS_OV_TREE_TRAITS_BASE traits_base
Definition: ov_tree_map_.hpp:118
traits_base::pointer mapped_pointer_
Definition: ov_tree_map_.hpp:134
traits_base::mapped_reference mapped_reference
Definition: ov_tree_map_.hpp:162
void copy_from_ordered_range(It, It)
void set_no_action()
Definition: ov_tree_map_.hpp:207
traits_base::const_pointer mapped_const_pointer_
Definition: ov_tree_map_.hpp:135
traits_base::pointer pointer
Definition: ov_tree_map_.hpp:165
metadata_allocator::pointer metadata_pointer
Definition: ov_tree_map_.hpp:140
const_pointer point_const_iterator
Definition: ov_tree_map_.hpp:170
traits_base::key_pointer key_pointer
Definition: ov_tree_map_.hpp:155
traits_base::mapped_const_pointer mapped_const_pointer
Definition: ov_tree_map_.hpp:161
static metadata_allocator s_metadata_alloc
Definition: ov_tree_map_.hpp:515
point_iterator lower_bound(key_const_reference r_key)
Definition: ov_tree_map_.hpp:291
#define false
Definition: stdbool.h:35
iterator end()
Definition: ov_tree_map_.hpp:376
#define PB_DS_OV_TREE_TRAITS_BASE
Definition: ov_tree_map_.hpp:80
_Alloc::template rebind< metadata_type >::other metadata_allocator
Definition: ov_tree_map_.hpp:139
point_iterator upper_bound(key_const_reference r_key)
Definition: ov_tree_map_.hpp:311
Node_And_It_Traits traits_type
Definition: ov_tree_map_.hpp:119
mapped_reference operator[](key_const_reference r_key)
Definition: ov_tree_map_.hpp:255
value_vector m_a_values
Definition: ov_tree_map_.hpp:517
traits_base::key_const_reference key_const_reference
Definition: ov_tree_map_.hpp:158
#define _GLIBCXX_DEBUG_ASSERT(_Condition)
Definition: debug.h:61
_Alloc::template rebind< non_const_value_type >::other value_allocator
Definition: ov_tree_map_.hpp:123
iterator m_end_it
Definition: ov_tree_map_.hpp:519
#define _GLIBCXX_DEBUG_ONLY(_Statement)
Definition: debug.h:63
_Alloc allocator_type
Definition: ov_tree_map_.hpp:149
Ordered-vector tree associative-container.
Definition: ov_tree_map_.hpp:106
void split(key_const_reference, PB_DS_CLASS_C_DEC &)
node_const_iterator node_begin() const
size_type m_size
Definition: ov_tree_map_.hpp:520
traits_base::key_const_pointer key_const_pointer
Definition: ov_tree_map_.hpp:156
void join(PB_DS_CLASS_C_DEC &)
const Size_Type m_max_size
Definition: ov_tree_map_.hpp:213
remove_const< typename traits_base::value_type >::type non_const_value_type
Definition: ov_tree_map_.hpp:121
point_const_iterator const_iterator
Definition: ov_tree_map_.hpp:178
void update(node_iterator, null_node_update_pointer)
traits_base::mapped_type mapped_type
Definition: ov_tree_map_.hpp:159
Conditional destructor.
Definition: ov_tree_map_.hpp:182
iterator & m_r_last_it
Definition: ov_tree_map_.hpp:212
traits_type::node_const_iterator node_const_iterator
Definition: ov_tree_map_.hpp:219
bool erase(key_const_reference)
traits_base::mapped_pointer mapped_pointer
Definition: ov_tree_map_.hpp:160
void reallocate_metadata(null_node_update_pointer, size_type)
iterator insert_new_val(iterator it, const_reference r_value)
Definition: ov_tree_map_.hpp:439
node_const_iterator PB_DS_node_end_imp() const
Ordered-vector tree.
Definition: tag_and_trait.hpp:159
traits_base::key_reference key_reference
Definition: ov_tree_map_.hpp:157
void copy_from_range(It, It)
point_const_iterator upper_bound(key_const_reference r_key) const
Definition: ov_tree_map_.hpp:325
traits_base::const_reference const_reference
Definition: ov_tree_map_.hpp:168
node_const_iterator PB_DS_node_begin_imp() const
iterator erase(iterator it)
Definition: ov_tree_map_.hpp:355
traits_type::node_update node_update
Definition: ov_tree_map_.hpp:217
point_const_iterator point_iterator
Definition: ov_tree_map_.hpp:174
value_allocator::pointer value_vector
Definition: ov_tree_map_.hpp:124
#define PB_DS_CHECK_KEY_EXISTS(_Key)
Definition: container_base_dispatch.hpp:55
value_vector m_a_vec
Definition: ov_tree_map_.hpp:211
#define PB_DS_ASSERT_VALID(X)
Definition: binary_heap_.hpp:324
~cond_dtor()
Definition: ov_tree_map_.hpp:191
node_const_iterator node_end() const
metadata_allocator::const_reference metadata_const_reference
Definition: ov_tree_map_.hpp:141
_Alloc::size_type size_type
Definition: ov_tree_map_.hpp:150
traits_base::value_type value_type
Definition: ov_tree_map_.hpp:164
metadata_pointer m_a_metadata
Definition: ov_tree_map_.hpp:518
#define PB_DS_CLASS_C_DEC
Definition: ov_tree_map_.hpp:77
traits_base::mapped_const_reference mapped_const_reference
Definition: ov_tree_map_.hpp:163
bool m_no_action
Definition: ov_tree_map_.hpp:214
Cmp_Fn cmp_fn
Definition: ov_tree_map_.hpp:152
metadata_allocator::reference metadata_reference
Definition: ov_tree_map_.hpp:142
#define PB_DS_V2F(X)
Definition: container_base_dispatch.hpp:80
void swap(PB_DS_CLASS_C_DEC &)
void value_swap(PB_DS_CLASS_C_DEC &)
ov_tree_tag container_category
Definition: ov_tree_map_.hpp:148
traits_base::reference reference
Definition: ov_tree_map_.hpp:167
_Alloc::difference_type difference_type
Definition: ov_tree_map_.hpp:151
std::pair< point_iterator, bool > insert(const_reference r_value)
Definition: ov_tree_map_.hpp:274
static value_allocator s_value_alloc
Definition: ov_tree_map_.hpp:514
cond_dtor(value_vector a_vec, iterator &r_last_it, Size_Type total_size)
Definition: ov_tree_map_.hpp:185
traits_base::key_type key_type
Definition: ov_tree_map_.hpp:154
iterator begin()
Definition: ov_tree_map_.hpp:368
static Ptr mid_pointer(Ptr p_begin, Ptr p_end)
Definition: ov_tree_map_.hpp:432
traits_type::null_node_update_pointer null_node_update_pointer
Definition: ov_tree_map_.hpp:145
point_const_iterator lower_bound(key_const_reference r_key) const
Definition: ov_tree_map_.hpp:307
traits_type::node_iterator node_iterator
Definition: ov_tree_map_.hpp:218
point_iterator find(key_const_reference r_key)
Definition: ov_tree_map_.hpp:329
#define PB_DS_CHECK_KEY_DOES_NOT_EXIST(_Key)
Definition: container_base_dispatch.hpp:58
traits_base::const_pointer const_pointer
Definition: ov_tree_map_.hpp:166
point_iterator iterator
Definition: ov_tree_map_.hpp:177
size_type max_size() const