23 #ifndef INCLUDED_GR_BUFFER_H
24 #define INCLUDED_GR_BUFFER_H
28 #include <boost/weak_ptr.hpp>
61 int space_available ();
74 void *write_pointer ();
79 void update_write_pointer (
int nitems);
81 void set_done (
bool done);
82 bool done ()
const {
return d_done; }
89 size_t nreaders()
const {
return d_readers.size(); }
102 void add_item_tag(
const gr_tag_t &tag);
112 std::deque<gr_tag_t>::iterator
get_tags_end() {
return d_item_tags.end(); }
127 size_t d_sizeof_item;
128 std::vector<gr_buffer_reader *> d_readers;
129 boost::weak_ptr<gr_block> d_link;
136 unsigned int d_write_index;
139 std::deque<gr_tag_t> d_item_tags;
143 index_add (
unsigned a,
unsigned b)
150 assert (s < d_bufsize);
155 index_sub (
unsigned a,
unsigned b)
162 assert ((
unsigned) s < d_bufsize);
166 virtual bool allocate_buffer (
int nitems,
size_t sizeof_item);
218 int items_available ()
const;
237 const void *read_pointer ();
242 void update_read_pointer (
int nitems);
244 void set_done (
bool done) { d_buffer->set_done (done); }
245 bool done ()
const {
return d_buffer->done (); }
271 void get_tags_in_range(std::vector<gr_tag_t> &v,
285 unsigned int d_read_index;
287 boost::weak_ptr<gr_block> d_link;