[bitboard] Implement BitBoard::as_bits; let rank and file take &u8 instead of usize
This commit is contained in:
parent
21c81f237a
commit
0f664f6c80
1 changed files with 21 additions and 16 deletions
|
@ -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]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue