[position] Make the checking_piece! macro handle specifying the path to the piece constructor

This commit is contained in:
Eryn Wells 2024-02-02 07:25:59 -08:00
parent 032fabe072
commit f09376f5dc

View file

@ -265,19 +265,19 @@ impl Position {
};
macro_rules! checking_piece {
($moves_bb_fn:path, $piece_fn:path) => {{
($moves_bb_fn:path, $piece_fn:ident) => {{
let moves_from_opposing_square = $moves_bb_fn(king_square);
let piece = $piece_fn(opponent);
let piece = Piece::$piece_fn(opponent);
let opposing_pieces = self.pieces.bitboard_for_piece(&piece);
moves_from_opposing_square & opposing_pieces
}};
}
let checking_knights = checking_piece!(BitBoard::knight_moves, Piece::knight);
let checking_bishops = checking_piece!(BitBoard::bishop_moves, Piece::bishop);
let checking_rooks = checking_piece!(BitBoard::rook_moves, Piece::rook);
let checking_queens = checking_piece!(BitBoard::queen_moves, Piece::queen);
let checking_knights = checking_piece!(BitBoard::knight_moves, knight);
let checking_bishops = checking_piece!(BitBoard::bishop_moves, bishop);
let checking_rooks = checking_piece!(BitBoard::rook_moves, rook);
let checking_queens = checking_piece!(BitBoard::queen_moves, queen);
CheckingPieces::new(
checking_pawns,