#ifndef MDD_ModuleBase_H #define MDD_ModuleBase_H #include "Input.h" #include "Output.h" #include "IModule.h" namespace mdd { class ModuleBase : public IModule{ private: std::string _name = ""; int _appendix = 0; std::string _base_config = ""; protected: ModuleBase(const std::string& base_config = "{}"); std::string type = "module"; std::string key; std::vector> inputs; std::vector> outputs; public: bool configure(const std::string& config); std::string getConfiguration() override; size_t getNumInputs() override; size_t getNumOutputs() override; std::shared_ptr getInput(size_t index) override; std::shared_ptr getInput(const std::string& id) override; std::shared_ptr getOutput(size_t index) override; std::shared_ptr getOutput(const std::string& id) override; std::vector> getOptimizableInputs() override; std::vector> getOptimizableOutputs() override; std::string getGeneratorKey() override; std::string getType() override; std::string setName(const std::string& name) override; std::string getName() override; std::string setAppendix(int appendix) override; int getAppendix() override; std::string getID() override; void load(const json& j) override; json dump() override; json getIdentifier() override; void disconnect() override; }; } #endif //MDD_BASEMODULE_H