9#ifndef TPGLIBS_ABSTRACTPROCESSOR_HPP_
10#define TPGLIBS_ABSTRACTPROCESSOR_HPP_
13#include <nlohmann/json.hpp>
25class AbstractProcessor {
36 virtual void configure(
const nlohmann::json& config,
const int16_t* plane_numbers) = 0;
Abstract signal processor.
T signal_type_t
Signal type to process on. General __m256i.
virtual T process(const T &signal)
Simple signal pass-through.
virtual ~AbstractProcessor()=default
virtual void attach_to_metric_collector(ProcessorMetricCollector< signal_type_t > &collector, size_t pipeline_id)
Register this processor and next processor with the metric collector.
std::shared_ptr< AbstractProcessor< T > > m_next_processor
Points to next processor in the chain.
virtual void save_metric_to_store_buffer()
Save metrics to store buffer; default does nothing.
virtual ProcessorMetricArray< signal_type_t > read_from_metric_store_buffer()
Read metrics from store buffer; default empty.
virtual void configure(const nlohmann::json &config, const int16_t *plane_numbers)=0
Pure virtual function that will configure the processor using plane numbers.
void set_next_processor(std::shared_ptr< AbstractProcessor< T > > next_processor)
Setter for next processor.
virtual std::vector< std::string > get_metric_items()
Returns the string name of metrics recorded (stored and can be read) for this processor.
void attach_processor(AbstractProcessor< signal_t > &processor, size_t pipeline_id)
Dynamic array of processor metrics, templated on signal type.