[bitboard] Write some documentation; mark some methods const
- Implement BitBoard::is_populated(), the opposite of ::is_empty() - Write a bit of documentation for the BitBoard Library and for some methods on BitBoard - Mark a few methods as const
This commit is contained in:
parent
20182d4035
commit
3f6ffef9f3
2 changed files with 38 additions and 5 deletions
|
@ -67,16 +67,41 @@ impl BitBoard {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BitBoard {
|
impl BitBoard {
|
||||||
pub fn as_bits(&self) -> &u64 {
|
pub const fn as_bits(&self) -> &u64 {
|
||||||
&self.0
|
&self.0
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_empty(&self) -> bool {
|
/// Returns `true` if the [`BitBoard`] has no bits set.
|
||||||
|
///
|
||||||
|
/// ## Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use chessfriend_bitboard::BitBoard;
|
||||||
|
/// assert!(BitBoard::EMPTY.is_populated());
|
||||||
|
/// assert!(!BitBoard::FULL.is_populated());
|
||||||
|
/// assert!(!BitBoard::new(0b1000).is_populated());
|
||||||
|
/// ```
|
||||||
|
pub const fn is_empty(&self) -> bool {
|
||||||
self.0 == 0
|
self.0 == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_set(self, sq: Square) -> bool {
|
/// Returns `true` if the [`BitBoard`] has at least one bit set.
|
||||||
let square_bitboard: BitBoard = sq.into();
|
///
|
||||||
|
/// ## Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use chessfriend_bitboard::BitBoard;
|
||||||
|
/// assert!(!BitBoard::EMPTY.is_populated());
|
||||||
|
/// assert!(BitBoard::FULL.is_populated());
|
||||||
|
/// assert!(BitBoard::new(0b1).is_populated());
|
||||||
|
/// ```
|
||||||
|
pub const fn is_populated(&self) -> bool {
|
||||||
|
self.0 != 0
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns `true` if this [`BitBoard`] has the bit corresponding to `square` set.
|
||||||
|
pub fn is_set(self, square: Square) -> bool {
|
||||||
|
let square_bitboard: BitBoard = square.into();
|
||||||
!(self & square_bitboard).is_empty()
|
!(self & square_bitboard).is_empty()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +115,7 @@ impl BitBoard {
|
||||||
/// assert_eq!(BitBoard::new(0b01011110010).population_count(), 6);
|
/// assert_eq!(BitBoard::new(0b01011110010).population_count(), 6);
|
||||||
/// assert_eq!(BitBoard::FULL.population_count(), 64);
|
/// assert_eq!(BitBoard::FULL.population_count(), 64);
|
||||||
/// ```
|
/// ```
|
||||||
pub fn population_count(&self) -> u32 {
|
pub const fn population_count(&self) -> u32 {
|
||||||
self.0.count_ones()
|
self.0.count_ones()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,13 @@
|
||||||
// Eryn Wells <eryn@erynwells.me>
|
// Eryn Wells <eryn@erynwells.me>
|
||||||
|
|
||||||
|
//! # The BitBoard Library
|
||||||
|
//!
|
||||||
|
//! This module implements a collection of commonly used BitBoards that can be
|
||||||
|
//! looked up efficiently as needed.
|
||||||
|
//!
|
||||||
|
//! The `library()` method returns a static instance of a `Library`, which
|
||||||
|
//! provides getters for all available BitBoards.
|
||||||
|
|
||||||
use crate::BitBoard;
|
use crate::BitBoard;
|
||||||
use chessfriend_core::{Color, Direction, Square};
|
use chessfriend_core::{Color, Direction, Square};
|
||||||
use std::sync::OnceLock;
|
use std::sync::OnceLock;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue