41 #ifndef PB_DS_TREE_TRACE_BASE_HPP 42 #define PB_DS_TREE_TRACE_BASE_HPP 44 #ifdef PB_DS_TREE_TRACE 53 #ifdef PB_DS_TREE_TRACE 55 #define PB_DS_CLASS_T_DEC \ 56 template<typename Node_CItr, typename Node_Itr, \ 57 typename Cmp_Fn, bool Node_Based, typename _Alloc> 59 #define PB_DS_CLASS_C_DEC \ 60 tree_trace_base<Node_CItr, Node_Itr, Cmp_Fn, \ 63 #define PB_DS_TRACE_BASE \ 64 branch_policy<Node_CItr, Node_Itr, _Alloc> 67 template<
typename Node_CItr,
typename Node_Itr,
68 typename Cmp_Fn,
bool Node_Based,
typename _Alloc>
69 class tree_trace_base :
private PB_DS_TRACE_BASE
76 typedef PB_DS_TRACE_BASE base_type;
77 typedef Node_CItr node_const_iterator;
78 typedef typename _Alloc::size_type size_type;
81 trace_node(node_const_iterator, size_type)
const;
83 _GLIBCXX_NODISCARD
virtual bool 86 virtual node_const_iterator
87 node_begin()
const = 0;
89 virtual node_const_iterator
93 print_node_pointer(Node_CItr, integral_constant<int,true>);
96 print_node_pointer(Node_CItr, integral_constant<int,false>);
98 template<
typename Metadata_>
100 trace_it_metadata(Node_CItr, type_to_type<Metadata_>);
103 trace_it_metadata(Node_CItr, type_to_type<null_type>);
113 trace_node(node_begin(), 0);
119 trace_node(node_const_iterator nd_it, size_type level)
const 121 if (nd_it.get_r_child() != node_end())
122 trace_node(nd_it.get_r_child(), level + 1);
124 for (size_type i = 0; i < level; ++i)
127 print_node_pointer(nd_it, integral_constant<int,Node_Based>());
128 std::cerr << base_type::extract_key(*(*nd_it));
130 typedef type_to_type<typename node_const_iterator::metadata_type>
133 trace_it_metadata(nd_it, m_type_ind_t());
137 if (nd_it.get_l_child() != node_end())
138 trace_node(nd_it.get_l_child(), level + 1);
142 template<
typename Metadata_>
145 trace_it_metadata(Node_CItr nd_it, type_to_type<Metadata_>)
147 const unsigned long ul =
static_cast<unsigned long>(nd_it.get_metadata());
154 trace_it_metadata(Node_CItr, type_to_type<null_type>)
160 print_node_pointer(Node_CItr nd_it, integral_constant<int,true>)
166 print_node_pointer(Node_CItr nd_it, integral_constant<int,false>)
169 #undef PB_DS_CLASS_T_DEC 170 #undef PB_DS_CLASS_C_DEC 171 #undef PB_DS_TRACE_BASE 172 #endif // #ifdef PB_DS_TREE_TRACE 177 #endif // #ifdef PB_DS_TREE_TRACE 179 #endif // #ifndef PB_DS_TREE_TRACE_BASE_HPP basic_ostream< _CharT, _Traits > & endl(basic_ostream< _CharT, _Traits > &__os)
Write a newline and flush the stream.
GNU extensions for policy-based data structures for public use.
ostream cerr
Linked to standard output.