ProcessorBase.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "ProcessorBase.h"
  2. namespace mdd{
  3. void ProcessorBase::setType(std:: string type){
  4. _type=type;
  5. }
  6. std::string ProcessorBase::getType(){
  7. return _type;
  8. }
  9. std::string ProcessorBase::addModule(std::shared_ptr<IModule> module){
  10. _modules.emplace_back(module);
  11. _modules[_modules.size()-1]->setPrefix(getID());
  12. return _modules[_modules.size()-1]->getID();
  13. }
  14. std::string ProcessorBase::addModuleInput(std::string moduleHandler, std::string inputHandler){
  15. _module_inputs.emplace_back(HandlerModule(moduleHandler, inputHandler));
  16. return _module_inputs[_module_inputs.size()-1].accessHandler;
  17. }
  18. json& ProcessorBase::setInputDefaultValue(int handle){
  19. return _modules[_module_inputs[handle].moduleHandler]->setInputDefaultValue(_module_inputs[handle].accessHandler);
  20. }
  21. const json& ProcessorBase::getInputValue(int handle){
  22. _modules[_module_inputs[handle].moduleHandler]->getInputValue(_module_inputs[handle].accessHandler);
  23. }
  24. bool ProcessorBase::connectInput(std::string input_id, std::shared_ptr<IOutput> output){
  25. auto module_handler = std::find(_module_inputs.begin(),_module_inputs.end(), input_id);
  26. if (module_handler != _module_inputs.end()){
  27. auto handler = std::find(_modules.begin(),_modules.end(), module_handler->moduleHandler);
  28. if(handler != _modules.end()){
  29. return (*handler)->connectInput(module_handler->accessHandler, output);
  30. }
  31. } else{
  32. auto procesor_handler = std::find(_processor_inputs.begin(),_processor_inputs.end(), input_id);
  33. if (procesor_handler != _processor_inputs.end()){
  34. if (procesor_handler->verification(output->getValue())) {
  35. procesor_handler->output = output;
  36. return true;
  37. }
  38. }
  39. }
  40. return false;
  41. }
  42. std::vector<std::string> ProcessorBase::getInputs(){
  43. std::vector<std::string> ret;
  44. for (auto &input : _module_inputs) {
  45. ret.push_back(_modules[input.moduleHandler]->getOutput(input.accessHandler)->getType());
  46. }
  47. return ret;
  48. }
  49. std::vector<std::string> ProcessorBase::getOutputs(){
  50. std::vector<std::string> ret;
  51. for (auto &output : _module_outputs) {
  52. ret.push_back(_modules[output.moduleHandler]->getOutput(output.accessHandler)->getType());
  53. }
  54. return ret;
  55. }
  56. std::shared_ptr<IOutput> ProcessorBase::getOutput(int handle){
  57. return _modules[_module_outputs[handle].moduleHandler]->getOutput(_module_outputs[handle].accessHandler);
  58. }
  59. std::vector<std::string> ProcessorBase::getModules(){
  60. std::vector<std::string> ret;
  61. for (auto &module : _modules) {
  62. ret.push_back(module->getType());
  63. }
  64. return ret;
  65. }
  66. std::shared_ptr<IModule> ProcessorBase::getModule(int handle){
  67. return _modules[handle];
  68. }
  69. int ProcessorBase::addOutput(int moduleHandler, int outputHandler){
  70. _module_outputs.emplace_back(HandlerModule(moduleHandler, outputHandler));
  71. return _module_outputs.size()-1;
  72. }
  73. }