23 #ifndef INCLUDED_GR_RUNTIME_BUFFER_H
24 #define INCLUDED_GR_RUNTIME_BUFFER_H
29 #include <boost/weak_ptr.hpp>
49 block_sptr link=block_sptr());
63 int space_available();
76 void *write_pointer();
81 void update_write_pointer(
int nitems);
83 void set_done(
bool done);
84 bool done()
const {
return d_done; }
91 size_t nreaders()
const {
return d_readers.size(); }
105 void add_item_tag(
const tag_t &tag);
119 void remove_item_tag(
const tag_t &tag,
long id);
129 std::deque<tag_t>::iterator
get_tags_end() {
return d_item_tags.end(); }
147 gr::vmcircbuf *d_vmcircbuf;
148 size_t d_sizeof_item;
149 std::vector<buffer_reader *> d_readers;
150 boost::weak_ptr<block> d_link;
157 unsigned int d_write_index;
160 std::deque<tag_t> d_item_tags;
163 unsigned index_add(
unsigned a,
unsigned b)
170 assert(s < d_bufsize);
174 unsigned index_sub(
unsigned a,
unsigned b)
181 assert((
unsigned) s < d_bufsize);
185 virtual bool allocate_buffer(
int nitems,
size_t sizeof_item);
200 buffer(
int nitems,
size_t sizeof_item, block_sptr link);
205 void drop_reader(buffer_reader *reader);
216 buffer_add_reader(buffer_sptr buf,
int nzero_preload, block_sptr link=block_sptr(),
int delay=0);
240 void declare_sample_delay(
unsigned delay);
247 unsigned sample_delay()
const;
252 int items_available()
const;
270 const void *read_pointer();
275 void update_read_pointer(
int nitems);
277 void set_done(
bool done) { d_buffer->set_done(done); }
278 bool done()
const {
return d_buffer->done(); }
305 void get_tags_in_range(std::vector<tag_t> &v,
318 unsigned int d_read_index;
320 boost::weak_ptr<block> d_link;
321 unsigned d_attr_delay;