浏览代码

cmState: Move Snapshot type to separate namespace

Leave behind a typedef to avoid porting dependent code in this commit.
Stephen Kelly 9 年之前
父节点
当前提交
a9bf981a4c
共有 2 个文件被更改,包括 174 次插入172 次删除
  1. 85 87
      Source/cmState.cxx
  2. 89 85
      Source/cmState.h

+ 85 - 87
Source/cmState.cxx

@@ -96,7 +96,7 @@ struct cmStateDetail::BuildsystemDirectoryStateType
 
 
   cmPropertyMap Properties;
   cmPropertyMap Properties;
 
 
-  std::vector<cmState::Snapshot> Children;
+  std::vector<cmStateSnapshot> Children;
 };
 };
 
 
 cmState::cmState()
 cmState::cmState()
@@ -304,7 +304,7 @@ void cmState::RemoveCacheEntryProperty(std::string const& key,
     .SetProperty(propertyName, (void*)CM_NULLPTR);
     .SetProperty(propertyName, (void*)CM_NULLPTR);
 }
 }
 
 
-cmState::Snapshot cmState::Reset()
+cmStateSnapshot cmState::Reset()
 {
 {
   this->GlobalProperties.clear();
   this->GlobalProperties.clear();
   this->PropertyDefinitions.clear();
   this->PropertyDefinitions.clear();
@@ -360,7 +360,7 @@ cmState::Snapshot cmState::Reset()
   this->DefineProperty("RULE_LAUNCH_LINK", cmProperty::TARGET, "", "", true);
   this->DefineProperty("RULE_LAUNCH_LINK", cmProperty::TARGET, "", "", true);
   this->DefineProperty("RULE_LAUNCH_CUSTOM", cmProperty::TARGET, "", "", true);
   this->DefineProperty("RULE_LAUNCH_CUSTOM", cmProperty::TARGET, "", "", true);
 
 
-  return Snapshot(this, pos);
+  return cmStateSnapshot(this, pos);
 }
 }
 
 
 void cmState::DefineProperty(const std::string& name,
 void cmState::DefineProperty(const std::string& name,
@@ -682,8 +682,8 @@ void cmStateDirectory::ComputeRelativePathTopSource()
   // construct relative paths passed to build tools so it is safe to use
   // construct relative paths passed to build tools so it is safe to use
   // even when the source is a network path.
   // even when the source is a network path.
 
 
-  cmState::Snapshot snapshot = this->Snapshot_;
-  std::vector<cmState::Snapshot> snapshots;
+  cmStateSnapshot snapshot = this->Snapshot_;
+  std::vector<cmStateSnapshot> snapshots;
   snapshots.push_back(snapshot);
   snapshots.push_back(snapshot);
   while (true) {
   while (true) {
     snapshot = snapshot.GetBuildsystemDirectoryParent();
     snapshot = snapshot.GetBuildsystemDirectoryParent();
@@ -696,8 +696,7 @@ void cmStateDirectory::ComputeRelativePathTopSource()
 
 
   std::string result = snapshots.front().GetDirectory().GetCurrentSource();
   std::string result = snapshots.front().GetDirectory().GetCurrentSource();
 
 
-  for (std::vector<cmState::Snapshot>::const_iterator it =
-         snapshots.begin() + 1;
+  for (std::vector<cmStateSnapshot>::const_iterator it = snapshots.begin() + 1;
        it != snapshots.end(); ++it) {
        it != snapshots.end(); ++it) {
     std::string currentSource = it->GetDirectory().GetCurrentSource();
     std::string currentSource = it->GetDirectory().GetCurrentSource();
     if (cmSystemTools::IsSubDirectory(result, currentSource)) {
     if (cmSystemTools::IsSubDirectory(result, currentSource)) {
@@ -709,8 +708,8 @@ void cmStateDirectory::ComputeRelativePathTopSource()
 
 
 void cmStateDirectory::ComputeRelativePathTopBinary()
 void cmStateDirectory::ComputeRelativePathTopBinary()
 {
 {
-  cmState::Snapshot snapshot = this->Snapshot_;
-  std::vector<cmState::Snapshot> snapshots;
+  cmStateSnapshot snapshot = this->Snapshot_;
+  std::vector<cmStateSnapshot> snapshots;
   snapshots.push_back(snapshot);
   snapshots.push_back(snapshot);
   while (true) {
   while (true) {
     snapshot = snapshot.GetBuildsystemDirectoryParent();
     snapshot = snapshot.GetBuildsystemDirectoryParent();
@@ -723,8 +722,7 @@ void cmStateDirectory::ComputeRelativePathTopBinary()
 
 
   std::string result = snapshots.front().GetDirectory().GetCurrentBinary();
   std::string result = snapshots.front().GetDirectory().GetCurrentBinary();
 
 
-  for (std::vector<cmState::Snapshot>::const_iterator it =
-         snapshots.begin() + 1;
+  for (std::vector<cmStateSnapshot>::const_iterator it = snapshots.begin() + 1;
        it != snapshots.end(); ++it) {
        it != snapshots.end(); ++it) {
     std::string currentBinary = it->GetDirectory().GetCurrentBinary();
     std::string currentBinary = it->GetDirectory().GetCurrentBinary();
     if (cmSystemTools::IsSubDirectory(result, currentBinary)) {
     if (cmSystemTools::IsSubDirectory(result, currentBinary)) {
@@ -742,7 +740,7 @@ void cmStateDirectory::ComputeRelativePathTopBinary()
   }
   }
 }
 }
 
 
-cmState::Snapshot cmState::CreateBaseSnapshot()
+cmStateSnapshot cmState::CreateBaseSnapshot()
 {
 {
   cmStateDetail::PositionType pos =
   cmStateDetail::PositionType pos =
     this->SnapshotData.Push(this->SnapshotData.Root());
     this->SnapshotData.Push(this->SnapshotData.Root());
@@ -767,11 +765,11 @@ cmState::Snapshot cmState::CreateBaseSnapshot()
   assert(pos->Vars.IsValid());
   assert(pos->Vars.IsValid());
   pos->Parent = this->VarTree.Root();
   pos->Parent = this->VarTree.Root();
   pos->Root = this->VarTree.Root();
   pos->Root = this->VarTree.Root();
-  return cmState::Snapshot(this, pos);
+  return cmStateSnapshot(this, pos);
 }
 }
 
 
-cmState::Snapshot cmState::CreateBuildsystemDirectorySnapshot(
-  Snapshot originSnapshot)
+cmStateSnapshot cmState::CreateBuildsystemDirectorySnapshot(
+  cmStateSnapshot originSnapshot)
 {
 {
   assert(originSnapshot.IsValid());
   assert(originSnapshot.IsValid());
   cmStateDetail::PositionType pos =
   cmStateDetail::PositionType pos =
@@ -796,7 +794,7 @@ cmState::Snapshot cmState::CreateBuildsystemDirectorySnapshot(
   pos->Root = origin;
   pos->Root = origin;
   pos->Vars = this->VarTree.Push(origin);
   pos->Vars = this->VarTree.Push(origin);
 
 
-  cmState::Snapshot snapshot = cmState::Snapshot(this, pos);
+  cmStateSnapshot snapshot = cmStateSnapshot(this, pos);
   originSnapshot.Position->BuildSystemDirectory->Children.push_back(snapshot);
   originSnapshot.Position->BuildSystemDirectory->Children.push_back(snapshot);
   snapshot.SetDefaultDefinitions();
   snapshot.SetDefaultDefinitions();
   snapshot.InitializeFromParent();
   snapshot.InitializeFromParent();
@@ -804,8 +802,8 @@ cmState::Snapshot cmState::CreateBuildsystemDirectorySnapshot(
   return snapshot;
   return snapshot;
 }
 }
 
 
-cmState::Snapshot cmState::CreateFunctionCallSnapshot(
-  cmState::Snapshot originSnapshot, std::string const& fileName)
+cmStateSnapshot cmState::CreateFunctionCallSnapshot(
+  cmStateSnapshot originSnapshot, std::string const& fileName)
 {
 {
   cmStateDetail::PositionType pos =
   cmStateDetail::PositionType pos =
     this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position);
     this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position);
@@ -820,11 +818,11 @@ cmState::Snapshot cmState::CreateFunctionCallSnapshot(
   cmLinkedTree<cmDefinitions>::iterator origin = originSnapshot.Position->Vars;
   cmLinkedTree<cmDefinitions>::iterator origin = originSnapshot.Position->Vars;
   pos->Parent = origin;
   pos->Parent = origin;
   pos->Vars = this->VarTree.Push(origin);
   pos->Vars = this->VarTree.Push(origin);
-  return cmState::Snapshot(this, pos);
+  return cmStateSnapshot(this, pos);
 }
 }
 
 
-cmState::Snapshot cmState::CreateMacroCallSnapshot(
-  cmState::Snapshot originSnapshot, std::string const& fileName)
+cmStateSnapshot cmState::CreateMacroCallSnapshot(
+  cmStateSnapshot originSnapshot, std::string const& fileName)
 {
 {
   cmStateDetail::PositionType pos =
   cmStateDetail::PositionType pos =
     this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position);
     this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position);
@@ -835,11 +833,11 @@ cmState::Snapshot cmState::CreateMacroCallSnapshot(
   assert(originSnapshot.Position->Vars.IsValid());
   assert(originSnapshot.Position->Vars.IsValid());
   pos->BuildSystemDirectory->DirectoryEnd = pos;
   pos->BuildSystemDirectory->DirectoryEnd = pos;
   pos->PolicyScope = originSnapshot.Position->Policies;
   pos->PolicyScope = originSnapshot.Position->Policies;
-  return cmState::Snapshot(this, pos);
+  return cmStateSnapshot(this, pos);
 }
 }
 
 
-cmState::Snapshot cmState::CreateIncludeFileSnapshot(
-  cmState::Snapshot originSnapshot, const std::string& fileName)
+cmStateSnapshot cmState::CreateIncludeFileSnapshot(
+  cmStateSnapshot originSnapshot, const std::string& fileName)
 {
 {
   cmStateDetail::PositionType pos =
   cmStateDetail::PositionType pos =
     this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position);
     this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position);
@@ -850,11 +848,11 @@ cmState::Snapshot cmState::CreateIncludeFileSnapshot(
   assert(originSnapshot.Position->Vars.IsValid());
   assert(originSnapshot.Position->Vars.IsValid());
   pos->BuildSystemDirectory->DirectoryEnd = pos;
   pos->BuildSystemDirectory->DirectoryEnd = pos;
   pos->PolicyScope = originSnapshot.Position->Policies;
   pos->PolicyScope = originSnapshot.Position->Policies;
-  return cmState::Snapshot(this, pos);
+  return cmStateSnapshot(this, pos);
 }
 }
 
 
-cmState::Snapshot cmState::CreateVariableScopeSnapshot(
-  cmState::Snapshot originSnapshot)
+cmStateSnapshot cmState::CreateVariableScopeSnapshot(
+  cmStateSnapshot originSnapshot)
 {
 {
   cmStateDetail::PositionType pos =
   cmStateDetail::PositionType pos =
     this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position);
     this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position);
@@ -868,11 +866,11 @@ cmState::Snapshot cmState::CreateVariableScopeSnapshot(
   pos->Parent = origin;
   pos->Parent = origin;
   pos->Vars = this->VarTree.Push(origin);
   pos->Vars = this->VarTree.Push(origin);
   assert(pos->Vars.IsValid());
   assert(pos->Vars.IsValid());
-  return cmState::Snapshot(this, pos);
+  return cmStateSnapshot(this, pos);
 }
 }
 
 
-cmState::Snapshot cmState::CreateInlineListFileSnapshot(
-  cmState::Snapshot originSnapshot, const std::string& fileName)
+cmStateSnapshot cmState::CreateInlineListFileSnapshot(
+  cmStateSnapshot originSnapshot, const std::string& fileName)
 {
 {
   cmStateDetail::PositionType pos =
   cmStateDetail::PositionType pos =
     this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position);
     this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position);
@@ -882,11 +880,11 @@ cmState::Snapshot cmState::CreateInlineListFileSnapshot(
     originSnapshot.Position->ExecutionListFile, fileName);
     originSnapshot.Position->ExecutionListFile, fileName);
   pos->BuildSystemDirectory->DirectoryEnd = pos;
   pos->BuildSystemDirectory->DirectoryEnd = pos;
   pos->PolicyScope = originSnapshot.Position->Policies;
   pos->PolicyScope = originSnapshot.Position->Policies;
-  return cmState::Snapshot(this, pos);
+  return cmStateSnapshot(this, pos);
 }
 }
 
 
-cmState::Snapshot cmState::CreatePolicyScopeSnapshot(
-  cmState::Snapshot originSnapshot)
+cmStateSnapshot cmState::CreatePolicyScopeSnapshot(
+  cmStateSnapshot originSnapshot)
 {
 {
   cmStateDetail::PositionType pos =
   cmStateDetail::PositionType pos =
     this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position);
     this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position);
@@ -894,10 +892,10 @@ cmState::Snapshot cmState::CreatePolicyScopeSnapshot(
   pos->Keep = false;
   pos->Keep = false;
   pos->BuildSystemDirectory->DirectoryEnd = pos;
   pos->BuildSystemDirectory->DirectoryEnd = pos;
   pos->PolicyScope = originSnapshot.Position->Policies;
   pos->PolicyScope = originSnapshot.Position->Policies;
-  return cmState::Snapshot(this, pos);
+  return cmStateSnapshot(this, pos);
 }
 }
 
 
-cmState::Snapshot cmState::Pop(cmState::Snapshot originSnapshot)
+cmStateSnapshot cmState::Pop(cmStateSnapshot originSnapshot)
 {
 {
   cmStateDetail::PositionType pos = originSnapshot.Position;
   cmStateDetail::PositionType pos = originSnapshot.Position;
   cmStateDetail::PositionType prevPos = pos;
   cmStateDetail::PositionType prevPos = pos;
@@ -922,28 +920,28 @@ cmState::Snapshot cmState::Pop(cmState::Snapshot originSnapshot)
     this->SnapshotData.Pop(pos);
     this->SnapshotData.Pop(pos);
   }
   }
 
 
-  return Snapshot(this, prevPos);
+  return cmStateSnapshot(this, prevPos);
 }
 }
 
 
-cmState::Snapshot::Snapshot(cmState* state)
+cmStateSnapshot::cmStateSnapshot(cmState* state)
   : State(state)
   : State(state)
   , Position()
   , Position()
 {
 {
 }
 }
 
 
-std::vector<cmState::Snapshot> cmState::Snapshot::GetChildren()
+std::vector<cmStateSnapshot> cmStateSnapshot::GetChildren()
 {
 {
   return this->Position->BuildSystemDirectory->Children;
   return this->Position->BuildSystemDirectory->Children;
 }
 }
 
 
-cmState::Snapshot::Snapshot(cmState* state,
-                            cmStateDetail::PositionType position)
+cmStateSnapshot::cmStateSnapshot(cmState* state,
+                                 cmStateDetail::PositionType position)
   : State(state)
   : State(state)
   , Position(position)
   , Position(position)
 {
 {
 }
 }
 
 
-cmStateEnums::SnapshotType cmState::Snapshot::GetType() const
+cmStateEnums::SnapshotType cmStateSnapshot::GetType() const
 {
 {
   return this->Position->SnapshotType;
   return this->Position->SnapshotType;
 }
 }
@@ -982,7 +980,7 @@ void cmStateDirectory::SetCurrentBinary(std::string const& dir)
   this->Snapshot_.SetDefinition("CMAKE_CURRENT_BINARY_DIR", loc);
   this->Snapshot_.SetDefinition("CMAKE_CURRENT_BINARY_DIR", loc);
 }
 }
 
 
-void cmState::Snapshot::SetListFile(const std::string& listfile)
+void cmStateSnapshot::SetListFile(const std::string& listfile)
 {
 {
   *this->Position->ExecutionListFile = listfile;
   *this->Position->ExecutionListFile = listfile;
 }
 }
@@ -1007,39 +1005,39 @@ void cmStateDirectory::SetRelativePathTopBinary(const char* dir)
   this->DirectoryState->RelativePathTopBinary = dir;
   this->DirectoryState->RelativePathTopBinary = dir;
 }
 }
 
 
