ModuleBase.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifndef MDD_ModuleBase_H
  2. #define MDD_ModuleBase_H
  3. #include "Input.h"
  4. #include "Output.h"
  5. #include "IModule.h"
  6. #include "Property.h"
  7. #include "Generator.h"
  8. namespace mdd {
  9. class ModuleBase : public IModule, protected Property<bool>{
  10. private:
  11. std::string _prefix = "";
  12. std::string _type = "";
  13. int _appendix = 0;
  14. std::vector<std::shared_ptr<Input>> _inputs;
  15. std::vector<std::shared_ptr<Output>> _outputs;
  16. protected:
  17. virtual void configure() {};
  18. std::shared_ptr<IOutput> getOutput(int handle);
  19. std::shared_ptr<IInput> getInput(int handle);
  20. int addInput(const std::string& type, const std::vector<double>& value);
  21. int addOutput(const std::string& type, const std::vector<double>& initial);
  22. int pop_backInput();
  23. int pop_backOutput();
  24. int clearInput();
  25. int clearOutput();
  26. int eraseInput(int index);
  27. int eraseOutput(int index);
  28. IPropertyValue* GetPropertyValue();
  29. std::shared_ptr<IProperty> GetSubProp(const std::string& name);
  30. public:
  31. std::vector<std::string> getInputs() override;
  32. std::vector<std::string> getInputIDs() override;
  33. std::vector<std::string> getOutputs() override;
  34. std::vector<std::string> getOutputIDs() override;
  35. std::vector<state> getInputStates() override;
  36. std::vector<state> getOutputStates() override;
  37. std::vector<std::shared_ptr<IOutput>> getInputConnections() override;
  38. std::vector <std::vector <std::shared_ptr<IInput>>> getOutputConnections() override;
  39. std::vector <std::shared_ptr<IInput>> getOptimizableInputs() override;
  40. std::vector <std::shared_ptr<IOutput>> getOptimizableOutputs() override;
  41. std::shared_ptr<IOutput> getOutput(const std::string& output_id) override;
  42. std::shared_ptr<IInput> getInput(const std::string& input_id) override;
  43. std::string setType(const std::string& type) override;
  44. std::string getType() override;
  45. std::string getID() override;
  46. std::string setPrefix(const std::string& prefix) override;
  47. std::string setAppendix(int appendix) override;
  48. void updateID() override ;
  49. };
  50. }
  51. #endif //MDD_BASEMODULE_H