X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=a40687e7797afe35afbcdc2fec61cd98eaaf2a82;hp=403ce398ddbbcfe93669de28422f23e1577a61f6;hb=2af2c67650c4ac2531e6ab2753830f91c0999876;hpb=820c5c25b649d6bdd51bed14a16efdc11719b588 diff --git a/src/position.h b/src/position.h index 403ce398..a40687e7 100644 --- a/src/position.h +++ b/src/position.h @@ -52,7 +52,7 @@ struct StateInfo { Piece capturedPiece; StateInfo* previous; Bitboard blockersForKing[COLOR_NB]; - Bitboard pinnersForKing[COLOR_NB]; + Bitboard pinners[COLOR_NB]; Bitboard checkSquares[PIECE_TYPE_NB]; }; @@ -105,8 +105,7 @@ public: // Checking Bitboard checkers() const; - Bitboard discovered_check_candidates() const; - Bitboard pinned_pieces(Color c) const; + Bitboard blockers_for_king(Color c) const; Bitboard check_squares(PieceType pt) const; // Attacks to/from a given square @@ -115,7 +114,6 @@ public: Bitboard attacks_from(PieceType pt, Square s) const; template Bitboard attacks_from(Square s) const; template Bitboard attacks_from(Square s, Color c) const; - template Bitboard pawn_attacks(Bitboard b) const; Bitboard slider_blockers(Bitboard sliders, Square s, Bitboard& pinners) const; // Properties of moves @@ -154,6 +152,8 @@ public: bool is_chess960() const; Thread* this_thread() const; bool is_draw(int ply) const; + bool has_game_cycle(int ply) const; + bool has_repeated() const; int rule50_count() const; Score psq_score() const; Value non_pawn_material(Color c) const; @@ -289,12 +289,6 @@ inline Bitboard Position::attacks_from(PieceType pt, Square s) const { return attacks_bb(pt, s, byTypeBB[ALL_PIECES]); } -template -inline Bitboard Position::pawn_attacks(Bitboard b) const { - return c == WHITE ? shift(b) | shift(b) - : shift(b) | shift(b); -} - inline Bitboard Position::attackers_to(Square s) const { return attackers_to(s, byTypeBB[ALL_PIECES]); } @@ -303,12 +297,8 @@ inline Bitboard Position::checkers() const { return st->checkersBB; } -inline Bitboard Position::discovered_check_candidates() const { - return st->blockersForKing[~sideToMove] & pieces(sideToMove); -} - -inline Bitboard Position::pinned_pieces(Color c) const { - return st->blockersForKing[c] & pieces(c); +inline Bitboard Position::blockers_for_king(Color c) const { + return st->blockersForKing[c]; } inline Bitboard Position::check_squares(PieceType pt) const { @@ -417,10 +407,10 @@ inline void Position::move_piece(Piece pc, Square from, Square to) { // index[from] is not updated and becomes stale. This works as long as index[] // is accessed just by known occupied squares. - Bitboard from_to_bb = SquareBB[from] ^ SquareBB[to]; - byTypeBB[ALL_PIECES] ^= from_to_bb; - byTypeBB[type_of(pc)] ^= from_to_bb; - byColorBB[color_of(pc)] ^= from_to_bb; + Bitboard fromTo = SquareBB[from] ^ SquareBB[to]; + byTypeBB[ALL_PIECES] ^= fromTo; + byTypeBB[type_of(pc)] ^= fromTo; + byColorBB[color_of(pc)] ^= fromTo; board[from] = NO_PIECE; board[to] = pc; index[to] = index[from];