X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fuci.cpp;h=c9120ddbd7728c1b7dfc72cf6b6930118dc2f594;hb=412d68fe4f3e32b3314141a861554e18940ff556;hp=2f600037d0857fb34fab51d1a05671ad41d06adc;hpb=6ef44d4c4e1a81a55eb764438f3fc2f28429309c;p=stockfish
diff --git a/src/uci.cpp b/src/uci.cpp
index 2f600037..c9120ddb 100644
--- a/src/uci.cpp
+++ b/src/uci.cpp
@@ -1,17 +1,18 @@
/*
- Glaurung, a UCI chess playing engine.
- Copyright (C) 2004-2008 Tord Romstad
+ Stockfish, a UCI chess playing engine derived from Glaurung 2.1
+ Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
+ Copyright (C) 2008 Marco Costalba
- Glaurung is free software: you can redistribute it and/or modify
+ Stockfish is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-
- Glaurung is distributed in the hope that it will be useful,
+
+ Stockfish is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
@@ -21,6 +22,7 @@
//// Includes
////
+#include
#include
#include
#include
@@ -89,7 +91,7 @@ namespace {
// get_command() waits for a command from the user, and passes
// this command to handle_command. get_command also intercepts
// EOF from stdin, by translating EOF to the "quit" command. This
- // ensures that Glaurung exits gracefully if the GUI dies
+ // ensures that Stockfish exits gracefully if the GUI dies
// unexpectedly.
void get_command() {
@@ -107,7 +109,7 @@ namespace {
// UCIInputParser object to parse this text string as a UCI command,
// and calls the appropriate functions. In addition to the UCI
// commands, the function also supports a few debug commands.
-
+
void handle_command(const std::string &command) {
UCIInputParser uip(command);
@@ -124,8 +126,9 @@ namespace {
}
else if (token == "uci")
{
- std::cout << "id name " << engine_name() << std::endl;
- std::cout << "id author Tord Romstad" << std::endl;
+ std::cout << "id name " << engine_name() << std::endl
+ << "id author Tord Romstad, Marco Costalba"
+ << std::endl;
print_uci_options();
std::cout << "uciok" << std::endl;
}
@@ -167,12 +170,12 @@ namespace {
}
else if (token == "key")
{
- std::cout << "key: " << RootPosition.get_key()
+ std::cout << "key: " << std::hex << RootPosition.get_key()
<< " material key: " << RootPosition.get_material_key()
<< " pawn key: " << RootPosition.get_pawn_key()
<< std::endl;
- }
- else
+ }
+ else
{
std::cout << "Unknown command: " << command << std::endl;
while (!uip.eof())
@@ -184,7 +187,7 @@ namespace {
}
- // set_position() is called when Glaurung receives the "position" UCI
+ // set_position() is called when Stockfish receives the "position" UCI
// command. The input parameter is a UCIInputParser. It is assumed
// that this parser has consumed the first token of the UCI command
// ("position"), and is ready to read the second token ("startpos"
@@ -217,21 +220,24 @@ namespace {
if (token == "moves")
{
Move move;
- UndoInfo u;
+ StateInfo st;
while (!uip.eof())
{
uip >> token;
move = move_from_string(RootPosition, token);
- RootPosition.do_move(move, u);
+ RootPosition.do_move(move, st);
if (RootPosition.rule_50_counter() == 0)
RootPosition.reset_game_ply();
}
+ // Our StateInfo st is about going out of scope,
+ // so save its content before they disappear.
+ RootPosition.setStartState(st);
}
}
}
- // set_option() is called when Glaurung receives the "setoption" UCI
+ // set_option() is called when Stockfish receives the "setoption" UCI
// command. The input parameter is a UCIInputParser. It is assumed
// that this parser has consumed the first token of the UCI command
// ("setoption"), and is ready to read the second token ("name", if
@@ -245,11 +251,13 @@ namespace {
if (token == "name")
{
uip >> name;
- uip >> token;
- while (!uip.eof() && token != "value")
+ while (!uip.eof())
{
- name += (" " + token);
- uip >> token;
+ uip >> token;
+ if (token == "value")
+ break;
+
+ name += (" " + token);
}
if (token == "value")
{
@@ -261,7 +269,7 @@ namespace {
}
- // go() is called when Glaurung receives the "go" UCI command. The
+ // go() is called when Stockfish receives the "go" UCI command. The
// input parameter is a UCIInputParser. It is assumed that this
// parser has consumed the first token of the UCI command ("go"),
// and is ready to read the second token. The function sets the
@@ -319,8 +327,9 @@ namespace {
if (moveTime)
infinite = true; // HACK
- think(RootPosition, infinite, ponder, time[RootPosition.side_to_move()],
- inc[RootPosition.side_to_move()], movesToGo, depth, nodes, moveTime,
- searchMoves);
+ assert(RootPosition.is_ok());
+
+ think(RootPosition, infinite, ponder, RootPosition.side_to_move(), time,
+ inc, movesToGo, depth, nodes, moveTime, searchMoves);
}
}