#ifndef MDD_PROCESSORBASE_H #define MDD_PROCESSORBASE_H #include #include "Input.h" #include "Output.h" #include "IProcessor.h" #include "Registration.h" namespace mdd { class Registration; class ProcessorBase : public IProcessor{ private: std::string _type = ""; int _appendix = 0; std::string _base_config = ""; protected: ProcessorBase(const std::string& base_config); std::vector>processor_inputs; std::vector> processor_outputs; std::vector> modules; std::vector> inputs; std::vector> outputs; public: bool configure(const std::string& config) { return true; }; std::string getBaseConfiguration() override; std::string getID() override ; std::string setType(const std::string& type) override; std::string getType() override; std::string setAppendix(int appendix) override; int getAppendix() override; std::string addModule(std::shared_ptr module) override ; void removeModule(std::shared_ptr module) override; std::vector>& getInputParams() override; std::vector>& getOutputParams() override; size_t getNumInputs() override; size_t getNumOutputs() override; std::shared_ptr getInput(const std::string& id) override; std::shared_ptr getInput(size_t index) override; std::shared_ptr getOutput(const std::string& id) override; std::shared_ptr getOutput(size_t index) override; std::vector>& getModules(); size_t getNumModuls() override; std::shared_ptr getModule(size_t index) override; std::shared_ptr getModule(const std::string& id) override; bool connect(const std::string& output_id, const std::vector& input_ids); void disconnect() override; void load(const json& j) override; json dump() override; }; } #endif