diff --git a/board/src/bitboard/bitboard.rs b/board/src/bitboard/bitboard.rs index 132f329..991c70f 100644 --- a/board/src/bitboard/bitboard.rs +++ b/board/src/bitboard/bitboard.rs @@ -1,5 +1,6 @@ // Eryn Wells +use super::library::{FILES, RANKS}; use super::BitScanner; use crate::Square; use std::fmt; @@ -17,14 +18,14 @@ impl BitBoard { BitBoard(bits) } - pub fn rank(rank: u8) -> BitBoard { + pub fn rank(rank: usize) -> BitBoard { assert!(rank < 8); - BitBoard(0xFF).shift_north(rank) + RANKS[rank] } - pub fn file(file: u8) -> BitBoard { + pub fn file(file: usize) -> BitBoard { assert!(file < 8); - BitBoard(0x0101010101010101).shift_east(file) + FILES[file] } pub fn is_empty(&self) -> bool { diff --git a/board/src/bitboard/library.rs b/board/src/bitboard/library.rs new file mode 100644 index 0000000..46f54b1 --- /dev/null +++ b/board/src/bitboard/library.rs @@ -0,0 +1,25 @@ +// Eryn Wells + +use super::BitBoard; + +pub(super) const RANKS: [BitBoard; 8] = [ + BitBoard(0xFF << 0 * 8), + BitBoard(0xFF << 1 * 8), + BitBoard(0xFF << 2 * 8), + BitBoard(0xFF << 3 * 8), + BitBoard(0xFF << 4 * 8), + BitBoard(0xFF << 5 * 8), + BitBoard(0xFF << 6 * 8), + BitBoard(0xFF << 7 * 8), +]; + +pub(super) const FILES: [BitBoard; 8] = [ + BitBoard(0x0101010101010101 << 0), + BitBoard(0x0101010101010101 << 1), + BitBoard(0x0101010101010101 << 2), + BitBoard(0x0101010101010101 << 3), + BitBoard(0x0101010101010101 << 4), + BitBoard(0x0101010101010101 << 5), + BitBoard(0x0101010101010101 << 6), + BitBoard(0x0101010101010101 << 7), +]; diff --git a/board/src/bitboard/mod.rs b/board/src/bitboard/mod.rs index 9bf08d1..02fd8bd 100644 --- a/board/src/bitboard/mod.rs +++ b/board/src/bitboard/mod.rs @@ -1,5 +1,6 @@ mod bit_scanner; mod bitboard; +mod library; mod shifts; pub(crate) use self::bit_scanner::BitScanner;