bool Position::pl_move_is_evasion(Move m, Bitboard pinned) const
{
- assert(is_check());
+ assert(in_check());
Color us = side_to_move();
Square from = move_from(m);
return false;
// The move is pseudo-legal, check if it is also legal
- return is_check() ? pl_move_is_evasion(m, pinned) : pl_move_is_legal(m, pinned);
+ return in_check() ? pl_move_is_evasion(m, pinned) : pl_move_is_legal(m, pinned);
}
-/// Position::move_is_check() tests whether a pseudo-legal move is a check
+/// Position::move_gives_check() tests whether a pseudo-legal move is a check
-bool Position::move_is_check(Move m) const {
+bool Position::move_gives_check(Move m) const {
- return move_is_check(m, CheckInfo(*this));
+ return move_gives_check(m, CheckInfo(*this));
}
-bool Position::move_is_check(Move m, const CheckInfo& ci) const {
+bool Position::move_gives_check(Move m, const CheckInfo& ci) const {
assert(is_ok());
assert(move_is_ok(m));
}
-/// Position::do_setup_move() makes a permanent move on the board.
-/// It should be used when setting up a position on board.
-/// You can't undo the move.
+/// Position::do_setup_move() makes a permanent move on the board. It should
+/// be used when setting up a position on board. You can't undo the move.
void Position::do_setup_move(Move m) {
startPosPlyCounter++;
// Our StateInfo newSt is about going out of scope so copy
- // its content inside pos before it disappears.
+ // its content before it disappears.
detach();
}
+
/// Position::do_move() makes a move, and saves all information necessary
-/// to a StateInfo object. The move is assumed to be legal.
-/// Pseudo-legal moves should be filtered out before this function is called.
+/// to a StateInfo object. The move is assumed to be legal. Pseudo-legal
+/// moves should be filtered out before this function is called.
void Position::do_move(Move m, StateInfo& newSt) {
CheckInfo ci(*this);
- do_move(m, newSt, ci, move_is_check(m, ci));
+ do_move(m, newSt, ci, move_gives_check(m, ci));
}
void Position::do_move(Move m, StateInfo& newSt, const CheckInfo& ci, bool moveIsCheck) {
void Position::do_null_move(StateInfo& backupSt) {
assert(is_ok());
- assert(!is_check());
+ assert(!in_check());
// Back up the information necessary to undo the null move to the supplied
// StateInfo object.
void Position::undo_null_move() {
assert(is_ok());
- assert(!is_check());
+ assert(!in_check());
// Restore information from the our backup StateInfo object
StateInfo* backupSt = st->previous;
bool Position::is_mate() const {
MoveStack moves[MAX_MOVES];
- return is_check() && generate<MV_LEGAL>(*this, moves) == moves;
+ return in_check() && generate<MV_LEGAL>(*this, moves) == moves;
}
}
-/// Position::flipped_copy() makes a copy of the input position, but with
-/// the white and black sides reversed. This is only useful for debugging,
-/// especially for finding evaluation symmetry bugs.
+/// Position::flip() flips position with the white and black sides reversed. This
+/// is only useful for debugging especially for finding evaluation symmetry bugs.
+
+void Position::flip() {
-void Position::flipped_copy(const Position& pos) {
+ assert(is_ok());
- assert(pos.is_ok());
+ // Make a copy of current position before to start changing
+ const Position pos(*this, threadID);
clear();
threadID = pos.thread();