23 #ifndef INCLUDED_GR_BLOCK_H
24 #define INCLUDED_GR_BLOCK_H
64 WORK_CALLED_PRODUCE = -2,
83 unsigned history ()
const {
return d_history; }
107 virtual void forecast (
int noutput_items,
124 virtual int general_work (
int noutput_items,
137 virtual bool start();
153 void set_output_multiple (
int multiple);
173 void set_alignment (
int multiple);
176 void set_unaligned (
int na);
178 void set_is_unaligned (
bool u);
184 void consume (
int which_input,
int how_many_items);
189 void consume_each (
int how_many_items);
196 void produce (
int which_output,
int how_many_items);
207 void set_relative_rate (
double relative_rate);
225 virtual int fixed_rate_ninput_to_noutput(
int ninput);
232 virtual int fixed_rate_noutput_to_ninput(
int noutput);
237 uint64_t nitems_read(
unsigned int which_input);
242 uint64_t nitems_written(
unsigned int which_output);
247 tag_propagation_policy_t tag_propagation_policy();
252 void set_tag_propagation_policy(tag_propagation_policy_t p);
258 int max_noutput_items();
266 void set_max_noutput_items(
int m);
283 void unset_max_noutput_items();
289 bool is_set_max_noutput_items();
299 if((
size_t)port >= d_max_output_buffer.size())
300 set_max_output_buffer(port, -1);
301 if((
size_t)port >= d_min_output_buffer.size())
302 set_min_output_buffer(port, -1);
309 if(i >= d_max_output_buffer.size())
310 throw std::invalid_argument(
"gr_basic_block::max_output_buffer: port out of range.");
311 return d_max_output_buffer[i];
319 set_max_output_buffer(i, max_output_buffer);
327 if((
size_t)port >= d_max_output_buffer.size())
328 d_max_output_buffer.push_back(max_output_buffer);
330 d_max_output_buffer[port] = max_output_buffer;
337 if(i >= d_min_output_buffer.size())
338 throw std::invalid_argument(
"gr_basic_block::min_output_buffer: port out of range.");
339 return d_min_output_buffer[i];
347 set_min_output_buffer(i, min_output_buffer);
355 if((
size_t)port >= d_min_output_buffer.size())
356 d_min_output_buffer.push_back(min_output_buffer);
358 d_min_output_buffer[port] = min_output_buffer;
365 int d_output_multiple;
366 bool d_output_multiple_set;
369 double d_relative_rate;
373 bool d_max_noutput_items_set;
374 int d_max_noutput_items;
375 tag_propagation_policy_t d_tag_propagation_policy;
396 inline void add_item_tag(
unsigned int which_output,
407 this->add_item_tag(which_output, tag);
416 void add_item_tag(
unsigned int which_output,
const gr_tag_t &tag);
431 void get_tags_in_range(std::vector<gr_tag_t> &v,
432 unsigned int which_input,
451 void get_tags_in_range(std::vector<gr_tag_t> &v,
452 unsigned int which_input,