Ejemplo n.º 1
0
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
trace_node(const_node_pointer p_nd, size_type level)
{
  for (size_type i = 0; i < level; ++i)
    std::cerr << ' ';
  std::cerr << p_nd << " ";
  std::cerr << ((p_nd->m_type == pat_trie_leaf_node_type) ? "l " : "i ");

  trace_node_metadata(p_nd, type_to_type<typename node::metadata_type>());
  typename e_access_traits::const_iterator el_it = pref_begin(p_nd);
  while (el_it != pref_end(p_nd))
    {
      std::cerr <<* el_it;
      ++el_it;
    }

  if (p_nd->m_type == pat_trie_leaf_node_type)
    {
      std::cerr << std::endl;
      return;
    }

  const_internal_node_pointer p_internal =
    static_cast<const_internal_node_pointer>(p_nd);

  std::cerr << " " <<
    static_cast<unsigned long>(p_internal->get_e_ind()) << std::endl;

  const size_type num_children = std::distance(p_internal->begin(),
					       p_internal->end());

  for (size_type child_i = 0; child_i < num_children; ++child_i)
    {
      typename internal_node::const_iterator child_it =
	p_internal->begin();
      std::advance(child_it, num_children - child_i - 1);
      trace_node(*child_it, level + 1);
    }
}
Ejemplo n.º 2
0
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
trace_node(node_const_pointer p_nd, size_type level)
{
    while (p_nd != 0)
    {
        for (size_type i = 0; i < level; ++i)
            std::cerr << ' ';

        std::cerr << p_nd <<
                  " prev = " << p_nd->m_p_prev_or_parent <<
                  " next " << p_nd->m_p_next_sibling <<
                  " left = " << p_nd->m_p_l_child << " ";

        trace_node_metadata(p_nd, type_to_type<node_metadata>());
        std::cerr << p_nd->m_value << std::endl;
        trace_node(p_nd->m_p_l_child, level + 1);
        p_nd = p_nd->m_p_next_sibling;
    }
}