diff options
author | Josh Blum <josh@joshknows.com> | 2011-11-12 15:45:52 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2011-11-12 15:45:52 -0800 |
commit | dd782308940e4b206e798eb2f0fa203b6e8c7f07 (patch) | |
tree | 9111a6128a4351ca7d9773e5ee4d057871ffd7b7 /host/lib/convert/convert_common.hpp | |
parent | 74106084ed94668f11777f856e9b42e80b5d6599 (diff) | |
download | uhd-dd782308940e4b206e798eb2f0fa203b6e8c7f07.tar.gz uhd-dd782308940e4b206e798eb2f0fa203b6e8c7f07.tar.bz2 uhd-dd782308940e4b206e798eb2f0fa203b6e8c7f07.zip |
convert: made conversion functions into classes so they can keep state
Diffstat (limited to 'host/lib/convert/convert_common.hpp')
-rw-r--r-- | host/lib/convert/convert_common.hpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/host/lib/convert/convert_common.hpp b/host/lib/convert/convert_common.hpp index 34fb848c3..ce82f6216 100644 --- a/host/lib/convert/convert_common.hpp +++ b/host/lib/convert/convert_common.hpp @@ -21,30 +21,30 @@ #include <uhd/convert.hpp> #include <uhd/utils/static.hpp> #include <boost/cstdint.hpp> +#include <boost/bind.hpp> #include <complex> -#define _DECLARE_CONVERTER(fcn, in_form, num_in, out_form, num_out, prio) \ - static void fcn( \ - const uhd::convert::input_type &inputs, \ - const uhd::convert::output_type &outputs, \ - const size_t nsamps, const double scale_factor \ - ); \ - UHD_STATIC_BLOCK(__register_##fcn##_##prio){ \ +#define _DECLARE_CONVERTER(name, in_form, num_in, out_form, num_out, prio) \ + struct name : public uhd::convert::converter{ \ + static sptr make(void){return sptr(new name());} \ + double scale_factor; \ + void set_scalar(const double s){scale_factor = s;} \ + void operator()(const input_type&, const output_type&, const size_t); \ + }; \ + UHD_STATIC_BLOCK(__register_##name##_##prio){ \ uhd::convert::id_type id; \ id.input_format = #in_form; \ id.num_inputs = num_in; \ id.output_format = #out_form; \ id.num_outputs = num_out; \ - uhd::convert::register_converter(id, fcn, prio); \ + uhd::convert::register_converter(id, boost::bind(&name::make), prio); \ } \ - static void fcn( \ - const uhd::convert::input_type &inputs, \ - const uhd::convert::output_type &outputs, \ - const size_t nsamps, const double scale_factor \ + void name::operator()( \ + const input_type &inputs, const output_type &outputs, const size_t nsamps \ ) #define DECLARE_CONVERTER(in_form, num_in, out_form, num_out, prio) \ - _DECLARE_CONVERTER(__convert_##in_form##_##num_in##_##out_form##_##num_out, in_form, num_in, out_form, num_out, prio) + _DECLARE_CONVERTER(__convert_##in_form##_##num_in##_##out_form##_##num_out##_##prio, in_form, num_in, out_form, num_out, prio) /*********************************************************************** * Typedefs |