Commit graph

28 commits

Author SHA1 Message Date
042f5dbc4d Rename 'board::direction{s,}' 2024-04-01 22:20:39 +01:00
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
d51d72377e Add 'static_assert' macro 2024-04-01 22:20:39 +01:00
643b688384 Add 'Bitboard::{LIGHT,DARK}_SQUARES 2024-04-01 22:20:39 +01:00
659e3f1c9a Make use of 'Bitboard::is_empty' 2024-04-01 22:20:39 +01:00
f66b0276d8 Add 'Bitboard::is_empty' 2024-04-01 22:20:39 +01:00
9ef600c1bb Add 'Direction::slide_{square,board}' 2024-04-01 22:20:39 +01:00
dc974ec0e9 Add 'Bitboard::{ANTI_,}DIAGONAL' 2024-04-01 22:20:39 +01:00
251c10cbc7 Add 'Direction::move_square' 2024-04-01 22:20:39 +01:00
1ab024fce8 Add 'Direction::iter_{rook,bishop,royalty,knight}' 2024-04-01 22:20:39 +01:00
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
b840bfc570 Add 'board::Direction' enum 2024-04-01 22:20:39 +01:00
c177d13b75 Use 'Square::index' in 'Square::{file,rank}_index' 2024-04-01 22:20:39 +01:00
281c79556a Add 'Square::index' 2024-04-01 22:20:39 +01:00
8261b0c06b Add 'Bitboard::count' 2024-04-01 22:20:39 +01:00
7a7e7f3665 Add 'Rank::{up,down}' 2024-04-01 22:20:39 +01:00
2b4797ec47 Add 'File::{left,right}' 2024-04-01 22:20:39 +01:00
6501466d3e Add 'Square' constructor from 'File', 'Rank' 2024-04-01 22:20:39 +01:00
c3c3684150 Don't return 'Bitboard' from 'Square::{file,rank}' 2024-04-01 22:20:39 +01:00
ef15da41ea Add 'File' enum 2024-04-01 22:20:39 +01:00
54d7f0d69f Add 'Rank' enum 2024-04-01 22:20:39 +01:00
97ca224608 Add GDB pretty-printers 2024-04-01 22:20:39 +01:00
47b1854669 Introduce 'Bitboard::ALL' 2024-04-01 22:20:39 +01:00
a0fcf3285c Add bitboard iteration
Introduce 'BitboardIterator', use it to implement 'IntoIterator' for
'Bitboard'.
2024-04-01 22:20:39 +01:00
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
015485a4c5 Add 'Bitboard' and 'Square' definitions 2024-04-01 22:20:39 +01:00
44eb79f35b Move binary crate into 'bin' folder 2024-04-01 22:20:39 +01:00
3677040e03 Bootstrap project 2024-04-01 22:20:39 +01:00