commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r3989 - gnuradio/branches/developers/jcorgan/hier/gnur


From: jcorgan
Subject: [Commit-gnuradio] r3989 - gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime
Date: Wed, 15 Nov 2006 15:25:07 -0700 (MST)

Author: jcorgan
Date: 2006-11-15 15:25:07 -0700 (Wed, 15 Nov 2006)
New Revision: 3989

Modified:
   
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_block.cc
   
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.cc
   
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.h
Log:
Work in progress. Hierarchical validation appears to be working.

Modified: 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_block.cc
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_block.cc
 2006-11-15 22:01:28 UTC (rev 3988)
+++ 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_block.cc
 2006-11-15 22:25:07 UTC (rev 3989)
@@ -28,7 +28,6 @@
 #include <gr_block_detail.h>
 #include <stdexcept>
 #include <iostream>
-#include <gr_hier_block2.h>
 
 #define GR_BLOCK_DEBUG 1
 

Modified: 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.cc
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.cc
      2006-11-15 22:01:28 UTC (rev 3988)
+++ 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.cc
      2006-11-15 22:25:07 UTC (rev 3989)
@@ -173,5 +173,42 @@
 void
 gr_hier_block2_impl::get_child_topology(gr_basic_block_sptr child, int 
&ninputs, int &noutputs)
 {
+    std::string name = get_name_by_block(child);
+    if (name == "")
+       throw std::invalid_argument("unknown child passed to parent");
+
+    ninputs = calc_input_connections(name).size();
+    noutputs = calc_output_connections(name).size();
+
+    if (GR_HIER_BLOCK2_IMPL_DEBUG)
+       std::cout << name << " has " << ninputs << " inputs and " 
+                 << noutputs << " outputs assigned." << std::endl;
+}
+
+gr_connection_vector_t
+gr_hier_block2_impl::calc_input_connections(std::string &name)
+{
+    gr_connection_vector_t result;
+    for (gr_connection_viter_t p = d_connections.begin();
+         p != d_connections.end(); p++) {
+
+       if (p->dst().name() == name)
+           result.push_back(*p);
+    }
     
+    return result;
 }
+
+gr_connection_vector_t
+gr_hier_block2_impl::calc_output_connections(std::string &name)
+{
+    gr_connection_vector_t result;
+    for (gr_connection_viter_t p = d_connections.begin();
+         p != d_connections.end(); p++) {
+
+       if (p->src().name() == name)
+           result.push_back(*p);
+    }
+    
+    return result;
+}

Modified: 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.h
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.h
       2006-11-15 22:01:28 UTC (rev 3988)
+++ 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.h
       2006-11-15 22:25:07 UTC (rev 3989)
@@ -96,7 +96,9 @@
     bool visit(gr_tree_visitor &visitor);
     bool validate();
     void get_child_topology(gr_basic_block_sptr child, int &ninputs, int 
&noutputs);
-                                    
+    gr_connection_vector_t calc_input_connections(std::string &name);
+    gr_connection_vector_t calc_output_connections(std::string &name);
+                                        
 public:
     ~gr_hier_block2_impl();
 };





reply via email to

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