#include <CC_TreeGraphviz_FA.h>
List of all members.
Static Public Member Functions |
static void | create_dot (CC_TreeNodeEdge_FA< T_IOSymbol, T_Register, T_Tag, N_k > *root_node, std::ostream &os) |
Static Protected Member Functions |
static void | explore_node_edge (CC_TreeNodeEdge_FA< T_IOSymbol, T_Register, T_Tag, N_k > *node_edge, std::vector< CC_TreeNodeEdge_FA< T_IOSymbol, T_Register, T_Tag, N_k > * > &node_edges) |
static void | print_dot (std::vector< CC_TreeNodeEdge_FA< T_IOSymbol, T_Register, T_Tag, N_k > * > &node_edges, std::ostream &os) |
template<typename T_IOSymbol, typename T_Register, typename T_Tag, unsigned int N_k>
class ccsoft::CC_TreeGraphviz_FA< T_IOSymbol, T_Register, T_Tag, N_k >
Member Function Documentation
template<typename T_IOSymbol , typename T_Register , typename T_Tag , unsigned int N_k>
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_FA<T_IOSymbol, T_Register, T_Tag, N_k>*> node_edges;
explore_node_edge(root_node, node_edges);
print_dot(node_edges, os);
}
template<typename T_IOSymbol , typename T_Register , typename T_Tag , unsigned int N_k>
static void ccsoft::CC_TreeGraphviz_FA< T_IOSymbol, T_Register, T_Tag, N_k >::explore_node_edge |
( |
CC_TreeNodeEdge_FA< T_IOSymbol, T_Register, T_Tag, N_k > * |
node_edge, |
|
|
std::vector< CC_TreeNodeEdge_FA< T_IOSymbol, T_Register, T_Tag, N_k > * > & |
node_edges |
|
) |
| [inline, static, protected] |
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::array<CC_TreeNodeEdge_FA<T_IOSymbol, T_Register, T_Tag, N_k>*, (1<<N_k)>& outgoing_node_edges = node_edge->get_outgoing_node_edges();
typename std::array<CC_TreeNodeEdge_FA<T_IOSymbol, T_Register, T_Tag, N_k>*, (1<<N_k)>::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 , unsigned int N_k>
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_FA<T_IOSymbol, T_Register, T_Tag, N_k>*>::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: