#include <gr_block.h>
#include <gr_block_detail.h>
#include <stdexcept>
-
-static long s_next_id = 0;
-static long s_ncurrently_allocated = 0;
-
-long
-gr_block_ncurrently_allocated ()
-{
- return s_ncurrently_allocated;
-}
+#include <iostream>
gr_block::gr_block (const std::string &name,
gr_io_signature_sptr input_signature,
gr_io_signature_sptr output_signature)
- : d_name (name),
- d_input_signature (input_signature),
- d_output_signature (output_signature),
+ : gr_basic_block(name, input_signature, output_signature),
d_output_multiple (1),
d_relative_rate (1.0),
- d_unique_id (s_next_id++),
d_history(1),
d_fixed_rate(false)
{
- s_ncurrently_allocated++;
}
gr_block::~gr_block ()
{
- s_ncurrently_allocated--;
}
// stub implementation: 1:1
{
unsigned ninputs = ninput_items_required.size ();
for (unsigned i = 0; i < ninputs; i++)
- ninput_items_required[i] = noutput_items;
+ ninput_items_required[i] = noutput_items + history() - 1;
}
// default implementation
-bool
-gr_block::check_topology (int ninputs, int noutputs)
-{
- return true;
-}
-
bool
gr_block::start()
{
{
throw std::runtime_error("Unimplemented");
}
+
+std::ostream&
+operator << (std::ostream& os, const gr_block *m)
+{
+ os << "<gr_block " << m->name() << " (" << m->unique_id() << ")>";
+ return os;
+}
+