![]() |
ccsoft
0.0.0
Convolutional codes library with soft decision decoding
|
Represents a node and its incoming edge in the code tree. More...
#include <CC_TreeNodeEdge.h>
Public Member Functions | |
CC_TreeNodeEdge (unsigned int _id, CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag > *_p_incoming_node_edge, const T_IOSymbol &_in_symbol, float _incoming_edge_metric, float _path_metric, int _depth) | |
~CC_TreeNodeEdge () | |
void | add_outgoing_node_edge (CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag > *p_outgoing_node_edge) |
void | delete_outgoing_node_edges () |
const std::vector < CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag > * > & | get_outgoing_node_edges () const |
std::vector< CC_TreeNodeEdge < T_IOSymbol, T_Register, T_Tag > * > & | get_outgoing_node_edges () |
CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag > * | get_incoming_node_edge () |
const std::vector< T_Register > & | get_registers () const |
void | set_registers (const std::vector< T_Register > &_registers) |
Protected Attributes | |
std::vector< CC_TreeNodeEdge < T_IOSymbol, T_Register, T_Tag > * > | p_outgoing_node_edges |
Outgoing edges+node pointers. | |
CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag > * | p_incoming_node_edge |
Pointer to the incoming edge+node. | |
std::vector< T_Register > | registers |
state of encoder registers at node |
Represents a node and its incoming edge in the code tree.
T_IOSymbol | Type of the input and output symbols |
T_Register | Type of the encoder internal registers |
T_Tag | Type of the node-edge tag |
ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::CC_TreeNodeEdge | ( | unsigned int | _id, |
CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag > * | _p_incoming_node_edge, | ||
const T_IOSymbol & | _in_symbol, | ||
float | _incoming_edge_metric, | ||
float | _path_metric, | ||
int | _depth | ||
) | [inline] |
Constructor
_id | Unique ID of the edge |
_p_incoming_edge | Pointer to the incoming edge to the node |
_in_symbol | Input symbol corresponding to the edge |
_metric | Metric of the edge |
_path_metric | Path metric at the node |
_depth | This node depth |
: CC_TreeNodeEdge_base<T_IOSymbol, T_Tag>(_id, _in_symbol, _incoming_edge_metric, _path_metric, _depth), p_incoming_node_edge(_p_incoming_node_edge) {}
ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::~CC_TreeNodeEdge | ( | ) | [inline] |
Destructor
{ // deletes all outgoing edge+nodes delete_outgoing_node_edges(); }
void ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::add_outgoing_node_edge | ( | CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag > * | p_outgoing_node_edge | ) | [inline] |
Add an outgoing edge
p_outgoing_node_edge | Outgoing edge+node |
{ p_outgoing_node_edges.push_back(p_outgoing_node_edge); }
void ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::delete_outgoing_node_edges | ( | ) | [inline] |
Delete outgoing edges
{ typename std::vector<CC_TreeNodeEdge<T_IOSymbol, T_Register, T_Tag>*>::iterator ne_it = p_outgoing_node_edges.begin(); for (; ne_it != p_outgoing_node_edges.end(); ++ne_it) { if (*ne_it) { delete *ne_it; *ne_it = 0; } } p_outgoing_node_edges.clear(); }
CC_TreeNodeEdge<T_IOSymbol, T_Register, T_Tag>* ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::get_incoming_node_edge | ( | ) | [inline] |
Get pointer to the incoming edge
{ return p_incoming_node_edge; }
const std::vector<CC_TreeNodeEdge<T_IOSymbol, T_Register, T_Tag>*>& ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::get_outgoing_node_edges | ( | ) | const [inline] |
Return a R/O reference to the outgoing node+edges
{ return p_outgoing_node_edges; }
std::vector<CC_TreeNodeEdge<T_IOSymbol, T_Register, T_Tag>*>& ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::get_outgoing_node_edges | ( | ) | [inline] |
Return a R/W reference to the outgoing edges
{ return p_outgoing_node_edges; }
const std::vector<T_Register>& ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::get_registers | ( | ) | const [inline] |
Get saved encoder registers reference
{ return registers; }
void ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::set_registers | ( | const std::vector< T_Register > & | _registers | ) | [inline] |
Save encoder registers
{ registers = _registers; }
CC_TreeNodeEdge<T_IOSymbol, T_Register, T_Tag>* ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::p_incoming_node_edge [protected] |
Pointer to the incoming edge+node.
std::vector<CC_TreeNodeEdge<T_IOSymbol, T_Register, T_Tag>*> ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::p_outgoing_node_edges [protected] |
Outgoing edges+node pointers.
std::vector<T_Register> ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::registers [protected] |
state of encoder registers at node