X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=512313921458cae7d843214644026f2d7399fe25;hp=8b81358769854354b0fc07ad828711ebf0518378;hb=55948623e7b8ad1fc6624cd06733b16d295eecb8;hpb=7e95495b35ef84a87fa6be34639a5f96e67972b0 diff --git a/src/position.h b/src/position.h index 8b813587..51231392 100644 --- a/src/position.h +++ b/src/position.h @@ -17,7 +17,7 @@ along with this program. If not, see . */ -#if !defined(POSITION_H_INCLUDED) +#ifndef POSITION_H_INCLUDED #define POSITION_H_INCLUDED #include @@ -52,7 +52,7 @@ struct StateInfo { Key pawnKey, materialKey; Value npMaterial[COLOR_NB]; int castleRights, rule50, pliesFromNull; - Score psqScore; + Score psq; Square epSquare; Key key; @@ -95,6 +95,7 @@ public: Position(const Position& p, Thread* t) { *this = p; thisThread = t; } Position(const std::string& f, bool c960, Thread* t) { set(f, c960, t); } Position& operator=(const Position&); + static void init(); // Text input/output void set(const std::string& fen, bool isChess960, Thread* th); @@ -112,8 +113,8 @@ public: Square king_square(Color c) const; Square ep_square() const; bool is_empty(Square s) const; - const Square* piece_list(Color c, PieceType pt) const; - int piece_count(Color c, PieceType pt) const; + template int count(Color c) const; + template const Square* list(Color c) const; // Castling int can_castle(CastleRight f) const; @@ -192,7 +193,7 @@ private: // Helper functions void do_castle(Square kfrom, Square kto, Square rfrom, Square rto); - template Bitboard hidden_checkers() const; + Bitboard hidden_checkers(Square ksq, Color c) const; // Computing hash keys from scratch (for initialization and debugging) Key compute_key() const; @@ -272,12 +273,12 @@ inline Bitboard Position::pieces(Color c, PieceType pt1, PieceType pt2) const { return byColorBB[c] & (byTypeBB[pt1] | byTypeBB[pt2]); } -inline int Position::piece_count(Color c, PieceType pt) const { - return pieceCount[c][pt]; +template inline int Position::count(Color c) const { + return pieceCount[c][Pt]; } -inline const Square* Position::piece_list(Color c, PieceType pt) const { - return pieceList[c][pt]; +template inline const Square* Position::list(Color c) const { + return pieceList[c][Pt]; } inline Square Position::ep_square() const { @@ -330,11 +331,11 @@ inline Bitboard Position::checkers() const { } inline Bitboard Position::discovered_check_candidates() const { - return hidden_checkers(); + return hidden_checkers(king_square(~sideToMove), sideToMove); } inline Bitboard Position::pinned_pieces() const { - return hidden_checkers(); + return hidden_checkers(king_square(sideToMove), ~sideToMove); } inline bool Position::pawn_is_passed(Color c, Square s) const { @@ -345,10 +346,6 @@ inline Key Position::key() const { return st->key; } -inline Key Position::exclusion_key() const { - return st->key ^ Zobrist::exclusion; -} - inline Key Position::pawn_key() const { return st->pawnKey; } @@ -358,7 +355,7 @@ inline Key Position::material_key() const { } inline Score Position::psq_score() const { - return st->psqScore; + return st->psq; } inline Value Position::non_pawn_material(Color c) const { @@ -417,4 +414,4 @@ inline Thread* Position::this_thread() const { return thisThread; } -#endif // !defined(POSITION_H_INCLUDED) +#endif // #ifndef POSITION_H_INCLUDED