-std::string cmState::Snapshot::GetExecutionListFile() const
+std::string cmStateSnapshot::GetExecutionListFile() const
 {
 {
   return *this->Position->ExecutionListFile;
   return *this->Position->ExecutionListFile;
 }
 }
 
 
-bool cmState::Snapshot::IsValid() const
+bool cmStateSnapshot::IsValid() const
 {
 {
   return this->State && this->Position.IsValid()
   return this->State && this->Position.IsValid()
     ? this->Position != this->State->SnapshotData.Root()
     ? this->Position != this->State->SnapshotData.Root()
     : false;
     : false;
 }
 }
 
 
-cmState::Snapshot cmState::Snapshot::GetBuildsystemDirectoryParent() const
+cmStateSnapshot cmStateSnapshot::GetBuildsystemDirectoryParent() const
 {
 {
-  Snapshot snapshot;
+  cmStateSnapshot snapshot;
   if (!this->State || this->Position == this->State->SnapshotData.Root()) {
   if (!this->State || this->Position == this->State->SnapshotData.Root()) {
     return snapshot;
     return snapshot;
   }
   }
   cmStateDetail::PositionType parentPos = this->Position->DirectoryParent;
   cmStateDetail::PositionType parentPos = this->Position->DirectoryParent;
   if (parentPos != this->State->SnapshotData.Root()) {
   if (parentPos != this->State->SnapshotData.Root()) {
-    snapshot =
-      Snapshot(this->State, parentPos->BuildSystemDirectory->DirectoryEnd);
+    snapshot = cmStateSnapshot(this->State,
+                               parentPos->BuildSystemDirectory->DirectoryEnd);
   }
   }
 
 
   return snapshot;
   return snapshot;
 }
 }
 
 
-cmState::Snapshot cmState::Snapshot::GetCallStackParent() const
+cmStateSnapshot cmStateSnapshot::GetCallStackParent() const
 {
 {
   assert(this->State);
   assert(this->State);
   assert(this->Position != this->State->SnapshotData.Root());
   assert(this->Position != this->State->SnapshotData.Root());
 
 
-  Snapshot snapshot;
+  cmStateSnapshot snapshot;
   cmStateDetail::PositionType parentPos = this->Position;
   cmStateDetail::PositionType parentPos = this->Position;
   while (parentPos->SnapshotType == cmStateEnums::PolicyScopeType ||
   while (parentPos->SnapshotType == cmStateEnums::PolicyScopeType ||
          parentPos->SnapshotType == cmStateEnums::VariableScopeType) {
          parentPos->SnapshotType == cmStateEnums::VariableScopeType) {
@@ -1060,11 +1058,11 @@ cmState::Snapshot cmState::Snapshot::GetCallStackParent() const
     return snapshot;
     return snapshot;
   }
   }
 
 
-  snapshot = Snapshot(this->State, parentPos);
+  snapshot = cmStateSnapshot(this->State, parentPos);
   return snapshot;
   return snapshot;
 }
 }
 
 
-cmState::Snapshot cmState::Snapshot::GetCallStackBottom() const
+cmStateSnapshot cmStateSnapshot::GetCallStackBottom() const
 {
 {
   assert(this->State);
   assert(this->State);
   assert(this->Position != this->State->SnapshotData.Root());
   assert(this->Position != this->State->SnapshotData.Root());
@@ -1075,17 +1073,17 @@ cmState::Snapshot cmState::Snapshot::GetCallStackBottom() const
          pos != this->State->SnapshotData.Root()) {
          pos != this->State->SnapshotData.Root()) {
     ++pos;
     ++pos;
   }
   }
-  return Snapshot(this->State, pos);
+  return cmStateSnapshot(this->State, pos);
 }
 }
 
 
-void cmState::Snapshot::PushPolicy(cmPolicies::PolicyMap entry, bool weak)
+void cmStateSnapshot::PushPolicy(cmPolicies::PolicyMap entry, bool weak)
 {
 {
   cmStateDetail::PositionType pos = this->Position;
   cmStateDetail::PositionType pos = this->Position;
   pos->Policies = this->State->PolicyStack.Push(
   pos->Policies = this->State->PolicyStack.Push(
     pos->Policies, cmStateDetail::PolicyStackEntry(entry, weak));
     pos->Policies, cmStateDetail::PolicyStackEntry(entry, weak));
 }
 }
 
 
-bool cmState::Snapshot::PopPolicy()
+bool cmStateSnapshot::PopPolicy()
 {
 {
   cmStateDetail::PositionType pos = this->Position;
   cmStateDetail::PositionType pos = this->Position;
   if (pos->Policies == pos->PolicyScope) {
   if (pos->Policies == pos->PolicyScope) {
@@ -1095,13 +1093,13 @@ bool cmState::Snapshot::PopPolicy()
   return true;
   return true;
 }
 }
 
 
-bool cmState::Snapshot::CanPopPolicyScope()
+bool cmStateSnapshot::CanPopPolicyScope()
 {
 {
   return this->Position->Policies == this->Position->PolicyScope;
   return this->Position->Policies == this->Position->PolicyScope;
 }
 }
 
 
-void cmState::Snapshot::SetPolicy(cmPolicies::PolicyID id,
-                                  cmPolicies::PolicyStatus status)
+void cmStateSnapshot::SetPolicy(cmPolicies::PolicyID id,
+                                cmPolicies::PolicyStatus status)
 {
 {
   // Update the policy stack from the top to the top-most strong entry.
   // Update the policy stack from the top to the top-most strong entry.
   bool previous_was_weak = true;
   bool previous_was_weak = true;
@@ -1113,7 +1111,7 @@ void cmState::Snapshot::SetPolicy(cmPolicies::PolicyID id,
   }
   }
 }
 }
 
 
-cmPolicies::PolicyStatus cmState::Snapshot::GetPolicy(
+cmPolicies::PolicyStatus cmStateSnapshot::GetPolicy(
   cmPolicies::PolicyID id) const
   cmPolicies::PolicyID id) const
 {
 {
   cmPolicies::PolicyStatus status = cmPolicies::GetPolicyStatus(id);
   cmPolicies::PolicyStatus status = cmPolicies::GetPolicyStatus(id);
@@ -1148,49 +1146,49 @@ cmPolicies::PolicyStatus cmState::Snapshot::GetPolicy(
   return status;
   return status;
 }
 }
 
 
-bool cmState::Snapshot::HasDefinedPolicyCMP0011()
+bool cmStateSnapshot::HasDefinedPolicyCMP0011()
 {
 {
   return !this->Position->Policies->IsEmpty();
   return !this->Position->Policies->IsEmpty();
 }
 }
 
 
-const char* cmState::Snapshot::GetDefinition(std::string const& name) const
+const char* cmStateSnapshot::GetDefinition(std::string const& name) const
 {
 {
   assert(this->Position->Vars.IsValid());
   assert(this->Position->Vars.IsValid());
   return cmDefinitions::Get(name, this->Position->Vars, this->Position->Root);
   return cmDefinitions::Get(name, this->Position->Vars, this->Position->Root);
 }
 }
 
 
-bool cmState::Snapshot::IsInitialized(std::string const& name) const
+bool cmStateSnapshot::IsInitialized(std::string const& name) const
 {
 {
   return cmDefinitions::HasKey(name, this->Position->Vars,
   return cmDefinitions::HasKey(name, this->Position->Vars,
                                this->Position->Root);
                                this->Position->Root);
 }
 }
 
 
-void cmState::Snapshot::SetDefinition(std::string const& name,
-                                      std::string const& value)
+void cmStateSnapshot::SetDefinition(std::string const& name,
+                                    std::string const& value)
 {
 {
   this->Position->Vars->Set(name, value.c_str());
   this->Position->Vars->Set(name, value.c_str());
 }
 }
 
 
-void cmState::Snapshot::RemoveDefinition(std::string const& name)
+void cmStateSnapshot::RemoveDefinition(std::string const& name)
 {
 {
   this->Position->Vars->Set(name, CM_NULLPTR);
   this->Position->Vars->Set(name, CM_NULLPTR);
 }
 }
 
 
-std::vector<std::string> cmState::Snapshot::UnusedKeys() const
+std::vector<std::string> cmStateSnapshot::UnusedKeys() const
 {
 {
   return this->Position->Vars->UnusedKeys();
   return this->Position->Vars->UnusedKeys();
 }
 }
 
 
-std::vector<std::string> cmState::Snapshot::ClosureKeys() const
+std::vector<std::string> cmStateSnapshot::ClosureKeys() const
 {
 {
   return cmDefinitions::ClosureKeys(this->Position->Vars,
   return cmDefinitions::ClosureKeys(this->Position->Vars,
                                     this->Position->Root);
                                     this->Position->Root);
 }
 }
 
 
-bool cmState::Snapshot::RaiseScope(std::string const& var, const char* varDef)
+bool cmStateSnapshot::RaiseScope(std::string const& var, const char* varDef)
 {
 {
   if (this->Position->ScopeParent == this->Position->DirectoryParent) {
   if (this->Position->ScopeParent == this->Position->DirectoryParent) {
-    Snapshot parentDir = this->GetBuildsystemDirectoryParent();
+    cmStateSnapshot parentDir = this->GetBuildsystemDirectoryParent();
     if (!parentDir.IsValid()) {
     if (!parentDir.IsValid()) {
       return false;
       return false;
     }
     }
@@ -1241,7 +1239,7 @@ void InitializeContentFromParent(T& parentContent, T& thisContent,
   contentEndPosition = thisContent.size();
   contentEndPosition = thisContent.size();
 }
 }
 
 
-void cmState::Snapshot::SetDefaultDefinitions()
+void cmStateSnapshot::SetDefaultDefinitions()
 {
 {
 /* Up to CMake 2.4 here only WIN32, UNIX and APPLE were set.
 /* Up to CMake 2.4 here only WIN32, UNIX and APPLE were set.
   With CMake must separate between target and host platform. In most cases
   With CMake must separate between target and host platform. In most cases
@@ -1296,7 +1294,7 @@ void cmState::Snapshot::SetDefaultDefinitions()
     "INCLUDE_REGULAR_EXPRESSION", "^.*$");
     "INCLUDE_REGULAR_EXPRESSION", "^.*$");
 }
 }
 
 
-void cmState::Snapshot::SetDirectoryDefinitions()
+void cmStateSnapshot::SetDirectoryDefinitions()
 {
 {
   this->SetDefinition("CMAKE_SOURCE_DIR", this->State->GetSourceDirectory());
   this->SetDefinition("CMAKE_SOURCE_DIR", this->State->GetSourceDirectory());
   this->SetDefinition("CMAKE_CURRENT_SOURCE_DIR",
   this->SetDefinition("CMAKE_CURRENT_SOURCE_DIR",
@@ -1306,7 +1304,7 @@ void cmState::Snapshot::SetDirectoryDefinitions()
                       this->State->GetBinaryDirectory());
                       this->State->GetBinaryDirectory());
 }
 }
 
 
-void cmState::Snapshot::InitializeFromParent()
+void cmStateSnapshot::InitializeFromParent()
 {
 {
   cmStateDetail::PositionType parent = this->Position->DirectoryParent;
   cmStateDetail::PositionType parent = this->Position->DirectoryParent;
   assert(this->Position->Vars.IsValid());
   assert(this->Position->Vars.IsValid());
@@ -1337,27 +1335,27 @@ void cmState::Snapshot::InitializeFromParent()
     this->Position->CompileOptionsPosition);
     this->Position->CompileOptionsPosition);
 }
 }
 
 
-cmState* cmState::Snapshot::GetState() const
+cmState* cmStateSnapshot::GetState() const
 {
 {
   return this->State;
   return this->State;
 }
 }
 
 
-cmStateDirectory cmState::Snapshot::GetDirectory() const
+cmStateDirectory cmStateSnapshot::GetDirectory() const
 {
 {
   return cmStateDirectory(this->Position->BuildSystemDirectory, *this);
   return cmStateDirectory(this->Position->BuildSystemDirectory, *this);
 }
 }
 
 
-void cmState::Snapshot::SetProjectName(const std::string& name)
+void cmStateSnapshot::SetProjectName(const std::string& name)
 {
 {
   this->Position->BuildSystemDirectory->ProjectName = name;
   this->Position->BuildSystemDirectory->ProjectName = name;
 }
 }
 
 
-std::string cmState::Snapshot::GetProjectName() const
+std::string cmStateSnapshot::GetProjectName() const
 {
 {
   return this->Position->BuildSystemDirectory->ProjectName;
   return this->Position->BuildSystemDirectory->ProjectName;
 }
 }
 
 
-void cmState::Snapshot::InitializeFromParent_ForSubdirsCommand()
+void cmStateSnapshot::InitializeFromParent_ForSubdirsCommand()
 {
 {
   std::string currentSrcDir = this->GetDefinition("CMAKE_CURRENT_SOURCE_DIR");
   std::string currentSrcDir = this->GetDefinition("CMAKE_CURRENT_SOURCE_DIR");
   std::string currentBinDir = this->GetDefinition("CMAKE_CURRENT_BINARY_DIR");
   std::string currentBinDir = this->GetDefinition("CMAKE_CURRENT_BINARY_DIR");
@@ -1371,7 +1369,7 @@ void cmState::Snapshot::InitializeFromParent_ForSubdirsCommand()
 
 
 cmStateDirectory::cmStateDirectory(
 cmStateDirectory::cmStateDirectory(
   cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator iter,
   cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator iter,
-  const cmState::Snapshot& snapshot)
+  const cmStateSnapshot& snapshot)
   : DirectoryState(iter)
   : DirectoryState(iter)
   , Snapshot_(snapshot)
   , Snapshot_(snapshot)
 {
 {
@@ -1591,8 +1589,8 @@ void cmStateDirectory::ClearCompileOptions()
                this->Snapshot_.Position->CompileOptionsPosition);
                this->Snapshot_.Position->CompileOptionsPosition);
 }
 }
 
 
-bool cmState::Snapshot::StrictWeakOrder::operator()(
-  const cmState::Snapshot& lhs, const cmState::Snapshot& rhs) const
+bool cmStateSnapshot::StrictWeakOrder::operator()(
+  const cmStateSnapshot& lhs, const cmStateSnapshot& rhs) const
 {
 {
   return lhs.Position.StrictWeakOrdered(rhs.Position);
   return lhs.Position.StrictWeakOrdered(rhs.Position);
 }
 }
@@ -1661,7 +1659,7 @@ const char* cmStateDirectory::GetProperty(const std::string& prop,
   static std::string output;
   static std::string output;
   output = "";
   output = "";
   if (prop == "PARENT_DIRECTORY") {
   if (prop == "PARENT_DIRECTORY") {
-    cmState::Snapshot parent = this->Snapshot_.GetBuildsystemDirectoryParent();
+    cmStateSnapshot parent = this->Snapshot_.GetBuildsystemDirectoryParent();
     if (parent.IsValid()) {
     if (parent.IsValid()) {
       return parent.GetDirectory().GetCurrentSource();
       return parent.GetDirectory().GetCurrentSource();
     }
     }
@@ -1677,9 +1675,9 @@ const char* cmStateDirectory::GetProperty(const std::string& prop,
   }
   }
   if (prop == kSUBDIRECTORIES) {
   if (prop == kSUBDIRECTORIES) {
     std::vector<std::string> child_dirs;
     std::vector<std::string> child_dirs;
-    std::vector<cmState::Snapshot> const& children =
+    std::vector<cmStateSnapshot> const& children =
       this->DirectoryState->Children;
       this->DirectoryState->Children;
-    for (std::vector<cmState::Snapshot>::const_iterator ci = children.begin();
+    for (std::vector<cmStateSnapshot>::const_iterator ci = children.begin();
          ci != children.end(); ++ci) {
          ci != children.end(); ++ci) {
       child_dirs.push_back(ci->GetDirectory().GetCurrentSource());
       child_dirs.push_back(ci->GetDirectory().GetCurrentSource());
     }
     }
@@ -1693,7 +1691,7 @@ const char* cmStateDirectory::GetProperty(const std::string& prop,
 
 
   if (prop == "LISTFILE_STACK") {
   if (prop == "LISTFILE_STACK") {
     std::vector<std::string> listFiles;
     std::vector<std::string> listFiles;
-    cmState::Snapshot snp = this->Snapshot_;
+    cmStateSnapshot snp = this->Snapshot_;
     while (snp.IsValid()) {
     while (snp.IsValid()) {
       listFiles.push_back(snp.GetExecutionListFile());
       listFiles.push_back(snp.GetExecutionListFile());
       snp = snp.GetCallStackParent();
       snp = snp.GetCallStackParent();
@@ -1730,7 +1728,7 @@ const char* cmStateDirectory::GetProperty(const std::string& prop,
 
 
   const char* retVal = this->DirectoryState->Properties.GetPropertyValue(prop);
   const char* retVal = this->DirectoryState->Properties.GetPropertyValue(prop);
   if (!retVal && chain) {
   if (!retVal && chain) {
-    cmState::Snapshot parentSnapshot =
+    cmStateSnapshot parentSnapshot =
       this->Snapshot_.GetBuildsystemDirectoryParent();
       this->Snapshot_.GetBuildsystemDirectoryParent();
     if (parentSnapshot.IsValid()) {
     if (parentSnapshot.IsValid()) {
       return parentSnapshot.GetDirectory().GetProperty(prop, chain);
       return parentSnapshot.GetDirectory().GetProperty(prop, chain);
@@ -1763,12 +1761,12 @@ void cmStateDirectory::AddNormalTargetName(std::string const& name)
   this->DirectoryState->NormalTargetNames.push_back(name);
   this->DirectoryState->NormalTargetNames.push_back(name);
 }
 }
 
 
-bool operator==(const cmState::Snapshot& lhs, const cmState::Snapshot& rhs)
+bool operator==(const cmStateSnapshot& lhs, const cmStateSnapshot& rhs)
 {
 {
   return lhs.Position == rhs.Position;
   return lhs.Position == rhs.Position;
 }
 }
 
 
-bool operator!=(const cmState::Snapshot& lhs, const cmState::Snapshot& rhs)
+bool operator!=(const cmStateSnapshot& lhs, const cmStateSnapshot& rhs)
 {
 {
   return lhs.Position != rhs.Position;
   return lhs.Position != rhs.Position;
 }
 }

+ 89 - 85
Source/cmState.h

@@ -69,97 +69,35 @@ enum CacheEntryType
 }
 }
 
 
 class cmStateDirectory;
 class cmStateDirectory;
+class cmStateSnapshot;
 
 
 class cmState
 class cmState
 {
 {
+  friend class cmStateSnapshot;
 
 
 public:
 public:
   cmState();
   cmState();
   ~cmState();
   ~cmState();
 
 
+  typedef cmStateSnapshot Snapshot;
   typedef cmStateDirectory Directory;
   typedef cmStateDirectory Directory;
 
 
-  class Snapshot
-  {
-  public:
-    Snapshot(cmState* state = CM_NULLPTR);
-    Snapshot(cmState* state, cmStateDetail::PositionType position);
-
-    const char* GetDefinition(std::string const& name) const;
-    bool IsInitialized(std::string const& name) const;
-    void SetDefinition(std::string const& name, std::string const& value);
-    void RemoveDefinition(std::string const& name);
-    std::vector<std::string> UnusedKeys() const;
-    std::vector<std::string> ClosureKeys() const;
-    bool RaiseScope(std::string const& var, const char* varDef);
-
-    void SetListFile(std::string const& listfile);
-
-    std::string GetExecutionListFile() const;
-
-    std::vector<Snapshot> GetChildren();
-
-    bool IsValid() const;
-    Snapshot GetBuildsystemDirectoryParent() const;
-    Snapshot GetCallStackParent() const;
-    Snapshot GetCallStackBottom() const;
-    cmStateEnums::SnapshotType GetType() const;
-
-    void SetPolicy(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status);
-    cmPolicies::PolicyStatus GetPolicy(cmPolicies::PolicyID id) const;
-    bool HasDefinedPolicyCMP0011();
-    void PushPolicy(cmPolicies::PolicyMap entry, bool weak);
-    bool PopPolicy();
-    bool CanPopPolicyScope();
-
-    cmState* GetState() const;
-
-    cmStateDirectory GetDirectory() const;
-
-    void SetProjectName(std::string const& name);
-    std::string GetProjectName() const;
-
-    void InitializeFromParent_ForSubdirsCommand();
-
-    struct StrictWeakOrder
-    {
-      bool operator()(const cmState::Snapshot& lhs,
-                      const cmState::Snapshot& rhs) const;
-    };
-
-    void SetDirectoryDefinitions();
-    void SetDefaultDefinitions();
-
-  private:
-    friend bool operator==(const cmState::Snapshot& lhs,
-                           const cmState::Snapshot& rhs);
-    friend bool operator!=(const cmState::Snapshot& lhs,
-                           const cmState::Snapshot& rhs);
-    friend class cmState;
-    friend class cmStateDirectory;
-    friend struct StrictWeakOrder;
-
-    void InitializeFromParent();
-
-    cmState* State;
-    cmStateDetail::PositionType Position;
-  };
-
   static const char* GetTargetTypeName(cmStateEnums::TargetType targetType);
   static const char* GetTargetTypeName(cmStateEnums::TargetType targetType);
 
 
-  Snapshot CreateBaseSnapshot();
-  Snapshot CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot);
-  Snapshot CreateFunctionCallSnapshot(Snapshot originSnapshot,
-                                      std::string const& fileName);
-  Snapshot CreateMacroCallSnapshot(Snapshot originSnapshot,
-                                   std::string const& fileName);
-  Snapshot CreateIncludeFileSnapshot(Snapshot originSnapshot,
-                                     std::string const& fileName);
-  Snapshot CreateVariableScopeSnapshot(Snapshot originSnapshot);
-  Snapshot CreateInlineListFileSnapshot(Snapshot originSnapshot,
-                                        std::string const& fileName);
-  Snapshot CreatePolicyScopeSnapshot(Snapshot originSnapshot);
-  Snapshot Pop(Snapshot originSnapshot);
+  cmStateSnapshot CreateBaseSnapshot();
+  cmStateSnapshot CreateBuildsystemDirectorySnapshot(
+    cmStateSnapshot originSnapshot);
+  cmStateSnapshot CreateFunctionCallSnapshot(cmStateSnapshot originSnapshot,
+                                             std::string const& fileName);
+  cmStateSnapshot CreateMacroCallSnapshot(cmStateSnapshot originSnapshot,
+                                          std::string const& fileName);
+  cmStateSnapshot CreateIncludeFileSnapshot(cmStateSnapshot originSnapshot,
+                                            std::string const& fileName);
+  cmStateSnapshot CreateVariableScopeSnapshot(cmStateSnapshot originSnapshot);
+  cmStateSnapshot CreateInlineListFileSnapshot(cmStateSnapshot originSnapshot,
+                                               std::string const& fileName);
+  cmStateSnapshot CreatePolicyScopeSnapshot(cmStateSnapshot originSnapshot);
+  cmStateSnapshot Pop(cmStateSnapshot originSnapshot);
 
 
   static cmStateEnums::CacheEntryType StringToCacheEntryType(const char*);
   static cmStateEnums::CacheEntryType StringToCacheEntryType(const char*);
   static const char* CacheEntryTypeToString(cmStateEnums::CacheEntryType);
   static const char* CacheEntryTypeToString(cmStateEnums::CacheEntryType);
@@ -204,7 +142,7 @@ public:
                               std::string& value,
                               std::string& value,
                               cmStateEnums::CacheEntryType& type);
                               cmStateEnums::CacheEntryType& type);
 
 
-  Snapshot Reset();
+  cmStateSnapshot Reset();
   // Define a property
   // Define a property
   void DefineProperty(const std::string& name, cmProperty::ScopeType scope,
   void DefineProperty(const std::string& name, cmProperty::ScopeType scope,
                       const char* ShortDescription,
                       const char* ShortDescription,
@@ -295,11 +233,77 @@ private:
   bool MSYSShell;
   bool MSYSShell;
 };
 };
 
 
+class cmStateSnapshot
+{
+public:
+  cmStateSnapshot(cmState* state = CM_NULLPTR);
+  cmStateSnapshot(cmState* state, cmStateDetail::PositionType position);
+
+  const char* GetDefinition(std::string const& name) const;
+  bool IsInitialized(std::string const& name) const;
+  void SetDefinition(std::string const& name, std::string const& value);
+  void RemoveDefinition(std::string const& name);
+  std::vector<std::string> UnusedKeys() const;
+  std::vector<std::string> ClosureKeys() const;
+  bool RaiseScope(std::string const& var, const char* varDef);
+
+  void SetListFile(std::string const& listfile);
+
+  std::string GetExecutionListFile() const;
+
+  std::vector<cmStateSnapshot> GetChildren();
+
+  bool IsValid() const;
+  cmStateSnapshot GetBuildsystemDirectoryParent() const;
+  cmStateSnapshot GetCallStackParent() const;
+  cmStateSnapshot GetCallStackBottom() const;
+  cmStateEnums::SnapshotType GetType() const;
+
+  void SetPolicy(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status);
+  cmPolicies::PolicyStatus GetPolicy(cmPolicies::PolicyID id) const;
+  bool HasDefinedPolicyCMP0011();
+  void PushPolicy(cmPolicies::PolicyMap entry, bool weak);
+  bool PopPolicy();
+  bool CanPopPolicyScope();
+
+  cmState* GetState() const;
+
+  cmStateDirectory GetDirectory() const;
+
+  void SetProjectName(std::string const& name);
+  std::string GetProjectName() const;
+
+  void InitializeFromParent_ForSubdirsCommand();
+
+  struct StrictWeakOrder
+  {
+    bool operator()(const cmStateSnapshot& lhs,
+                    const cmStateSnapshot& rhs) const;
+  };
+
+  void SetDirectoryDefinitions();
+  void SetDefaultDefinitions();
+
+private:
+  friend bool operator==(const cmStateSnapshot& lhs,
+                         const cmStateSnapshot& rhs);
+  friend bool operator!=(const cmStateSnapshot& lhs,
+                         const cmStateSnapshot& rhs);
+  friend class cmState;
+  friend class cmStateDirectory;
+  friend struct StrictWeakOrder;
+
+  void InitializeFromParent();
+
+  cmState* State;
+  cmStateDetail::PositionType Position;
+};
+
 class cmStateDirectory
 class cmStateDirectory
 {
 {
   cmStateDirectory(
   cmStateDirectory(
     cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator iter,
     cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator iter,
-    cmState::Snapshot const& snapshot);
+    cmStateSnapshot const& snapshot);
 
 
 public:
 public:
   const char* GetCurrentSource() const;
   const char* GetCurrentSource() const;
@@ -356,11 +360,11 @@ private:
 private:
 private:
   cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator
   cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator
     DirectoryState;
     DirectoryState;
-  cmState::Snapshot Snapshot_;
-  friend class cmState::Snapshot;
+  cmStateSnapshot Snapshot_;
+  friend class cmStateSnapshot;
 };
 };
 
 
-bool operator==(const cmState::Snapshot& lhs, const cmState::Snapshot& rhs);
-bool operator!=(const cmState::Snapshot& lhs, const cmState::Snapshot& rhs);
+bool operator==(const cmStateSnapshot& lhs, const cmStateSnapshot& rhs);
+bool operator!=(const cmStateSnapshot& lhs, const cmStateSnapshot& rhs);
 
 
 #endif
 #endif