X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fuci.cpp;h=f7ba2067ee509dbb3c5e735b49fe731712152faf;hp=b90240961e56ca803e2f3d30fdf3b7044f4f3a9e;hb=49b1c5dccd476229c06fd4a4b8dd94403c602396;hpb=fa49311b362a1ab6e4bd5263c7782b19fa59c41f diff --git a/src/uci.cpp b/src/uci.cpp index b9024096..f7ba2067 100644 --- a/src/uci.cpp +++ b/src/uci.cpp @@ -107,7 +107,8 @@ namespace { UCIInputParser uip(command); string token; - uip >> token; // operator>>() skips any whitespace + if (!(uip >> token)) // operator>>() skips any whitespace + return true; if (token == "quit") return false; @@ -124,7 +125,7 @@ namespace { } else if (token == "ucinewgame") { - push_button("Clear Hash"); + push_button("New Game"); Position::init_piece_square_tables(); RootPosition.from_fen(StartPosition); } @@ -148,8 +149,8 @@ namespace { else if (token == "eval") { EvalInfo ei; - cout << "Incremental mg: " << RootPosition.mg_value() - << "\nIncremental eg: " << RootPosition.eg_value() + cout << "Incremental mg: " << mg_value(RootPosition.value()) + << "\nIncremental eg: " << eg_value(RootPosition.value()) << "\nFull eval: " << evaluate(RootPosition, ei, 0) << endl; } else if (token == "key") @@ -159,14 +160,8 @@ namespace { else if (token == "perft") perft(uip); else - { cout << "Unknown command: " << command << endl; - while (!uip.eof()) - { - uip >> token; - cout << token << endl; - } - } + return true; } @@ -181,33 +176,33 @@ namespace { string token; - uip >> token; // operator>>() skips any whitespace + if (!(uip >> token)) // operator>>() skips any whitespace + return; if (token == "startpos") RootPosition.from_fen(StartPosition); else if (token == "fen") { string fen; - while (token != "moves" && !uip.eof()) + while (uip >> token && token != "moves") { - uip >> token; fen += token; fen += ' '; } RootPosition.from_fen(fen); } - if (!uip.eof()) + if (uip.good()) { if (token != "moves") uip >> token; + if (token == "moves") { Move move; StateInfo st; - while (!uip.eof()) + while (uip >> token) { - uip >> token; move = move_from_string(RootPosition, token); RootPosition.do_move(move, st); if (RootPosition.rule_50_counter() == 0) @@ -231,18 +226,14 @@ namespace { string token, name; - uip >> token; - if (token == "name") - { - uip >> name; - while (!uip.eof()) - { - uip >> token; - if (token == "value") - break; + if (!(uip >> token)) // operator>>() skips any whitespace + return; + if (token == "name" && uip >> name) + { + while (uip >> token && token != "value") name += (" " + token); - } + if (token == "value") { // Reads until end of line and left trim white space @@ -276,10 +267,8 @@ namespace { searchMoves[0] = MOVE_NONE; - while (!uip.eof()) + while (uip >> token) { - uip >> token; - if (token == "infinite") infinite = true; else if (token == "ponder") @@ -324,18 +313,16 @@ namespace { void perft(UCIInputParser& uip) { string token; - int depth = 0; + int depth, tm, n; + Position pos = RootPosition; - while (!uip.eof()) - { - uip >> token; + if (!(uip >> depth)) + return; + + tm = get_system_time(); + + n = perft(pos, depth * OnePly); - if (token == "depth") - uip >> depth; - } - Position pos = RootPosition; - int tm = get_system_time(); - int n = perft(pos, depth * OnePly); tm = get_system_time() - tm; std::cout << "\nNodes " << n << "\nTime (ms) " << tm