2022-06-29 10:25:32 +00:00
|
|
|
#pragma once
|
|
|
|
#include <vector>
|
2022-10-04 07:27:27 +00:00
|
|
|
#include <memory>
|
2022-06-29 10:25:32 +00:00
|
|
|
#include "lasp_types.h"
|
|
|
|
#include "lasp_mathtypes.h"
|
|
|
|
/**
|
|
|
|
* @brief Filter used to pre-filter a double-precision floating point data
|
|
|
|
* stream.
|
|
|
|
*/
|
|
|
|
class Filter {
|
|
|
|
public:
|
2022-08-11 12:47:44 +00:00
|
|
|
/**
|
|
|
|
* @brief Filter input, and provides output in same array as input
|
|
|
|
*
|
|
|
|
* @param inout Vector of input / output samples.
|
|
|
|
*/
|
|
|
|
virtual void filter(vd &inout) = 0;
|
2022-06-29 10:25:32 +00:00
|
|
|
virtual ~Filter() = 0;
|
2022-08-16 19:22:35 +00:00
|
|
|
/**
|
|
|
|
* @brief Reset filter state to 0 (history was all-zero).
|
|
|
|
*/
|
|
|
|
virtual void reset() = 0;
|
2022-10-04 07:27:27 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Clone a filter, to generate a copy.
|
|
|
|
*
|
|
|
|
* @return Copy of filter with state set to zero.
|
|
|
|
*/
|
|
|
|
virtual std::unique_ptr<Filter> clone() const = 0;
|
2022-06-29 10:25:32 +00:00
|
|
|
};
|
|
|
|
|
2022-08-11 12:47:44 +00:00
|
|
|
|
|
|
|
inline Filter::~Filter() {}
|