Key pawnKey, materialKey;
Value npMaterial[COLOR_NB];
int castleRights, rule50, pliesFromNull;
- Score psqScore;
+ Score psq;
Square epSquare;
Key key;
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);
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;
// Accessing hash keys
// 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
Thread* this_thread() const;
int64_t nodes_searched() const;
void set_nodes_searched(int64_t n);
- template<bool SkipRepetition> bool is_draw() const;
+ bool is_draw() const;
// Position consistency check, for debugging
bool pos_is_ok(int* failedStep = NULL) 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 {