mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Inline pinned_pieces() and discovered_check_candidates()
No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
e7939f450f
commit
29be28e1a2
3 changed files with 19 additions and 27 deletions
|
@ -84,11 +84,11 @@ inline Bitboard bit_is_set(Bitboard b, Square s) {
|
||||||
return b & SetMaskBB[s];
|
return b & SetMaskBB[s];
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void set_bit(Bitboard *b, Square s) {
|
inline void set_bit(Bitboard* b, Square s) {
|
||||||
*b |= SetMaskBB[s];
|
*b |= SetMaskBB[s];
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void clear_bit(Bitboard *b, Square s) {
|
inline void clear_bit(Bitboard* b, Square s) {
|
||||||
*b &= ClearMaskBB[s];
|
*b &= ClearMaskBB[s];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ inline Bitboard make_move_bb(Square from, Square to) {
|
||||||
return SetMaskBB[from] | SetMaskBB[to];
|
return SetMaskBB[from] | SetMaskBB[to];
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void do_move_bb(Bitboard *b, Bitboard move_bb) {
|
inline void do_move_bb(Bitboard* b, Bitboard move_bb) {
|
||||||
*b ^= move_bb;
|
*b ^= move_bb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -349,7 +349,6 @@ void Position::print(Move move) const {
|
||||||
/// king) pieces for the given color. Or, when template parameter FindPinned is
|
/// king) pieces for the given color. Or, when template parameter FindPinned is
|
||||||
/// false, the function return the pieces of the given color candidate for a
|
/// false, the function return the pieces of the given color candidate for a
|
||||||
/// discovery check against the enemy king.
|
/// discovery check against the enemy king.
|
||||||
|
|
||||||
template<bool FindPinned>
|
template<bool FindPinned>
|
||||||
Bitboard Position::hidden_checkers() const {
|
Bitboard Position::hidden_checkers() const {
|
||||||
|
|
||||||
|
@ -373,24 +372,10 @@ Bitboard Position::hidden_checkers() const {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Explicit template instantiations
|
||||||
|
template Bitboard Position::hidden_checkers<true>() const;
|
||||||
|
template Bitboard Position::hidden_checkers<false>() const;
|
||||||
|
|
||||||
/// Position:pinned_pieces() returns a bitboard of all pinned (against the
|
|
||||||
/// king) pieces for the side to move.
|
|
||||||
|
|
||||||
Bitboard Position::pinned_pieces() const {
|
|
||||||
|
|
||||||
return hidden_checkers<true>();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// Position:discovered_check_candidates() returns a bitboard containing all
|
|
||||||
/// pieces for the side to move which are candidates for giving a discovered
|
|
||||||
/// check.
|
|
||||||
|
|
||||||
Bitboard Position::discovered_check_candidates() const {
|
|
||||||
|
|
||||||
return hidden_checkers<false>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Position::attackers_to() computes a bitboard of all pieces which attacks a
|
/// Position::attackers_to() computes a bitboard of all pieces which attacks a
|
||||||
/// given square. Slider attacks use occ bitboard as occupancy.
|
/// given square. Slider attacks use occ bitboard as occupancy.
|
||||||
|
@ -405,6 +390,7 @@ Bitboard Position::attackers_to(Square s, Bitboard occ) const {
|
||||||
| (attacks_from<KING>(s) & pieces(KING));
|
| (attacks_from<KING>(s) & pieces(KING));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Position::attacks_from() computes a bitboard of all attacks of a given piece
|
/// Position::attacks_from() computes a bitboard of all attacks of a given piece
|
||||||
/// put in a given square. Slider attacks use occ bitboard as occupancy.
|
/// put in a given square. Slider attacks use occ bitboard as occupancy.
|
||||||
|
|
||||||
|
@ -503,8 +489,8 @@ bool Position::pl_move_is_legal(Move m, Bitboard pinned) const {
|
||||||
|
|
||||||
|
|
||||||
/// Position::move_is_legal() takes a random move and tests whether the move
|
/// Position::move_is_legal() takes a random move and tests whether the move
|
||||||
/// is legal. This version is not very fast and should be used only
|
/// is legal. This version is not very fast and should be used only in non
|
||||||
/// in non time-critical paths.
|
/// time-critical paths.
|
||||||
|
|
||||||
bool Position::move_is_legal(const Move m) const {
|
bool Position::move_is_legal(const Move m) const {
|
||||||
|
|
||||||
|
|
|
@ -216,11 +216,9 @@ private:
|
||||||
void set_castle_right(Square ksq, Square rsq);
|
void set_castle_right(Square ksq, Square rsq);
|
||||||
bool move_is_legal(const Move m) const;
|
bool move_is_legal(const Move m) const;
|
||||||
|
|
||||||
// Helper functions for doing and undoing moves
|
// Helper template functions
|
||||||
template<bool Do> void do_castle_move(Move m);
|
template<bool Do> void do_castle_move(Move m);
|
||||||
|
template<bool FindPinned> Bitboard hidden_checkers() const;
|
||||||
template<bool FindPinned>
|
|
||||||
Bitboard hidden_checkers() const;
|
|
||||||
|
|
||||||
// Computing hash keys from scratch (for initialization and debugging)
|
// Computing hash keys from scratch (for initialization and debugging)
|
||||||
Key compute_key() const;
|
Key compute_key() const;
|
||||||
|
@ -384,6 +382,14 @@ inline bool Position::in_check() const {
|
||||||
return st->checkersBB != 0;
|
return st->checkersBB != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline Bitboard Position::discovered_check_candidates() const {
|
||||||
|
return hidden_checkers<false>();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Bitboard Position::pinned_pieces() const {
|
||||||
|
return hidden_checkers<true>();
|
||||||
|
}
|
||||||
|
|
||||||
inline bool Position::pawn_is_passed(Color c, Square s) const {
|
inline bool Position::pawn_is_passed(Color c, Square s) const {
|
||||||
return !(pieces(PAWN, flip(c)) & passed_pawn_mask(c, s));
|
return !(pieces(PAWN, flip(c)) & passed_pawn_mask(c, s));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue