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
}
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;
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
};
-//! 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 ();
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;
%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:
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;
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;
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++){
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):