1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 16:53:09 +00:00

Rename execute_uci_command() to uci_loop()

As a side effect now root position can be directly
allocated on the stack and doesn't need to be defined
static anymore.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2011-07-24 07:56:26 +01:00
parent 5b0c6b9bc0
commit dab1cd8af9
2 changed files with 62 additions and 63 deletions

View file

@ -37,7 +37,7 @@
using namespace std; using namespace std;
extern bool execute_uci_command(const string& cmd); extern void uci_loop();
extern void benchmark(int argc, char* argv[]); extern void benchmark(int argc, char* argv[]);
extern void kpk_bitbase_init(); extern void kpk_bitbase_init();
@ -68,11 +68,8 @@ int main(int argc, char* argv[]) {
if (CpuHasPOPCNT) if (CpuHasPOPCNT)
cout << "Good! CPU has hardware POPCNT." << endl; cout << "Good! CPU has hardware POPCNT." << endl;
// Wait for a command from the user, and passes this command to // Enter the UCI loop waiting for input
// execute_uci_command() and also intercepts EOF from stdin to uci_loop();
// ensure that we exit gracefully if the GUI dies unexpectedly.
string cmd;
while (getline(cin, cmd) && execute_uci_command(cmd)) {}
} }
else if (string(argv[1]) == "bench" && argc < 8) else if (string(argv[1]) == "bench" && argc < 8)
benchmark(argc, argv); benchmark(argc, argv);

View file

@ -35,7 +35,7 @@ using namespace std;
namespace { namespace {
// FEN string for the initial position // FEN string for the initial position
const string StartPositionFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; const char* StarFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
// Keep track of position keys along the setup moves (from start position to the // Keep track of position keys along the setup moves (from start position to the
// position just before to start searching). This is needed by draw detection // position just before to start searching). This is needed by draw detection
@ -49,66 +49,68 @@ namespace {
} }
/// execute_uci_command() takes a string as input, parses this text string as /// Wait for a command from the user, parse this text string as an UCI command,
/// an UCI command, and calls the appropriate functions. In addition to the /// and calls the appropriate functions. Also intercepts EOF from stdin to
/// UCI commands, the function also supports a few debug commands. /// ensure that we exit gracefully if the GUI dies unexpectedly. In addition to
/// the UCI commands, the function also supports a few debug commands.
bool execute_uci_command(const string& cmd) { void uci_loop() {
static Position pos(StartPositionFEN, false, 0); // The root position Position pos(StarFEN, false, 0); // The root position
string cmd, token;
istringstream is(cmd); while (getline(cin, cmd))
string token;
is >> skipws >> token;
if (token == "quit")
return false;
if (token == "go")
return go(pos, is);
if (token == "ucinewgame")
pos.from_fen(StartPositionFEN, false);
else if (token == "isready")
cout << "readyok" << endl;
else if (token == "position")
set_position(pos, is);
else if (token == "setoption")
set_option(is);
else if (token == "perft")
perft(pos, is);
else if (token == "d")
pos.print();
else if (token == "flip")
pos.flip();
else if (token == "eval")
{ {
read_evaluation_uci_options(pos.side_to_move()); istringstream is(cmd);
cout << trace_evaluate(pos) << endl;
is >> skipws >> token;
if (token == "quit")
break;
if (token == "go" && !go(pos, is))
break;
if (token == "ucinewgame")
pos.from_fen(StarFEN, false);
else if (token == "isready")
cout << "readyok" << endl;
else if (token == "position")
set_position(pos, is);
else if (token == "setoption")
set_option(is);
else if (token == "perft")
perft(pos, is);
else if (token == "d")
pos.print();
else if (token == "flip")
pos.flip();
else if (token == "eval")
{
read_evaluation_uci_options(pos.side_to_move());
cout << trace_evaluate(pos) << endl;
}
else if (token == "key")
cout << "key: " << hex << pos.get_key()
<< "\nmaterial key: " << pos.get_material_key()
<< "\npawn key: " << pos.get_pawn_key() << endl;
else if (token == "uci")
cout << "id name " << engine_name()
<< "\nid author " << engine_authors()
<< "\n" << Options.print_all()
<< "\nuciok" << endl;
else
cout << "Unknown command: " << cmd << endl;
} }
else if (token == "key")
cout << "key: " << hex << pos.get_key()
<< "\nmaterial key: " << pos.get_material_key()
<< "\npawn key: " << pos.get_pawn_key() << endl;
else if (token == "uci")
cout << "id name " << engine_name()
<< "\nid author " << engine_authors()
<< "\n" << Options.print_all()
<< "\nuciok" << endl;
else
cout << "Unknown command: " << cmd << endl;
return true;
} }
@ -128,7 +130,7 @@ namespace {
if (token == "startpos") if (token == "startpos")
{ {
fen = StartPositionFEN; fen = StarFEN;
is >> token; // Consume "moves" token if any is >> token; // Consume "moves" token if any
} }
else if (token == "fen") else if (token == "fen")