X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmove.cpp;h=1b33ff68f721993c42e2712b284fcd50c0d3d5a8;hp=a23702685d32b28c8aebb4313bd04e6552e3c5ac;hb=15153a1de71d2d36c1f95eecfcf036fb76565309;hpb=c89762288b0a9b016a20b596b3e2543c03cd233a diff --git a/src/move.cpp b/src/move.cpp index a2370268..1b33ff68 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,7 +179,7 @@ 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, +const string pretty_pv(Position& pos, int time, int depth, Value score, ValueType type, Move pv[]) { const int64_t K = 1000; @@ -187,13 +188,12 @@ const string pretty_pv(const Position& pos, int time, int depth, 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 ? " <" : " ") @@ -208,9 +208,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 +220,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(); }