00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 #ifndef INCLUDED_GR_FIR_FFF_H
00030 #define INCLUDED_GR_FIR_FFF_H
00031 
00032 #include <vector>
00033 
00034 
00046 class gr_fir_fff {
00047 
00048 protected:
00049   std::vector<float>    d_taps;
00050 
00051 public:
00052 
00053   
00054 
00062   gr_fir_fff () {}
00063   gr_fir_fff (const std::vector<float> &taps) : d_taps (taps) {}
00064 
00065   virtual ~gr_fir_fff ();
00066 
00067   
00068 
00077   virtual float filter (const float input[]) = 0;
00078 
00085   virtual void filterN (float output[], const float input[],
00086                         unsigned long n) = 0;
00087 
00095   virtual void filterNdec (float output[], const float input[],
00096                            unsigned long n, unsigned decimate) = 0;
00097 
00101   virtual void set_taps (const std::vector<float> &taps)
00102   {
00103     d_taps = taps;
00104   }
00105 
00106   
00107 
00111   unsigned ntaps () const { return d_taps.size (); }
00112 
00116   virtual const std::vector<float> &get_taps () const { return d_taps; }
00117 };
00118 
00119 #endif