X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fposition.h;h=078ff5b79f23e9e2d85b943734f2c4713bbbb3bd;hb=02ef1f4496965b5ad8c26ac6bc18245eaffae2ea;hp=510875d86d3ca4e0e1d38687cf926f9a7295b315;hpb=15ac117ac492e3147b391aa0ee3665fe8876be63;p=stockfish diff --git a/src/position.h b/src/position.h index 510875d8..078ff5b7 100644 --- a/src/position.h +++ b/src/position.h @@ -185,6 +185,8 @@ private: void move_piece(Square from, Square to); template void do_castling(Color us, Square from, Square& to, Square& rfrom, Square& rto); + template + Key adjust_key50(Key k) const; // Data members Piece board[SQUARE_NB]; @@ -327,8 +329,14 @@ inline int Position::pawns_on_same_color_squares(Color c, Square s) const { } inline Key Position::key() const { - return st->rule50 < 14 ? st->key - : st->key ^ make_key((st->rule50 - 14) / 8); + return adjust_key50(st->key); +} + +template +inline Key Position::adjust_key50(Key k) const +{ + return st->rule50 < 14 - AfterMove + ? k : k ^ make_key((st->rule50 - (14 - AfterMove)) / 8); } inline Key Position::pawn_key() const {