41 #ifndef PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP
42 #define PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP
50 #define PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC \
51 bin_search_tree_const_node_it_<Node, Const_Iterator, Iterator, _Alloc>
54 template<
typename Node,
62 typename _Alloc::template rebind<
87 typename _Alloc::template rebind<metadata_type>::other::const_reference
92 : m_p_nd(const_cast<node_pointer>(p_nd))
98 {
return Const_Iterator(m_p_nd); }
103 {
return m_p_nd->get_metadata(); }
106 PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC
108 {
return PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(m_p_nd->m_p_left); }
111 PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC
113 {
return PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(m_p_nd->m_p_right); }
117 operator==(
const PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC& other)
const
118 {
return m_p_nd == other.m_p_nd; }
122 operator!=(
const PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC& other)
const
123 {
return m_p_nd != other.m_p_nd; }
128 #define PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC \
129 bin_search_tree_node_it_<Node, Const_Iterator, Iterator, _Alloc>
132 template<
typename Node,
133 class Const_Iterator,
137 :
public PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC
141 typename _Alloc::template rebind<
142 Node>::other::pointer
157 : PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(const_cast<node_pointer>(p_nd))
163 {
return Iterator(PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd); }
166 PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC
169 return PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC(
170 PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd->m_p_left);
174 PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC
177 return PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC(
178 PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd->m_p_right);
183 #undef PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC
184 #undef PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC
189 #endif // #ifndef PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP