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