X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=5a4c594df8e3d7055f196ed430cd1fd1f9320aeb;hp=2ad9294fc896e0fd2518c9122c846c8fe00a56db;hb=b0fd2b6b983cd85c1f018577ca260e68568e4672;hpb=2097cd12217a0e18c59bd88424ca613572e6feb2 diff --git a/src/position.h b/src/position.h index 2ad9294f..5a4c594d 100644 --- a/src/position.h +++ b/src/position.h @@ -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; @@ -158,10 +159,8 @@ public: void undo_null_move(); // Static exchange evaluation - int see(Move m) const; + int see(Move m, int asymmThreshold = 0) const; int see_sign(Move m) const; - int see_asymm(Move m, int asymmThreshold) const; - template int do_see(Move m, int asymmThreshold) const; //FIXME: private!! // Accessing hash keys Key key() const; @@ -171,7 +170,6 @@ public: // Incremental piece-square evaluation Score psq_score() const; - Score psq_delta(Piece p, Square from, Square to) const; Value non_pawn_material(Color c) const; // Other properties of the position @@ -181,7 +179,7 @@ public: Thread* this_thread() const; int64_t nodes_searched() const; void set_nodes_searched(int64_t n); - template bool is_draw() const; + bool is_draw() const; // Position consistency check, for debugging bool pos_is_ok(int* failedStep = NULL) const; @@ -195,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; @@ -275,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 { @@ -333,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 { @@ -348,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; } @@ -360,12 +354,8 @@ inline Key Position::material_key() const { return st->materialKey; } -inline Score Position::psq_delta(Piece p, Square from, Square to) const { - return pieceSquareTable[p][to] - pieceSquareTable[p][from]; -} - inline Score Position::psq_score() const { - return st->psqScore; + return st->psq; } inline Value Position::non_pawn_material(Color c) const {