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.
Referenced by connect().
|
inline |
convenience wrapper; used to connect two endpoints
References connect().
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.
Referenced by disconnect().
|
inline |
convenience wrapper; used to disconnect two endpoints
References disconnect().
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 |