//// Types
////
+/// struct checkInfo is initialized at c'tor time and keeps
+/// info used to detect if a move gives check.
+
+struct CheckInfo {
+
+ CheckInfo(const Position&);
+
+ Square ksq;
+ Bitboard dcCandidates;
+ Bitboard checkSq[8];
+};
+
/// Castle rights, encoded as bit fields
enum CastleRights {
bool pl_move_is_legal(Move m, Bitboard pinned) const;
bool pl_move_is_evasion(Move m, Bitboard pinned) const;
bool move_is_check(Move m) const;
- bool move_is_check(Move m, Bitboard dcCandidates) const;
+ bool move_is_check(Move m, const CheckInfo& ci) const;
bool move_is_capture(Move m) const;
bool move_is_capture_or_promotion(Move m) const;
bool move_is_passed_pawn_push(Move m) const;
// Doing and undoing moves
void saveState();
void do_move(Move m, StateInfo& st);
- void do_move(Move m, StateInfo& st, Bitboard dcCandidates);
+ void do_move(Move m, StateInfo& st, const CheckInfo& ci, bool moveIsCheck);
void undo_move(Move m);
void do_null_move(StateInfo& st);
void undo_null_move();
void undo_castle_move(Move m);
void find_checkers();
- template<PieceType Piece>
- void update_checkers(Bitboard* pCheckersBB, Square ksq, Square from, Square to, Bitboard dcCandidates);
-
template<bool FindPinned>
Bitboard hidden_checkers(Color c) const;