59 #ifdef PB_DS_DATA_TRUE_INDICATOR
60 #define PB_DS_BIN_TREE_NAME bin_search_tree_map
63 #ifdef PB_DS_DATA_FALSE_INDICATOR
64 #define PB_DS_BIN_TREE_NAME bin_search_tree_set
67 #define PB_DS_CLASS_T_DEC \
68 template<typename Key, typename Mapped, typename Cmp_Fn, \
69 typename Node_And_It_Traits, typename _Alloc>
71 #define PB_DS_CLASS_C_DEC \
72 PB_DS_BIN_TREE_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, _Alloc>
74 #define PB_DS_BIN_TREE_TRAITS_BASE \
75 types_traits<Key, Mapped, _Alloc, false>
78 #define PB_DS_DEBUG_MAP_BASE_C_DEC \
79 debug_map_base<Key, eq_by_less<Key, Cmp_Fn>, \
80 typename _Alloc::template rebind<Key>::other::const_reference>
83 #ifdef PB_DS_TREE_TRACE
84 #define PB_DS_TREE_TRACE_BASE_C_DEC \
85 tree_trace_base<typename Node_And_It_Traits::node_const_iterator, \
86 typename Node_And_It_Traits::node_iterator, \
97 template<
typename Key,
typename Mapped,
typename Cmp_Fn,
98 typename Node_And_It_Traits,
typename _Alloc>
100 #ifdef _GLIBCXX_DEBUG
101 public PB_DS_DEBUG_MAP_BASE_C_DEC,
103 #ifdef PB_DS_TREE_TRACE
104 public PB_DS_TREE_TRACE_BASE_C_DEC,
108 public Node_And_It_Traits::node_update
116 typename _Alloc::template rebind<typename traits_type::node>::other
119 typedef typename node_allocator::value_type
node;
122 typedef typename traits_type::null_node_update_pointer
128 #ifdef _GLIBCXX_DEBUG
129 typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
141 #ifdef PB_DS_DATA_TRUE_INDICATOR
142 typedef typename traits_base::mapped_type mapped_type;
143 typedef typename traits_base::mapped_pointer mapped_pointer;
144 typedef typename traits_base::mapped_const_pointer mapped_const_pointer;
145 typedef typename traits_base::mapped_reference mapped_reference;
146 typedef typename traits_base::mapped_const_reference mapped_const_reference;
150 typedef typename traits_base::pointer
pointer;
285 inline std::pair<node_pointer, bool>
294 inline std::pair<point_iterator, bool>
309 template<
typename Node_Update_>
316 template<
typename Node_Update_>
335 #ifdef _GLIBCXX_DEBUG
337 assert_valid(
const char*,
int)
const;
340 structure_only_assert_valid(
const char*,
int)
const;
343 assert_node_consistent(
const node_pointer,
const char*,
int)
const;
347 #ifdef _GLIBCXX_DEBUG
349 assert_iterators(
const char*,
int)
const;
352 assert_consistent_with_debug_base(
const char*,
int)
const;
356 const char*,
int)
const;
360 const char*,
int)
const;
364 const char*,
int)
const;
367 assert_min(
const char*,
int)
const;
370 assert_min_imp(
const node_pointer,
const char*,
int)
const;
373 assert_max(
const char*,
int)
const;
376 assert_max_imp(
const node_pointer,
const char*,
int)
const;
379 assert_size(
const char*,
int)
const;
381 typedef std::pair<const_pointer, const_pointer> node_consistent_t;
384 assert_node_consistent_(
const node_pointer,
const char*,
int)
const;
399 #define PB_DS_STRUCT_ONLY_ASSERT_VALID(X) \
400 _GLIBCXX_DEBUG_ONLY(X.structure_only_assert_valid(__FILE__, __LINE__);)
402 #define PB_DS_ASSERT_NODE_CONSISTENT(_Node) \
403 _GLIBCXX_DEBUG_ONLY(assert_node_consistent(_Node, __FILE__, __LINE__);)
416 #undef PB_DS_ASSERT_NODE_CONSISTENT
417 #undef PB_DS_STRUCT_ONLY_ASSERT_VALID
418 #undef PB_DS_CLASS_C_DEC
419 #undef PB_DS_CLASS_T_DEC
420 #undef PB_DS_BIN_TREE_NAME
421 #undef PB_DS_BIN_TREE_TRAITS_BASE
422 #undef PB_DS_DEBUG_MAP_BASE_C_DEC
424 #ifdef PB_DS_TREE_TRACE
425 #undef PB_DS_TREE_TRACE_BASE_C_DEC
_Alloc allocator_type
Definition: bin_search_tree_.hpp:168
traits_type::node_const_iterator node_const_iterator
Definition: bin_search_tree_.hpp:163
traits_type::node_update node_update
Definition: bin_search_tree_.hpp:165
traits_base::pointer pointer
Definition: bin_search_tree_.hpp:150
void update_to_top(node_pointer, null_node_update_pointer)
void initialize_min_max()
void split_finish(PB_DS_CLASS_C_DEC &)
_Alloc::size_type size_type
Definition: bin_search_tree_.hpp:133
static node_allocator s_node_allocator
Definition: bin_search_tree_.hpp:396
point_const_iterator const_iterator
Definition: bin_search_tree_.hpp:156
traits_base::const_pointer const_pointer
Definition: bin_search_tree_.hpp:151
node_pointer get_new_node_for_leaf_insert(const_reference, false_type)
void update_min_max_for_erased_node(node_pointer)
node_pointer m_p_head
Definition: bin_search_tree_.hpp:394
traits_base::reference reference
Definition: bin_search_tree_.hpp:152
point_iterator find(key_const_reference)
#define PB_DS_CLASS_C_DEC
Definition: bin_search_tree_.hpp:71
node_const_iterator node_begin() const
size_type recursive_count(node_pointer) const
node_const_iterator node_end() const
point_iterator upper_bound(key_const_reference)
void actual_erase_node(node_pointer)
node_pointer recursive_copy_node(const node_pointer)
iterator insert_imp_empty(const_reference)
std::pair< node_pointer, bool > erase(node_pointer)
traits_type::null_node_update_pointer null_node_update_pointer
Definition: bin_search_tree_.hpp:123
traits_base::key_const_pointer key_const_pointer
Definition: bin_search_tree_.hpp:137
#define PB_DS_BIN_TREE_TRAITS_BASE
Definition: bin_search_tree_.hpp:74
void rotate_left(node_pointer)
traits_type::reverse_iterator reverse_iterator
Definition: bin_search_tree_.hpp:162
traits_base::const_reference const_reference
Definition: bin_search_tree_.hpp:153
void rotate_parent(node_pointer)
traits_type::node_iterator node_iterator
Definition: bin_search_tree_.hpp:164
traits_type::point_const_iterator point_const_iterator
Definition: bin_search_tree_.hpp:154
bool join_prep(PB_DS_CLASS_C_DEC &)
void value_swap(PB_DS_CLASS_C_DEC &)
std::tr1::integral_constant< int, 1 > true_type
Definition: type_utils.hpp:70
Conditional dey destructor, cc_hash.
Definition: cond_key_dtor_entry_dealtor.hpp:47
traits_type::point_iterator point_iterator
Definition: bin_search_tree_.hpp:157
Definition: bin_search_tree_.hpp:99
PB_DS_BIN_TREE_TRAITS_BASE traits_base
Definition: bin_search_tree_.hpp:113
_Alloc::template rebind< typename traits_type::node >::other node_allocator
Definition: bin_search_tree_.hpp:117
point_iterator lower_bound(key_const_reference)
traits_base::value_type value_type
Definition: bin_search_tree_.hpp:149
node_allocator::pointer node_pointer
Definition: bin_search_tree_.hpp:120
iterator insert_leaf_new(const_reference, node_pointer, bool)
size_type max_size() const
cond_dealtor< node, _Alloc > cond_dealtor_t
Definition: bin_search_tree_.hpp:126
void rotate_right(node_pointer)
void swap(PB_DS_CLASS_C_DEC &)
traits_base::key_pointer key_pointer
Definition: bin_search_tree_.hpp:136
traits_base::key_const_reference key_const_reference
Definition: bin_search_tree_.hpp:139
point_iterator iterator
Definition: bin_search_tree_.hpp:158
_Alloc::difference_type difference_type
Definition: bin_search_tree_.hpp:134
size_type m_size
Definition: bin_search_tree_.hpp:395
node_allocator::value_type node
Definition: bin_search_tree_.hpp:119
Cmp_Fn cmp_fn
Definition: bin_search_tree_.hpp:167
traits_base::key_reference key_reference
Definition: bin_search_tree_.hpp:138
void apply_update(node_pointer, null_node_update_pointer)
std::pair< point_iterator, bool > insert_leaf(const_reference)
static void clear_imp(node_pointer)
void join_finish(PB_DS_CLASS_C_DEC &)
traits_type::const_reverse_iterator const_reverse_iterator
Definition: bin_search_tree_.hpp:160
bool split_prep(key_const_reference, PB_DS_CLASS_C_DEC &)
traits_base::key_type key_type
Definition: bin_search_tree_.hpp:135
reverse_iterator rbegin()
std::tr1::integral_constant< int, 0 > false_type
Definition: type_utils.hpp:71
Node_And_It_Traits traits_type
Definition: bin_search_tree_.hpp:110