Store moves sent with "position" UCI command

Store all the game moves until current position.

This will be used by next patch.

No functional change.
This commit is contained in:
Marco Costalba
2013-03-02 13:03:56 +01:00
parent 0e1ad3ad33
commit 0d68b523a3
6 changed files with 16 additions and 7 deletions

View File

@@ -42,6 +42,7 @@ namespace {
// Keep track of position keys along the setup moves (from start position to the
// position just before to start searching). Needed by repetition draw detection.
Search::StateStackPtr SetupStates;
Search::MovesVectPtr SetupMoves;
void set_option(istringstream& up);
void set_position(Position& pos, istringstream& up);
@@ -148,10 +149,13 @@ namespace {
pos.set(fen, Options["UCI_Chess960"], Threads.main_thread());
SetupStates = Search::StateStackPtr(new std::stack<StateInfo>());
SetupMoves = Search::MovesVectPtr(new std::vector<Move>());
SetupMoves->reserve(200); // Try to avoid reallocations
// Parse move list (if any)
while (is >> token && (m = move_from_uci(pos, token)) != MOVE_NONE)
{
SetupMoves->push_back(m);
SetupStates->push(StateInfo());
pos.do_move(m, SetupStates->top());
}
@@ -211,6 +215,6 @@ namespace {
else if (token == "ponder") limits.ponder = true;
}
Threads.start_thinking(pos, limits, searchMoves, SetupStates);
Threads.start_thinking(pos, limits, searchMoves, SetupStates, SetupMoves);
}
}