diff --git a/coeffs.hh b/coeffs.hh index 9303483..403c9bc 100644 --- a/coeffs.hh +++ b/coeffs.hh @@ -8,24 +8,19 @@ Copyright 2018 Ahmet Inan namespace DSP { -template -struct CoeffsFunc -{ - virtual TYPE operator () (int, int) = 0; - virtual ~CoeffsFunc() = default; -}; - template class Coeffs { TYPE w[TAPS]; public: - Coeffs(CoeffsFunc *func) + template + Coeffs(FUNC *func) { for (int n = 0; n < TAPS; ++n) w[n] = (*func)(n, TAPS); } - Coeffs(CoeffsFunc *func0, CoeffsFunc *func1) + template + Coeffs(FUNC0 *func0, FUNC1 *func1) { for (int n = 0; n < TAPS; ++n) w[n] = (*func0)(n, TAPS) * (*func1)(n, TAPS); diff --git a/filter.hh b/filter.hh index dd1b1d3..c841f23 100644 --- a/filter.hh +++ b/filter.hh @@ -8,12 +8,11 @@ Copyright 2018 Ahmet Inan #include "const.hh" #include "utils.hh" -#include "coeffs.hh" namespace DSP { template -class LowPass : public CoeffsFunc +class LowPass { TYPE f; public: @@ -26,7 +25,7 @@ public: }; template -class HighPass : public CoeffsFunc +class HighPass { TYPE f; public: @@ -41,7 +40,7 @@ public: }; template -class BandPass : public CoeffsFunc +class BandPass { TYPE f0, f1; public: diff --git a/window.hh b/window.hh index 7bffef7..bd9364c 100644 --- a/window.hh +++ b/window.hh @@ -10,18 +10,17 @@ Copyright 2018 Ahmet Inan #include "kahan.hh" #include "utils.hh" #include "unit_circle.hh" -#include "coeffs.hh" namespace DSP { template -struct Rect : public CoeffsFunc +struct Rect { TYPE operator () (int n, int N) { return n >= 0 && n < N ? 1 : 0; } }; template -struct Hann : public CoeffsFunc +struct Hann { TYPE operator () (int n, int N) { @@ -30,7 +29,7 @@ struct Hann : public CoeffsFunc }; template -struct Hamming : public CoeffsFunc +struct Hamming { TYPE operator () (int n, int N) { @@ -39,7 +38,7 @@ struct Hamming : public CoeffsFunc }; template -struct Lanczos : public CoeffsFunc +struct Lanczos { TYPE operator () (int n, int N) { @@ -53,7 +52,7 @@ struct Lanczos : public CoeffsFunc }; template -class Blackman : public CoeffsFunc +class Blackman { TYPE a0, a1, a2; public: @@ -68,7 +67,7 @@ public: }; template -class Gauss : public CoeffsFunc +class Gauss { TYPE o; public: @@ -80,7 +79,7 @@ public: }; template -class Kaiser : public CoeffsFunc +class Kaiser { TYPE a; /*