GNU Radio Manual and C++ API Reference  3.8.1.0
The Free & Open Software Radio Ecosystem
gr::flowgraph Class Reference

Class representing a directed, acyclic graph of basic blocks. More...

#include <gnuradio/flowgraph.h>

Public Member Functions

virtual ~flowgraph ()
 Destruct an arbitrary flowgraph. More...
 
void connect (const endpoint &src, const endpoint &dst)
 Connect two endpoints. More...
 
void disconnect (const endpoint &src, const endpoint &dst)
 Disconnect two endpoints. More...
 
void connect (basic_block_sptr src_block, int src_port, basic_block_sptr dst_block, int dst_port)
 convenience wrapper; used to connect two endpoints More...
 
void disconnect (basic_block_sptr src_block, int src_port, basic_block_sptr dst_block, int dst_port)
 convenience wrapper; used to disconnect two endpoints More...
 
void connect (const msg_endpoint &src, const msg_endpoint &dst)
 Connect two message endpoints. More...
 
void disconnect (const msg_endpoint &src, const msg_endpoint &dst)
 Disconnect two message endpoints. More...
 
void validate ()
 Validate flow graph. More...
 
void clear ()
 Clear existing flowgraph. More...
 
const edge_vector_tedges () const
 Get vector of edges. More...
 
const msg_edge_vector_tmsg_edges () const
 Get vector of message edges. More...
 
basic_block_vector_t calc_used_blocks ()
 calculates all used blocks in a flow graph More...
 
basic_block_vector_t topological_sort (basic_block_vector_t &blocks)
 topologically sort blocks More...
 
std::vector< basic_block_vector_tpartition ()
 Calculate vector of disjoint graph partions. More...
 

Protected Member Functions

 flowgraph ()
 
std::vector< int > calc_used_ports (basic_block_sptr block, bool check_inputs)
 
basic_block_vector_t calc_downstream_blocks (basic_block_sptr block, int port)
 
edge_vector_t calc_upstream_edges (basic_block_sptr block)
 
bool has_block_p (basic_block_sptr block)
 
edge calc_upstream_edge (basic_block_sptr block, int port)
 

Protected Attributes

basic_block_vector_t d_blocks
 
edge_vector_t d_edges
 
msg_edge_vector_t d_msg_edges
 

Friends

GR_RUNTIME_API flowgraph_sptr make_flowgraph ()
 

Detailed Description

Class representing a directed, acyclic graph of basic blocks.

Constructor & Destructor Documentation

◆ ~flowgraph()

virtual gr::flowgraph::~flowgraph ( )
virtual

Destruct an arbitrary flowgraph.

◆ flowgraph()

gr::flowgraph::flowgraph ( )
protected

Member Function Documentation

◆ calc_downstream_blocks()

basic_block_vector_t gr::flowgraph::calc_downstream_blocks ( basic_block_sptr  block,
int  port 
)
protected

◆ calc_upstream_edge()

edge gr::flowgraph::calc_upstream_edge ( basic_block_sptr  block,
int  port 
)
protected

◆ calc_upstream_edges()

edge_vector_t gr::flowgraph::calc_upstream_edges ( basic_block_sptr  block)
protected

◆ calc_used_blocks()

basic_block_vector_t gr::flowgraph::calc_used_blocks ( )

calculates all used blocks in a flow graph

Iterates over all message edges and stream edges, noting both endpoints in a vector.

Returns
a unique vector of used blocks

◆ calc_used_ports()

std::vector<int> gr::flowgraph::calc_used_ports ( basic_block_sptr  block,
bool  check_inputs 
)
protected

◆ clear()

void gr::flowgraph::clear ( )

Clear existing flowgraph.

◆ connect() [1/3]

void gr::flowgraph::connect ( const endpoint src,
const endpoint dst 
)

Connect two endpoints.

Checks the validity of both endpoints, and whether the destination is unused so far, then adds the edge to the internal list of edges.

◆ connect() [2/3]

void gr::flowgraph::connect ( basic_block_sptr  src_block,
int  src_port,
basic_block_sptr  dst_block,
int  dst_port 
)
inline

convenience wrapper; used to connect two endpoints

◆ connect() [3/3]

void gr::flowgraph::connect ( const msg_endpoint src,
const msg_endpoint dst 
)

Connect two message endpoints.

Checks the validity of both endpoints, then adds the edge to the internal list of edges.

◆ disconnect() [1/3]

void gr::flowgraph::disconnect ( const endpoint src,
const endpoint dst 
)

Disconnect two endpoints.

◆ disconnect() [2/3]

void gr::flowgraph::disconnect ( basic_block_sptr  src_block,
int  src_port,
basic_block_sptr  dst_block,
int  dst_port 
)
inline

convenience wrapper; used to disconnect two endpoints

◆ disconnect() [3/3]

void gr::flowgraph::disconnect ( const msg_endpoint src,
const msg_endpoint dst 
)

Disconnect two message endpoints.

◆ edges()

const edge_vector_t& gr::flowgraph::edges ( ) const
inline

Get vector of edges.

◆ has_block_p()

bool gr::flowgraph::has_block_p ( basic_block_sptr  block)
protected

◆ msg_edges()

const msg_edge_vector_t& gr::flowgraph::msg_edges ( ) const
inline

Get vector of message edges.

◆ partition()

std::vector<basic_block_vector_t> gr::flowgraph::partition ( )

Calculate vector of disjoint graph partions.

Returns
vector of disjoint vectors of topologically sorted blocks

◆ topological_sort()

basic_block_vector_t gr::flowgraph::topological_sort ( basic_block_vector_t blocks)

topologically sort blocks

Uses depth-first search to return a sorted vector of blocks

Returns
toplogically sorted vector of blocks. All the sources come first.

◆ validate()

void gr::flowgraph::validate ( )

Validate flow graph.

Gathers all used blocks, checks the contiguity of all connected in- and outputs, and calls the check_topology method of each block.

Friends And Related Function Documentation

◆ make_flowgraph

GR_RUNTIME_API flowgraph_sptr make_flowgraph ( )
friend

Member Data Documentation

◆ d_blocks

basic_block_vector_t gr::flowgraph::d_blocks
protected

◆ d_edges

edge_vector_t gr::flowgraph::d_edges
protected

◆ d_msg_edges

msg_edge_vector_t gr::flowgraph::d_msg_edges
protected

The documentation for this class was generated from the following file: