From c091abf39690bcc484bb8b9e87527cb56ff9c7b6 Mon Sep 17 00:00:00 2001
From: Franck Dary <franck.dary@lis-lab.fr>
Date: Sun, 17 Mar 2019 11:54:35 +0100
Subject: [PATCH] Inproved debug print, and increased history sizes in order to
 allow longer backtacks

---
 transition_machine/include/Config.hpp  |  2 +-
 transition_machine/src/Action.cpp      | 12 +++++++++++-
 transition_machine/src/ActionBank.cpp  |  5 +----
 transition_machine/src/Config.cpp      |  2 +-
 transition_machine/src/FeatureBank.cpp |  4 ++--
 5 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/transition_machine/include/Config.hpp b/transition_machine/include/Config.hpp
index a1e4a6c..939bfff 100644
--- a/transition_machine/include/Config.hpp
+++ b/transition_machine/include/Config.hpp
@@ -134,7 +134,7 @@ class Config
 
   private :
 
-  const unsigned int HISTORY_SIZE = 100;
+  const unsigned int HISTORY_SIZE = 1000;
   /// @brief The name of the current state of the TransitionMachine.
   std::string currentStateName;
   /// @brief For each state of the TransitionMachine, an history of the Action that have been applied to this Config.
diff --git a/transition_machine/src/Action.cpp b/transition_machine/src/Action.cpp
index 32dcce8..fabde9d 100644
--- a/transition_machine/src/Action.cpp
+++ b/transition_machine/src/Action.cpp
@@ -32,7 +32,13 @@ void Action::undo(Config & config)
   for(int i = sequence.size()-1; i >= 0; i--)
     sequence[i].undo(config, sequence[i]);
 
+  if (ProgramParameters::debug)
+    fprintf(stderr, "Undoing action <%s><%s>, state history size = %d past actions size = %d...", stateName.c_str(), name.c_str(), config.getStateHistory(stateName).size(), config.pastActions.size());
+
   config.getStateHistory(stateName).pop();
+
+  if (ProgramParameters::debug)
+    fprintf(stderr, "done\n");
 }
 
 void Action::undoOnlyStack(Config & config)
@@ -49,8 +55,12 @@ void Action::undoOnlyStack(Config & config)
   }
 
   if (ProgramParameters::debug)
-    fprintf(stderr, "Undoing action <%s>, history size = %d\n", name.c_str(), config.getStateHistory(stateName).size());
+    fprintf(stderr, "Undoing only stack action <%s><%s>, state history size = %d past actions size = %d...", stateName.c_str(), name.c_str(), config.getStateHistory(stateName).size(), config.pastActions.size());
+
   config.getStateHistory(stateName).pop();
+
+  if (ProgramParameters::debug)
+    fprintf(stderr, "done\n");
 }
 
 Action::Action(const std::string & name)
diff --git a/transition_machine/src/ActionBank.cpp b/transition_machine/src/ActionBank.cpp
index 9306c79..7a304b6 100644
--- a/transition_machine/src/ActionBank.cpp
+++ b/transition_machine/src/ActionBank.cpp
@@ -521,8 +521,7 @@ std::vector<Action::BasicAction> ActionBank::str2sequence(const std::string & na
             while (true)
             {
               auto a = c.pastActions.pop();
-              if (ProgramParameters::debug)
-                fprintf(stderr, "Undoing... <%s><%s>\n", a.first.c_str(), a.second.name.c_str());
+
               a.second.undoOnlyStack(c);
 
               if (a.first == classifierName)
@@ -543,8 +542,6 @@ std::vector<Action::BasicAction> ActionBank::str2sequence(const std::string & na
                 exit(1);
               }
               auto a = c.pastActions.pop();
-              if (ProgramParameters::debug)
-                fprintf(stderr, "Undoing... <%s><%s>\n", a.first.c_str(), a.second.name.c_str());
 
               if (a.first == classifierName)
               {
diff --git a/transition_machine/src/Config.cpp b/transition_machine/src/Config.cpp
index 166a6a9..ebd87de 100644
--- a/transition_machine/src/Config.cpp
+++ b/transition_machine/src/Config.cpp
@@ -5,7 +5,7 @@
 #include "Action.hpp"
 #include "ProgramOutput.hpp"
 
-Config::Config(BD & bd, const std::string inputFilename) : bd(bd), hashHistory(90), pastActions(100)
+Config::Config(BD & bd, const std::string inputFilename) : bd(bd), hashHistory(HISTORY_SIZE), pastActions(HISTORY_SIZE)
 {
   this->outputFile = nullptr;
   this->stackHistory = -1;
diff --git a/transition_machine/src/FeatureBank.cpp b/transition_machine/src/FeatureBank.cpp
index bf8f67f..47d9f7a 100644
--- a/transition_machine/src/FeatureBank.cpp
+++ b/transition_machine/src/FeatureBank.cpp
@@ -22,9 +22,9 @@ std::function<FeatureModel::FeatureValue(Config &)> FeatureBank::str2func(const
     std::string object(parts[0]);
     int from = std::stoi(parts[1]);
     int to = std::stoi(parts[2]);
-    if (from > to || from > 0 || to < 0)
+    if (from > to)
     {
-      fprintf(stderr, "ERROR (%s) : invalid feature \'%s\'. Aborting.\n", ERRINFO, s.c_str());
+      fprintf(stderr, "ERROR (%s) : invalid feature \'%s\' (from=%d to=%d). Aborting.\n", ERRINFO, s.c_str(), from, to);
       exit(1);
     }
     std::vector<std::string> exceptions;
-- 
GitLab