Commit graph

139 commits

Author SHA1 Message Date
Bruno BELANYI a3a9f64213 Add 'Piece' enum 2024-04-01 22:20:39 +01:00
Bruno BELANYI d919b956ed Add 'NUM_VARIANTS' constant to all 'board' enums 2024-04-01 22:20:39 +01:00
Bruno BELANYI 407f85c19b Consistently use 'Self' type in 'impl' blocks 2024-04-01 22:20:39 +01:00
Bruno BELANYI b68dd132e8 Fix typo in 'board::Color' documentation 2024-04-01 22:20:39 +01:00
Bruno BELANYI 2c1142324c Add 'Color::slide_board_with_blockers' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 0315e2fb51 Improve 'board::BitboardIterator'
* Accurate 'size_hint'.
* Exact size.
* Fused iterator (keeps returning 'None' after returning 'None' once).
2024-04-01 22:20:39 +01:00
Bruno BELANYI f3a83065da Add 'Color::{forward,backward}_direction' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 0812d916ff Add 'CastleRights::unmoved_rooks' 2024-04-01 22:20:39 +01:00
Bruno BELANYI e84ec552fe Add 'CastleRights::without_{king,queen}_side' 2024-04-01 22:20:39 +01:00
Bruno BELANYI a21841c0ad Add 'CastleRights::has_{king,queen}_side' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 88e74d5fff Add 'CastleRights' enum 2024-04-01 22:20:39 +01:00
Bruno BELANYI f351f056a9 Add 'Color' enum 2024-04-01 22:20:39 +01:00
Bruno BELANYI 042f5dbc4d Rename 'board::direction{s,}' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 585c127381 Statically assert zero-cost invariants
Since some or all of those invariants will come in handy to ensure we
use as little memory as possible, to maximize the speed of the move
generation later on.
2024-04-01 22:20:39 +01:00
Bruno BELANYI d51d72377e Add 'static_assert' macro 2024-04-01 22:20:39 +01:00
Bruno BELANYI 643b688384 Add 'Bitboard::{LIGHT,DARK}_SQUARES 2024-04-01 22:20:39 +01:00
Bruno BELANYI 659e3f1c9a Make use of 'Bitboard::is_empty' 2024-04-01 22:20:39 +01:00
Bruno BELANYI f66b0276d8 Add 'Bitboard::is_empty' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 9ef600c1bb Add 'Direction::slide_{square,board}' 2024-04-01 22:20:39 +01:00
Bruno BELANYI dc974ec0e9 Add 'Bitboard::{ANTI_,}DIAGONAL' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 251c10cbc7 Add 'Direction::move_square' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 1ab024fce8 Add 'Direction::iter_{rook,bishop,royalty,knight}' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 924689ec02 Add 'Direction::move_board'
Encapsulates the way to move a piece on a board, avoiding the need to
mask and shift by hand.
2024-04-01 22:20:39 +01:00
Bruno BELANYI b840bfc570 Add 'board::Direction' enum 2024-04-01 22:20:39 +01:00
Bruno BELANYI c177d13b75 Use 'Square::index' in 'Square::{file,rank}_index' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 281c79556a Add 'Square::index' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 8261b0c06b Add 'Bitboard::count' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 7a7e7f3665 Add 'Rank::{up,down}' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 2b4797ec47 Add 'File::{left,right}' 2024-04-01 22:20:39 +01:00
Bruno BELANYI 6501466d3e Add 'Square' constructor from 'File', 'Rank' 2024-04-01 22:20:39 +01:00
Bruno BELANYI c3c3684150 Don't return 'Bitboard' from 'Square::{file,rank}' 2024-04-01 22:20:39 +01:00
Bruno BELANYI ef15da41ea Add 'File' enum 2024-04-01 22:20:39 +01:00
Bruno BELANYI 54d7f0d69f Add 'Rank' enum 2024-04-01 22:20:39 +01:00
Bruno BELANYI 47b1854669 Introduce 'Bitboard::ALL' 2024-04-01 22:20:39 +01:00
Bruno BELANYI a0fcf3285c Add bitboard iteration
Introduce 'BitboardIterator', use it to implement 'IntoIterator' for
'Bitboard'.
2024-04-01 22:20:39 +01:00
Bruno BELANYI f4a92c0681 Move 'board::bitboard' into folder module
I will be adding a 'BitboardIterator' type, and it makes more sense to
use a folder for this module at this point.
2024-04-01 22:20:39 +01:00
Bruno BELANYI 015485a4c5 Add 'Bitboard' and 'Square' definitions 2024-04-01 22:20:39 +01:00
Bruno BELANYI 44eb79f35b Move binary crate into 'bin' folder 2024-04-01 22:20:39 +01:00
Bruno BELANYI 3677040e03 Bootstrap project 2024-04-01 22:20:39 +01:00