]> git.gag.com Git - debian/gnuradio/commitdiff
Trial fix for ticket:45
authoreb <eb@221aa14e-8319-0410-a670-987f0aec2ac5>
Thu, 24 Aug 2006 18:50:19 +0000 (18:50 +0000)
committereb <eb@221aa14e-8319-0410-a670-987f0aec2ac5>
Thu, 24 Aug 2006 18:50:19 +0000 (18:50 +0000)
Changed interpretation of second argument to gr_buffer_add_reader from
"history" to "nzero_preload".  If the argument is 0, no zeros are
preloaded into the buffer.  This is a less surprising interpretation
than the old behavior, which when passed a zero, inserted buffersize-1
zeros ;)

git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@3403 221aa14e-8319-0410-a670-987f0aec2ac5

gnuradio-core/src/lib/runtime/gr_buffer.cc
gnuradio-core/src/lib/runtime/gr_buffer.h
gnuradio-core/src/lib/runtime/gr_buffer.i
gnuradio-core/src/lib/runtime/qa_gr_buffer.cc
gnuradio-core/src/python/gnuradio/gr/flow_graph.py

index d3d1230967c7926e5cdbeb6cc6505cc8534d17e8..e06786880d95f9e33852299221eb880b2d25d297 100644 (file)
@@ -179,11 +179,14 @@ gr_buffer::update_write_pointer (int nitems)
 }
 
 gr_buffer_reader_sptr
-gr_buffer_add_reader (gr_buffer_sptr buf, int history)
+gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload)
 {
+  if (nzero_preload < 0)
+    throw std::invalid_argument("gr_buffer_add_reader: nzero_preload must be >= 0");
+
   gr_buffer_reader_sptr r (new gr_buffer_reader (buf,
                                                 buf->index_sub(buf->d_write_index,
-                                                               history-1)));
+                                                               nzero_preload)));
   buf->d_readers.push_back (r.get ());
 
   return r;
index 6f85f275ee77f94d27d1efe34a001afbc38232e0..e468f4358ae53851d9cf59fb199fb79015106f8c 100644 (file)
@@ -73,7 +73,7 @@ class gr_buffer {
 
   friend class gr_buffer_reader;
   friend gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item);
-  friend gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int history);
+  friend gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload);
 
  protected:
   char                                *d_base;         // base address of buffer
@@ -129,8 +129,11 @@ class gr_buffer {
 
 };
 
-//! create a new gr_buffer_reader and attach it to buffer \p buf
-gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int history);
+/*!
+ * \brief create a new gr_buffer_reader and attach it to buffer \p buf
+ * \param nzero_preload -- number of zero items to "preload" into buffer.
+ */
+gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload);
 
 //! returns # of gr_buffers currently allocated
 long gr_buffer_ncurrently_allocated ();
@@ -179,7 +182,7 @@ class gr_buffer_reader {
  private:
 
   friend class gr_buffer;
-  friend gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int history);
+  friend gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload);
 
 
   gr_buffer_sptr               d_buffer;
index 80f92ece126fb947112005e591eece5c23aa1016..2cb6deb95a95a443db43d9acf1a9c8f2260f8647 100644 (file)
@@ -43,7 +43,7 @@ typedef boost::shared_ptr<gr_buffer_reader> gr_buffer_reader_sptr;
 %ignore gr_buffer_reader;
 
 %rename(buffer_add_reader) gr_buffer_add_reader;
-gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int history);
+gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload);
 
 class gr_buffer_reader {
  public:
index 5c549d0b98f73f3f6d72331575bb608a6cbe18d4..5a3d4d3d7b903074b14abb7c1abb973fadb5d158 100644 (file)
@@ -88,7 +88,7 @@ t1_body ()
   int  read_counter = 0;
 
   gr_buffer_sptr buf (gr_make_buffer (nitems, sizeof (int)));
-  gr_buffer_reader_sptr r1 (gr_buffer_add_reader (buf, 1));
+  gr_buffer_reader_sptr r1 (gr_buffer_add_reader (buf, 0));
   
 
   int sa;
@@ -163,7 +163,7 @@ t2_body ()
   int  nitems = (64 * (1L << 10)) / sizeof (int);      // 64K worth of ints
 
   gr_buffer_sptr buf (gr_make_buffer (nitems, sizeof (int)));
-  gr_buffer_reader_sptr r1 (gr_buffer_add_reader (buf, 1));
+  gr_buffer_reader_sptr r1 (gr_buffer_add_reader (buf, 0));
 
   int  read_counter = 0;
   int  write_counter = 0;
@@ -237,7 +237,7 @@ t3_body ()
 
   for (int i = 0; i < N; i++){
     read_counter[i] = 0;
-    reader[i] = gr_buffer_add_reader (buf, 1);
+    reader[i] = gr_buffer_add_reader (buf, 0);
   }
 
   for (int lc = 0; lc < 1000; lc++){
index db9c58768a4367b57e9979c445bc3e9f15fe76d7..d309f60eb4872f0280e1a677f05fe5f2e67537e7 100644 (file)
@@ -151,7 +151,7 @@ class flow_graph (basic_flow_graph):
                 upstream_block = e.src.block
                 upstream_port   = e.src.port
                 upstream_buffer = upstream_block.detail().output(upstream_port)
-                d.set_input(our_port, buffer_add_reader(upstream_buffer, m.history()))
+                d.set_input(our_port, buffer_add_reader(upstream_buffer, m.history()-1))
     
 
     def topological_sort (self, all_v):