From 69f4954df1de3ed264212a6e871986781d717e08 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sat, 16 Jul 2011 09:56:34 +0100 Subject: [PATCH] Change hidden checkers API After previous patch is no more needed to pass the color, becuase it is always the side to move. No functional change. Signed-off-by: Marco Costalba --- src/movegen.cpp | 4 ++-- src/position.cpp | 35 ++++++++++++++++------------------- src/position.h | 6 +++--- src/search.cpp | 2 +- 4 files changed, 22 insertions(+), 25 deletions(-) diff --git a/src/movegen.cpp b/src/movegen.cpp index 5b8f2e9a..145c60f1 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -213,7 +213,7 @@ MoveStack* generate(const Position& pos, MoveStack* mlist) assert(pos.piece_on(ksq) == make_piece(opposite_color(us), KING)); // Discovered non-capture checks - b = dc = pos.discovered_check_candidates(us); + b = dc = pos.discovered_check_candidates(); while (b) { @@ -318,7 +318,7 @@ MoveStack* generate(const Position& pos, MoveStack* mlist) { assert(pos.is_ok()); MoveStack *last, *cur = mlist; - Bitboard pinned = pos.pinned_pieces(pos.side_to_move()); + Bitboard pinned = pos.pinned_pieces(); last = pos.in_check() ? generate(pos, mlist) : generate(pos, mlist); diff --git a/src/position.cpp b/src/position.cpp index 43de6678..962fa878 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -78,12 +78,11 @@ namespace { CheckInfo::CheckInfo(const Position& pos) { - Color us = pos.side_to_move(); - Color them = opposite_color(us); + Color them = opposite_color(pos.side_to_move()); Square ksq = pos.king_square(them); - dcCandidates = pos.discovered_check_candidates(us); - pinned = pos.pinned_pieces(us); + pinned = pos.pinned_pieces(); + dcCandidates = pos.discovered_check_candidates(); checkSq[PAWN] = pos.attacks_from(ksq, them); checkSq[KNIGHT] = pos.attacks_from(ksq); @@ -366,12 +365,12 @@ void Position::print(Move move) const { /// discovery check against the enemy king. template -Bitboard Position::hidden_checkers(Color c) const { +Bitboard Position::hidden_checkers() const { // Pinned pieces protect our king, dicovery checks attack the enemy king Bitboard b, result = EmptyBoardBB; - Bitboard pinners = pieces(FindPinned ? opposite_color(c) : c); - Square ksq = king_square(FindPinned ? c : opposite_color(c)); + Bitboard pinners = pieces(FindPinned ? opposite_color(sideToMove) : sideToMove); + Square ksq = king_square(FindPinned ? sideToMove : opposite_color(sideToMove)); // Pinners are sliders, that give check when candidate pinned is removed pinners &= (pieces(ROOK, QUEEN) & RookPseudoAttacks[ksq]) @@ -382,7 +381,7 @@ Bitboard Position::hidden_checkers(Color c) const { b = squares_between(ksq, pop_1st_bit(&pinners)) & occupied_squares(); // Only one bit set and is an our piece? - if (b && !(b & (b - 1)) && (b & pieces(c))) + if (b && !(b & (b - 1)) && (b & pieces(sideToMove))) result |= b; } return result; @@ -390,23 +389,21 @@ Bitboard Position::hidden_checkers(Color c) const { /// Position:pinned_pieces() returns a bitboard of all pinned (against the -/// king) pieces for the given color. Note that checkersBB bitboard must -/// be already updated. +/// king) pieces for the side to move. -Bitboard Position::pinned_pieces(Color c) const { +Bitboard Position::pinned_pieces() const { - return hidden_checkers(c); + return hidden_checkers(); } /// Position:discovered_check_candidates() returns a bitboard containing all -/// pieces for the given side which are candidates for giving a discovered -/// check. Contrary to pinned_pieces() here there is no need of checkersBB -/// to be already updated. +/// pieces for the side to move which are candidates for giving a discovered +/// check. -Bitboard Position::discovered_check_candidates(Color c) const { +Bitboard Position::discovered_check_candidates() const { - return hidden_checkers(c); + return hidden_checkers(); } /// Position::attackers_to() computes a bitboard containing all pieces which @@ -497,7 +494,7 @@ bool Position::pl_move_is_legal(Move m, Bitboard pinned) const { assert(is_ok()); assert(move_is_ok(m)); - assert(pinned == pinned_pieces(side_to_move())); + assert(pinned == pinned_pieces()); Color us = side_to_move(); Square from = move_from(m); @@ -688,7 +685,7 @@ bool Position::move_gives_check(Move m, const CheckInfo& ci) const { assert(is_ok()); assert(move_is_ok(m)); - assert(ci.dcCandidates == discovered_check_candidates(side_to_move())); + assert(ci.dcCandidates == discovered_check_candidates()); assert(piece_color(piece_on(move_from(m))) == side_to_move()); Square from = move_from(m); diff --git a/src/position.h b/src/position.h index 9ed72393..2c94f42a 100644 --- a/src/position.h +++ b/src/position.h @@ -133,8 +133,8 @@ public: Square castle_rook_square(CastleRight f) const; // Bitboards for pinned pieces and discovered check candidates - Bitboard discovered_check_candidates(Color c) const; - Bitboard pinned_pieces(Color c) const; + Bitboard discovered_check_candidates() const; + Bitboard pinned_pieces() const; // Checking pieces and under check information Bitboard checkers() const; @@ -230,7 +230,7 @@ private: void undo_castle_move(Move m); template - Bitboard hidden_checkers(Color c) const; + Bitboard hidden_checkers() const; // Computing hash keys from scratch (for initialization and debugging) Key compute_key() const; diff --git a/src/search.cpp b/src/search.cpp index 8b5f3b2b..94b34389 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -2023,7 +2023,7 @@ split_point_start: // At split points actual search starts from here while ( (tte = TT.probe(pos.get_key())) != NULL && tte->move() != MOVE_NONE && pos.move_is_pl(tte->move()) - && pos.pl_move_is_legal(tte->move(), pos.pinned_pieces(pos.side_to_move())) + && pos.pl_move_is_legal(tte->move(), pos.pinned_pieces()) && ply < PLY_MAX && (!pos.is_draw() || ply < 2)) { -- 2.39.2