#ifndef MDD_PROCESSORSTANDARD_H #define MDD_PROCESSORSTANDARD_H #include "ProcessorBase.h" #include "Output.h" #include namespace mdd { enum priority { MANUAL, STATIC, DYNAMIC, TIME }; class ProcessorStandard : public ProcessorBase { private: struct module_priority{ std::shared_ptr module_ptr; size_t connectionCounter; size_t changeCounter; std::chrono::milliseconds runtime; module_priority(std::shared_ptr module, size_t connection = 0, size_t change = 0); }; std::vector _priority_list; public: int maxIterations; priority priorityEvaluation; ProcessorStandard(priority priorityEvaluation = MANUAL, int maxIterations = -1); std::string addModule(std::shared_ptr module) override; void removeModule(std::shared_ptr module) override; std::vector> getModulePriority(); state update() override; std::shared_ptr getIteration(); }; } #endif //MDD_PROCESSORMANUAL_H