3785502ea0
[board] Declare Board::flags() pub(crate) instead of pub
2024-07-13 11:56:31 -07:00
26ae79e17d
[board] Remove explicit #[inline] from several Board methods
...
Trust the compiler to inline where appropriate, until I know otherwise.
2024-07-13 11:54:58 -07:00
7a46d52e8d
[board] Make the flags and macros modules public
2024-07-13 11:54:00 -07:00
fb6d1ad2f0
[board] Make the display module public
2024-07-13 11:53:43 -07:00
a14cb30781
[board] Implement PieceSet::iter() as an iterator over its Mailbox
2024-07-13 11:53:16 -07:00
fff2e084b5
[board] Remove turbofish from PieceSet pipeline in Builder::build()
2024-07-13 11:52:50 -07:00
da4e2f1d50
[core] Use Color::default() instead of Color::White in Board::default()
2024-07-13 11:52:25 -07:00
90e33d1202
[board] Replace Pieces iterator with Mailbox::iter()
...
Mailbox can use a standard iterator because it's just a slice. So nice!
2024-07-13 11:52:02 -07:00
51de32fa0a
[board] Update reference to PieceBitBoard → PieceSet
...
This isn't all of them...
2024-07-13 11:50:38 -07:00
f96fa79dc1
[position] Remove fen.rs
2024-07-13 08:14:33 -07:00
634f9e02f4
[board] Mailbox-related changes
2024-07-13 08:10:59 -07:00
ee51a13870
Rename Square::from_index → from_index_unchecked
2024-07-13 08:10:21 -07:00
c290f00b9e
[board] fen declaration
2024-07-13 08:09:02 -07:00
e8c3d2b8db
[board] Add documentation to the types in castle.rs
2024-07-13 08:08:48 -07:00
d9c2cfb90c
[board] Copy fen.rs here from the position crate
2024-07-13 08:08:26 -07:00
3a2ead2668
[board] Replace Builder's BTreeMap with a Mailbox
...
More efficient and easier to work with. :)
2024-07-13 08:08:12 -07:00
7c65232c35
[core] Improve API of Shape and Color
...
Clean up type and method declarations by using better type spelling. Use more
standard method spelling for iterators. Implement some useful traits.
2024-07-13 07:34:50 -07:00
534c022981
[core] Add #[must_use] to several methods in coordinates
2024-07-13 07:21:21 -07:00
7e45e49502
[BitBoard] Build out the documentation
2024-07-13 07:20:18 -07:00
daf5c86792
[BitBoard] Clean up the API; implement some traits
...
Clean up the BitBoard API by renaming methods with simpler names.
run-help Redo
Redo the implementation of a couple methods to be more succinct.
2024-07-13 07:19:47 -07:00
480a009e63
[BitBoard] Address a bunch of rust-analyzer suggestions
...
Add #[must_use] to many methods
2024-07-13 07:17:43 -07:00
14ab669763
Clean up BitBoard's bit ops impl macros
...
Declare the `forward_ref` crate as a dependency (my first external dependency!)
and use it to clean up the infix, assign, and unary op impls. This crate
automatically implements A+&B, &A+B, and &A+&B for me.
2024-07-13 07:08:18 -07:00
2480ef25e9
Remove BitBoardBuilder
...
It's unused except for the macro, and BitBoard itself can be declared mutable,
and implements Copy and Clone. So, I don't think having a separate Builder type
helps much.
2024-07-13 07:05:57 -07:00
19feff9591
Solidify PieceSet and supporting types
2024-07-12 15:52:41 -07:00
b3c472fbce
Fix some imports in the moves package
...
Castle and EnPassant moved to the board package. Reference these types there.
Add the board packages as a dependency to the moves package.
2024-04-26 09:50:42 -04:00
1d82d27f84
Move a whole bunch of stuff to the new chessfriend_board package
2024-04-25 13:28:24 -07:00
797606785e
Empty board package
2024-04-25 09:32:27 -07:00
a2d0c638d0
[core] Address clippy suggestions; clean up unit tests
...
In coordinates.rs:
- Add some [must_use] decorators to some getters
- Rewrite some unit tests to remove the .expect() and use ? instead
2024-04-25 08:05:07 -07:00
1b63f56042
[bitboard, core] Make library getters const; parameterize Library attributes
...
- Add chessfriend_core::Color::NUM
- All the library getters can be const.
- Use the constants from the core library to define the length of the slices in
the Library struct.
2024-04-25 07:59:39 -07:00
cad040e454
[bitboard] Fix some warnings and clippy suggestions in library.rs
...
- Add allow(dead_code) to LIGHT_SQUARES and DARK_SQUARES. These aren't used yet
but I have a feeling they'll come in handy.
- Add some separators to long numeric literals.
- Lightly reformat BitBoard -> Bitboard in the module documentation
2024-04-25 07:23:59 -07:00
1f3c90ff35
[position] Print the chess board diagram with box drawing characters
2024-03-25 10:38:02 -07:00
21b58a6422
[position] Update the danger_squares unit test to use assert_eq_bitboards!()
2024-03-14 17:01:28 -07:00
27a36565f3
[bitboard,core,position] Address a bunch of clippy warnings
2024-03-14 17:00:46 -07:00
d0abbd8f93
[position] Rever the const-ness of Position's initializers
...
Apparently you can't actually do that. :( You can't call trait methods in const
contexts.
2024-03-10 09:18:08 -07:00
89802be53d
[core] Address some clippy linter errors in core/coordinate.rs
2024-03-10 09:16:21 -07:00
a65c0c8ef1
[position] Make the Position initializer methods const
...
Position::empty() and Position::starting can both be const. Neat!
2024-03-08 08:18:49 -08:00
82aa7a2b01
[core] Rewrite Direction as a coordinate_enum!
...
- Order the values of Direction in a clockwise fashion
- Implement Direction::opposite() to return the opposing direction
- Make some small changes to the macros in this file to improve readability, maybe.
2024-03-08 08:17:54 -08:00
3f6ffef9f3
[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
2024-03-08 08:15:45 -08:00
20182d4035
[position] Implement an assert_eq_bitboards! macro
...
This one helps with printing BitBoards if the assertion fails.
2024-03-08 08:08:52 -08:00
069f94e8c2
[position] Refactor sight routines
...
- Break out the actual routines into file-private helper functions
- Declare traits for each piece type that call the corresponding helper function
- Implement these traits on PlacedPiece
The sight routines changed slightly such that they include the player's own pieces
in the resulting BitBoard. The tests neeeded to be updated to account for this.
2024-03-08 08:04:21 -08:00
f0b9681cef
[position] Add a doc comment to PieceBitBoards::all_pieces; remove unused empty_squares
2024-03-01 15:26:01 -08:00
349d82304d
[bitboard] Implement From<Option<Square>> for BitBoard
...
Return an empty BitBoard if the input is None.
2024-03-01 15:25:33 -08:00
d20119dfe3
[position] Make Shape::to_ascii() const
2024-03-01 15:24:43 -08:00
a65fcd6000
[position] Rename fields of EnPassant struct
...
Append _square to each one.
2024-03-01 15:24:20 -08:00
0fc90a4a2e
Merge branch 'moves-crate'
2024-03-01 15:23:40 -08:00
8a1b16d553
Export the fen! macro
2024-02-25 14:51:32 -08:00
8f07e08500
Fix a couple of the obscure en passant cases from PEJ
2024-02-25 14:51:25 -08:00
673d57c02e
Remove some unused imports from position::check
2024-02-25 14:12:51 -08:00
5f1fce6cc2
Fix the remaining tests
...
Well… all the tests except the Peter Ellis Jones tests.
Pass around whole EnPassant types instead of pulling out just the e.p. square.
Make sure that Castling moves have their target and origin squares populated.
Add a color field to the Castle move style to make this possible.
2024-02-25 12:38:55 -08:00
d2fe546824
Remove some unused variables from tests in the king move generator
2024-02-25 10:52:10 -08:00