]> git.sesse.net Git - stockfish/blobdiff - src/position.cpp
Use CheckInfo to store pinned bitboard
[stockfish] / src / position.cpp
index 32321b89c6fd51da27fa6ef3820c7ed02e026315..99445acdeadf223b6b7282c731f02801122c7135 100644 (file)
@@ -90,13 +90,14 @@ CheckInfo::CheckInfo(const Position& pos) {
 
   ksq = pos.king_square(them);
   dcCandidates = pos.discovered_check_candidates(us);
+  pinned = pos.pinned_pieces(us);
 
-  checkSq[PAWN] = pos.attacks_from<PAWN>(ksq, them);
+  checkSq[PAWN]   = pos.attacks_from<PAWN>(ksq, them);
   checkSq[KNIGHT] = pos.attacks_from<KNIGHT>(ksq);
   checkSq[BISHOP] = pos.attacks_from<BISHOP>(ksq);
-  checkSq[ROOK] = pos.attacks_from<ROOK>(ksq);
-  checkSq[QUEEN] = checkSq[BISHOP] | checkSq[ROOK];
-  checkSq[KING] = EmptyBoardBB;
+  checkSq[ROOK]   = pos.attacks_from<ROOK>(ksq);
+  checkSq[QUEEN]  = checkSq[BISHOP] | checkSq[ROOK];
+  checkSq[KING]   = EmptyBoardBB;
 }
 
 
@@ -746,11 +747,6 @@ bool Position::move_is_pl(const Move m) const {
 
 /// Position::move_gives_check() tests whether a pseudo-legal move is a check
 
-bool Position::move_gives_check(Move m) const {
-
-  return move_gives_check(m, CheckInfo(*this));
-}
-
 bool Position::move_gives_check(Move m, const CheckInfo& ci) const {
 
   assert(is_ok());
@@ -1788,10 +1784,14 @@ bool Position::is_mate() const {
 }
 
 
-/// Position::init_zobrist() is a static member function which initializes at
-/// startup the various arrays used to compute hash keys.
+/// Position::init() is a static member function which initializes at
+/// startup the various arrays used to compute hash keys and the piece
+/// square tables. The latter is a two-step operation: First, the white
+/// halves of the tables are copied from the MgPST[][] and EgPST[][] arrays.
+/// Second, the black halves of the tables are initialized by mirroring
+/// and changing the sign of the corresponding white scores.
 
-void Position::init_zobrist() {
+void Position::init() {
 
   RKISS rk;
 
@@ -1808,16 +1808,6 @@ void Position::init_zobrist() {
 
   zobSideToMove = rk.rand<Key>();
   zobExclusion  = rk.rand<Key>();
-}
-
-
-/// Position::init_piece_square_tables() initializes the piece square tables.
-/// This is a two-step operation: First, the white halves of the tables are
-/// copied from the MgPST[][] and EgPST[][] arrays. Second, the black halves
-/// of the tables are initialized by mirroring and changing the sign of the
-/// corresponding white scores.
-
-void Position::init_piece_square_tables() {
 
   for (Square s = SQ_A1; s <= SQ_H8; s++)
       for (Piece p = WP; p <= WK; p++)