X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=ac63c11c36e612a09aa59b4e779b39bc1c74fb2e;hp=8d1ba3598c2da91c9252bbdf39efa3be3fea3fda;hb=68e711aac603388d38490521cf336b535aa10c91;hpb=8f59de48f559e477dc383d5b51a0b842986758d0 diff --git a/src/position.h b/src/position.h index 8d1ba359..ac63c11c 100644 --- a/src/position.h +++ b/src/position.h @@ -79,13 +79,14 @@ enum CastleRights { /// must be passed as a parameter. struct StateInfo { - Bitboard pinners[2], pinned[2], dcCandidates[2], checkersBB; Key key, pawnKey, materialKey; int castleRights, rule50; Square epSquare; - Move lastMove; Value mgValue, egValue; + PieceType capture; + Bitboard checkersBB; + Move lastMove; StateInfo* previous; }; @@ -219,7 +220,9 @@ public: // Properties of moves bool pl_move_is_legal(Move m) const; + bool pl_move_is_legal(Move m, Bitboard pinned) const; bool move_is_check(Move m) const; + bool move_is_check(Move m, Bitboard dcCandidates) const; bool move_is_capture(Move m) const; bool move_is_deep_pawn_push(Move m) const; bool move_is_pawn_push_to_7th(Move m) const; @@ -240,7 +243,9 @@ public: bool square_is_weak(Square s, Color c) const; // Doing and undoing moves + void setStartState(const StateInfo& st); void do_move(Move m, StateInfo& st); + void do_move(Move m, StateInfo& st, Bitboard dcCandidates); void undo_move(Move m); void do_null_move(StateInfo& st); void undo_null_move(); @@ -287,6 +292,7 @@ public: static void init_piece_square_tables(); private: + // Initialization helper functions (used while setting up a position) void clear(); void put_piece(Piece p, Square s); @@ -306,8 +312,8 @@ private: template void update_checkers(Bitboard* pCheckersBB, Square ksq, Square from, Square to, Bitboard dcCandidates); - template - Bitboard hidden_checks(Color c, Square ksq, Bitboard& pinners) const; + template + Bitboard hidden_checkers(Color c) const; // Computing hash keys from scratch (for initialization and debugging) Key compute_key() const; @@ -560,6 +566,14 @@ inline Bitboard Position::checkers() const { return st->checkersBB; } +inline Bitboard Position::pinned_pieces(Color c) const { + return hidden_checkers(c); +} + +inline Bitboard Position::discovered_check_candidates(Color c) const { + return hidden_checkers(c); +} + inline bool Position::is_check() const { return st->checkersBB != EmptyBoardBB; }