X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmove.cpp;h=12d6127a2fc4111872a051f8889f89498ff3551e;hp=a23702685d32b28c8aebb4313bd04e6552e3c5ac;hb=9069193125b753fe8d4c77ca690b5d1b907d848c;hpb=c89762288b0a9b016a20b596b3e2543c03cd233a diff --git a/src/move.cpp b/src/move.cpp index a2370268..12d6127a 100644 --- a/src/move.cpp +++ b/src/move.cpp @@ -30,6 +30,7 @@ #include "move.h" #include "movegen.h" +#include "search.h" using std::string; @@ -178,26 +179,23 @@ const string move_to_san(Position& pos, Move m) { /// It is used to write search information to the log file (which is created /// when the UCI parameter "Use Search Log" is "true"). -const string pretty_pv(const Position& pos, int time, int depth, - Value score, ValueType type, Move pv[]) { +const string pretty_pv(Position& pos, int depth, Value score, int time, Move pv[]) { const int64_t K = 1000; const int64_t M = 1000000; - const int startColumn = 29; + const int startColumn = 28; const size_t maxLength = 80 - startColumn; const string lf = string("\n") + string(startColumn, ' '); - StateInfo st; + StateInfo state[PLY_MAX_PLUS_2], *st = state; + Move* m = pv; std::stringstream s; string san; size_t length = 0; - Position p(pos, pos.thread()); - // First print depth, score, time and searched nodes... s << std::setw(2) << depth - << (type == VALUE_TYPE_LOWER ? " >" : type == VALUE_TYPE_UPPER ? " <" : " ") - << std::setw(7) << score_string(score) + << std::setw(8) << score_string(score) << std::setw(8) << time_string(time); if (pos.nodes_searched() < M) @@ -208,9 +206,9 @@ const string pretty_pv(const Position& pos, int time, int depth, s << std::setw(7) << pos.nodes_searched() / M << " M "; // ...then print the full PV line in short algebraic notation - for (Move* m = pv; *m != MOVE_NONE; m++) + while (*m != MOVE_NONE) { - san = move_to_san(p, *m); + san = move_to_san(pos, *m); length += san.length() + 1; if (length > maxLength) @@ -220,9 +218,12 @@ const string pretty_pv(const Position& pos, int time, int depth, } s << san << ' '; - p.do_move(*m, st); + pos.do_move(*m++, *st++); } + // Restore original position before to leave + while (m != pv) pos.undo_move(*--m); + return s.str(); }