#ifndef STRATEGY__H #define STRATEGY__H #include "Config.hpp" class Strategy { public : static inline std::pair<std::string, int> endMovement{"", 0}; private : enum Type { Incremental, Sequential }; Type type; std::map<std::pair<std::string, std::string>, std::string> edges; std::map<std::string, bool> isDone; std::vector<std::string> defaultCycle; std::string initialState{"UNDEFINED"}; private : std::pair<std::string, int> getMovementSequential(const Config & c, const std::string & transition); std::pair<std::string, int> getMovementIncremental(const Config & c, const std::string & transition); public : Strategy(const std::vector<std::string_view> & lines); std::pair<std::string, int> getMovement(const Config & c, const std::string & transition); const std::string getInitialState() const; }; #endif