![]() |
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_base.h>
Public Member Functions | |
CC_TreeNodeEdge_base (unsigned int _id, const T_IOSymbol &_in_symbol, float _incoming_edge_metric, float _path_metric, int _depth) | |
~CC_TreeNodeEdge_base () | |
float | get_path_metric () const |
int | get_depth () const |
unsigned int | get_id () const |
bool | operator< (const CC_TreeNodeEdge_base< T_IOSymbol, T_Tag > &other) const |
bool | operator> (const CC_TreeNodeEdge_base< T_IOSymbol, T_Tag > &other) const |
void | set_on_final_path (bool _on_final_path=true) |
bool | is_on_final_path () |
const T_IOSymbol & | get_in_symbol () const |
float | get_incoming_metric () const |
const T_Tag & | get_tag () const |
T_Tag & | get_tag () |
bool | operator< (const CC_TreeNodeEdge_base< T_IOSymbol, T_Tag > &other) |
bool | operator> (const CC_TreeNodeEdge_base< T_IOSymbol, T_Tag > &other) |
Protected Attributes | |
unsigned int | id |
Node-edge's unique ID. | |
T_IOSymbol | in_symbol |
Input symbol corresponding to the edge. | |
float | path_metric |
Path metric to the node. | |
float | incoming_edge_metric |
metric of the incoming edge to the node | |
int | depth |
Depth of node in the tree: 0 = root. | |
bool | on_final_path |
Marks node when backtracking the solution. | |
T_Tag | tag |
Optional and versatile object to tag the node+edge. |
Represents a node and its incoming edge in the code tree.
T_IOSymbol | Type of the input and output symbols |
T_Tag | Type of the node-edge tag |
ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::CC_TreeNodeEdge_base | ( | unsigned int | _id, |
const T_IOSymbol & | _in_symbol, | ||
float | _incoming_edge_metric, | ||
float | _path_metric, | ||
int | _depth | ||
) | [inline] |
Constructor
_id | Unique ID of the edge |
_in_symbol | Input symbol corresponding to the edge |
_metric | Metric of the edge |
_path_metric | Path metric at the node |
_depth | This node depth |
: id(_id), in_symbol(_in_symbol), incoming_edge_metric(_incoming_edge_metric), path_metric(_path_metric), depth(_depth), on_final_path(false) {}
ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::~CC_TreeNodeEdge_base | ( | ) | [inline] |
Destructor
{ }
int ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::get_depth | ( | ) | const [inline] |
Get the depth of the node
{ return depth; }
unsigned int ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::get_id | ( | ) | const [inline] |
Get node id
{ return id; }
const T_IOSymbol& ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::get_in_symbol | ( | ) | const [inline] |
Input symbol getter
{ return in_symbol; }
float ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::get_incoming_metric | ( | ) | const [inline] |
Incoming edge metric getter
{ return incoming_edge_metric; }
float ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::get_path_metric | ( | ) | const [inline] |
Get path metric to the node
{ return path_metric; }
const T_Tag& ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::get_tag | ( | ) | const [inline] |
R/O reference to tag
{ return tag; }
T_Tag& ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::get_tag | ( | ) | [inline] |
R/W reference to tag
{ return tag; }
bool ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::is_on_final_path | ( | ) | [inline] |
Test the "on final path" marker
{ return on_final_path; }
bool ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::operator< | ( | const CC_TreeNodeEdge_base< T_IOSymbol, T_Tag > & | other | ) | const [inline] |
For ordering by increasing path metric
{ return path_metric < other.path_metric; }
bool ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::operator< | ( | const CC_TreeNodeEdge_base< T_IOSymbol, T_Tag > & | other | ) | [inline] |
Ordering - lesser
{ if (path_metric == other.path_metric) { return id < other.id; } else { return path_metric < other.path_metric; } }
bool ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::operator> | ( | const CC_TreeNodeEdge_base< T_IOSymbol, T_Tag > & | other | ) | const [inline] |
For ordering by decreasing path metric
{ return path_metric > other.path_metric; }
bool ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::operator> | ( | const CC_TreeNodeEdge_base< T_IOSymbol, T_Tag > & | other | ) | [inline] |
Ordering - greater
{ if (path_metric == other.path_metric) { return id > other.id; } else { return path_metric > other.path_metric; } }
void ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::set_on_final_path | ( | bool | _on_final_path = true | ) | [inline] |
Set the "on final path" marker
{ on_final_path = _on_final_path; }
int ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::depth [protected] |
Depth of node in the tree: 0 = root.
unsigned int ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::id [protected] |
Node-edge's unique ID.
T_IOSymbol ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::in_symbol [protected] |
Input symbol corresponding to the edge.
float ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::incoming_edge_metric [protected] |
metric of the incoming edge to the node
bool ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::on_final_path [protected] |
Marks node when backtracking the solution.
float ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::path_metric [protected] |
Path metric to the node.
T_Tag ccsoft::CC_TreeNodeEdge_base< T_IOSymbol, T_Tag >::tag [protected] |
Optional and versatile object to tag the node+edge.