X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=25e57512cd18720345b7f04fd73fe80e73a2fa8a;hp=e571048a2883d9404dcd9c3b7d7ba6dd93c012c9;hb=3cb02004596f868ae405b09fbf3a2038a680a989;hpb=c3d2e6aba981ecc0caf82f81a1d44e8c4954e151 diff --git a/src/position.h b/src/position.h index e571048a..25e57512 100644 --- a/src/position.h +++ b/src/position.h @@ -109,7 +109,7 @@ public: // Attacks to/from a given square Bitboard attackers_to(Square s) const; Bitboard attackers_to(Square s, Bitboard occupied) const; - Bitboard attacks_from(Piece pc, Square s) const; + Bitboard attacks_from(PieceType pt, Square s) const; template Bitboard attacks_from(Square s) const; template Bitboard attacks_from(Square s, Color c) const; Bitboard slider_blockers(Bitboard sliders, Square s, Bitboard& pinners) const; @@ -134,9 +134,11 @@ public: void undo_move(Move m); void do_null_move(StateInfo& newSt); void undo_null_move(); + void increment_nodes(); + void increment_tbHits(); // Static Exchange Evaluation - bool see_ge(Move m, Value value) const; + bool see_ge(Move m, Value value = VALUE_ZERO) const; // Accessing hash keys Key key() const; @@ -151,6 +153,7 @@ public: bool is_chess960() const; Thread* this_thread() const; uint64_t nodes_searched() const; + uint64_t tb_hits() const; bool is_draw(int ply) const; int rule50_count() const; Score psq_score() const; @@ -185,6 +188,7 @@ private: Square castlingRookSquare[CASTLING_RIGHT_NB]; Bitboard castlingPath[CASTLING_RIGHT_NB]; uint64_t nodes; + uint64_t tbHits; int gamePly; Color sideToMove; Thread* thisThread; @@ -273,18 +277,19 @@ inline Square Position::castling_rook_square(CastlingRight cr) const { template inline Bitboard Position::attacks_from(Square s) const { + assert(Pt != PAWN); return Pt == BISHOP || Pt == ROOK ? attacks_bb(s, byTypeBB[ALL_PIECES]) : Pt == QUEEN ? attacks_from(s) | attacks_from(s) - : StepAttacksBB[Pt][s]; + : PseudoAttacks[Pt][s]; } template<> inline Bitboard Position::attacks_from(Square s, Color c) const { - return StepAttacksBB[make_piece(c, PAWN)][s]; + return PawnAttacks[c][s]; } -inline Bitboard Position::attacks_from(Piece pc, Square s) const { - return attacks_bb(pc, s, byTypeBB[ALL_PIECES]); +inline Bitboard Position::attacks_from(PieceType pt, Square s) const { + return attacks_bb(pt, s, byTypeBB[ALL_PIECES]); } inline Bitboard Position::attackers_to(Square s) const { @@ -352,6 +357,18 @@ inline uint64_t Position::nodes_searched() const { return nodes; } +inline void Position::increment_nodes() { + nodes++; +} + +inline uint64_t Position::tb_hits() const { + return tbHits; +} + +inline void Position::increment_tbHits() { + tbHits++; +} + inline bool Position::opposite_bishops() const { return pieceCount[W_BISHOP] == 1 && pieceCount[B_BISHOP] == 1