[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 {
|
||||
pub fn as_bits(&self) -> &u64 {
|
||||
pub const fn as_bits(&self) -> &u64 {
|
||||
&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
|
||||
}
|
||||
|
||||
pub fn is_set(self, sq: Square) -> bool {
|
||||
let square_bitboard: BitBoard = sq.into();
|
||||
/// Returns `true` if the [`BitBoard`] has at least one bit set.
|
||||
///
|
||||
/// ## 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()
|
||||
}
|
||||
|
||||
|
@ -90,7 +115,7 @@ impl BitBoard {
|
|||
/// assert_eq!(BitBoard::new(0b01011110010).population_count(), 6);
|
||||
/// assert_eq!(BitBoard::FULL.population_count(), 64);
|
||||
/// ```
|
||||
pub fn population_count(&self) -> u32 {
|
||||
pub const fn population_count(&self) -> u32 {
|
||||
self.0.count_ones()
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
// 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 chessfriend_core::{Color, Direction, Square};
|
||||
use std::sync::OnceLock;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue