X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=aaed663b79209620a490d276bc6b86a34c879d2f;hp=02e3a2452fd6382c05e1b0a714c69aa775056ff3;hb=1dc27f3232d21e3d43df21f99a1ee22b72bb8ba0;hpb=95cfc0e3069e2bd573e37c42785a1d7b287295c2 diff --git a/src/position.h b/src/position.h index 02e3a245..aaed663b 100644 --- a/src/position.h +++ b/src/position.h @@ -240,8 +240,6 @@ public: bool square_is_weak(Square s, Color c) const; // Doing and undoing moves - void backup(UndoInfo &u) const; - void restore(const UndoInfo &u); void do_move(Move m, UndoInfo &u); void undo_move(Move m, const UndoInfo &u); void do_null_move(UndoInfo &u); @@ -345,13 +343,19 @@ private: File initialKFile, initialKRFile, initialQRFile; // Info backed up in do_move() - mutable Bitboard pinners[2], pinned[2], dcCandidates[2]; - Bitboard checkersBB; - Key key, pawnKey, materialKey; - int castleRights, rule50; - Square epSquare; - Move lastMove; - Value mgValue, egValue; + union { + UndoInfo undoInfoUnion; + struct { // Must have the same layout of UndoInfo + mutable Bitboard pinners[2], pinned[2], dcCandidates[2]; + Bitboard checkersBB; + Key key, pawnKey, materialKey; + int castleRights, rule50; + Square epSquare; + Move lastMove; + Value mgValue, egValue; + PieceType capture; + }; + }; // Static variables static int castleRightsMask[64];