#include <CC_TreeGraphviz.h>
List of all members.
Static Public Member Functions |
static void | create_dot (CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag > *root_node, std::ostream &os) |
Static Protected Member Functions |
static void | explore_node_edge (CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag > *node_edge, std::vector< CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag > * > &node_edges) |
static void | print_dot (std::vector< CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag > * > &node_edges, std::ostream &os) |
template<typename T_IOSymbol, typename T_Register, typename T_Tag>
class ccsoft::CC_TreeGraphviz< T_IOSymbol, T_Register, T_Tag >
Member Function Documentation
template<typename T_IOSymbol , typename T_Register , typename T_Tag >
Create a dot command sequence into an output stream
- Parameters:
-
root_node | Root node of the coding tree |
os | Output stream |
{
std::vector<CC_TreeNodeEdge<T_IOSymbol, T_Register, T_Tag>*> node_edges;
explore_node_edge(root_node, node_edges);
print_dot(node_edges, os);
}
template<typename T_IOSymbol , typename T_Register , typename T_Tag >
Explore a node+edge in the tree to accumulate node+edges information
- Parameters:
-
node | Node to explore |
nodes | Vector of all nodes |
edges | Vector of all edges |
{
node_edges.push_back(node_edge);
const std::vector<CC_TreeNodeEdge<T_IOSymbol, T_Register, T_Tag>*>& outgoing_node_edges = node_edge->get_outgoing_node_edges();
typename std::vector<CC_TreeNodeEdge<T_IOSymbol, T_Register, T_Tag>*>::const_iterator ne_it = outgoing_node_edges.begin();
for (; ne_it != outgoing_node_edges.end(); ++ne_it)
{
node_edges.push_back(*ne_it);
explore_node_edge(*ne_it, node_edges);
}
}
template<typename T_IOSymbol , typename T_Register , typename T_Tag >
Print the dot output
- Parameters:
-
nodes | Vector of all nodes |
edges | Vector of all edges |
os | Output stream |
{
os << "digraph G {" << std::endl;
os << " rankdir=LR" << std::endl << std::endl;
typename std::vector<CC_TreeNodeEdge<T_IOSymbol, T_Register, T_Tag>*>::const_iterator ne_it = node_edges.begin();
for (; ne_it != node_edges.end(); ++ne_it)
{
os << " n_" << (*ne_it)->get_id() << " [shape=" << ((*ne_it)->get_id() == 0 ? "box" : "ellipse") << ", label=\"";
os << (*ne_it)->get_id() << " " << (*ne_it)->get_path_metric() << "\"";
if ((*ne_it)->is_on_final_path())
{
os << " style=filled fillcolor=lightblue";
}
os << "]" << std::endl;
}
ne_it = node_edges.begin();
for (; ne_it != node_edges.end(); ++ne_it)
{
os << " n_" << (*ne_it)->get_incoming_node_edge()->get_id() << " -> n_" << (*ne_it)->get_id() << " [label=\"";
print_symbol((*ne_it)->get_in_symbol(), os);
os << " " << (*ne_it)->get_incoming_metric() << "\"]" << std::endl;
}
os << "}" << std::endl;
}
The documentation for this class was generated from the following file: