IModule.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef MDD_IModule_H
  2. #define MDD_IModule_H
  3. #include "IOutput.h"
  4. #include "IInput.h"
  5. #include "IProperty.h"
  6. #include "state.h"
  7. #include <string>
  8. #include <vector>
  9. #include <memory>
  10. namespace mdd {
  11. class IOutput;
  12. class IModule : public IUnique, public IProperty{
  13. public:
  14. typedef std::shared_ptr<IModule> Ptr;
  15. virtual void updateID() = 0;
  16. virtual std::vector<std::string> getInputs() = 0;
  17. virtual std::vector<std::string> getOutputs() = 0;
  18. virtual std::vector<std::string> getInputIDs() = 0;
  19. virtual std::vector<std::string> getOutputIDs() = 0;
  20. virtual std::vector<state> getInputStates() = 0;
  21. virtual std::vector<state> getOutputStates() = 0;
  22. virtual std::shared_ptr<IOutput> getOutput(const std::string& output_id) = 0;
  23. virtual std::shared_ptr<IInput> getInput(const std::string& input_id) = 0;
  24. virtual std::vector <std::shared_ptr<IOutput>> getInputConnections() = 0;
  25. virtual std::vector <std::vector <std::shared_ptr<IInput>>> getOutputConnections() = 0;
  26. virtual std::vector <std::shared_ptr<IInput>> getOptimizableInputs() = 0;
  27. virtual std::vector <std::shared_ptr<IOutput>> getOptimizableOutputs() = 0;
  28. virtual state update() = 0;
  29. virtual ~IModule() = default;
  30. virtual void configure() = 0;
  31. };
  32. }
  33. #endif //MDD_IMODULE_H