Commit graph

101 commits

Author SHA1 Message Date
3410ba518e Make 'Magic' fields 'pub(crate)' 2024-04-01 12:21:33 +01:00
f1cdec2b5e Add magic mask generation 2024-04-01 12:21:33 +01:00
55d9780156 Add 'Magic' type 2024-04-01 12:21:33 +01:00
3eb140b757 Add naive pawn move generation 2024-04-01 12:21:33 +01:00
b1a460a580 Add naive rook move generation 2024-04-01 12:21:33 +01:00
f7fc30227a Add naive bishop move generation 2024-04-01 12:21:33 +01:00
0c4b011386 Add naive knight move generation 2024-04-01 12:21:33 +01:00
064846a4fd Add naive king move generation 2024-04-01 12:21:33 +01:00
7ccca5a593 Remove spurious links in 'Square' documentation 2024-04-01 12:21:33 +01:00
a4952376a1 Remove spurious links in 'Bitboard' documentation 2024-04-01 12:21:33 +01:00
34b9c18ca5 Add 'Bitboard::iter_powerset' 2024-04-01 12:21:33 +01:00
1ea4cd0ea4 Add 'Piece' enum 2024-04-01 12:21:33 +01:00
42126e1c88 Add 'NUM_VARIANTS' constant to all 'board' enums 2024-04-01 12:21:33 +01:00
3f93417092 Consistently use 'Self' type in 'impl' blocks 2024-04-01 12:21:33 +01:00
568c369683 Fix typo in 'board::Color' documentation 2024-04-01 12:21:33 +01:00
f405246127 Add 'Color::slide_board_with_blockers' 2024-04-01 12:21:33 +01:00
6e871dbfe6 Improve 'board::BitboardIterator'
* Accurate 'size_hint'.
* Exact size.
* Fused iterator (keeps returning 'None' after returning 'None' once).
2024-04-01 12:21:33 +01:00
c571b53840 Add 'Color::{forward,backward}_direction' 2024-04-01 12:21:33 +01:00
04ef282815 Add 'CastleRights::unmoved_rooks' 2024-04-01 12:21:33 +01:00
96b9e0f6d7 Add 'CastleRights::without_{king,queen}_side' 2024-04-01 12:21:33 +01:00
d8e003ef94 Add 'CastleRights::has_{king,queen}_side' 2024-04-01 12:21:33 +01:00
688b624dd1 Add 'CastleRights' enum 2024-04-01 12:21:33 +01:00
3553428bb9 Add 'Color' enum 2024-04-01 12:21:33 +01:00
ffaad7b7d4 Rename 'board::direction{s,}' 2024-04-01 12:21:33 +01:00
a6f4e7e686 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 12:21:33 +01:00
accbbef64e Add 'static_assert' macro 2024-04-01 12:21:33 +01:00
c6916cc21a Add 'Bitboard::{LIGHT,DARK}_SQUARES 2024-04-01 12:21:33 +01:00
5a9f0db1b9 Make use of 'Bitboard::is_empty' 2024-04-01 12:21:33 +01:00
63058f6c4a Add 'Bitboard::is_empty' 2024-04-01 12:21:33 +01:00
eba64a98d4 Add 'Direction::slide_{square,board}' 2024-04-01 12:21:33 +01:00
5ef6e545f3 Add 'Bitboard::{ANTI_,}DIAGONAL' 2024-04-01 12:21:33 +01:00
21eecbdac9 Add 'Direction::move_square' 2024-04-01 12:21:33 +01:00
be3a8030a7 Add 'Direction::iter_{rook,bishop,royalty,knight}' 2024-04-01 12:21:33 +01:00
d03e251050 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 12:21:33 +01:00
c95d7f078a Add 'board::Direction' enum 2024-04-01 12:21:33 +01:00
8e2b7c1714 Use 'Square::index' in 'Square::{file,rank}_index' 2024-04-01 12:21:33 +01:00
be5d2831bd Add 'Square::index' 2024-04-01 12:21:33 +01:00
93d5fe97ed Add 'Bitboard::count' 2024-04-01 12:21:33 +01:00
e48994e7be Add 'Rank::{up,down}' 2024-04-01 12:21:33 +01:00
1c4a093837 Add 'File::{left,right}' 2024-04-01 12:21:33 +01:00
f873b64f15 Add 'Square' constructor from 'File', 'Rank' 2024-04-01 12:21:33 +01:00
47e4e77f6c Don't return 'Bitboard' from 'Square::{file,rank}' 2024-04-01 12:21:33 +01:00
9678180c75 Add 'File' enum 2024-04-01 12:21:33 +01:00
5a35c55091 Add 'Rank' enum 2024-04-01 12:21:33 +01:00
1c78574882 Add GDB pretty-printers 2024-04-01 12:21:33 +01:00
d8f4057a8c Introduce 'Bitboard::ALL' 2024-03-29 01:06:14 +00:00
1235e4a51c Add bitboard iteration
Introduce 'BitboardIterator', use it to implement 'IntoIterator' for
'Bitboard'.
2024-03-29 01:06:14 +00:00
afec72d646 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-03-29 01:06:14 +00:00
98efd390a6 Add 'Bitboard' and 'Square' definitions 2024-03-29 01:06:14 +00:00
0d94438b46 Move binary crate into 'bin' folder 2024-03-28 20:31:45 +00:00