]> git.sesse.net Git - stockfish/blobdiff - src/position.h
In Position backup and restore contiguous data
[stockfish] / src / position.h
index 94b7003373d817fe6f40be5b13701b4197c6fd20..02e3a2452fd6382c05e1b0a714c69aa775056ff3 100644 (file)
@@ -74,17 +74,16 @@ enum CastleRights {
 
 
 /// The UndoInfo struct stores information we need to restore a Position
-/// object to its previous state when we retract a move.  Whenever a move
+/// object to its previous state when we retract a move. Whenever a move
 /// is made on the board (by calling Position::do_move), an UndoInfo object
-/// must be passed as a parameter.  When the move is unmade (by calling
+/// must be passed as a parameter. When the move is unmade (by calling
 /// Position::undo_move), the same UndoInfo object must be passed again.
 
 struct UndoInfo {
-  int castleRights;
-  Square epSquare;
-  Bitboard checkersBB, pinners[2], pinned[2], dcCandidates[2];
+  Bitboard pinners[2], pinned[2], dcCandidates[2], checkersBB;
   Key key, pawnKey, materialKey;
-  int rule50;
+  int castleRights, rule50;
+  Square epSquare;
   Move lastMove;
   Value mgValue, egValue;
   PieceType capture;
@@ -326,8 +325,6 @@ private:
 
   // Bitboards
   Bitboard byColorBB[2], byTypeBB[8];
-  Bitboard checkersBB;
-  mutable Bitboard pinners[2], pinned[2], dcCandidates[2];
 
   // Board
   Piece board[64];
@@ -340,16 +337,21 @@ private:
   int index[64];
 
   // Other info
+  Square kingSquare[2];
   Color sideToMove;
-  int castleRights;
+  int gamePly;
+  Key history[MaxGameLength];
+  Value npMaterial[2];
   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;
-  Square kingSquare[2];
   Move lastMove;
-  Key key, pawnKey, materialKey, history[MaxGameLength];
-  int rule50, gamePly;
   Value mgValue, egValue;
-  Value npMaterial[2];
 
   // Static variables
   static int castleRightsMask[64];