[bitboard] Implement BitBoard::as_bits; let rank and file take &u8 instead of usize

This commit is contained in:
Eryn Wells 2024-01-28 15:51:24 -08:00
parent 21c81f237a
commit 0f664f6c80

View file

@ -22,18 +22,18 @@ impl BitBoard {
BitBoard(0) BitBoard(0)
} }
pub fn new(bits: u64) -> BitBoard { pub const fn new(bits: u64) -> BitBoard {
BitBoard(bits) BitBoard(bits)
} }
pub fn rank(rank: usize) -> BitBoard { pub fn rank(rank: &u8) -> BitBoard {
assert!(rank < 8); debug_assert!(*rank < 8);
RANKS[rank] RANKS[*rank as usize]
} }
pub fn file(file: usize) -> BitBoard { pub fn file(file: &u8) -> BitBoard {
assert!(file < 8); debug_assert!(*file < 8);
FILES[file] FILES[*file as usize]
} }
pub fn ray(sq: Square, dir: Direction) -> BitBoard { pub fn ray(sq: Square, dir: Direction) -> BitBoard {
@ -56,6 +56,10 @@ impl BitBoard {
} }
impl BitBoard { impl BitBoard {
pub fn as_bits(&self) -> &u64 {
&self.0
}
pub fn is_empty(&self) -> bool { pub fn is_empty(&self) -> bool {
self.0 == 0 self.0 == 0
} }
@ -255,21 +259,22 @@ mod tests {
use chessfriend_core::Square; use chessfriend_core::Square;
#[test] #[test]
#[ignore]
fn display_and_debug() { fn display_and_debug() {
let bb = BitBoard::file(0) | BitBoard::file(3) | BitBoard::rank(7) | BitBoard::rank(4); let bb = BitBoard::file(&0) | BitBoard::file(&3) | BitBoard::rank(&7) | BitBoard::rank(&4);
println!("{}", &bb); println!("{}", &bb);
} }
#[test] #[test]
fn rank() { fn rank() {
assert_eq!(BitBoard::rank(0).0, 0xFF, "Rank 1"); assert_eq!(BitBoard::rank(&0).0, 0xFF, "Rank 1");
assert_eq!(BitBoard::rank(1).0, 0xFF00, "Rank 2"); assert_eq!(BitBoard::rank(&1).0, 0xFF00, "Rank 2");
assert_eq!(BitBoard::rank(2).0, 0xFF0000, "Rank 3"); assert_eq!(BitBoard::rank(&2).0, 0xFF0000, "Rank 3");
assert_eq!(BitBoard::rank(3).0, 0xFF000000, "Rank 4"); assert_eq!(BitBoard::rank(&3).0, 0xFF000000, "Rank 4");
assert_eq!(BitBoard::rank(4).0, 0xFF00000000, "Rank 5"); assert_eq!(BitBoard::rank(&4).0, 0xFF00000000, "Rank 5");
assert_eq!(BitBoard::rank(5).0, 0xFF0000000000, "Rank 6"); assert_eq!(BitBoard::rank(&5).0, 0xFF0000000000, "Rank 6");
assert_eq!(BitBoard::rank(6).0, 0xFF000000000000, "Rank 7"); assert_eq!(BitBoard::rank(&6).0, 0xFF000000000000, "Rank 7");
assert_eq!(BitBoard::rank(7).0, 0xFF00000000000000, "Rank 8"); assert_eq!(BitBoard::rank(&7).0, 0xFF00000000000000, "Rank 8");
} }
#[test] #[test]