X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=5ae75655658fc69276391a6aafcf4b5d02453c45;hp=4dcbbf76ec80b24531fe414820fb7fe0781f8dc4;hb=af59cb1d63234fe5c711f4a0dc28d56fe79d1274;hpb=ff211469bafcdc36c8964ae0a4b87ae277cef51a diff --git a/src/position.h b/src/position.h index 4dcbbf76..5ae75655 100644 --- a/src/position.h +++ b/src/position.h @@ -1,13 +1,14 @@ /* - Glaurung, a UCI chess playing engine. - Copyright (C) 2004-2008 Tord Romstad + Stockfish, a UCI chess playing engine derived from Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008 Marco Costalba - Glaurung is free software: you can redistribute it and/or modify + Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - Glaurung is distributed in the hope that it will be useful, + Stockfish is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. @@ -171,11 +172,6 @@ public: // Number of pieces of each color and type int piece_count(Color c, PieceType pt) const; - int pawn_count(Color c) const; - int knight_count(Color c) const; - int bishop_count(Color c) const; - int rook_count(Color c) const; - int queen_count(Color c) const; // The en passant square: Square ep_square() const; @@ -201,6 +197,8 @@ public: // Bitboards for pinned pieces and discovered check candidates Bitboard discovered_check_candidates(Color c) const; Bitboard pinned_pieces(Color c) const; + template + Bitboard pinned_pieces(Color c, Square ksq) const; // Checking pieces Bitboard checkers() const; @@ -213,8 +211,7 @@ public: Bitboard attacks_to(Square s) const; Bitboard attacks_to(Square s, Color c) const; bool is_check() const; - bool white_pawn_attacks_square(Square f, Square t) const; - bool black_pawn_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 @@ -492,26 +489,6 @@ inline int Position::piece_count(Color c, PieceType pt) const { return pieceCount[c][pt]; } -inline int Position::pawn_count(Color c) const { - return piece_count(c, PAWN); -} - -inline int Position::knight_count(Color c) const { - return piece_count(c, KNIGHT); -} - -inline int Position::bishop_count(Color c) const { - return piece_count(c, BISHOP); -} - -inline int Position::rook_count(Color c) const { - return piece_count(c, ROOK); -} - -inline int Position::queen_count(Color c) const { - return piece_count(c, QUEEN); -} - inline Square Position::piece_list(Color c, PieceType pt, int index) const { return pieceList[c][pt][index]; } @@ -578,15 +555,11 @@ inline Bitboard Position::checkers() const { } 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); + return checkersBB != EmptyBoardBB; } -inline bool Position::black_pawn_attacks_square(Square f, Square t) const { - return bit_is_set(pawn_attacks(BLACK, f), t); +inline bool Position::pawn_attacks_square(Color c, Square f, Square t) const { + return bit_is_set(pawn_attacks(c, f), t); } template @@ -712,8 +685,8 @@ inline int Position::rule_50_counter() const { inline bool Position::opposite_colored_bishops() const { - return bishop_count(WHITE) == 1 - && bishop_count(BLACK) == 1 + return piece_count(WHITE, BISHOP) == 1 + && piece_count(BLACK, BISHOP) == 1 && square_color(piece_list(WHITE, BISHOP, 0)) != square_color(piece_list(BLACK, BISHOP, 0)); }