cmPolicies: Implement abstraction for PolicyMap.
Hide the detail that it is a std::map.
This commit is contained in:
parent
de21168612
commit
be6664c208
|
@ -569,7 +569,7 @@ cmMakefile::IncludeScope::~IncludeScope()
|
||||||
// one we pushed above. If the entry is empty, then the included
|
// one we pushed above. If the entry is empty, then the included
|
||||||
// script did not set any policies that might affect the includer so
|
// script did not set any policies that might affect the includer so
|
||||||
// we do not need to enforce the policy.
|
// 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;
|
this->CheckCMP0011 = false;
|
||||||
}
|
}
|
||||||
|
@ -4772,10 +4772,9 @@ cmMakefile::GetPolicyStatusInternal(cmPolicies::PolicyID id) const
|
||||||
for(PolicyStackType::const_reverse_iterator psi = this->PolicyStack.rbegin();
|
for(PolicyStackType::const_reverse_iterator psi = this->PolicyStack.rbegin();
|
||||||
psi != this->PolicyStack.rend(); ++psi)
|
psi != this->PolicyStack.rend(); ++psi)
|
||||||
{
|
{
|
||||||
PolicyStackEntry::const_iterator pse = psi->find(id);
|
if(psi->IsDefined(id))
|
||||||
if(pse != psi->end())
|
|
||||||
{
|
{
|
||||||
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();
|
for(PolicyStackType::reverse_iterator psi = this->PolicyStack.rbegin();
|
||||||
previous_was_weak && psi != this->PolicyStack.rend(); ++psi)
|
previous_was_weak && psi != this->PolicyStack.rend(); ++psi)
|
||||||
{
|
{
|
||||||
(*psi)[id] = status;
|
psi->Set(id, status);
|
||||||
previous_was_weak = psi->Weak;
|
previous_was_weak = psi->Weak;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4960,7 +4959,7 @@ void cmMakefile::RecordPolicies(cmPolicies::PolicyMap& pm)
|
||||||
for(PolicyID pid = cmPolicies::CMP0000;
|
for(PolicyID pid = cmPolicies::CMP0000;
|
||||||
pid != cmPolicies::CMPCOUNT; pid = PolicyID(pid+1))
|
pid != cmPolicies::CMPCOUNT; pid = PolicyID(pid+1))
|
||||||
{
|
{
|
||||||
pm[pid] = this->GetPolicyStatus(pid);
|
pm.Set(pid, this->GetPolicyStatus(pid));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -342,3 +342,25 @@ cmPolicies::GetRequiredAlwaysPolicyError(cmPolicies::PolicyID id)
|
||||||
<< "Run cmake --help-policy " << pid << " for more information.";
|
<< "Run cmake --help-policy " << pid << " for more information.";
|
||||||
return e.str();
|
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();
|
||||||
|
}
|
||||||
|
|
|
@ -268,7 +268,13 @@ public:
|
||||||
static std::string GetRequiredAlwaysPolicyError(cmPolicies::PolicyID id);
|
static std::string GetRequiredAlwaysPolicyError(cmPolicies::PolicyID id);
|
||||||
|
|
||||||
/** Represent a set of policy values. */
|
/** 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
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue