From 757de8911f7ad12cfe2f72631aebdc323ab4fdd9 Mon Sep 17 00:00:00 2001 From: Franck Dary <franck.dary@lis-lab.fr> Date: Fri, 10 Apr 2020 22:25:41 +0200 Subject: [PATCH] Working tokeparser_seq --- reading_machine/src/Strategy.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/reading_machine/src/Strategy.cpp b/reading_machine/src/Strategy.cpp index 769420b..b540975 100644 --- a/reading_machine/src/Strategy.cpp +++ b/reading_machine/src/Strategy.cpp @@ -39,6 +39,8 @@ Strategy::Strategy(const std::vector<std::string_view> & lines) if (edges.empty()) util::myThrow("Strategy is empty"); + if (type == Type::Sequential) + defaultCycle.pop_back(); std::reverse(defaultCycle.begin(), defaultCycle.end()); originalDefaultCycle = defaultCycle; } @@ -50,18 +52,21 @@ std::pair<std::string, int> Strategy::getMovement(const Config & c, const std::s if (c.stateIsDone()) isDone[c.getState()] = true; - for (unsigned int i = 0; i < defaultCycle.size(); i++) + if (type == Type::Sequential) { + while (defaultCycle.size() && isDone[defaultCycle.back()]) + defaultCycle.pop_back(); + + return getMovementSequential(c, transitionPrefix); + } + + for (unsigned int i = 0; i < defaultCycle.size(); i++) if (isDone[defaultCycle[i]]) { while (defaultCycle.size() != i) defaultCycle.pop_back(); break; } - } - - if (type == Type::Sequential) - return getMovementSequential(c, transitionPrefix); return getMovementIncremental(c, transitionPrefix); } -- GitLab