diff --git a/board/src/position/position.rs b/board/src/position/position.rs index 26ac3cf..cdaa62b 100644 --- a/board/src/position/position.rs +++ b/board/src/position/position.rs @@ -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] }