aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreug-vs <eugene@eug-vs.xyz>2023-01-21 00:59:52 +0300
committereug-vs <eugene@eug-vs.xyz>2023-01-21 00:59:52 +0300
commitcc0449ca27749b63986cb0b68a9d88201fe532f2 (patch)
tree8f2e5c9898f7267954b8129d58664087307c991c
parent46cbe2683efbbdef1e445722617ecf9905d92652 (diff)
downloadchessnost-cc0449ca27749b63986cb0b68a9d88201fe532f2.tar.gz
feat: add Square enum
-rw-r--r--src/bitboard.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/bitboard.rs b/src/bitboard.rs
index 0b62f87..a4b54e5 100644
--- a/src/bitboard.rs
+++ b/src/bitboard.rs
@@ -2,6 +2,7 @@ pub type Bitboard = u64;
/// Print bitboard on screen in the same way squares appear in memory
/// (i.e the board is actually flipped along X)
+#[allow(dead_code)]
pub fn print(bb: Bitboard) {
for index in 0..64 {
print!("{}", if bb >> index & 1 == 1 { "1" } else { "." });
@@ -34,6 +35,19 @@ pub fn bitscan(bb: Bitboard) -> u8 {
pop_count(bb - 1)
}
+/// Aliases to board square indexes
+#[allow(dead_code)]
+enum Square {
+ A1, B1, C1, D1, E1, F1, G1, H1,
+ A2, B2, C2, D2, E2, F2, G2, H2,
+ A3, B3, C3, D3, E3, F3, G3, H3,
+ A4, B4, C4, D4, E4, F4, G4, H4,
+ A5, B5, C5, D5, E5, F5, G5, H5,
+ A6, B6, C6, D6, E6, F6, G6, H6,
+ A7, B7, C7, D7, E7, F7, G7, H7,
+ A8, B8, C8, D8, E8, F8, G8, H8,
+}
+
#[cfg(test)]
mod tests {
use super::*;
@@ -63,5 +77,12 @@ mod tests {
fn test_bitscan_with_non_single_bb() {
bitscan(5);
}
+
+ #[test]
+ fn test_square_enum() {
+ assert_eq!(Square::A1 as u8, 0);
+ assert_eq!(Square::F1 as u8, 5);
+ assert_eq!(Square::H8 as u8, 63);
+ }
}