X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fuci.cpp;h=6bc387c1848ceacf9890d2b5d6d1fe3511a7819b;hp=fb2d3eac5834e7e9d8dc28b88dc7022cef7e96fa;hb=87fc9dcaa30017dcfd886b0f304a76a63dedc35e;hpb=348f8241041a26cd9458beb8098306099f44a46a diff --git a/src/uci.cpp b/src/uci.cpp index fb2d3eac..6bc387c1 100644 --- a/src/uci.cpp +++ b/src/uci.cpp @@ -1,7 +1,7 @@ /* Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2010 Marco Costalba, Joona Kiiski, Tord Romstad + Copyright (C) 2008-2012 Marco Costalba, Joona Kiiski, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,7 +24,6 @@ #include "evaluate.h" #include "misc.h" -#include "move.h" #include "position.h" #include "search.h" #include "thread.h" @@ -69,10 +68,7 @@ void uci_loop() { is >> skipws >> token; if (token == "quit" || token == "stop") - { - Search::Signals.stop = true; - Threads[0].wake_up(); // In case is waiting for stop or ponderhit - } + Threads.stop_thinking(); else if (token == "ponderhit") { @@ -82,9 +78,7 @@ void uci_loop() { Search::Limits.ponder = false; if (Search::Signals.stopOnPonderhit) - Search::Signals.stop = true; - - Threads[0].wake_up(); // In case is waiting for stop or ponderhit + Threads.stop_thinking(); } else if (token == "go") @@ -118,14 +112,13 @@ void uci_loop() { } else if (token == "key") - cout << "key: " << hex << pos.get_key() - << "\nmaterial key: " << pos.get_material_key() - << "\npawn key: " << pos.get_pawn_key() << endl; + cout << "key: " << hex << pos.key() + << "\nmaterial key: " << pos.material_key() + << "\npawn key: " << pos.pawn_key() << endl; else if (token == "uci") - cout << "id name " << engine_name() - << "\nid author " << engine_authors() - << "\n" << Options.print_all() + cout << "id name " << engine_info(true) + << "\n" << Options << "\nuciok" << endl; else cout << "Unknown command: " << cmd << endl; @@ -158,7 +151,7 @@ namespace { else return; - pos.from_fen(fen, Options["UCI_Chess960"].value()); + pos.from_fen(fen, Options["UCI_Chess960"]); // Parse move list (if any) while (is >> token && (m = move_from_uci(pos, token)) != MOVE_NONE) @@ -189,10 +182,14 @@ namespace { while (is >> token) value += string(" ", !value.empty()) + token; - if (Options.find(name) != Options.end()) - Options[name].set_value(value.empty() ? "true" : value); // UCI buttons don't have "value" - else + 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 + Options[name] = value; } @@ -234,7 +231,6 @@ namespace { searchMoves.push_back(move_from_uci(pos, token)); } - searchMoves.push_back(MOVE_NONE); limits.time = time[pos.side_to_move()]; limits.increment = inc[pos.side_to_move()]; @@ -253,11 +249,11 @@ namespace { if (!(is >> depth)) return; - time = get_system_time(); + time = system_time(); int64_t n = Search::perft(pos, depth * ONE_PLY); - time = get_system_time() - time; + time = system_time() - time; std::cout << "\nNodes " << n << "\nTime (ms) " << time