};
// Constructors
- Position() {}
- Position(const Position& pos);
- Position(const std::string& fen);
+ Position();
+ explicit Position(const Position& pos);
+ explicit Position(const std::string& fen);
// Text input/output
void from_fen(const std::string& fen);
void print(Move m = MOVE_NONE) const;
// Copying
- void copy(const Position& pos);
+ void fast_copy(const Position& pos);
void flipped_copy(const Position& pos);
// The piece on a given square
bool square_is_weak(Square s, Color c) const;
// Doing and undoing moves
- void saveState();
+ void detach();
void do_move(Move m, StateInfo& st);
void do_move(Move m, StateInfo& st, const CheckInfo& ci, bool moveIsCheck);
void undo_move(Move m);
void do_null_move(StateInfo& st);
void undo_null_move();
+ // Past
+ PieceType captured_piece() const;
+
// Static exchange evaluation
int see(Square from, Square to) const;
int see(Move m) const;
// Accessing hash keys
Key get_key() const;
+ Key get_exclusion_key() const;
Key get_pawn_key() const;
Key get_material_key() const;
static void init_zobrist();
static void init_piece_square_tables();
- // Public zobs
- static Key zobExclusion;
-
private:
// Initialization helper functions (used while setting up a position)
static Key zobMaterial[2][8][16];
static Key zobSideToMove;
static Score PieceSquareTable[16][64];
+ static Key zobExclusion;
};
return st->key;
}
+inline Key Position::get_exclusion_key() const {
+ return st->key ^ zobExclusion;
+}
+
inline Key Position::get_pawn_key() const {
return st->pawnKey;
}