commit-gnuradio
[Top][All Lists]
Advanced

[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,





reply via email to

[Prev in Thread] Current Thread [Next in Thread]