X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fuci.cpp;h=8178f1c1bd937c96fd9aa5f2f6890b6e3b3dbde2;hp=819e02bc96fec698f37a71013453f7230b2939c1;hb=b8fd1a78dc69f9baba2d8b0079e2d7844fe62958;hpb=9ba391c5cb1c138bb9828bc8d8be296ebddf1d72 diff --git a/src/uci.cpp b/src/uci.cpp index 819e02bc..8178f1c1 100644 --- a/src/uci.cpp +++ b/src/uci.cpp @@ -157,6 +157,7 @@ void UCI::loop(int argc, char* argv[]) { istringstream is(cmd); + token.clear(); // getline() could return empty or blank line is >> skipws >> token; if (token == "quit" || token == "stop" || token == "ponderhit") @@ -203,7 +204,7 @@ void UCI::loop(int argc, char* argv[]) { else if (token == "setoption") setoption(is); else if (token == "flip") pos.flip(); else if (token == "bench") benchmark(pos, is); - else if (token == "d") sync_cout << pos.pretty() << sync_endl; + else if (token == "d") sync_cout << pos << sync_endl; else if (token == "isready") sync_cout << "readyok" << sync_endl; else if (token == "eval") sync_cout << Eval::trace(pos) << sync_endl; else @@ -215,18 +216,18 @@ void UCI::loop(int argc, char* argv[]) { } -/// format_value() converts a Value to a string suitable for use with the UCI -/// protocol specifications: +/// Convert a Value to a string suitable for use with the UCI protocol +/// specifications: /// /// cp The score from the engine's point of view in centipawns. /// mate Mate in y moves, not plies. If the engine is getting mated /// use negative values for y. -string UCI::format_value(Value v, Value alpha, Value beta) { +string UCI::value(Value v, Value alpha, Value beta) { stringstream ss; - if (abs(v) < VALUE_MATE_IN_MAX_PLY) + if (abs(v) < VALUE_MATE - MAX_PLY) ss << "cp " << v * 100 / PawnValueEg; else ss << "mate " << (v > 0 ? VALUE_MATE - v + 1 : -VALUE_MATE - v) / 2; @@ -237,21 +238,21 @@ string UCI::format_value(Value v, Value alpha, Value beta) { } -/// format_square() converts a Square to a string (g1, a7, etc.) +/// Convert a Square to a string in algebraic notation (g1, a7, etc.) -std::string UCI::format_square(Square s) { +std::string UCI::square(Square s) { - char ch[] = { 'a' + file_of(s), '1' + rank_of(s), 0 }; // Zero-terminating - return ch; + char sq[] = { char('a' + file_of(s)), char('1' + rank_of(s)), 0 }; + return sq; } -/// format_move() converts a Move to a string in coordinate notation -/// (g1f3, a7a8q, etc.). The only special case is castling moves, where we print -/// in the e1g1 notation in normal chess mode, and in e1h1 notation in chess960 -/// mode. Internally castling moves are always encoded as "king captures rook". +/// Convert a Move to a string in pure coordinate notation (g1f3, a7a8q). The +/// only special case is castling moves, where we print in the e1g1 notation in +/// normal chess mode, and in e1h1 notation in chess960 mode. Internally +/// castling moves are always encoded as "king captures rook". -string UCI::format_move(Move m, bool chess960) { +string UCI::move(Move m, bool chess960) { Square from = from_sq(m); Square to = to_sq(m); @@ -265,7 +266,7 @@ string UCI::format_move(Move m, bool chess960) { if (type_of(m) == CASTLING && !chess960) to = make_square(to > from ? FILE_G : FILE_C, rank_of(from)); - string move = format_square(from) + format_square(to); + string move = UCI::square(from) + UCI::square(to); if (type_of(m) == PROMOTION) move += " pnbrqk"[promotion_type(m)]; @@ -274,8 +275,8 @@ string UCI::format_move(Move m, bool chess960) { } -/// to_move() takes a position and a string representing a move in -/// simple coordinate notation and returns an equivalent legal Move if any. +/// Convert a string representing a move in pure coordinate notation to the +/// corresponding legal Move, if any. Move UCI::to_move(const Position& pos, string& str) { @@ -283,7 +284,7 @@ Move UCI::to_move(const Position& pos, string& str) { str[4] = char(tolower(str[4])); for (MoveList it(pos); *it; ++it) - if (str == format_move(*it, pos.is_chess960())) + if (str == UCI::move(*it, pos.is_chess960())) return *it; return MOVE_NONE;