]> git.sesse.net Git - stockfish/blobdiff - src/ucioption.cpp
Add (smart) logging facility
[stockfish] / src / ucioption.cpp
index fe1a4709e706568487dccf431c072ae08b12416c..b4ed59dc2f33bdfe6582376aa0bfb9ec04216c7d 100644 (file)
@@ -33,6 +33,7 @@ OptionsMap Options; // Global object
 namespace {
 
 /// 'On change' actions, triggered by an option's value change
+void on_logger(const UCIOption& o) { logger_set(o); }
 void on_eval(const UCIOption&) { Eval::init(); }
 void on_threads(const UCIOption&) { Threads.read_uci_options(); }
 void on_hash_size(const UCIOption& o) { TT.set_size(o); }
@@ -58,6 +59,7 @@ OptionsMap::OptionsMap() {
   int msd = cpus < 8 ? 4 : 7;
   OptionsMap& o = *this;
 
+  o["Use Debug Log"]               = UCIOption(false, on_logger);
   o["Use Search Log"]              = UCIOption(false);
   o["Search Log Filename"]         = UCIOption("SearchLog.txt");
   o["Book File"]                   = UCIOption("book.bin");
@@ -122,7 +124,7 @@ UCIOption::UCIOption(bool v, Fn* f) : type("check"), min(0), max(0), idx(Options
 { defaultValue = currentValue = (v ? "true" : "false"); }
 
 UCIOption::UCIOption(Fn* f) : type("button"), min(0), max(0), idx(Options.size()), on_change(f)
-{ defaultValue = currentValue = "false"; }
+{}
 
 UCIOption::UCIOption(int v, int minv, int maxv, Fn* f) : type("spin"), min(minv), max(maxv), idx(Options.size()), on_change(f)
 { std::ostringstream ss; ss << v; defaultValue = currentValue = ss.str(); }
@@ -136,16 +138,14 @@ void UCIOption::operator=(const string& v) {
 
   assert(!type.empty());
 
-  if (   !v.empty()
-      && (type == "check" || type == "button") == (v == "true" || v == "false")
-      && (type != "spin" || (atoi(v.c_str()) >= min && atoi(v.c_str()) <= max)))
+  if (   (type == "button" || !v.empty())
+      && (type != "check"  || (v == "true" || v == "false"))
+      && (type != "spin"   || (atoi(v.c_str()) >= min && atoi(v.c_str()) <= max)))
   {
-      currentValue = v;
+      if (type != "button")
+          currentValue = v;
 
       if (on_change)
           (*on_change)(*this);
-
-      if (type == "button")
-          currentValue = "false";
   }
 }