[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 { 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 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); let opposing_pieces = self.pieces.bitboard_for_piece(&piece);
moves_from_opposing_square & opposing_pieces moves_from_opposing_square & opposing_pieces
}}; }};
} }
let checking_knights = checking_piece!(BitBoard::knight_moves, Piece::knight); let checking_knights = checking_piece!(BitBoard::knight_moves, knight);
let checking_bishops = checking_piece!(BitBoard::bishop_moves, Piece::bishop); let checking_bishops = checking_piece!(BitBoard::bishop_moves, bishop);
let checking_rooks = checking_piece!(BitBoard::rook_moves, Piece::rook); let checking_rooks = checking_piece!(BitBoard::rook_moves, rook);
let checking_queens = checking_piece!(BitBoard::queen_moves, Piece::queen); let checking_queens = checking_piece!(BitBoard::queen_moves, queen);
CheckingPieces::new( CheckingPieces::new(
checking_pawns, checking_pawns,