[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(())
 | 
					        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 {
 | 
					    pub(crate) fn bitboard_for_piece(&self, piece: Piece) -> &BitBoard {
 | 
				
			||||||
        &self.pieces_per_type[piece.color as usize][piece.shape as usize]
 | 
					        &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]
 | 
					        &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]
 | 
					        &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]
 | 
					        &mut self.pieces_per_color[color as usize]
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue