};
// 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;