![]()  | 
  
  
  
    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