/*
Stockfish, a UCI chess playing engine derived from Glaurung 2.1
Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
- Copyright (C) 2008-2013 Marco Costalba, Joona Kiiski, Tord Romstad
+ Copyright (C) 2008-2014 Marco Costalba, Joona Kiiski, Tord Romstad
Stockfish is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
return "0000";
if (type_of(m) == CASTLING && !chess960)
- to = (to > from ? FILE_G : FILE_C) | rank_of(from);
+ to = make_square(to > from ? FILE_G : FILE_C, rank_of(from));
- string move = square_to_string(from) + square_to_string(to);
+ string move = to_string(from) + to_string(to);
if (type_of(m) == PROMOTION)
move += PieceToChar[BLACK][promotion_type(m)]; // Lower case
{
san = PieceToChar[WHITE][pt]; // Upper case
- // Disambiguation if we have more then one piece of type 'pt' that can
- // reach 'to' with a legal move.
+ // A disambiguation occurs if we have more then one piece of type 'pt'
+ // that can reach 'to' with a legal move.
others = b = (pos.attacks_from(pc, to) & pos.pieces(us, pt)) ^ from;
while (b)
{
- Move move = make_move(pop_lsb(&b), to);
- if (!pos.legal(move, pos.pinned_pieces(pos.side_to_move())))
- others ^= from_sq(move);
+ Square sq = pop_lsb(&b);
+ if (!pos.legal(make_move(sq, to), pos.pinned_pieces(us)))
+ others ^= sq;
}
- if (others)
- {
- if (!(others & file_bb(from)))
- san += file_to_char(file_of(from));
+ if (!others)
+ { /* disambiguation is not needed */ }
- else if (!(others & rank_bb(from)))
- san += rank_to_char(rank_of(from));
+ else if (!(others & file_bb(from)))
+ san += to_char(file_of(from));
- else
- san += square_to_string(from);
- }
+ else if (!(others & rank_bb(from)))
+ san += to_char(rank_of(from));
+
+ else
+ san += to_string(from);
}
else if (pos.capture(m))
- san = file_to_char(file_of(from));
+ san = to_char(file_of(from));
if (pos.capture(m))
san += 'x';
- san += square_to_string(to);
+ san += to_string(to);
if (type_of(m) == PROMOTION)
san += string("=") + PieceToChar[WHITE][promotion_type(m)];
/// pretty_pv() formats human-readable search information, typically to be
/// appended to the search log file. It uses the two helpers below to pretty
-/// format time and score respectively.
+/// format the time and score respectively.
static string time_to_string(int64_t msecs) {
return s.str();
}
-string pretty_pv(Position& pos, int depth, Value value, int64_t msecs, Move pv[]) {
+string pretty_pv(Position& pos, int depth, Value value, uint64_t msecs, Move pv[]) {
- const int64_t K = 1000;
- const int64_t M = 1000000;
+ const uint64_t K = 1000;
+ const uint64_t M = 1000000;
std::stack<StateInfo> st;
Move* m = pv;