Use attacks_to() instead. No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
}
- // Template generate_piece_moves() with specializations
+ // Template generate_piece_moves() with specializations and overloads
template<PieceType>
MoveStack* generate_piece_moves(const Position&, MoveStack*, Color us, Bitboard);
if (blockSquares != EmptyBoardBB)
{
- // Pieces moves
mlist = generate_piece_moves<PAWN>(pos, mlist, us, blockSquares, pinned);
mlist = generate_piece_moves<KNIGHT>(pos, mlist, us, blockSquares, pinned);
mlist = generate_piece_moves<BISHOP>(pos, mlist, us, blockSquares, pinned);
}
-/// Position::square_is_attacked() checks whether the given side attacks the
-/// given square.
-
-bool Position::square_is_attacked(Square s, Color c) const {
-
- return (pawn_attacks(opposite_color(c), s) & pawns(c))
- || (piece_attacks<KNIGHT>(s) & knights(c))
- || (piece_attacks<KING>(s) & kings(c))
- || (piece_attacks<ROOK>(s) & rooks_and_queens(c))
- || (piece_attacks<BISHOP>(s) & bishops_and_queens(c));
-}
-
-
/// Position::attacks_to() computes a bitboard containing all pieces which
/// attacks a given square. There are two versions of this function: One
/// which finds attackers of both colors, and one which only finds the
| (piece_attacks<KING>(s) & pieces_of_type(KING));
}
-Bitboard Position::attacks_to(Square s, Color c) const {
-
- return attacks_to(s) & pieces_of_color(c);
-}
-
-
/// Position::piece_attacks_square() tests whether the piece on square f
/// attacks square t.
return bit_is_set(piece_attacks<Piece>(f), t);
}
+inline Bitboard Position::attacks_to(Square s, Color c) const {
+
+ return attacks_to(s) & pieces_of_color(c);
+}
+
+inline bool Position::square_is_attacked(Square s, Color c) const {
+
+ return attacks_to(s, c) != EmptyBoardBB;
+}
+
inline bool Position::pawn_is_passed(Color c, Square s) const {
return !(pawns(opposite_color(c)) & passed_pawn_mask(c, s));
}