HARDT - The Ham Radio DSP Toolkit
hcomplexfilter.h
1 #ifndef __HCOMPLEXFILTER_H
2 #define __HCOMPLEXFILTER_H
3 
9 #include "hfilter.h"
10 #include "hwriter.h"
11 #include "hwriterconsumer.h"
12 #include "hreader.h"
13 #include "hprobe.h"
14 
15 #include <complex>
16 
17 template <class T>
18 class HComplexFilter : public HFilter<std::complex<T>>
19 {
20  private:
21 
22  std::complex<T>* _response;
23  size_t _blocksize;
24 
25  void Init(std::complex<T>* response) {
26  _response = new std::complex<T>[_blocksize];
27  memcpy((void*) _response, (void*) response, sizeof(std::complex<T>) * _blocksize);
28  }
29 
30  public:
31 
33  HComplexFilter(HWriter<std::complex<T>>* writer, size_t blocksize, std::complex<T>* response, HProbe<std::complex<T>>* probe = NULL):
34  HFilter<std::complex<T>>(writer, blocksize, probe),
35  _blocksize(blocksize) {
36 
37  Init(response);
38  }
39 
41  HComplexFilter(HWriterConsumer<std::complex<T>>* consumer, size_t blocksize, std::complex<T>* response, HProbe<std::complex<T>>* probe = NULL):
42  HFilter<std::complex<T>>(consumer, blocksize, probe),
43  _blocksize(blocksize) {
44 
45  Init(response);
46  }
47 
49  HComplexFilter(HReader<std::complex<T>>* reader, size_t blocksize, std::complex<T>* response, HProbe<std::complex<T>>* probe = NULL):
50  HFilter<std::complex<T>>(reader, blocksize, probe),
51  _blocksize(blocksize) {
52 
53  Init(response);
54  }
55 
58  delete _response;
59  }
60 
62  void Filter(std::complex<T>* src, std::complex<T>* dest, size_t blocksize);
63 };
64 
65 #endif
HComplexFilter::HComplexFilter
HComplexFilter(HReader< std::complex< T >> *reader, size_t blocksize, std::complex< T > *response, HProbe< std::complex< T >> *probe=NULL)
Definition: hcomplexfilter.h:49
HWriter
Definition: hwriter.h:10
HComplexFilter::~HComplexFilter
~HComplexFilter()
Definition: hcomplexfilter.h:57
HFilter
Definition: hfilter.h:14
HComplexFilter::Filter
void Filter(std::complex< T > *src, std::complex< T > *dest, size_t blocksize)
Definition: hcomplexfilter.cpp:7
HReader
Definition: hreader.h:24
HProbe
Definition: hprobe.h:10
HComplexFilter::HComplexFilter
HComplexFilter(HWriterConsumer< std::complex< T >> *consumer, size_t blocksize, std::complex< T > *response, HProbe< std::complex< T >> *probe=NULL)
Definition: hcomplexfilter.h:41
HComplexFilter
Definition: hcomplexfilter.h:18
HComplexFilter::HComplexFilter
HComplexFilter(HWriter< std::complex< T >> *writer, size_t blocksize, std::complex< T > *response, HProbe< std::complex< T >> *probe=NULL)
Definition: hcomplexfilter.h:33
HWriterConsumer
Definition: hwriterconsumer.h:8