#ifndef MDD_IModule_H #define MDD_IModule_H #include "IOutput.h" #include "IInput.h" #include "state.h" #include #include #include namespace mdd { class IOutput; class IModule : public IUnique{ public: typedef std::shared_ptr Ptr; virtual void updateID() = 0; virtual std::vector getInputs() = 0; virtual std::vector getOutputs() = 0; virtual std::vector getInputIDs() = 0; virtual std::vector getOutputIDs() = 0; virtual std::vector getInputStates() = 0; virtual std::vector getOutputStates() = 0; virtual std::shared_ptr getOutput(const std::string& output_id) = 0; virtual std::shared_ptr getInput(const std::string& input_id) = 0; virtual std::vector > getInputConnections() = 0; virtual std::vector >> getOutputConnections() = 0; virtual std::vector > getOptimizableInputs() = 0; virtual std::vector > getOptimizableOutputs() = 0; virtual state update() = 0; virtual ~IModule() = default; virtual bool configure(const std::string& config) = 0; virtual std::string getBaseConfiguration() = 0; }; } #endif //MDD_IMODULE_H