From: anastas Date: Tue, 13 Feb 2007 05:06:56 +0000 (+0000) Subject: implementation using templates X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=ce34921306ca908c64b3b9e847f5831c9a0340ed;p=debian%2Fgnuradio implementation using templates git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@4464 221aa14e-8319-0410-a670-987f0aec2ac5 --- diff --git a/gr-trellis/src/lib/trellis_calc_metric.cc b/gr-trellis/src/lib/trellis_calc_metric.cc index 238e506b..ec2ed794 100644 --- a/gr-trellis/src/lib/trellis_calc_metric.cc +++ b/gr-trellis/src/lib/trellis_calc_metric.cc @@ -26,7 +26,8 @@ -void calc_metric(int O, int D, const std::vector &TABLE, const short *in, float *metric, trellis_metric_type_t type) +template +void calc_metric(int O, int D, const std::vector &TABLE, const T *in, float *metric, trellis_metric_type_t type) { float minm = FLT_MAX; int minmi = 0; @@ -36,8 +37,10 @@ void calc_metric(int O, int D, const std::vector &TABLE, const short *in, for(int o=0;o &TABLE, const short *in, for(int o=0;o &TABLE, const short *in, } -void calc_metric(int O, int D, const std::vector &TABLE, const int *in, float *metric, trellis_metric_type_t type) + +template +void calc_metric(int O, int D, const std::vector &TABLE, const short *in, float *metric, trellis_metric_type_t type); + +template +void calc_metric(int O, int D, const std::vector &TABLE, const int *in, float *metric, trellis_metric_type_t type); + +template +void calc_metric(int O, int D, const std::vector &TABLE, const float *in, float *metric, trellis_metric_type_t type); + + +/* +void calc_metric(int O, int D, const std::vector &TABLE, const short *in, float *metric, trellis_metric_type_t type) { float minm = FLT_MAX; int minmi = 0; @@ -106,8 +123,7 @@ void calc_metric(int O, int D, const std::vector &TABLE, const int *in, flo } - -void calc_metric(int O, int D, const std::vector &TABLE, const float *in, float *metric, trellis_metric_type_t type) +void calc_metric(int O, int D, const std::vector &TABLE, const int *in, float *metric, trellis_metric_type_t type) { float minm = FLT_MAX; int minmi = 0; @@ -120,7 +136,7 @@ void calc_metric(int O, int D, const std::vector &TABLE, const float *in, float s=in[m]-TABLE[o*D+m]; metric[o]+=s*s; } - } + } break; case TRELLIS_HARD_SYMBOL: for(int o=0;o &TABLE, const float *in, } -void calc_metric(int O, int D, const std::vector &TABLE, const gr_complex *in, float *metric, trellis_metric_type_t type) + +void calc_metric(int O, int D, const std::vector &TABLE, const float *in, float *metric, trellis_metric_type_t type) { float minm = FLT_MAX; int minmi = 0; @@ -157,16 +174,17 @@ void calc_metric(int O, int D, const std::vector &TABLE, const gr_co for(int o=0;o &TABLE, const gr_co throw std::runtime_error ("Invalid metric type."); } } +*/ -/* -template void calc_metric(int O, int D, const std::vector &TABLE, const T *in, float *metric, trellis_metric_type_t type) + + + +void calc_metric(int O, int D, const std::vector &TABLE, const gr_complex *in, float *metric, trellis_metric_type_t type) { float minm = FLT_MAX; int minmi = 0; @@ -197,19 +218,16 @@ template void calc_metric(int O, int D, const std::vector &TABLE, c for(int o=0;o void calc_metric(int O, int D, const std::vector &TABLE, c throw std::runtime_error ("Invalid metric type."); } } -*/ diff --git a/gr-trellis/src/lib/trellis_calc_metric.h b/gr-trellis/src/lib/trellis_calc_metric.h index 2a4a7882..5e9f3efb 100644 --- a/gr-trellis/src/lib/trellis_calc_metric.h +++ b/gr-trellis/src/lib/trellis_calc_metric.h @@ -28,15 +28,19 @@ #include +template +void calc_metric(int O, int D, const std::vector &TABLE, const T *in, float *metric, trellis_metric_type_t type); + +/* void calc_metric(int O, int D, const std::vector &TABLE, const short *in, float *metric, trellis_metric_type_t type); void calc_metric(int O, int D, const std::vector &TABLE, const int *in, float *metric, trellis_metric_type_t type); void calc_metric(int O, int D, const std::vector &TABLE, const float *in, float *metric, trellis_metric_type_t type); +*/ void calc_metric(int O, int D, const std::vector &TABLE, const gr_complex *in, float *metric, trellis_metric_type_t type); -//template void calc_metric(int O, int D, const std::vector &TABLE, const T *in, float *metric, trellis_metric_type_t type); #endif