X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=0099ccd2f8e08f1a6e1b3fb2539da5cdff5b4803;hp=bf9bba3d492f8529903946564fe6c14ca12ab024;hb=0d194377033c52ff41ff990ddf31950b576ff543;hpb=1eae58523f4fbf77b64d12e9e81a67612708f2f5 diff --git a/src/position.h b/src/position.h index bf9bba3d..0099ccd2 100644 --- a/src/position.h +++ b/src/position.h @@ -213,14 +213,12 @@ public: Bitboard attacks_to(Square s) const; Bitboard attacks_to(Square s, Color c) const; bool is_check() const; - bool piece_attacks_square(Square f, Square t) const; - bool white_pawn_attacks_square(Square f, Square t) const; - bool black_pawn_attacks_square(Square f, Square t) const; - bool knight_attacks_square(Square f, Square t) const; - bool bishop_attacks_square(Square f, Square t) const; - bool rook_attacks_square(Square f, Square t) const; - bool queen_attacks_square(Square f, Square t) const; - bool king_attacks_square(Square f, Square t) const; + bool pawn_attacks_square(Color c, Square f, Square t) const; + + template + Bitboard piece_attacks_square(Square f, Square t) const; // Dispatch at compile-time + + bool piece_attacks_square(Square f, Square t) const; // Dispatch at run-time // Properties of moves bool move_is_legal(Move m) const; @@ -582,32 +580,13 @@ inline bool Position::is_check() const { return checkers() != EmptyBoardBB; } -inline bool Position::white_pawn_attacks_square(Square f, Square t) const { - return bit_is_set(pawn_attacks(WHITE, f), t); -} - -inline bool Position::black_pawn_attacks_square(Square f, Square t) const { - return bit_is_set(pawn_attacks(BLACK, f), t); -} - -inline bool Position::knight_attacks_square(Square f, Square t) const { - return bit_is_set(piece_attacks(f), t); -} - -inline bool Position::bishop_attacks_square(Square f, Square t) const { - return bit_is_set(piece_attacks(f), t); -} - -inline bool Position::rook_attacks_square(Square f, Square t) const { - return bit_is_set(piece_attacks(f), t); -} - -inline bool Position::queen_attacks_square(Square f, Square t) const { - return bit_is_set(piece_attacks(f), t); +inline bool Position::pawn_attacks_square(Color c, Square f, Square t) const { + return bit_is_set(pawn_attacks(c, f), t); } -inline bool Position::king_attacks_square(Square f, Square t) const { - return bit_is_set(piece_attacks(f), t); +template +Bitboard Position::piece_attacks_square(Square f, Square t) const { + return bit_is_set(piece_attacks(f), t); } inline bool Position::pawn_is_passed(Color c, Square s) const {