[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gnuradio-commit
Subject:    [Commit-gnuradio] r3889 - in gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src:
From:       jcorgan () gnuradio ! org
Date:       2006-10-28 6:53:52
Message-ID: 20061028065352.6C32B380054 () nyquist ! gnuradio ! org
[Download RAW message or body]

Author: jcorgan
Date: 2006-10-28 00:53:52 -0600 (Sat, 28 Oct 2006)
New Revision: 3889

Modified:
   gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.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
  gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
 Log:
Work in progress.

Modified: gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.cc
 ===================================================================
--- gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.cc	2006-10-28 \
                06:17:44 UTC (rev 3888)
+++ gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2.cc	2006-10-28 \
06:53:52 UTC (rev 3889) @@ -57,4 +57,6 @@
 
     if (d_impl->lookup_component(name))
 	throw std::invalid_argument("Component already defined");
+
+    d_impl->d_components.push_back(gr_hier_component(name, comp));
 }

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-10-28 \
                06:17:44 UTC (rev 3888)
+++ gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.cc	2006-10-28 \
06:53:52 UTC (rev 3889) @@ -39,9 +39,11 @@
 
 gr_basic_block_sptr gr_hier_block2_impl::lookup_component(std::string name)
 {
-    gr_basic_block_sptr result;
+    for (std::vector<gr_hier_component>::const_iterator p = d_components.begin();
+	 p != d_components.end(); p++) {
+	if (name == p->name())
+	    return p->component();
+    }
 
-    // NOP
-
-    return result;
-}
\ No newline at end of file
+    return gr_basic_block_sptr();
+}

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-10-28 \
                06:17:44 UTC (rev 3888)
+++ gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_hier_block2_impl.h	2006-10-28 \
06:53:52 UTC (rev 3889) @@ -28,6 +28,21 @@
 #include <gr_basic_block.h>
 #include <stdexcept>
 
+// This beats the hell out of using pairs
+class gr_hier_component
+{
+private:
+    std::string		d_name;
+    gr_basic_block_sptr d_component;
+
+public:
+    gr_hier_component(const std::string name, gr_basic_block_sptr component)
+      : d_name(name), d_component(component) {}
+      
+    std::string name() const { return d_name; }
+    gr_basic_block_sptr component() const { return d_component; }
+};
+
 class gr_hier_block2_impl
 {
 private:
@@ -38,6 +53,8 @@
     gr_hier_block2_impl(const gr_hier_block2_impl &rhs);
     gr_hier_block2_impl &operator=(const gr_hier_block2_impl &rhs);
 
+    std::vector<gr_hier_component> d_components;
+
     gr_basic_block_sptr lookup_component(const std::string name);
         
 public:

Modified: gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
 ===================================================================
--- gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py	2006-10-28 \
                06:17:44 UTC (rev 3888)
+++ gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py	2006-10-28 \
06:53:52 UTC (rev 3889) @@ -31,5 +31,18 @@
 	hblock.define_component("source", src1)
 	hblock.define_component("sink", sink1)
 
+    """
+    def test_003_define_component_already_defined(self):
+	hblock = gr.hier_block2("test_block", 
+				gr.io_signature(1,1,gr.sizeof_int), 
+				gr.io_signature(1,1,gr.sizeof_int))
+
+	src1 = gr.null_source(gr.sizeof_int)
+	sink1 = gr.null_sink(gr.sizeof_int)
+	    
+	hblock.define_component("source", src1)
+	self.assertRaises(RuntimeError, lambda: hblock.define_component("source", sink1))
+    """
+    
 if __name__ == "__main__":
     gr_unittest.main()
\ No newline at end of file


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic