From 23943208ecddf25869d564509e66dd2f15710b9d Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sat, 22 Oct 2011 14:21:57 +0100 Subject: [PATCH] Remove redundancy in definitions of attack helpers No functional change. Signed-off-by: Marco Costalba --- src/position.cpp | 42 +++++++++--------------------------------- src/position.h | 8 ++++++++ 2 files changed, 17 insertions(+), 33 deletions(-) diff --git a/src/position.cpp b/src/position.cpp index 93e34453..8c9906e2 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -400,18 +400,8 @@ Bitboard Position::discovered_check_candidates() const { return hidden_checkers(); } -/// Position::attackers_to() computes a bitboard containing all pieces which -/// attacks a given square. - -Bitboard Position::attackers_to(Square s) const { - - return (attacks_from(s, BLACK) & pieces(PAWN, WHITE)) - | (attacks_from(s, WHITE) & pieces(PAWN, BLACK)) - | (attacks_from(s) & pieces(KNIGHT)) - | (attacks_from(s) & pieces(ROOK, QUEEN)) - | (attacks_from(s) & pieces(BISHOP, QUEEN)) - | (attacks_from(s) & pieces(KING)); -} +/// Position::attackers_to() computes a bitboard of all pieces which attacks a +/// given square. Slider attacks use occ bitboard as occupancy. Bitboard Position::attackers_to(Square s, Bitboard occ) const { @@ -423,21 +413,8 @@ Bitboard Position::attackers_to(Square s, Bitboard occ) const { | (attacks_from(s) & pieces(KING)); } -/// Position::attacks_from() computes a bitboard of all attacks -/// of a given piece put in a given square. - -Bitboard Position::attacks_from(Piece p, Square s) const { - - assert(square_is_ok(s)); - - switch (p) - { - case WB: case BB: return attacks_from(s); - case WR: case BR: return attacks_from(s); - case WQ: case BQ: return attacks_from(s); - default: return StepAttacksBB[p][s]; - } -} +/// 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. Bitboard Position::attacks_from(Piece p, Square s, Bitboard occ) { @@ -1689,12 +1666,11 @@ bool Position::is_mate() const { } -/// 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 are copied from the MgPST[][] and EgPST[][] arrays. -/// Second, the black halves of the tables are initialized by flipping -/// and changing the sign of the corresponding white scores. +/// 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 +/// are copied from PSQT[] tables. Second, the black halves of the tables are +/// initialized by flipping and changing the sign of the white scores. void Position::init() { diff --git a/src/position.h b/src/position.h index eec8ff74..fd2222b4 100644 --- a/src/position.h +++ b/src/position.h @@ -371,6 +371,14 @@ inline Bitboard Position::attacks_from(Square s) const { return attacks_from(s) | attacks_from(s); } +inline Bitboard Position::attacks_from(Piece p, Square s) const { + return attacks_from(p, s, occupied_squares()); +} + +inline Bitboard Position::attackers_to(Square s) const { + return attackers_to(s, occupied_squares()); +} + inline Bitboard Position::checkers() const { return st->checkersBB; } -- 2.39.2