9#ifndef TPGLIBS_ABSTRACTPROCESSOR_HPP_
10#define TPGLIBS_ABSTRACTPROCESSOR_HPP_
13#include <nlohmann/json.hpp>
68 if (config.contains(
"requested_internal_states")) {
83 virtual void configure(
const nlohmann::json& config,
const int16_t* plane_numbers) = 0;
Abstract signal processor.
ProcessorInternalStateBufferManager< T > m_internal_state_buffer_manager
ProcessorInternalStateBufferManager< T > * _get_internal_state_buffer_manager()
std::atomic< uint64_t > m_samples
T signal_type_t
Signal type to process on. General __m256i.
virtual T process(const T &signal)
Simple signal pass-through.
virtual ~AbstractProcessor()=default
ProcessorInternalStateNameRegistry< T > m_internal_state_name_registry
virtual ProcessorMetricArray< std::array< int16_t, 16 > > read_internal_states_as_integer_array()
ProcessorInternalStateNameRegistry< T > * _get_internal_state_name_registry()
virtual void configure_internal_state_collection(const nlohmann::json &config)
Configure common internal state collection parameters.
virtual std::vector< std::string > get_requested_internal_state_names() const
Get the names of requested internal states (delegates to registry).
bool m_collect_internal_state_flag
std::shared_ptr< AbstractProcessor< T > > m_next_processor
Points to next processor in the chain.
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.
std::shared_ptr< AbstractProcessor< T > > get_next_processor()
Getter for next processor.
Manages the internal state storage buffers for a processor.
Registry of internal state names.
Dynamic array of processor metrics, templated on signal type.