]> git.sesse.net Git - stockfish/blobdiff - src/uci.cpp
Better document square flipping helpers
[stockfish] / src / uci.cpp
index fc02cf60f69a20eec8cbb034b438865b9ab6d5f0..a2998e62abaed2611dd24851bcf076dae9247b96 100644 (file)
@@ -30,6 +30,8 @@
 
 using namespace std;
 
+extern void benchmark(istringstream& is);
+
 namespace {
 
   // FEN string of the initial position, normal chess
@@ -52,14 +54,17 @@ namespace {
 /// that we exit gracefully if the GUI dies unexpectedly. In addition to the UCI
 /// commands, the function also supports a few debug commands.
 
-void uci_loop() {
+void uci_loop(const string& args) {
 
   Position pos(StartFEN, false, 0); // The root position
   string cmd, token;
 
   while (token != "quit")
   {
-      if (!getline(cin, cmd)) // Block here waiting for input
+      if (!args.empty())
+          cmd = args;
+
+      else if (!getline(cin, cmd)) // Block here waiting for input
           cmd = "quit";
 
       istringstream is(cmd);
@@ -113,6 +118,9 @@ void uci_loop() {
       else if (token == "eval")
           cout << Eval::trace(pos) << endl;
 
+      else if (token == "bench")
+          benchmark(is);
+
       else if (token == "key")
           cout << "key: " << hex     << pos.key()
                << "\nmaterial key: " << pos.material_key()
@@ -124,6 +132,12 @@ void uci_loop() {
                << "\nuciok"      << endl;
       else
           cout << "Unknown command: " << cmd << endl;
+
+      if (!args.empty()) // Command line arguments have one-shot behaviour
+      {
+          Threads.wait_for_search_finished();
+          break;
+      }
   }
 }
 
@@ -204,13 +218,13 @@ namespace {
     while (is >> token)
     {
         if (token == "wtime")
-            is >> limits.times[WHITE];
+            is >> limits.time[WHITE];
         else if (token == "btime")
-            is >> limits.times[BLACK];
+            is >> limits.time[BLACK];
         else if (token == "winc")
-            is >> limits.incs[WHITE];
+            is >> limits.inc[WHITE];
         else if (token == "binc")
-            is >> limits.incs[BLACK];
+            is >> limits.inc[BLACK];
         else if (token == "movestogo")
             is >> limits.movestogo;
         else if (token == "depth")