is >> skipws >> token;
if (token == "quit" || token == "stop")
- Threads.stop_thinking();
+ {
+ Search::Signals.stop = true;
+
+ if (token == "quit") // Cannot quit while threads are still running
+ Threads.wait_for_search_finished();
+ }
else if (token == "ponderhit")
{
Search::Limits.ponder = false;
if (Search::Signals.stopOnPonderhit)
- Threads.stop_thinking();
+ Search::Signals.stop = true;
}
else if (token == "go")
go(pos, is);
- else if (token == "ucinewgame")
- pos.from_fen(StartFEN, false);
-
else if (token == "isready")
cout << "readyok" << endl;
pos.flip_me();
else if (token == "eval")
- {
- EvalRootColor = pos.side_to_move();
- cout << trace_evaluate(pos) << endl;
- }
+ cout << Eval::trace(pos) << endl;
else if (token == "key")
cout << "key: " << hex << pos.key()
while (is >> token)
value += string(" ", !value.empty()) + token;
- if (!Options.count(name))
- cout << "No such option: " << name << endl;
-
- else if (value.empty()) // UCI buttons don't have a value
- Options[name] = true;
-
- else
+ if (Options.count(name))
Options[name] = value;
+ else
+ cout << "No such option: " << name << endl;
}
limits.time = time[pos.side_to_move()];
limits.increment = inc[pos.side_to_move()];
- Threads.start_thinking(pos, limits, searchMoves, true);
+ Threads.start_searching(pos, limits, searchMoves, true);
}