[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