1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-07-12 03:59:15 +00:00

Small cleanup in execute_uci_command()

With a little fall out in siblings functions...

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2011-01-09 15:57:18 +01:00
parent a8741bd59f
commit caa02b0e43
6 changed files with 41 additions and 42 deletions

View file

@ -75,8 +75,7 @@ int main(int argc, char* argv[]) {
if (argc <= 1) if (argc <= 1)
{ {
// Print copyright notice // Print copyright notice
cout << engine_name() cout << engine_name() << " by " << engine_author() << endl;
<< " by Tord Romstad, Marco Costalba, Joona Kiiski" << endl;
if (CpuHasPOPCNT) if (CpuHasPOPCNT)
cout << "Good! CPU has hardware POPCNT." << endl; cout << "Good! CPU has hardware POPCNT." << endl;

View file

@ -154,6 +154,8 @@ const string engine_name() {
return s.str(); return s.str();
} }
const string engine_author() { return "Tord Romstad, Marco Costalba and Joona Kiiski"; }
/// get_system_time() returns the current system time, measured in /// get_system_time() returns the current system time, measured in
/// milliseconds. /// milliseconds.

View file

@ -44,6 +44,7 @@
//// ////
extern const std::string engine_name(); extern const std::string engine_name();
extern const std::string engine_author();
extern int get_system_time(); extern int get_system_time();
extern int cpu_count(); extern int cpu_count();
extern int input_available(); extern int input_available();

View file

@ -65,24 +65,23 @@ bool execute_uci_command(const string& cmd) {
static Position pos(StartPositionFEN, false, 0); // The root position static Position pos(StartPositionFEN, false, 0); // The root position
UCIParser up(cmd); UCIParser up(cmd);
Value dummy;
string token; string token;
if (!(up >> token)) // operator>>() skips any whitespace up >> token; // operator>>() skips any whitespace
return true;
if (token == "quit") if (token == "quit")
return false; return false;
if (token == "go") else if (token == "go")
return go(pos, up); return go(pos, up);
if (token == "uci") else if (token == "uci")
{
cout << "id name " << engine_name() cout << "id name " << engine_name()
<< "\nid author Tord Romstad, Marco Costalba, Joona Kiiski\n"; << "\nid author " << engine_author()
print_uci_options(); << "\n" << options_to_uci()
cout << "uciok" << endl; << "\nuciok" << endl;
}
else if (token == "ucinewgame") else if (token == "ucinewgame")
pos.from_fen(StartPositionFEN, false); pos.from_fen(StartPositionFEN, false);
@ -95,22 +94,14 @@ bool execute_uci_command(const string& cmd) {
else if (token == "setoption") else if (token == "setoption")
set_option(up); set_option(up);
// The remaining commands are for debugging purposes only
else if (token == "d") else if (token == "d")
pos.print(); pos.print();
else if (token == "flip")
{
Position p(pos, pos.thread());
pos.flipped_copy(p);
}
else if (token == "eval") else if (token == "eval")
{
Value evalMargin;
cout << "Incremental mg: " << mg_value(pos.value()) cout << "Incremental mg: " << mg_value(pos.value())
<< "\nIncremental eg: " << eg_value(pos.value()) << "\nIncremental eg: " << eg_value(pos.value())
<< "\nFull eval: " << evaluate(pos, evalMargin) << endl; << "\nFull eval: " << evaluate(pos, dummy) << endl;
}
else if (token == "key") else if (token == "key")
cout << "key: " << hex << pos.get_key() cout << "key: " << hex << pos.get_key()
<< "\nmaterial key: " << pos.get_material_key() << "\nmaterial key: " << pos.get_material_key()
@ -119,6 +110,11 @@ bool execute_uci_command(const string& cmd) {
else if (token == "perft") else if (token == "perft")
perft(pos, up); perft(pos, up);
else if (token == "flip")
{
Position p(pos, pos.thread());
pos.flipped_copy(p);
}
else else
cout << "Unknown command: " << cmd << endl; cout << "Unknown command: " << cmd << endl;
@ -207,13 +203,14 @@ namespace {
bool go(Position& pos, UCIParser& up) { bool go(Position& pos, UCIParser& up) {
string token; string token;
int time[2] = {0, 0}, inc[2] = {0, 0};
int movesToGo = 0, depth = 0, nodes = 0, moveTime = 0;
bool infinite = false, ponder = false;
Move searchMoves[MOVES_MAX]; Move searchMoves[MOVES_MAX];
int movesToGo, depth, nodes, moveTime, numOfMoves;
bool infinite, ponder;
int time[2] = {0, 0}, inc[2] = {0, 0};
searchMoves[0] = MOVE_NONE; searchMoves[0] = MOVE_NONE;
infinite = ponder = false;
movesToGo = depth = nodes = moveTime = numOfMoves = 0;
while (up >> token) while (up >> token)
{ {
@ -239,7 +236,6 @@ namespace {
up >> moveTime; up >> moveTime;
else if (token == "searchmoves") else if (token == "searchmoves")
{ {
int numOfMoves = 0;
while (up >> token) while (up >> token)
searchMoves[numOfMoves++] = move_from_uci(pos, token); searchMoves[numOfMoves++] = move_from_uci(pos, token);

View file

@ -118,28 +118,29 @@ void init_uci_options() {
} }
/// print_uci_options() prints all the UCI options to the standard output, /// options_to_uci() returns a string with all the UCI options in chronological
/// in chronological insertion order (the idx field) and in the format /// insertion order (the idx field) and in the format defined by the UCI protocol.
/// defined by the UCI protocol.
void print_uci_options() { string options_to_uci() {
std::stringstream s;
for (size_t i = 0; i <= Options.size(); i++) for (size_t i = 0; i <= Options.size(); i++)
for (OptionsMap::const_iterator it = Options.begin(); it != Options.end(); ++it) for (OptionsMap::const_iterator it = Options.begin(); it != Options.end(); ++it)
if (it->second.idx == i) if (it->second.idx == i)
{ {
const Option& o = it->second; const Option& o = it->second;
cout << "\noption name " << it->first << " type " << o.type; s << "\noption name " << it->first << " type " << o.type;
if (o.type != "button") if (o.type != "button")
cout << " default " << o.defaultValue; s << " default " << o.defaultValue;
if (o.type == "spin") if (o.type == "spin")
cout << " min " << o.minValue << " max " << o.maxValue; s << " min " << o.minValue << " max " << o.maxValue;
break; break;
} }
cout << endl; return s.str();
} }

View file

@ -37,7 +37,7 @@ public:
private: private:
friend void init_uci_options(); friend void init_uci_options();
friend void print_uci_options(); friend std::string options_to_uci();
std::string defaultValue, currentValue, type; std::string defaultValue, currentValue, type;
size_t idx; size_t idx;
@ -75,6 +75,6 @@ typedef std::map<std::string, Option, CaseInsensitiveLess> OptionsMap;
extern OptionsMap Options; extern OptionsMap Options;
extern void init_uci_options(); extern void init_uci_options();
extern void print_uci_options(); extern std::string options_to_uci();
#endif // !defined(UCIOPTION_H_INCLUDED) #endif // !defined(UCIOPTION_H_INCLUDED)