Clean up position setup code

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Joona Kiiski
2011-01-06 13:34:16 +02:00
committed by Marco Costalba
parent 1a20d72701
commit b08ba446f6
3 changed files with 21 additions and 33 deletions

View File

@@ -205,6 +205,7 @@ void Position::from_fen(const string& fen, bool c960) {
*/
char token;
int hmc, fmn;
std::istringstream ss(fen);
Rank rank = RANK_8;
File file = FILE_A;
@@ -265,12 +266,10 @@ void Position::from_fen(const string& fen, bool c960) {
}
// 5. Halfmove clock
int hmc;
if (ss >> hmc)
st->rule50 = hmc;
// 6. Fullmove number
int fmn;
if (ss >> fmn)
startPosPlyCounter = (fmn - 1) * 2 + int(sideToMove == BLACK);
@@ -774,6 +773,23 @@ bool Position::move_is_check(Move m, const CheckInfo& ci) const {
}
/// Position::do_setup_move() makes a permanent move on the board.
/// It should be used when setting up a position on board.
/// You can't undo the move.
void Position::do_setup_move(Move m, StateInfo& newSt) {
do_move(m, newSt);
// Reset "game ply" in case we made a non-reversible move.
// "game ply" is used for repetition detection.
if (st->rule50 == 0)
st->gamePly = 0;
// Update the number of plies played from the starting position
startPosPlyCounter++;
}
/// Position::do_move() makes a move, and saves all information necessary
/// to a StateInfo object. The move is assumed to be legal.
/// Pseudo-legal moves should be filtered out before this function is called.
@@ -1541,22 +1557,6 @@ void Position::clear() {
}
/// Position::reset_game_ply() simply sets gamePly to 0. It is used from the
/// UCI interface code, whenever a non-reversible move is made in a
/// 'position fen <fen> moves m1 m2 ...' command. This makes it possible
/// for the program to handle games of arbitrary length, as long as the GUI
/// handles draws by the 50 move rule correctly.
void Position::reset_game_ply() {
st->gamePly = 0;
}
void Position::inc_startpos_ply_counter() {
startPosPlyCounter++;
}
/// Position::put_piece() puts a piece on the given square of the board,
/// updating the board array, pieces list, bitboards, and piece counts.