cmState: Store Children states in parent state.

This commit is contained in:
Stephen Kelly 2015-07-19 16:26:49 +02:00
parent f4150bd88d
commit ae026f5458
2 changed files with 13 additions and 1 deletions

View File

@ -76,6 +76,8 @@ struct cmState::BuildsystemDirectoryStateType
std::vector<cmListFileBacktrace> CompileOptionsBacktraces; std::vector<cmListFileBacktrace> CompileOptionsBacktraces;
cmPropertyMap Properties; cmPropertyMap Properties;
std::vector<cmState::Snapshot> Children;
}; };
cmState::cmState(cmake* cm) cmState::cmState(cmake* cm)
@ -274,6 +276,7 @@ cmState::Snapshot cmState::Reset()
it->CompileOptionsBacktraces.clear(); it->CompileOptionsBacktraces.clear();
it->DirectoryEnd = pos; it->DirectoryEnd = pos;
it->Properties.clear(); it->Properties.clear();
it->Children.clear();
} }
this->PolicyStack.Clear(); this->PolicyStack.Clear();
@ -800,7 +803,9 @@ cmState::CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot,
pos->Parent = origin; pos->Parent = origin;
pos->Root = origin; pos->Root = origin;
pos->Vars = this->VarTree.Extend(origin); pos->Vars = this->VarTree.Extend(origin);
return cmState::Snapshot(this, pos); cmState::Snapshot snapshot = cmState::Snapshot(this, pos);
originSnapshot.Position->BuildSystemDirectory->Children.push_back(snapshot);
return snapshot;
} }
cmState::Snapshot cmState::Snapshot
@ -938,6 +943,11 @@ cmState::Snapshot::Snapshot(cmState* state)
{ {
} }
std::vector<cmState::Snapshot> cmState::Snapshot::GetChildren()
{
return this->Position->BuildSystemDirectory->Children;
}
cmState::Snapshot::Snapshot(cmState* state, PositionType position) cmState::Snapshot::Snapshot(cmState* state, PositionType position)
: State(state), : State(state),
Position(position) Position(position)

View File

@ -65,6 +65,8 @@ public:
void SetListFile(std::string const& listfile); void SetListFile(std::string const& listfile);
std::string GetExecutionListFile() const; std::string GetExecutionListFile() const;
std::vector<Snapshot> GetChildren();
std::string GetEntryPointCommand() const; std::string GetEntryPointCommand() const;
long GetEntryPointLine() const; long GetEntryPointLine() const;