ccsoft  0.0.0
Convolutional codes library with soft decision decoding
ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag > Class Template Reference

Represents a node and its incoming edge in the code tree. More...

#include <CC_TreeNodeEdge.h>

Inheritance diagram for ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >:
Collaboration diagram for ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >:

List of all members.

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

Detailed Description

template<typename T_IOSymbol, typename T_Register, typename T_Tag>
class ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >

Represents a node and its incoming edge in the code tree.

Template Parameters:
T_IOSymbolType of the input and output symbols
T_RegisterType of the encoder internal registers
T_TagType of the node-edge tag

Constructor & Destructor Documentation

template<typename T_IOSymbol, typename T_Register, typename T_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

Parameters:
_idUnique ID of the edge
_p_incoming_edgePointer to the incoming edge to the node
_in_symbolInput symbol corresponding to the edge
_metricMetric of the edge
_path_metricPath metric at the node
_depthThis 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)
    {}
template<typename T_IOSymbol, typename T_Register, typename T_Tag>
ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::~CC_TreeNodeEdge ( ) [inline]

Destructor

        {
                // deletes all outgoing edge+nodes
                delete_outgoing_node_edges();
        }

Member Function Documentation

template<typename T_IOSymbol, typename T_Register, typename T_Tag>
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

Parameters:
p_outgoing_node_edgeOutgoing edge+node
    {
        p_outgoing_node_edges.push_back(p_outgoing_node_edge);
    }
template<typename T_IOSymbol, typename T_Register, typename T_Tag>
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();
    }
template<typename T_IOSymbol, typename T_Register, typename T_Tag>
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;
    }
template<typename T_IOSymbol, typename T_Register, typename T_Tag>
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;
    }
template<typename T_IOSymbol, typename T_Register, typename T_Tag>
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;
    }
template<typename T_IOSymbol, typename T_Register, typename T_Tag>
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;
    }
template<typename T_IOSymbol, typename T_Register, typename T_Tag>
void ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::set_registers ( const std::vector< T_Register > &  _registers) [inline]

Save encoder registers

    {
        registers = _registers;
    }

Member Data Documentation

template<typename T_IOSymbol, typename T_Register, typename T_Tag>
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.

template<typename T_IOSymbol, typename T_Register, typename T_Tag>
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.

template<typename T_IOSymbol, typename T_Register, typename T_Tag>
std::vector<T_Register> ccsoft::CC_TreeNodeEdge< T_IOSymbol, T_Register, T_Tag >::registers [protected]

state of encoder registers at node


The documentation for this class was generated from the following file:
All Classes Namespaces Files Functions Variables Typedefs Friends Defines