commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r6355 - in gnuradio/branches/developers/jcorgan/t162/g


From: jcorgan
Subject: [Commit-gnuradio] r6355 - in gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src: lib/runtime python/gnuradio/gr
Date: Fri, 7 Sep 2007 15:01:06 -0600 (MDT)

Author: jcorgan
Date: 2007-09-07 15:01:06 -0600 (Fri, 07 Sep 2007)
New Revision: 6355

Modified:
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2.cc
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2.h
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2.i
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h
   
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/python/gnuradio/gr/hier_block2.py
Log:
Start of single block 'connect' method.

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2.cc
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2.cc
   2007-09-07 20:14:24 UTC (rev 6354)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2.cc
   2007-09-07 21:01:06 UTC (rev 6355)
@@ -52,6 +52,12 @@
 }
 
 void 
+gr_hier_block2::connect(gr_basic_block_sptr block)
+{
+  d_detail->connect(block);
+}
+
+void 
 gr_hier_block2::connect(gr_basic_block_sptr src, int src_port, 
                         gr_basic_block_sptr dst, int dst_port)
 {

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2.h
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2.h
    2007-09-07 20:14:24 UTC (rev 6354)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2.h
    2007-09-07 21:01:06 UTC (rev 6355)
@@ -58,6 +58,8 @@
 public:
   virtual ~gr_hier_block2();
   
+  void connect(gr_basic_block_sptr src);
+
   void connect(gr_basic_block_sptr src, int src_port, 
               gr_basic_block_sptr dst, int dst_port);
 

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2.i
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2.i
    2007-09-07 20:14:24 UTC (rev 6354)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2.i
    2007-09-07 21:01:06 UTC (rev 6355)
@@ -43,7 +43,8 @@
 public:
     ~gr_hier_block2 ();
 
-    // Add a named block to the container
+    void connect(gr_basic_block_sptr block)
+       throw (std::invalid_argument);
     void connect(gr_basic_block_sptr src, int src_port,
                  gr_basic_block_sptr dst, int dst_port)
         throw (std::invalid_argument);

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc
    2007-09-07 20:14:24 UTC (rev 6354)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc
    2007-09-07 21:01:06 UTC (rev 6355)
@@ -44,6 +44,27 @@
   d_owner = 0; // Don't use delete, we didn't allocate
 }
 
+void
+gr_hier_block2_detail::connect(gr_basic_block_sptr block)
+{
+  std::stringstream msg;
+
+  // Check if duplicate
+  if (std::find(d_blocks.begin(), d_blocks.end(), block) != d_blocks.end()) {
+    msg << "Block " << block << " already connected.";
+    throw std::invalid_argument(msg.str());
+  }
+
+  // Check if has inputs or outputs
+  if (block->input_signature()->max_streams() != 0 ||
+      block->output_signature()->max_streams() != 0) {
+    msg << "Block " << block << " must not have any input or output ports";
+    throw std::invalid_argument(msg.str());
+  }
+
+  d_blocks.push_back(block);
+}
+
 void 
 gr_hier_block2_detail::connect(gr_basic_block_sptr src, int src_port, 
                                gr_basic_block_sptr dst, int dst_port)

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h
     2007-09-07 20:14:24 UTC (rev 6354)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h
     2007-09-07 21:01:06 UTC (rev 6355)
@@ -40,8 +40,10 @@
     gr_flowgraph_sptr d_fg;
     gr_endpoint_vector_t d_inputs;
     gr_endpoint_vector_t d_outputs;
-
+    gr_basic_block_vector_t d_blocks;
+    
     // Private implementation methods
+    void connect(gr_basic_block_sptr block);
     void connect(gr_basic_block_sptr src, int src_port, 
                  gr_basic_block_sptr dst, int dst_port);
     void disconnect(gr_basic_block_sptr, int src_port, 

Modified: 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/python/gnuradio/gr/hier_block2.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/python/gnuradio/gr/hier_block2.py
       2007-09-07 20:14:24 UTC (rev 6354)
+++ 
gnuradio/branches/developers/jcorgan/t162/gnuradio-core/src/python/gnuradio/gr/hier_block2.py
       2007-09-07 21:01:06 UTC (rev 6355)
@@ -40,10 +40,14 @@
         '''connect requires two or more arguments that can be coerced to 
endpoints.
         If more than two arguments are provided, they are connected together 
successively.
         '''
-        if len (points) < 2:
-            raise ValueError, ("connect requires at least two endpoints; %d 
provided." % (len (points),))
-        for i in range (1, len (points)):
-            self._connect(points[i-1], points[i])
+        if len (points) < 1:
+            raise ValueError, ("connect requires at least one endpoint; %d 
provided." % (len (points),))
+       else:
+           if len(points) == 1:
+               self._hb.connect(points[0].basic_block())
+           else:
+               for i in range (1, len (points)):
+                   self._connect(points[i-1], points[i])
 
     def _connect(self, src, dst):
         (src_block, src_port) = self._coerce_endpoint(src)





reply via email to

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