From ecd62ef7b948d9ab14817a8df205373284362f0e Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Thu, 13 Dec 2012 18:08:14 -0500 Subject: gruel: allow us to use pmt_init_Xvector methods in python. --- gruel/src/include/gruel/pmt.h | 13 ++++++++++++ gruel/src/lib/pmt/unv_template.cc.t | 7 +++++++ gruel/src/swig/pmt_swig.i | 42 ++++++++++++++++++++++++++++--------- 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/gruel/src/include/gruel/pmt.h b/gruel/src/include/gruel/pmt.h index d09686783..1dd8eb74b 100644 --- a/gruel/src/include/gruel/pmt.h +++ b/gruel/src/include/gruel/pmt.h @@ -32,6 +32,7 @@ #include #include #include +#include namespace gruel { class msg_accepter; @@ -412,17 +413,29 @@ GRUEL_API pmt_t pmt_make_c32vector(size_t k, std::complex fill); GRUEL_API pmt_t pmt_make_c64vector(size_t k, std::complex fill); GRUEL_API pmt_t pmt_init_u8vector(size_t k, const uint8_t *data); +GRUEL_API pmt_t pmt_init_u8vector(size_t k, const std::vector &data); GRUEL_API pmt_t pmt_init_s8vector(size_t k, const int8_t *data); +GRUEL_API pmt_t pmt_init_s8vector(size_t k, const std::vector &data); GRUEL_API pmt_t pmt_init_u16vector(size_t k, const uint16_t *data); +GRUEL_API pmt_t pmt_init_u16vector(size_t k, const std::vector &data); GRUEL_API pmt_t pmt_init_s16vector(size_t k, const int16_t *data); +GRUEL_API pmt_t pmt_init_s16vector(size_t k, const std::vector &data); GRUEL_API pmt_t pmt_init_u32vector(size_t k, const uint32_t *data); +GRUEL_API pmt_t pmt_init_u32vector(size_t k, const std::vector &data); GRUEL_API pmt_t pmt_init_s32vector(size_t k, const int32_t *data); +GRUEL_API pmt_t pmt_init_s32vector(size_t k, const std::vector &data); GRUEL_API pmt_t pmt_init_u64vector(size_t k, const uint64_t *data); +GRUEL_API pmt_t pmt_init_u64vector(size_t k, const std::vector &data); GRUEL_API pmt_t pmt_init_s64vector(size_t k, const int64_t *data); +GRUEL_API pmt_t pmt_init_s64vector(size_t k, const std::vector &data); GRUEL_API pmt_t pmt_init_f32vector(size_t k, const float *data); +GRUEL_API pmt_t pmt_init_f32vector(size_t k, const std::vector &data); GRUEL_API pmt_t pmt_init_f64vector(size_t k, const double *data); +GRUEL_API pmt_t pmt_init_f64vector(size_t k, const std::vector &data); GRUEL_API pmt_t pmt_init_c32vector(size_t k, const std::complex *data); +GRUEL_API pmt_t pmt_init_c32vector(size_t k, const std::vector< std::complex > &data); GRUEL_API pmt_t pmt_init_c64vector(size_t k, const std::complex *data); +GRUEL_API pmt_t pmt_init_c64vector(size_t k, const std::vector< std::complex > &data); GRUEL_API uint8_t pmt_u8vector_ref(pmt_t v, size_t k); GRUEL_API int8_t pmt_s8vector_ref(pmt_t v, size_t k); diff --git a/gruel/src/lib/pmt/unv_template.cc.t b/gruel/src/lib/pmt/unv_template.cc.t index 566168c3d..f74397421 100644 --- a/gruel/src/lib/pmt/unv_template.cc.t +++ b/gruel/src/lib/pmt/unv_template.cc.t @@ -87,6 +87,13 @@ pmt_init_@TAG@vector(size_t k, const @TYPE@ *data) return pmt_t(new pmt_@TAG@vector(k, data)); } +pmt_t +pmt_init_@TAG@vector(size_t k, const std::vector< @TYPE@ > &data) +{ + + return pmt_t(new pmt_@TAG@vector(k, &data[0])); +} + @TYPE@ pmt_@TAG@vector_ref(pmt_t vector, size_t k) { diff --git a/gruel/src/swig/pmt_swig.i b/gruel/src/swig/pmt_swig.i index b1628c998..67dda5c3f 100644 --- a/gruel/src/swig/pmt_swig.i +++ b/gruel/src/swig/pmt_swig.i @@ -38,6 +38,27 @@ //load generated python docstrings %include "pmt_swig_doc.i" +%include +%include +%include + +namespace std { + %template() vector; + %template() vector; + %template() vector; + %template() vector; + %template() vector; + %template() vector; + %template() vector; + %template() vector; + %template() vector; + %template() vector; + %template() vector; + %template() vector; + %template() vector< complex >; + %template() vector< complex >; +}; + //////////////////////////////////////////////////////////////////////// // Language independent exception handler //////////////////////////////////////////////////////////////////////// @@ -380,16 +401,17 @@ pmt_t pmt_make_f64vector(size_t k, double fill); pmt_t pmt_make_c32vector(size_t k, std::complex fill); pmt_t pmt_make_c64vector(size_t k, std::complex fill); -pmt_t pmt_init_u8vector(size_t k, const uint8_t *data); -pmt_t pmt_init_s8vector(size_t k, const int8_t *data); -pmt_t pmt_init_u16vector(size_t k, const uint16_t *data); -pmt_t pmt_init_s16vector(size_t k, const int16_t *data); -pmt_t pmt_init_u32vector(size_t k, const uint32_t *data); -pmt_t pmt_init_s32vector(size_t k, const int32_t *data); -pmt_t pmt_init_f32vector(size_t k, const float *data); -pmt_t pmt_init_f64vector(size_t k, const double *data); -pmt_t pmt_init_c32vector(size_t k, const std::complex *data); -pmt_t pmt_init_c64vector(size_t k, const std::complex *data); + +pmt_t pmt_init_u8vector(size_t k, const std::vector &data); +pmt_t pmt_init_s8vector(size_t k, const std::vector &data); +pmt_t pmt_init_u16vector(size_t k, const std::vector &data); +pmt_t pmt_init_s16vector(size_t k, const std::vector &data); +pmt_t pmt_init_u32vector(size_t k, const std::vector &data); +pmt_t pmt_init_s32vector(size_t k, const std::vector &data); +pmt_t pmt_init_f32vector(size_t k, const std::vector &data); +pmt_t pmt_init_f64vector(size_t k, const std::vector &data); +pmt_t pmt_init_c32vector(size_t k, const std::vector< std::complex > &data); +pmt_t pmt_init_c64vector(size_t k, const std::vector< std::complex > &data); uint8_t pmt_u8vector_ref(pmt_t v, size_t k); int8_t pmt_s8vector_ref(pmt_t v, size_t k); -- cgit