38
40
gr_block_detail::gr_block_detail (unsigned int ninputs, unsigned int noutputs)
39
: d_ninputs (ninputs), d_noutputs (noutputs),
42
d_ninputs (ninputs), d_noutputs (noutputs),
40
43
d_input (ninputs), d_output (noutputs),
88
91
gr_block_detail::consume (int which_input, int how_many_items)
90
if (how_many_items > 0)
93
if (how_many_items > 0) {
91
94
input (which_input)->update_read_pointer (how_many_items);
95
100
gr_block_detail::consume_each (int how_many_items)
97
if (how_many_items > 0)
98
for (int i = 0; i < ninputs (); i++)
102
if (how_many_items > 0) {
103
for (int i = 0; i < ninputs (); i++) {
99
104
d_input[i]->update_read_pointer (how_many_items);
110
gr_block_detail::produce (int which_output, int how_many_items)
112
if (how_many_items > 0){
113
d_output[which_output]->update_write_pointer (how_many_items);
114
d_produce_or |= how_many_items;
103
119
gr_block_detail::produce_each (int how_many_items)
105
if (how_many_items > 0)
106
for (int i = 0; i < noutputs (); i++)
121
if (how_many_items > 0) {
122
for (int i = 0; i < noutputs (); i++) {
107
123
d_output[i]->update_write_pointer (how_many_items);
125
d_produce_or |= how_many_items;
131
gr_block_detail::_post(pmt_t msg)
133
d_tpb.insert_tail(msg);
137
gr_block_detail::nitems_read(unsigned int which_input)
139
if(which_input >= d_ninputs)
140
throw std::invalid_argument ("gr_block_detail::n_input_items");
141
return d_input[which_input]->nitems_read();
145
gr_block_detail::nitems_written(unsigned int which_output)
147
if(which_output >= d_noutputs)
148
throw std::invalid_argument ("gr_block_detail::n_output_items");
149
return d_output[which_output]->nitems_written();
153
gr_block_detail::add_item_tag(unsigned int which_output, const gr_tag_t &tag)
155
if(!pmt_is_symbol(tag.key)) {
156
throw pmt_wrong_type("gr_block_detail::add_item_tag key", tag.key);
159
// Add tag to gr_buffer's deque tags
160
d_output[which_output]->add_item_tag(tag);
165
gr_block_detail::get_tags_in_range(std::vector<gr_tag_t> &v,
166
unsigned int which_input,
170
// get from gr_buffer_reader's deque of tags
171
d_input[which_input]->get_tags_in_range(v, abs_start, abs_end);
175
gr_block_detail::get_tags_in_range(std::vector<gr_tag_t> &v,
176
unsigned int which_input,
181
std::vector<gr_tag_t> found_items;
185
// get from gr_buffer_reader's deque of tags
186
d_input[which_input]->get_tags_in_range(found_items, abs_start, abs_end);
188
// Filter further by key name
190
std::vector<gr_tag_t>::iterator itr;
191
for(itr = found_items.begin(); itr != found_items.end(); itr++) {
192
itemkey = (*itr).key;
193
if(pmt_eqv(key, itemkey)) {