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 threshold = VALUE_ZERO) const;
// Accessing hash keys
Key key() const;
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;
Value non_pawn_material() const;
// Position consistency check, for debugging
- bool pos_is_ok(int* failedStep = nullptr) const;
+ bool pos_is_ok() const;
void flip();
private:
Square castlingRookSquare[CASTLING_RIGHT_NB];
Bitboard castlingPath[CASTLING_RIGHT_NB];
uint64_t nodes;
+ uint64_t tbHits;
int gamePly;
Color sideToMove;
Thread* thisThread;
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