summaryrefslogtreecommitdiff
path: root/gr-blocks/lib/copy_impl.cc
diff options
context:
space:
mode:
authorTom Rondeau <trondeau@vt.edu>2013-03-16 23:34:34 -0400
committerTom Rondeau <trondeau@vt.edu>2013-03-16 23:52:20 -0400
commit51cbe589f7cd74056be613587e82e8d3b3168e84 (patch)
tree22d22d0919e52147286ce888343724c9529d8dcd /gr-blocks/lib/copy_impl.cc
parenta792bb88f3c3caa347506503de973aafaf78e0af (diff)
blocks: moved nop, null source/sink, copy, vector_map to gr-blocks.
Diffstat (limited to 'gr-blocks/lib/copy_impl.cc')
-rw-r--r--gr-blocks/lib/copy_impl.cc31
1 files changed, 20 insertions, 11 deletions
diff --git a/gr-blocks/lib/copy_impl.cc b/gr-blocks/lib/copy_impl.cc
index f489b03c0c..929f22b7d3 100644
--- a/gr-blocks/lib/copy_impl.cc
+++ b/gr-blocks/lib/copy_impl.cc
@@ -40,8 +40,8 @@ namespace gr {
copy_impl::copy_impl(size_t itemsize)
: gr_block("copy",
- gr_make_io_signature(1, 1, itemsize),
- gr_make_io_signature(1, 1, itemsize)),
+ gr_make_io_signature(1, -1, itemsize),
+ gr_make_io_signature(1, -1, itemsize)),
d_itemsize(itemsize),
d_enabled(true)
{
@@ -51,6 +51,14 @@ namespace gr {
{
}
+ void
+ copy_impl::forecast(int noutput_items, gr_vector_int &ninput_items_required)
+ {
+ unsigned ninputs = ninput_items_required.size();
+ for (unsigned i = 0; i < ninputs; i++)
+ ninput_items_required[i] = noutput_items;
+ }
+
bool
copy_impl::check_topology(int ninputs, int noutputs)
{
@@ -63,19 +71,20 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
- const uint8_t *in = (const uint8_t*)input_items[0];
- uint8_t *out = (uint8_t*)output_items[0];
-
- int n = std::min<int>(ninput_items[0], noutput_items);
- int j = 0;
+ const uint8_t **in = (const uint8_t**)&input_items[0];
+ uint8_t **out = (uint8_t**)&output_items[0];
+ int n = 0;
if(d_enabled) {
- memcpy(out, in, n*d_itemsize);
- j = n;
+ int ninputs = input_items.size();
+ for(int i = 0; i < ninputs; i++) {
+ memcpy(out[i], in[i], noutput_items*d_itemsize);
+ }
+ n = noutput_items;
}
- consume_each(n);
- return j;
+ consume_each(noutput_items);
+ return n;
}
} /* namespace blocks */