23 #ifndef INCLUDED_GR_BLOCK_H
24 #define INCLUDED_GR_BLOCK_H
65 WORK_CALLED_PRODUCE = -2,
84 unsigned history ()
const {
return d_history; }
108 virtual void forecast (
int noutput_items,
125 virtual int general_work (
int noutput_items,
138 virtual bool start();
154 void set_output_multiple (
int multiple);
174 void set_alignment (
int multiple);
177 void set_unaligned (
int na);
179 void set_is_unaligned (
bool u);
185 void consume (
int which_input,
int how_many_items);
190 void consume_each (
int how_many_items);
197 void produce (
int which_output,
int how_many_items);
208 void set_relative_rate (
double relative_rate);
226 virtual int fixed_rate_ninput_to_noutput(
int ninput);
233 virtual int fixed_rate_noutput_to_ninput(
int noutput);
238 uint64_t nitems_read(
unsigned int which_input);
243 uint64_t nitems_written(
unsigned int which_output);
248 tag_propagation_policy_t tag_propagation_policy();
253 void set_tag_propagation_policy(tag_propagation_policy_t p);
276 int max_noutput_items();
284 void set_max_noutput_items(
int m);
301 void unset_max_noutput_items();
307 bool is_set_max_noutput_items();
317 if((
size_t)port >= d_max_output_buffer.size())
318 set_max_output_buffer(port, -1);
319 if((
size_t)port >= d_min_output_buffer.size())
320 set_min_output_buffer(port, -1);
327 if(i >= d_max_output_buffer.size())
328 throw std::invalid_argument(
"gr_basic_block::max_output_buffer: port out of range.");
329 return d_max_output_buffer[i];
337 set_max_output_buffer(i, max_output_buffer);
345 if((
size_t)port >= d_max_output_buffer.size())
346 d_max_output_buffer.push_back(max_output_buffer);
348 d_max_output_buffer[port] = max_output_buffer;
355 if(i >= d_min_output_buffer.size())
356 throw std::invalid_argument(
"gr_basic_block::min_output_buffer: port out of range.");
357 return d_min_output_buffer[i];
365 set_min_output_buffer(i, min_output_buffer);
373 if((
size_t)port >= d_min_output_buffer.size())
374 d_min_output_buffer.push_back(min_output_buffer);
376 d_min_output_buffer[port] = min_output_buffer;
384 float pc_noutput_items();
389 float pc_noutput_items_var();
394 float pc_nproduced();
399 float pc_nproduced_var();
404 float pc_input_buffers_full(
int which);
409 float pc_input_buffers_full_var(
int which);
414 std::vector<float> pc_input_buffers_full();
419 std::vector<float> pc_input_buffers_full_var();
424 float pc_output_buffers_full(
int which);
429 float pc_output_buffers_full_var(
int which);
434 std::vector<float> pc_output_buffers_full();
438 std::vector<float> pc_output_buffers_full_var();
443 float pc_work_time();
448 float pc_work_time_var();
453 void reset_perf_counters();
464 void set_processor_affinity(
const std::vector<int> &mask);
469 void unset_processor_affinity();
480 int d_output_multiple;
481 bool d_output_multiple_set;
484 double d_relative_rate;
488 bool d_max_noutput_items_set;
489 int d_max_noutput_items;
490 int d_min_noutput_items;
491 tag_propagation_policy_t d_tag_propagation_policy;
492 std::vector<int> d_affinity;
513 inline void add_item_tag(
unsigned int which_output,
524 this->add_item_tag(which_output, tag);
533 void add_item_tag(
unsigned int which_output,
const gr_tag_t &tag);
547 inline void remove_item_tag(
unsigned int which_input,
558 this->remove_item_tag(which_input, tag);
569 void remove_item_tag(
unsigned int which_input,
const gr_tag_t &tag);
584 void get_tags_in_range(std::vector<gr_tag_t> &v,
585 unsigned int which_input,
604 void get_tags_in_range(std::vector<gr_tag_t> &v,
605 unsigned int which_input,