#ifndef MDD_ModuleBase_H #define MDD_ModuleBase_H #include "Input.h" #include "Output.h" #include "IModule.h" #include "Property.h" #include "Generator.h" namespace mdd { class ModuleBase : public IModule, protected Property{ private: std::string _prefix = ""; std::string _type = ""; int _appendix = 0; std::vector> _inputs; std::vector> _outputs; protected: virtual void configure() {}; std::shared_ptr getOutput(int handle); std::shared_ptr getInput(int handle); int addInput(const std::string& type, const std::vector& value); int addOutput(const std::string& type, const std::vector& initial); int pop_backInput(); int pop_backOutput(); int clearInput(); int clearOutput(); int eraseInput(int index); int eraseOutput(int index); IPropertyValue* GetPropertyValue(); std::shared_ptr GetSubProp(const std::string& name); public: std::vector getInputs() override; std::vector getInputIDs() override; std::vector getOutputs() override; std::vector getOutputIDs() override; std::vector getInputStates() override; std::vector getOutputStates() override; std::vector> getInputConnections() override; std::vector >> getOutputConnections() override; std::vector > getOptimizableInputs() override; std::vector > getOptimizableOutputs() override; std::shared_ptr getOutput(const std::string& output_id) override; std::shared_ptr getInput(const std::string& input_id) override; std::string setType(const std::string& type) override; std::string getType() override; std::string getID() override; std::string setPrefix(const std::string& prefix) override; std::string setAppendix(int appendix) override; void updateID() override ; }; } #endif //MDD_BASEMODULE_H