summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2015-05-03 08:12:28 (GMT)
committerStephen Kelly <steveire@gmail.com>2015-05-04 20:32:21 (GMT)
commitbe6664c208c65e01dc175ae4d27e7fc18c28c97e (patch)
tree8fdfd15921c8b7d9036c882a13b80676d5c7d1e0
parentde211686122166e7485a98fd027bd1d32fda40b0 (diff)
downloadCMake-be6664c208c65e01dc175ae4d27e7fc18c28c97e.zip
CMake-be6664c208c65e01dc175ae4d27e7fc18c28c97e.tar.gz
CMake-be6664c208c65e01dc175ae4d27e7fc18c28c97e.tar.bz2
cmPolicies: Implement abstraction for PolicyMap.
Hide the detail that it is a std::map.
-rw-r--r--Source/cmMakefile.cxx11
-rw-r--r--Source/cmPolicies.cxx22
-rw-r--r--Source/cmPolicies.h8
3 files changed, 34 insertions, 7 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 29d891c..3befbdd 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -569,7 +569,7 @@ cmMakefile::IncludeScope::~IncludeScope()
// one we pushed above. If the entry is empty, then the included
// script did not set any policies that might affect the includer so
// we do not need to enforce the policy.
- if(this->CheckCMP0011 && this->Makefile->PolicyStack.back().empty())
+ if(this->CheckCMP0011 && this->Makefile->PolicyStack.back().IsEmpty())
{
this->CheckCMP0011 = false;
}
@@ -4772,10 +4772,9 @@ cmMakefile::GetPolicyStatusInternal(cmPolicies::PolicyID id) const
for(PolicyStackType::const_reverse_iterator psi = this->PolicyStack.rbegin();
psi != this->PolicyStack.rend(); ++psi)
{
- PolicyStackEntry::const_iterator pse = psi->find(id);
- if(pse != psi->end())
+ if(psi->IsDefined(id))
{
- return pse->second;
+ return psi->Get(id);
}
}
@@ -4840,7 +4839,7 @@ bool cmMakefile::SetPolicy(cmPolicies::PolicyID id,
for(PolicyStackType::reverse_iterator psi = this->PolicyStack.rbegin();
previous_was_weak && psi != this->PolicyStack.rend(); ++psi)
{
- (*psi)[id] = status;
+ psi->Set(id, status);
previous_was_weak = psi->Weak;
}
@@ -4960,7 +4959,7 @@ void cmMakefile::RecordPolicies(cmPolicies::PolicyMap& pm)
for(PolicyID pid = cmPolicies::CMP0000;
pid != cmPolicies::CMPCOUNT; pid = PolicyID(pid+1))
{
- pm[pid] = this->GetPolicyStatus(pid);
+ pm.Set(pid, this->GetPolicyStatus(pid));
}
}
diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx
index c95520f..8996943 100644
--- a/Source/cmPolicies.cxx
+++ b/Source/cmPolicies.cxx
@@ -342,3 +342,25 @@ cmPolicies::GetRequiredAlwaysPolicyError(cmPolicies::PolicyID id)
<< "Run cmake --help-policy " << pid << " for more information.";
return e.str();
}
+
+cmPolicies::PolicyStatus
+cmPolicies::PolicyMap::Get(cmPolicies::PolicyID id) const
+{
+ return this->find(id)->second;
+}
+
+void cmPolicies::PolicyMap::Set(cmPolicies::PolicyID id,
+ cmPolicies::PolicyStatus status)
+{
+ (*this)[id] = status;
+}
+
+bool cmPolicies::PolicyMap::IsDefined(cmPolicies::PolicyID id) const
+{
+ return this->find(id) != this->end();
+}
+
+bool cmPolicies::PolicyMap::IsEmpty() const
+{
+ return this->empty();
+}
diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h
index fee7dd9..46b725a 100644
--- a/Source/cmPolicies.h
+++ b/Source/cmPolicies.h
@@ -268,7 +268,13 @@ public:
static std::string GetRequiredAlwaysPolicyError(cmPolicies::PolicyID id);
/** Represent a set of policy values. */
- typedef std::map<PolicyID, PolicyStatus> PolicyMap;
+ struct PolicyMap : private std::map<PolicyID, PolicyStatus>
+ {
+ PolicyStatus Get(PolicyID id) const;
+ void Set(PolicyID id, PolicyStatus status);
+ bool IsDefined(PolicyID id) const;
+ bool IsEmpty() const;
+ };
};
#endif