[board] Reorganize bitboard and position modules and export some symbols from the crate
Move position.rs to the position module and create a mod.rs. Do the same for bitboard.rs in the bitboard modules. Export Color, Piece, Position, and Square and use crate::Thing directly instead of referring to the symbol in the nested modules.
This commit is contained in:
parent
d2d33a4915
commit
758a3d95fc
7 changed files with 32 additions and 18 deletions
|
@ -1,9 +1,7 @@
|
||||||
// Eryn Wells <eryn@erynwells.me>
|
// Eryn Wells <eryn@erynwells.me>
|
||||||
|
|
||||||
mod bit_scanner;
|
use super::BitScanner;
|
||||||
|
use crate::Square;
|
||||||
use self::bit_scanner::BitScanner;
|
|
||||||
use crate::square::Square;
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::ops::{BitAnd, BitOr, Not};
|
use std::ops::{BitAnd, BitOr, Not};
|
||||||
|
|
||||||
|
@ -154,7 +152,7 @@ impl BitOr<&BitBoard> for BitBoard {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::square::Square;
|
use crate::Square;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn is_empty() {
|
fn is_empty() {
|
5
board/src/bitboard/mod.rs
Normal file
5
board/src/bitboard/mod.rs
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
mod bit_scanner;
|
||||||
|
mod bitboard;
|
||||||
|
|
||||||
|
pub(crate) use self::bit_scanner::BitScanner;
|
||||||
|
pub(crate) use self::bitboard::BitBoard;
|
|
@ -3,3 +3,7 @@ mod neighbor;
|
||||||
mod piece;
|
mod piece;
|
||||||
mod position;
|
mod position;
|
||||||
mod square;
|
mod square;
|
||||||
|
|
||||||
|
pub use piece::{Color, Piece};
|
||||||
|
pub use position::Position;
|
||||||
|
pub use square::Square;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// Eryn Wells <eryn@erynwells.me>
|
// Eryn Wells <eryn@erynwells.me>
|
||||||
|
|
||||||
use crate::square::Square;
|
use crate::Square;
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
pub enum Color {
|
pub enum Color {
|
||||||
|
|
5
board/src/position/mod.rs
Normal file
5
board/src/position/mod.rs
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
mod pieces;
|
||||||
|
mod position;
|
||||||
|
|
||||||
|
pub use pieces::Pieces;
|
||||||
|
pub use position::Position;
|
|
@ -1,10 +1,9 @@
|
||||||
// Eryn Wells <eryn@erynwells.me>
|
// Eryn Wells <eryn@erynwells.me>
|
||||||
|
|
||||||
|
use super::Position;
|
||||||
use crate::bitboard::BitBoard;
|
use crate::bitboard::BitBoard;
|
||||||
use crate::piece::{Color, Piece, PlacedPiece, Shape};
|
use crate::piece::{Color, Piece, PlacedPiece, Shape};
|
||||||
use crate::position::Position;
|
use crate::Square;
|
||||||
use crate::square::Square;
|
|
||||||
use std::collections::HashSet;
|
|
||||||
|
|
||||||
pub struct Pieces<'a> {
|
pub struct Pieces<'a> {
|
||||||
color: Color,
|
color: Color,
|
||||||
|
@ -89,8 +88,9 @@ impl<'a> Iterator for Pieces<'a> {
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::piece::{Color, Piece, Shape};
|
use crate::piece::{Color, Piece, Shape};
|
||||||
use crate::position::Position;
|
use crate::Position;
|
||||||
use crate::square::Square;
|
use crate::Square;
|
||||||
|
use std::collections::HashSet;
|
||||||
|
|
||||||
fn square_at(sq: &str) -> Square {
|
fn square_at(sq: &str) -> Square {
|
||||||
Square::from_algebraic_string(sq).expect(sq)
|
Square::from_algebraic_string(sq).expect(sq)
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
// Eryn Wells <eryn@erynwells.me>
|
// Eryn Wells <eryn@erynwells.me>
|
||||||
|
|
||||||
mod pieces;
|
use super::Pieces;
|
||||||
|
|
||||||
use self::pieces::Pieces;
|
|
||||||
use crate::bitboard::BitBoard;
|
use crate::bitboard::BitBoard;
|
||||||
use crate::square::Square;
|
|
||||||
use crate::piece::{Color, Piece, PiecePlacementError};
|
use crate::piece::{Color, Piece, PiecePlacementError};
|
||||||
|
use crate::Square;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
|
|
||||||
|
@ -21,7 +19,7 @@ pub struct Position {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Position {
|
impl Position {
|
||||||
fn empty() -> Position {
|
pub fn empty() -> Position {
|
||||||
Position {
|
Position {
|
||||||
color_to_move: Color::White,
|
color_to_move: Color::White,
|
||||||
pieces_per_color: [BitBoard::empty(), BitBoard::empty()],
|
pieces_per_color: [BitBoard::empty(), BitBoard::empty()],
|
||||||
|
@ -76,7 +74,11 @@ impl Position {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn place_piece(&mut self, piece: &Piece, square: &Square) -> Result<(), PiecePlacementError> {
|
pub fn place_piece(
|
||||||
|
&mut self,
|
||||||
|
piece: &Piece,
|
||||||
|
square: &Square,
|
||||||
|
) -> Result<(), PiecePlacementError> {
|
||||||
let bitboard = self.bitboard_for_piece_mut(piece);
|
let bitboard = self.bitboard_for_piece_mut(piece);
|
||||||
|
|
||||||
if bitboard.has_piece_at(&square) {
|
if bitboard.has_piece_at(&square) {
|
||||||
|
@ -96,7 +98,7 @@ impl Position {
|
||||||
&mut self.pieces_per_type[piece.color as usize][piece.shape as usize]
|
&mut self.pieces_per_type[piece.color as usize][piece.shape as usize]
|
||||||
}
|
}
|
||||||
|
|
||||||
fn pieces(&self, color: Color) -> Pieces {
|
pub fn pieces(&self, color: Color) -> Pieces {
|
||||||
Pieces::new(&self, color)
|
Pieces::new(&self, color)
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue