#pragma once #include #include #include "lasp_types.h" #include "lasp_mathtypes.h" /** * @brief Filter used to pre-filter a double-precision floating point data * stream. */ class Filter { public: /** * @brief Filter input, and provides output in same array as input * * @param inout Vector of input / output samples. */ virtual void filter(vd &inout) = 0; virtual ~Filter() = 0; /** * @brief Reset filter state to 0 (history was all-zero). */ virtual void reset() = 0; /** * @brief Clone a filter, to generate a copy. * * @return Copy of filter with state set to zero. */ virtual std::unique_ptr clone() const = 0; }; inline Filter::~Filter() {}