[board] Implement Position::occupied_squares and Position::empty_squares
These methods return bitboards marking the occupied and empty squares, made by ORing the two pieces_per_color bitboards.
This commit is contained in:
parent
2296be23cc
commit
1a986e4c27
1 changed files with 13 additions and 2 deletions
|
@ -93,6 +93,17 @@ impl Position {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
/// Return a BitBoard representing the set of squares containing a piece.
|
||||
pub(crate) fn occupied_squares(&self) -> BitBoard {
|
||||
self.pieces_per_color[Color::White as usize] | self.pieces_per_color[Color::Black as usize]
|
||||
}
|
||||
|
||||
/// Return a BitBoard representing the set of squares containing a piece. This set is the inverse of `occupied_squares`.
|
||||
pub(crate) fn empty_squares(&self) -> BitBoard {
|
||||
!(self.pieces_per_color[Color::White as usize]
|
||||
| self.pieces_per_color[Color::Black as usize])
|
||||
}
|
||||
|
||||
pub(crate) fn bitboard_for_piece(&self, piece: Piece) -> &BitBoard {
|
||||
&self.pieces_per_type[piece.color as usize][piece.shape as usize]
|
||||
}
|
||||
|
@ -101,11 +112,11 @@ impl Position {
|
|||
&mut self.pieces_per_type[piece.color as usize][piece.shape as usize]
|
||||
}
|
||||
|
||||
pub(self) fn bitboard_for_color(&self, color: Color) -> &BitBoard {
|
||||
pub(crate) fn bitboard_for_color(&self, color: Color) -> &BitBoard {
|
||||
&self.pieces_per_color[color as usize]
|
||||
}
|
||||
|
||||
pub(self) fn bitboard_for_color_mut(&mut self, color: Color) -> &mut BitBoard {
|
||||
fn bitboard_for_color_mut(&mut self, color: Color) -> &mut BitBoard {
|
||||
&mut self.pieces_per_color[color as usize]
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue