summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2015-05-04 22:40:07 +0200
committerStephen Kelly <steveire@gmail.com>2015-05-14 20:36:28 +0200
commited41a8e7b4cf665ebab8e4780f8b0b299113fd11 (patch)
treeeeb53d0736527eb3a8b54040377ea1d746e01058
parent48a9e91b02090ba263cd46ef5c33ba3d2aa873ba (diff)
downloadcmake-ed41a8e7b4cf665ebab8e4780f8b0b299113fd11.tar.gz
cmLocalGenerator: Port loops to cmState::Snapshot.
Make this code less dependent on being part of cmLocalGenerator, where it doesn't really belong.
-rw-r--r--Source/cmLocalGenerator.cxx42
1 files changed, 20 insertions, 22 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 1099f0f6f7..5ef0a3b64f 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -2853,15 +2853,15 @@ std::string cmLocalGenerator::Convert(RelativeRoot remote,
//----------------------------------------------------------------------------
std::string cmLocalGenerator::FindRelativePathTopSource()
{
- cmLocalGenerator* gen = this;
- std::vector<cmLocalGenerator*> gens;
- gens.push_back(gen);
+ cmState::Snapshot snapshot = this->StateSnapshot;
+ std::vector<cmState::Snapshot> snapshots;
+ snapshots.push_back(snapshot);
while (true)
{
- gen = gen->GetParent();
- if (gen)
+ snapshot = snapshot.GetParent();
+ if (snapshot.IsValid())
{
- gens.push_back(gen);
+ snapshots.push_back(snapshot);
}
else
{
@@ -2869,13 +2869,12 @@ std::string cmLocalGenerator::FindRelativePathTopSource()
}
}
- std::string result = gens.front()->StateSnapshot.GetCurrentSourceDirectory();
+ std::string result = snapshots.front().GetCurrentSourceDirectory();
- for (std::vector<cmLocalGenerator*>::const_iterator it = gens.begin() + 1;
- it != gens.end(); ++it)
+ for (std::vector<cmState::Snapshot>::const_iterator it =
+ snapshots.begin() + 1; it != snapshots.end(); ++it)
{
- std::string currentSource =
- (*it)->StateSnapshot.GetCurrentSourceDirectory();
+ std::string currentSource = it->GetCurrentSourceDirectory();
if(cmSystemTools::IsSubDirectory(result, currentSource))
{
result = currentSource;
@@ -2888,15 +2887,15 @@ std::string cmLocalGenerator::FindRelativePathTopSource()
//----------------------------------------------------------------------------
std::string cmLocalGenerator::FindRelativePathTopBinary()
{
- cmLocalGenerator* gen = this;
- std::vector<cmLocalGenerator*> gens;
- gens.push_back(gen);
+ cmState::Snapshot snapshot = this->StateSnapshot;
+ std::vector<cmState::Snapshot> snapshots;
+ snapshots.push_back(snapshot);
while (true)
{
- gen = gen->GetParent();
- if (gen)
+ snapshot = snapshot.GetParent();
+ if (snapshot.IsValid())
{
- gens.push_back(gen);
+ snapshots.push_back(snapshot);
}
else
{
@@ -2904,13 +2903,12 @@ std::string cmLocalGenerator::FindRelativePathTopBinary()
}
}
- std::string result = gens.front()->StateSnapshot.GetCurrentBinaryDirectory();
+ std::string result = snapshots.front().GetCurrentBinaryDirectory();
- for (std::vector<cmLocalGenerator*>::const_iterator it = gens.begin() + 1;
- it != gens.end(); ++it)
+ for (std::vector<cmState::Snapshot>::const_iterator it =
+ snapshots.begin() + 1; it != snapshots.end(); ++it)
{
- std::string currentBinary =
- (*it)->StateSnapshot.GetCurrentBinaryDirectory();
+ std::string currentBinary = it->GetCurrentBinaryDirectory();
if(cmSystemTools::IsSubDirectory(result, currentBinary))
{
result = currentBinary;