No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
- // The move gives check? We don't use pos.move_gives_check() here
- // because we need to test for a mate after the move is done.
- StateInfo st;
- pos.do_move(m, st);
- if (pos.in_check())
- san += pos.is_mate() ? "#" : "+";
- pos.undo_move(m);
+ if (pos.move_gives_check(m, CheckInfo(pos)))
+ {
+ StateInfo st;
+ pos.do_move(m, st);
+ san += MoveList<MV_LEGAL>(pos).size() ? "+" : "#";
+ pos.undo_move(m);
+ }
return true;
// Draw by the 50 moves rule?
return true;
// Draw by the 50 moves rule?
- if (st->rule50 > 99 && !is_mate())
+ if (st->rule50 > 99 && (!in_check() || MoveList<MV_LEGAL>(*this).size()))
return true;
// Draw by repetition?
return true;
// Draw by repetition?
template bool Position::is_draw<true>() const;
template bool Position::is_draw<true>() const;
-/// Position::is_mate() returns true or false depending on whether the
-/// side to move is checkmated.
-
-bool Position::is_mate() const {
-
- return in_check() && !MoveList<MV_LEGAL>(*this).size();
-}
-
-
/// Position::init() is a static member function which initializes at startup
/// the various arrays used to compute hash keys and the piece square tables.
/// The latter is a two-step operation: First, the white halves of the tables
/// Position::init() is a static member function which initializes at startup
/// the various arrays used to compute hash keys and the piece square tables.
/// The latter is a two-step operation: First, the white halves of the tables
Value non_pawn_material(Color c) const;
Score pst_delta(Piece piece, Square from, Square to) const;
Value non_pawn_material(Color c) const;
Score pst_delta(Piece piece, Square from, Square to) const;
- // Game termination checks
- bool is_mate() const;
+ // Other properties of the position
template<bool SkipRepetition> bool is_draw() const;
template<bool SkipRepetition> bool is_draw() const;
-
- // Plies from start position to the beginning of search
int startpos_ply_counter() const;
int startpos_ply_counter() const;
-
- // Other properties of the position
bool opposite_colored_bishops() const;
bool has_pawn_on_7th(Color c) const;
bool is_chess960() const;
bool opposite_colored_bishops() const;
bool has_pawn_on_7th(Color c) const;
bool is_chess960() const;