|
|
@@ -611,13 +611,13 @@ std::vector<std::string> const& cmState::GetBinaryDirectoryComponents() const
|
|
|
return this->BinaryDirectoryComponents;
|
|
|
}
|
|
|
|
|
|
-void cmState::Snapshot::ComputeRelativePathTopSource()
|
|
|
+void cmState::Directory::ComputeRelativePathTopSource()
|
|
|
{
|
|
|
// Relative path conversion inside the source tree is not used to
|
|
|
// construct relative paths passed to build tools so it is safe to use
|
|
|
// even when the source is a network path.
|
|
|
|
|
|
- cmState::Snapshot snapshot = *this;
|
|
|
+ cmState::Snapshot snapshot = this->Snapshot_;
|
|
|
std::vector<cmState::Snapshot> snapshots;
|
|
|
snapshots.push_back(snapshot);
|
|
|
while (true)
|
|
|
@@ -633,23 +633,23 @@ void cmState::Snapshot::ComputeRelativePathTopSource()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- std::string result = snapshots.front().GetCurrentSourceDirectory();
|
|
|
+ std::string result = snapshots.front().GetDirectory().GetCurrentSource();
|
|
|
|
|
|
for (std::vector<cmState::Snapshot>::const_iterator it =
|
|
|
snapshots.begin() + 1; it != snapshots.end(); ++it)
|
|
|
{
|
|
|
- std::string currentSource = it->GetCurrentSourceDirectory();
|
|
|
+ std::string currentSource = it->GetDirectory().GetCurrentSource();
|
|
|
if(cmSystemTools::IsSubDirectory(result, currentSource))
|
|
|
{
|
|
|
result = currentSource;
|
|
|
}
|
|
|
}
|
|
|
- this->Position->BuildSystemDirectory->RelativePathTopSource = result;
|
|
|
+ this->DirectoryState->RelativePathTopSource = result;
|
|
|
}
|
|
|
|
|
|
-void cmState::Snapshot::ComputeRelativePathTopBinary()
|
|
|
+void cmState::Directory::ComputeRelativePathTopBinary()
|
|
|
{
|
|
|
- cmState::Snapshot snapshot = *this;
|
|
|
+ cmState::Snapshot snapshot = this->Snapshot_;
|
|
|
std::vector<cmState::Snapshot> snapshots;
|
|
|
snapshots.push_back(snapshot);
|
|
|
while (true)
|
|
|
@@ -666,12 +666,12 @@ void cmState::Snapshot::ComputeRelativePathTopBinary()
|
|
|
}
|
|
|
|
|
|
std::string result =
|
|
|
- snapshots.front().GetCurrentBinaryDirectory();
|
|
|
+ snapshots.front().GetDirectory().GetCurrentBinary();
|
|
|
|
|
|
for (std::vector<cmState::Snapshot>::const_iterator it =
|
|
|
snapshots.begin() + 1; it != snapshots.end(); ++it)
|
|
|
{
|
|
|
- std::string currentBinary = it->GetCurrentBinaryDirectory();
|
|
|
+ std::string currentBinary = it->GetDirectory().GetCurrentBinary();
|
|
|
if(cmSystemTools::IsSubDirectory(result, currentBinary))
|
|
|
{
|
|
|
result = currentBinary;
|
|
|
@@ -683,11 +683,11 @@ void cmState::Snapshot::ComputeRelativePathTopBinary()
|
|
|
// is a network path.
|
|
|
if(result.size() < 2 || result.substr(0, 2) != "//")
|
|
|
{
|
|
|
- this->Position->BuildSystemDirectory->RelativePathTopBinary = result;
|
|
|
+ this->DirectoryState->RelativePathTopBinary = result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- this->Position->BuildSystemDirectory->RelativePathTopBinary = "";
|
|
|
+ this->DirectoryState->RelativePathTopBinary = "";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -812,40 +812,39 @@ cmState::Snapshot::Snapshot(cmState* state, PositionType position)
|
|
|
|
|
|
}
|
|
|
|
|
|
-const char* cmState::Snapshot::GetCurrentSourceDirectory() const
|
|
|
+const char* cmState::Directory::GetCurrentSource() const
|
|
|
{
|
|
|
- return this->Position->BuildSystemDirectory->Location.c_str();
|
|
|
+ return this->DirectoryState->Location.c_str();
|
|
|
}
|
|
|
|
|
|
-void cmState::Snapshot::SetCurrentSourceDirectory(std::string const& dir)
|
|
|
+void cmState::Directory::SetCurrentSource(std::string const& dir)
|
|
|
{
|
|
|
- assert(this->State);
|
|
|
- std::string& loc = this->Position->BuildSystemDirectory->Location;
|
|
|
+ std::string& loc = this->DirectoryState->Location;
|
|
|
loc = dir;
|
|
|
cmSystemTools::ConvertToUnixSlashes(loc);
|
|
|
loc = cmSystemTools::CollapseFullPath(loc);
|
|
|
|
|
|
cmSystemTools::SplitPath(
|
|
|
loc,
|
|
|
- this->Position->BuildSystemDirectory->CurrentSourceDirectoryComponents);
|
|
|
+ this->DirectoryState->CurrentSourceDirectoryComponents);
|
|
|
this->ComputeRelativePathTopSource();
|
|
|
}
|
|
|
|
|
|
-const char* cmState::Snapshot::GetCurrentBinaryDirectory() const
|
|
|
+const char* cmState::Directory::GetCurrentBinary() const
|
|
|
{
|
|
|
- return this->Position->BuildSystemDirectory->OutputLocation.c_str();
|
|
|
+ return this->DirectoryState->OutputLocation.c_str();
|
|
|
}
|
|
|
|
|
|
-void cmState::Snapshot::SetCurrentBinaryDirectory(std::string const& dir)
|
|
|
+void cmState::Directory::SetCurrentBinary(std::string const& dir)
|
|
|
{
|
|
|
- std::string& loc = this->Position->BuildSystemDirectory->OutputLocation;
|
|
|
+ std::string& loc = this->DirectoryState->OutputLocation;
|
|
|
loc = dir;
|
|
|
cmSystemTools::ConvertToUnixSlashes(loc);
|
|
|
loc = cmSystemTools::CollapseFullPath(loc);
|
|
|
|
|
|
cmSystemTools::SplitPath(
|
|
|
loc,
|
|
|
- this->Position->BuildSystemDirectory->CurrentBinaryDirectoryComponents);
|
|
|
+ this->DirectoryState->CurrentBinaryDirectoryComponents);
|
|
|
this->ComputeRelativePathTopBinary();
|
|
|
}
|
|
|
|
|
|
@@ -855,37 +854,35 @@ void cmState::Snapshot::SetListFile(const std::string& listfile)
|
|
|
}
|
|
|
|
|
|
std::vector<std::string> const&
|
|
|
-cmState::Snapshot::GetCurrentSourceDirectoryComponents() const
|
|
|
+cmState::Directory::GetCurrentSourceComponents() const
|
|
|
{
|
|
|
- return this->Position->BuildSystemDirectory
|
|
|
- ->CurrentSourceDirectoryComponents;
|
|
|
+ return this->DirectoryState->CurrentSourceDirectoryComponents;
|
|
|
}
|
|
|
|
|
|
std::vector<std::string> const&
|
|
|
-cmState::Snapshot::GetCurrentBinaryDirectoryComponents() const
|
|
|
+cmState::Directory::GetCurrentBinaryComponents() const
|
|
|
{
|
|
|
- return this->Position->BuildSystemDirectory
|
|
|
- ->CurrentBinaryDirectoryComponents;
|
|
|
+ return this->DirectoryState->CurrentBinaryDirectoryComponents;
|
|
|
}
|
|
|
|
|
|
-const char* cmState::Snapshot::GetRelativePathTopSource() const
|
|
|
+const char* cmState::Directory::GetRelativePathTopSource() const
|
|
|
{
|
|
|
- return this->Position->BuildSystemDirectory->RelativePathTopSource.c_str();
|
|
|
+ return this->DirectoryState->RelativePathTopSource.c_str();
|
|
|
}
|
|
|
|
|
|
-const char* cmState::Snapshot::GetRelativePathTopBinary() const
|
|
|
+const char* cmState::Directory::GetRelativePathTopBinary() const
|
|
|
{
|
|
|
- return this->Position->BuildSystemDirectory->RelativePathTopBinary.c_str();
|
|
|
+ return this->DirectoryState->RelativePathTopBinary.c_str();
|
|
|
}
|
|
|
|
|
|
-void cmState::Snapshot::SetRelativePathTopSource(const char* dir)
|
|
|
+void cmState::Directory::SetRelativePathTopSource(const char* dir)
|
|
|
{
|
|
|
- this->Position->BuildSystemDirectory->RelativePathTopSource = dir;
|
|
|
+ this->DirectoryState->RelativePathTopSource = dir;
|
|
|
}
|
|
|
|
|
|
-void cmState::Snapshot::SetRelativePathTopBinary(const char* dir)
|
|
|
+void cmState::Directory::SetRelativePathTopBinary(const char* dir)
|
|
|
{
|
|
|
- this->Position->BuildSystemDirectory->RelativePathTopBinary = dir;
|
|
|
+ this->DirectoryState->RelativePathTopBinary = dir;
|
|
|
}
|
|
|
|
|
|
std::string cmState::Snapshot::GetExecutionListFile() const
|
|
|
@@ -952,3 +949,16 @@ cmState* cmState::Snapshot::GetState() const
|
|
|
{
|
|
|
return this->State;
|
|
|
}
|
|
|
+
|
|
|
+cmState::Directory cmState::Snapshot::GetDirectory() const
|
|
|
+{
|
|
|
+ return Directory(this->Position->BuildSystemDirectory, *this);
|
|
|
+}
|
|
|
+
|
|
|
+cmState::Directory::Directory(
|
|
|
+ cmLinkedTree<BuildsystemDirectoryStateType>::iterator iter,
|
|
|
+ const cmState::Snapshot& snapshot)
|
|
|
+ : DirectoryState(iter), Snapshot_(snapshot)
|
|
|
+{
|
|
|
+
|
|
|
+}
|