Compare commits
	
		
			2 commits
		
	
	
		
			3a0541a2c3
			...
			182bf81126
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 182bf81126 | |||
| 3d73760146 | 
					 6 changed files with 35 additions and 45 deletions
				
			
		|  | @ -46,16 +46,6 @@ impl BitBoard { | |||
|     pub const EMPTY: BitBoard = BitBoard(u64::MIN); | ||||
|     pub const FULL: BitBoard = BitBoard(u64::MAX); | ||||
| 
 | ||||
|     #[deprecated(note = "Use BitBoard::EMPTY instead")] | ||||
|     pub const fn empty() -> BitBoard { | ||||
|         Self::EMPTY | ||||
|     } | ||||
| 
 | ||||
|     #[deprecated(note = "Use BitBoard::FULL instead")] | ||||
|     pub const fn full() -> BitBoard { | ||||
|         Self::FULL | ||||
|     } | ||||
| 
 | ||||
|     pub const fn new(bits: u64) -> BitBoard { | ||||
|         BitBoard(bits) | ||||
|     } | ||||
|  | @ -109,7 +99,7 @@ impl BitBoard { | |||
|     ///
 | ||||
|     /// ```
 | ||||
|     /// use chessfriend_bitboard::BitBoard;
 | ||||
|     /// assert!(BitBoard::empty().is_empty());
 | ||||
|     /// assert!(BitBoard::EMPTY.is_empty());
 | ||||
|     /// assert!(!BitBoard::full().is_empty());
 | ||||
|     /// assert!(!BitBoard::new(0b1000).is_empty());
 | ||||
|     /// ```
 | ||||
|  | @ -125,7 +115,7 @@ impl BitBoard { | |||
|     ///
 | ||||
|     /// ```
 | ||||
|     /// use chessfriend_bitboard::BitBoard;
 | ||||
|     /// assert!(!BitBoard::empty().is_populated());
 | ||||
|     /// assert!(!BitBoard::EMPTY.is_populated());
 | ||||
|     /// assert!(BitBoard::full().is_populated());
 | ||||
|     /// assert!(BitBoard::new(0b1).is_populated());
 | ||||
|     /// ```
 | ||||
|  | @ -564,8 +554,8 @@ mod tests { | |||
|         let b = bitboard![B5 G7 H3]; | ||||
| 
 | ||||
|         assert_eq!(a ^ b, bitboard![B5 C5 H3]); | ||||
|         assert_eq!(a ^ BitBoard::empty(), a); | ||||
|         assert_eq!(BitBoard::empty() ^ BitBoard::empty(), BitBoard::empty()); | ||||
|         assert_eq!(a ^ BitBoard::EMPTY, a); | ||||
|         assert_eq!(BitBoard::EMPTY ^ BitBoard::EMPTY, BitBoard::EMPTY); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|  |  | |||
|  | @ -110,14 +110,14 @@ pub(super) struct MoveLibrary { | |||
| impl MoveLibrary { | ||||
|     const fn new() -> MoveLibrary { | ||||
|         MoveLibrary { | ||||
|             rays: [[BitBoard::empty(); Direction::NUM]; Square::NUM], | ||||
|             pawn_attacks: [[BitBoard::empty(); Square::NUM]; Color::NUM], | ||||
|             pawn_pushes: [[BitBoard::empty(); Square::NUM]; Color::NUM], | ||||
|             knight_moves: [BitBoard::empty(); Square::NUM], | ||||
|             bishop_moves: [BitBoard::empty(); Square::NUM], | ||||
|             rook_moves: [BitBoard::empty(); Square::NUM], | ||||
|             queen_moves: [BitBoard::empty(); Square::NUM], | ||||
|             king_moves: [BitBoard::empty(); Square::NUM], | ||||
|             rays: [[BitBoard::EMPTY; Direction::NUM]; Square::NUM], | ||||
|             pawn_attacks: [[BitBoard::EMPTY; Square::NUM]; Color::NUM], | ||||
|             pawn_pushes: [[BitBoard::EMPTY; Square::NUM]; Color::NUM], | ||||
|             knight_moves: [BitBoard::EMPTY; Square::NUM], | ||||
|             bishop_moves: [BitBoard::EMPTY; Square::NUM], | ||||
|             rook_moves: [BitBoard::EMPTY; Square::NUM], | ||||
|             queen_moves: [BitBoard::EMPTY; Square::NUM], | ||||
|             king_moves: [BitBoard::EMPTY; Square::NUM], | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | @ -238,7 +238,7 @@ impl MoveLibrary { | |||
|     } | ||||
| 
 | ||||
|     fn _generate_ray(sq: BitBoard, shift: fn(&BitBoard) -> BitBoard) -> BitBoard { | ||||
|         let mut ray = BitBoard::empty(); | ||||
|         let mut ray = BitBoard::EMPTY; | ||||
| 
 | ||||
|         let mut iter = shift(&sq); | ||||
|         while !iter.is_empty() { | ||||
|  |  | |||
|  | @ -41,7 +41,7 @@ impl Movement for Piece { | |||
|                         let parameters = Board::castling_parameters(Wing::KingSide, color); | ||||
|                         parameters.target.king.into() | ||||
|                     } else { | ||||
|                         BitBoard::empty() | ||||
|                         BitBoard::EMPTY | ||||
|                     }; | ||||
| 
 | ||||
|                 let queenside_target_square = if board | ||||
|  | @ -51,7 +51,7 @@ impl Movement for Piece { | |||
|                     let parameters = Board::castling_parameters(Wing::QueenSide, color); | ||||
|                     parameters.target.king.into() | ||||
|                 } else { | ||||
|                     BitBoard::empty() | ||||
|                     BitBoard::EMPTY | ||||
|                 }; | ||||
| 
 | ||||
|                 self.sight(square, board) | kingside_target_square | queenside_target_square | ||||
|  | @ -99,11 +99,11 @@ mod tests { | |||
|     #[test] | ||||
|     fn white_pushes_empty_board() { | ||||
|         assert_eq!( | ||||
|             pawn_pushes(Square::E4.into(), Color::White, BitBoard::empty()), | ||||
|             pawn_pushes(Square::E4.into(), Color::White, BitBoard::EMPTY), | ||||
|             bitboard![E5] | ||||
|         ); | ||||
|         assert_eq!( | ||||
|             pawn_pushes(Square::E2.into(), Color::White, BitBoard::empty()), | ||||
|             pawn_pushes(Square::E2.into(), Color::White, BitBoard::EMPTY), | ||||
|             bitboard![E3 E4] | ||||
|         ); | ||||
|     } | ||||
|  | @ -111,11 +111,11 @@ mod tests { | |||
|     #[test] | ||||
|     fn black_pawn_empty_board() { | ||||
|         assert_eq!( | ||||
|             pawn_pushes(Square::A4.into(), Color::Black, BitBoard::empty()), | ||||
|             pawn_pushes(Square::A4.into(), Color::Black, BitBoard::EMPTY), | ||||
|             bitboard![A3] | ||||
|         ); | ||||
|         assert_eq!( | ||||
|             pawn_pushes(Square::B7.into(), Color::Black, BitBoard::empty()), | ||||
|             pawn_pushes(Square::B7.into(), Color::Black, BitBoard::EMPTY), | ||||
|             bitboard![B6 B5] | ||||
|         ); | ||||
|     } | ||||
|  | @ -124,7 +124,7 @@ mod tests { | |||
|     fn white_pushes_blocker() { | ||||
|         assert_eq!( | ||||
|             pawn_pushes(Square::C5.into(), Color::White, bitboard![C6]), | ||||
|             BitBoard::empty() | ||||
|             BitBoard::EMPTY | ||||
|         ); | ||||
|         assert_eq!( | ||||
|             pawn_pushes(Square::D2.into(), Color::White, bitboard![D4]), | ||||
|  | @ -132,7 +132,7 @@ mod tests { | |||
|         ); | ||||
|         assert_eq!( | ||||
|             pawn_pushes(Square::D2.into(), Color::White, bitboard![D3]), | ||||
|             BitBoard::empty() | ||||
|             BitBoard::EMPTY | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|  | @ -140,7 +140,7 @@ mod tests { | |||
|     fn black_pushes_blocker() { | ||||
|         assert_eq!( | ||||
|             pawn_pushes(Square::C5.into(), Color::Black, bitboard![C4]), | ||||
|             BitBoard::empty() | ||||
|             BitBoard::EMPTY | ||||
|         ); | ||||
|         assert_eq!( | ||||
|             pawn_pushes(Square::D7.into(), Color::Black, bitboard![D5]), | ||||
|  | @ -148,7 +148,7 @@ mod tests { | |||
|         ); | ||||
|         assert_eq!( | ||||
|             pawn_pushes(Square::D7.into(), Color::Black, bitboard![D6]), | ||||
|             BitBoard::empty() | ||||
|             BitBoard::EMPTY | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -51,11 +51,10 @@ impl PieceSet { | |||
|                 color_occupancy[color_index] |= bitboard; | ||||
|                 shape_occupancy[shape_index] |= bitboard; | ||||
| 
 | ||||
|                 counts.increment(color, shape); | ||||
| 
 | ||||
|                 for square in bitboard.occupied_squares(&IterationDirection::default()) { | ||||
|                     let piece = Piece::new(color, shape); | ||||
|                     mailbox.set(piece, square); | ||||
|                     counts.increment(color, shape); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  |  | |||
|  | @ -17,20 +17,21 @@ impl Counts { | |||
|         const SQUARE_NUM: u8 = Square::NUM as u8; | ||||
| 
 | ||||
|         let updated_value = self.0[color as usize][shape as usize] + 1; | ||||
|         if updated_value <= SQUARE_NUM { | ||||
|             self.0[color as usize][shape as usize] = updated_value; | ||||
|         } else { | ||||
|             unreachable!("piece count for {color} {shape} overflowed"); | ||||
|         if updated_value > SQUARE_NUM { | ||||
|             let shape_name = shape.name(); | ||||
|             panic!("piece count for {color} {shape_name} overflowed"); | ||||
|         } | ||||
| 
 | ||||
|         self.0[color as usize][shape as usize] = updated_value; | ||||
|     } | ||||
| 
 | ||||
|     pub fn decrement(&mut self, color: Color, shape: Shape) { | ||||
|         let count = self.0[color as usize][shape as usize]; | ||||
|         if let Some(updated_count) = count.checked_sub(1) { | ||||
|             self.0[color as usize][shape as usize] = updated_count; | ||||
|         } else { | ||||
|             unreachable!("piece count for {color} {shape} underflowed"); | ||||
|         } | ||||
|         let updated_count = count.checked_sub(1).unwrap_or_else(|| { | ||||
|             let shape_name = shape.name(); | ||||
|             panic!("piece count for {color} {shape_name} should not underflow"); | ||||
|         }); | ||||
|         self.0[color as usize][shape as usize] = updated_count; | ||||
|     } | ||||
| 
 | ||||
|     #[cfg(test)] | ||||
|  |  | |||
|  | @ -305,7 +305,7 @@ mod tests { | |||
|             let piece = piece!(White Pawn); | ||||
|             let sight = piece.sight(Square::E4, &pos); | ||||
| 
 | ||||
|             assert_eq!(sight, BitBoard::empty()); | ||||
|             assert_eq!(sight, BitBoard::EMPTY); | ||||
|         } | ||||
| 
 | ||||
|         #[test] | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue