11 #ifndef INCLUDED_GR_RUNTIME_FLOWGRAPH_H
12 #define INCLUDED_GR_RUNTIME_FLOWGRAPH_H
27 basic_block_sptr d_basic_block;
34 d_basic_block = block;
37 basic_block_sptr
block()
const {
return d_basic_block; }
38 int port()
const {
return d_port; }
41 return d_basic_block->alias() +
":" + std::to_string(d_port);
49 return (d_basic_block == other.d_basic_block && d_port == other.d_port);
55 basic_block_sptr d_basic_block;
63 d_basic_block = block;
67 basic_block_sptr
block()
const {
return d_basic_block; }
69 bool is_hier()
const {
return d_is_hier; }
81 return (d_basic_block == other.d_basic_block &&
pmt::equal(d_port, other.d_port));
94 edge() : d_src(), d_dst(){};
102 return d_src.identifier() +
"->" + d_dst.identifier();
129 return d_src.identifier() +
"->" + d_dst.identifier();
176 void connect(basic_block_sptr src_block,
178 basic_block_sptr dst_block,
184 void disconnect(basic_block_sptr src_block,
186 basic_block_sptr dst_block,
218 const edge_vector_t&
edges()
const {
return d_edges; }
223 const msg_edge_vector_t&
msg_edges()
const {
return d_msg_edges; }
248 std::vector<basic_block_vector_t> partition();
258 std::vector<int> calc_used_ports(basic_block_sptr
block,
bool check_inputs);
260 edge_vector_t calc_upstream_edges(basic_block_sptr
block);
261 bool has_block_p(basic_block_sptr
block);
262 edge calc_upstream_edge(basic_block_sptr
block,
int port);
267 void check_dst_not_used(
const endpoint& dst);
269 edge_vector_t calc_connections(basic_block_sptr
block,
271 void check_contiguity(basic_block_sptr
block,
272 const std::vector<int>& used_ports,
282 bool source_p(basic_block_sptr
block);
289 basic_block_sptr dst_block,
297 basic_block_sptr dst_block,
const msg_edge_vector_t & msg_edges() const
Get vector of message edges.
Definition: flowgraph.h:223
endpoint()
Definition: flowgraph.h:31
std::shared_ptr< io_signature > sptr
Definition: io_signature.h:52
std::string dot_graph_fg(flowgraph_sptr fg)
std::vector< msg_edge >::iterator msg_edge_viter_t
Definition: flowgraph.h:139
std::shared_ptr< logger > logger_ptr
Definition: logger.h:250
~msg_edge()
Definition: flowgraph.h:123
bool operator==(const msg_endpoint &other) const
Definition: flowgraph.h:79
msg_edge_vector_t d_msg_edges
Definition: flowgraph.h:253
msg_endpoint()
Definition: flowgraph.h:60
const msg_endpoint & dst() const
Definition: flowgraph.h:126
Class representing a directed, acyclic graph of basic blocks.
Definition: flowgraph.h:149
bool is_hier() const
Definition: flowgraph.h:69
const msg_endpoint & src() const
Definition: flowgraph.h:125
PMT_API const std::string symbol_to_string(const pmt_t &sym)
std::vector< endpoint > endpoint_vector_t
Definition: flowgraph.h:85
const edge_vector_t & edges() const
Get vector of edges.
Definition: flowgraph.h:218
void connect(const endpoint &src, const endpoint &dst)
Connect two endpoints.
#define GR_RUNTIME_API
Definition: gnuradio-runtime/include/gnuradio/api.h:18
edge()
Definition: flowgraph.h:94
int port() const
Definition: flowgraph.h:38
std::string identifier() const
Definition: flowgraph.h:39
basic_block_sptr block() const
Definition: flowgraph.h:67
basic_block_vector_t d_blocks
Definition: flowgraph.h:251
const endpoint & dst() const
Definition: flowgraph.h:99
GNU Radio logging wrapper.
Definition: basic_block.h:29
PMT_API bool equal(const pmt_t &x, const pmt_t &y)
edge_vector_t d_edges
Definition: flowgraph.h:252
gr::logger_ptr d_debug_logger
Definition: flowgraph.h:255
#define PMT_NIL
Definition: pmt.h:121
std::vector< endpoint >::iterator endpoint_viter_t
Definition: flowgraph.h:86
Class representing a specific input or output graph endpoint.
Definition: flowgraph.h:24
edge(const endpoint &src, const endpoint &dst)
Definition: flowgraph.h:95
Class representing a connection between to graph endpoints.
Definition: flowgraph.h:91
std::string identifier() const
Definition: flowgraph.h:100
endpoint(basic_block_sptr block, int port)
Definition: flowgraph.h:32
std::string identifier() const
Definition: flowgraph.h:71
bool operator==(const io_signature &lhs, const io_signature &rhs)
std::vector< basic_block_sptr > basic_block_vector_t
Definition: basic_block.h:431
std::ostream & operator<<(std::ostream &os, basic_block_sptr basic_block)
Definition: basic_block.h:436
std::vector< edge >::iterator edge_viter_t
Definition: flowgraph.h:112
pmt::pmt_t port() const
Definition: flowgraph.h:68
gr::logger_ptr d_logger
Definition: flowgraph.h:254
msg_endpoint(basic_block_sptr block, pmt::pmt_t port, bool is_hier=false)
Definition: flowgraph.h:61
msg_edge(const msg_endpoint &src, const msg_endpoint &dst)
Definition: flowgraph.h:122
std::vector< edge > edge_vector_t
Definition: flowgraph.h:111
Definition: flowgraph.h:52
basic_block_sptr block() const
Definition: flowgraph.h:37
void set_hier(bool h)
Definition: flowgraph.h:70
std::vector< msg_edge > msg_edge_vector_t
Definition: flowgraph.h:138
const endpoint & src() const
Definition: flowgraph.h:98
msg_edge()
Definition: flowgraph.h:121
GR_RUNTIME_API flowgraph_sptr make_flowgraph()
The abstract base class for all 'terminal' processing blocks.A signal processing flow is constructed ...
Definition: gnuradio-runtime/include/gnuradio/block.h:62
void disconnect(const endpoint &src, const endpoint &dst)
Disconnect two endpoints.
Class representing a msg connection between to graph msg endpoints.
Definition: flowgraph.h:118
std::string identifier() const
Definition: flowgraph.h:127
std::shared_ptr< pmt_base > pmt_t
typedef for shared pointer (transparent reference counting).
Definition: pmt.h:83
bool operator==(const endpoint &other) const
Definition: flowgraph.h:47