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_t & | edges () const |
Get vector of edges. More... | |
const msg_edge_vector_t & | msg_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_t > | partition () |
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 () |
Class representing a directed, acyclic graph of basic blocks.
|
virtual |
Destruct an arbitrary flowgraph.
|
protected |
|
protected |
|
protected |
|
protected |
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.
|
protected |
void gr::flowgraph::clear | ( | ) |
Clear existing flowgraph.
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.
|
inline |
convenience wrapper; used to connect two endpoints
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 two endpoints.
|
inline |
convenience wrapper; used to disconnect two endpoints
void gr::flowgraph::disconnect | ( | const msg_endpoint & | src, |
const msg_endpoint & | dst | ||
) |
Disconnect two message endpoints.
|
inline |
Get vector of edges.
|
protected |
|
inline |
Get vector of message edges.
std::vector<basic_block_vector_t> gr::flowgraph::partition | ( | ) |
Calculate vector of disjoint graph partions.
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
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.
|
friend |
|
protected |
|
protected |
|
protected |