diff options
author | Johnathan Corgan <johnathan@corganlabs.com> | 2014-05-16 16:13:47 -0700 |
---|---|---|
committer | Johnathan Corgan <johnathan@corganlabs.com> | 2014-05-16 16:13:47 -0700 |
commit | cb0bc7f070c41825ab7aee7f093dc326e62e2fdb (patch) | |
tree | 5690633482fcdc9f8972491b90c8ba79d4405a14 | |
parent | a9b241b7505be3eaefd36205346e7238b6f2163a (diff) | |
parent | 496c74a460bb7fe472f5ee4b8861b65a0f488331 (diff) |
Merge remote-tracking branch 'osh/pdu_uvector_itemsize'
-rw-r--r-- | gnuradio-runtime/include/pmt/pmt.h | 3 | ||||
-rw-r--r-- | gnuradio-runtime/lib/pmt/pmt.cc | 10 | ||||
-rw-r--r-- | gnuradio-runtime/lib/pmt/pmt_int.h | 1 | ||||
-rw-r--r-- | gnuradio-runtime/lib/pmt/unv_template.h.t | 1 | ||||
-rwxr-xr-x | gnuradio-runtime/python/pmt/qa_pmt.py | 2 | ||||
-rw-r--r-- | gnuradio-runtime/swig/pmt_swig.i | 1 |
6 files changed, 18 insertions, 0 deletions
diff --git a/gnuradio-runtime/include/pmt/pmt.h b/gnuradio-runtime/include/pmt/pmt.h index 3cae2f2dc9..5929975a29 100644 --- a/gnuradio-runtime/include/pmt/pmt.h +++ b/gnuradio-runtime/include/pmt/pmt.h @@ -411,6 +411,9 @@ PMT_API bool is_f64vector(pmt_t x); PMT_API bool is_c32vector(pmt_t x); PMT_API bool is_c64vector(pmt_t x); +//! item size in bytes if \p x is any kind of uniform numeric vector +PMT_API size_t uniform_vector_itemsize(pmt_t x); + PMT_API pmt_t make_u8vector(size_t k, uint8_t fill); PMT_API pmt_t make_s8vector(size_t k, int8_t fill); PMT_API pmt_t make_u16vector(size_t k, uint16_t fill); 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); diff --git a/gnuradio-runtime/python/pmt/qa_pmt.py b/gnuradio-runtime/python/pmt/qa_pmt.py index 2a72fa6089..5c1af2c00e 100755 --- a/gnuradio-runtime/python/pmt/qa_pmt.py +++ b/gnuradio-runtime/python/pmt/qa_pmt.py @@ -43,6 +43,7 @@ class test_pmt(unittest.TestCase): s = pmt.serialize_str(v) d = pmt.deserialize_str(s) self.assertTrue(pmt.equal(v, d)) + self.assertEqual(pmt.uniform_vector_itemsize(v), 4) def test04(self): v = pmt.init_f64vector(3, [11, -22, 33]) @@ -91,6 +92,7 @@ class test_pmt(unittest.TestCase): s = pmt.serialize_str(v) d = pmt.deserialize_str(s) self.assertTrue(pmt.equal(v, d)) + self.assertEqual(pmt.uniform_vector_itemsize(v), 8) def test12(self): v = pmt.init_c64vector(3, [11 + -101j, -22 + 202j, 33 + -303j]) diff --git a/gnuradio-runtime/swig/pmt_swig.i b/gnuradio-runtime/swig/pmt_swig.i index 2c0444fdf5..5ea612b5b8 100644 --- a/gnuradio-runtime/swig/pmt_swig.i +++ b/gnuradio-runtime/swig/pmt_swig.i @@ -170,6 +170,7 @@ namespace pmt{ bool is_f64vector(pmt_t x); bool is_c32vector(pmt_t x); bool is_c64vector(pmt_t x); + size_t uniform_vector_itemsize(pmt_t x); pmt_t make_u8vector(size_t k, uint8_t fill); pmt_t make_s8vector(size_t k, int8_t fill); pmt_t make_u16vector(size_t k, uint16_t fill); |