summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/lib
diff options
context:
space:
mode:
authorTim O'Shea <tim.oshea753@gmail.com>2014-05-14 19:44:34 -0400
committerTim O'Shea <tim.oshea753@gmail.com>2014-05-14 19:46:44 -0400
commit496c74a460bb7fe472f5ee4b8861b65a0f488331 (patch)
tree4da497328840a900f63f3710c05ff7ec22d31bb2 /gnuradio-runtime/lib
parent432e3b75300a400e2e99dbe7e9aea58b6b2855b1 (diff)
pmt: adding pmt.uniform_vector_itemsize(pmt_t vector), returns the size per item in bytes within a uniform vector for any kind of uniform vector
Diffstat (limited to 'gnuradio-runtime/lib')
-rw-r--r--gnuradio-runtime/lib/pmt/pmt.cc10
-rw-r--r--gnuradio-runtime/lib/pmt/pmt_int.h1
-rw-r--r--gnuradio-runtime/lib/pmt/unv_template.h.t1
3 files changed, 12 insertions, 0 deletions
diff --git a/gnuradio-runtime/lib/pmt/pmt.cc b/gnuradio-runtime/lib/pmt/pmt.cc
index 7760c02815..8315100ab3 100644
--- a/gnuradio-runtime/lib/pmt/pmt.cc
+++ b/gnuradio-runtime/lib/pmt/pmt.cc
@@ -760,6 +760,14 @@ is_uniform_vector(pmt_t x)
return x->is_uniform_vector();
}
+size_t
+uniform_vector_itemsize(pmt_t vector)
+{
+ if (!vector->is_uniform_vector())
+ throw wrong_type("pmt_uniform_vector_itemsize", vector);
+ return _uniform_vector(vector)->itemsize();
+}
+
const void *
uniform_vector_elements(pmt_t vector, size_t &len)
{
@@ -776,6 +784,8 @@ uniform_vector_writable_elements(pmt_t vector, size_t &len)
return _uniform_vector(vector)->uniform_writable_elements(len);
}
+
+
////////////////////////////////////////////////////////////////////////////
// Dictionaries
////////////////////////////////////////////////////////////////////////////
diff --git a/gnuradio-runtime/lib/pmt/pmt_int.h b/gnuradio-runtime/lib/pmt/pmt_int.h
index aceb7b74d9..ca90c5a475 100644
--- a/gnuradio-runtime/lib/pmt/pmt_int.h
+++ b/gnuradio-runtime/lib/pmt/pmt_int.h
@@ -238,6 +238,7 @@ public:
virtual const void *uniform_elements(size_t &len) = 0;
virtual void *uniform_writable_elements(size_t &len) = 0;
virtual size_t length() const = 0;
+ virtual size_t itemsize() const = 0;
};
#include "pmt_unv_int.h"
diff --git a/gnuradio-runtime/lib/pmt/unv_template.h.t b/gnuradio-runtime/lib/pmt/unv_template.h.t
index 83ba0be0f4..93ca684463 100644
--- a/gnuradio-runtime/lib/pmt/unv_template.h.t
+++ b/gnuradio-runtime/lib/pmt/unv_template.h.t
@@ -14,6 +14,7 @@ public:
bool is_@TAG@vector() const { return true; }
size_t length() const { return d_v.size(); }
+ size_t itemsize() const { return sizeof(@TYPE@); }
@TYPE@ ref(size_t k) const;
void set(size_t k, @TYPE@ x);
const @TYPE@ *elements(size_t &len);