Skip to content
Snippets Groups Projects
Strategy.hpp 866 B
Newer Older
Franck Dary's avatar
Franck Dary committed
#ifndef STRATEGY__H
#define STRATEGY__H

#include "Config.hpp"

Franck Dary's avatar
Franck Dary committed
class Strategy
{
Franck Dary's avatar
Franck Dary committed
  public :

  static inline std::pair<std::string, int> endMovement{"", 0};

Franck Dary's avatar
Franck Dary committed
  private :

  enum Type
  {
    Incremental,
    Sequential
  };

  Type type;
  std::map<std::pair<std::string, std::string>, std::string> edges;
Franck Dary's avatar
Franck Dary committed
  std::map<std::string, bool> isDone;
  std::vector<std::string> defaultCycle;
  std::string initialState{"UNDEFINED"};
Franck Dary's avatar
Franck Dary committed

  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);
Franck Dary's avatar
Franck Dary committed

  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;
Franck Dary's avatar
Franck Dary committed
#endif