[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r3755 - gnuradio/branches/developers/jcorgan/cppwrap/g
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r3755 - gnuradio/branches/developers/jcorgan/cppwrap/gnuradio-examples/native |
Date: |
Mon, 9 Oct 2006 16:02:26 -0600 (MDT) |
Author: jcorgan
Date: 2006-10-09 16:02:26 -0600 (Mon, 09 Oct 2006)
New Revision: 3755
Modified:
gnuradio/branches/developers/jcorgan/cppwrap/gnuradio-examples/native/gr_flow_graph.cc
gnuradio/branches/developers/jcorgan/cppwrap/gnuradio-examples/native/gr_flow_graph.h
Log:
Work in progress.
Implemented gr_flow_graph::create_block_list()
Improved gr_flow_graph::disconnect_prim()
Modified:
gnuradio/branches/developers/jcorgan/cppwrap/gnuradio-examples/native/gr_flow_graph.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/cppwrap/gnuradio-examples/native/gr_flow_graph.cc
2006-10-09 20:20:58 UTC (rev 3754)
+++
gnuradio/branches/developers/jcorgan/cppwrap/gnuradio-examples/native/gr_flow_graph.cc
2006-10-09 22:02:26 UTC (rev 3755)
@@ -24,9 +24,8 @@
#include <gr_io_signature.h>
#include <utility>
+#include <algorithm>
-typedef std::vector<gr_edge_t>::iterator gr_edge_vector_iterator_t;
-
gr_flow_graph_sptr gr_make_flow_graph()
{
return gr_flow_graph_sptr(new gr_flow_graph());
@@ -75,6 +74,7 @@
{
gr_edge_vector_iterator_t edge;
for(edge = d_edges.begin(); edge != d_edges.end(); edge++) {
+ // For readability
gr_block_sptr dst_block = dst.first;
gr_block_sptr edge_block = edge->second.first;
int dst_port = dst.second;
@@ -109,24 +109,11 @@
void gr_flow_graph::disconnect_prim(gr_endpoint_t src, gr_endpoint_t dst)
{
gr_edge_vector_iterator_t edge;
- for(edge = d_edges.begin(); edge != d_edges.end(); edge++) {
- gr_block_sptr src_block = src.first;
- gr_block_sptr dst_block = dst.first;
- gr_block_sptr edge_src_block = edge->first.first;
- gr_block_sptr edge_dst_block = edge->second.first;
- int src_port = src.second;
- int dst_port = dst.second;
- int edge_src_port = edge->first.second;
- int edge_dst_port = edge->second.second;
-
- if (src_block == edge_src_block && src_port == edge_src_port &&
- dst_block == edge_dst_block && dst_port == edge_dst_port) {
- d_edges.erase(edge);
- return;
- }
- }
-
- throw std::invalid_argument("gr_flow_graph::disconnect_prim");
+ edge = find(d_edges.begin(), d_edges.end(), gr_edge_t(src, dst));
+ if (edge != d_edges.end())
+ d_edges.erase(edge);
+ else
+ throw std::invalid_argument("gr_flow_graph::disconnect_prim");
}
void gr_flow_graph::disconnect_all()
@@ -145,6 +132,23 @@
void gr_flow_graph::create_block_list()
{
+ gr_block_vector_iterator_t block;
+ gr_edge_vector_iterator_t edge;
+
+ for(edge = d_edges.begin(); edge != d_edges.end(); edge++) {
+ gr_block_sptr src_block = edge->first.first;
+ gr_block_sptr dst_block = edge->second.first;
+
+ block = find(d_blocks.begin(), d_blocks.end(), src_block);
+ if (block == d_blocks.end())
+ d_blocks.push_back(src_block);
+
+ block = find(d_blocks.begin(), d_blocks.end(), dst_block);
+ if (block == d_blocks.end())
+ d_blocks.push_back(dst_block);
+ }
+
+ printf("%i %i\n", d_edges.size(), d_blocks.size());
}
void gr_flow_graph::validate()
Modified:
gnuradio/branches/developers/jcorgan/cppwrap/gnuradio-examples/native/gr_flow_graph.h
===================================================================
---
gnuradio/branches/developers/jcorgan/cppwrap/gnuradio-examples/native/gr_flow_graph.h
2006-10-09 20:20:58 UTC (rev 3754)
+++
gnuradio/branches/developers/jcorgan/cppwrap/gnuradio-examples/native/gr_flow_graph.h
2006-10-09 22:02:26 UTC (rev 3755)
@@ -24,9 +24,12 @@
#include <gr_block.h>
+typedef std::vector<gr_block_sptr> gr_block_vector_t;
+typedef std::vector<gr_block_sptr>::iterator gr_block_vector_iterator_t;
typedef std::pair<gr_block_sptr, int> gr_endpoint_t;
typedef std::pair<gr_endpoint_t, gr_endpoint_t> gr_edge_t;
typedef std::vector<gr_edge_t> gr_edge_vector_t;
+typedef std::vector<gr_edge_t>::iterator gr_edge_vector_iterator_t;
class gr_flow_graph;
typedef boost::shared_ptr<gr_flow_graph> gr_flow_graph_sptr;
@@ -51,8 +54,9 @@
void assign_buffers();
void connect_inputs();
- gr_edge_vector_t d_edges;
-
+ gr_edge_vector_t d_edges;
+ gr_block_vector_t d_blocks;
+
public:
~gr_flow_graph();
void connect(gr_block_sptr src_block, int src_port,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r3755 - gnuradio/branches/developers/jcorgan/cppwrap/gnuradio-examples/native,
jcorgan <=