diff options
-rw-r--r-- | Source/cmMakefile.cxx | 7 | ||||
-rw-r--r-- | Source/cmMakefile.h | 12 | ||||
-rw-r--r-- | Source/cmPolicies.h | 4 |
3 files changed, 16 insertions, 7 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 890f752..f9b40b1 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -3599,11 +3599,10 @@ cmPolicies::PolicyStatus cmMakefile::GetPolicyStatusInternal(cmPolicies::PolicyID id) { // Is the policy set in our stack? - for(std::vector<PolicyMap>::reverse_iterator - psi = this->PolicyStack.rbegin(); + for(PolicyStackType::reverse_iterator psi = this->PolicyStack.rbegin(); psi != this->PolicyStack.rend(); ++psi) { - PolicyMap::const_iterator pse = psi->find(id); + PolicyStackEntry::const_iterator pse = psi->find(id); if(pse != psi->end()) { return pse->second; @@ -3678,7 +3677,7 @@ bool cmMakefile::SetPolicy(cmPolicies::PolicyID id, bool cmMakefile::PushPolicy() { // Allocate a new stack entry. - this->PolicyStack.push_back(PolicyMap()); + this->PolicyStack.push_back(PolicyStackEntry()); return true; } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index c6061d7..4daec16 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -931,9 +931,15 @@ private: std::map<cmStdString, cmTarget*> ImportedTargets; // stack of policy settings - typedef std::map<cmPolicies::PolicyID, - cmPolicies::PolicyStatus> PolicyMap; - std::vector<PolicyMap> PolicyStack; + struct PolicyStackEntry: public cmPolicies::PolicyMap + { + typedef cmPolicies::PolicyMap derived; + PolicyStackEntry(): derived() {} + PolicyStackEntry(derived const& d): derived(d) {} + PolicyStackEntry(PolicyStackEntry const& r): derived(r) {} + }; + typedef std::vector<PolicyStackEntry> PolicyStackType; + PolicyStackType PolicyStack; cmPolicies::PolicyStatus GetPolicyStatusInternal(cmPolicies::PolicyID id); bool CheckCMP0000; diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 02f7276..8dc7f31 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -89,6 +89,10 @@ public: ///! Get docs for policies void GetDocumentation(std::vector<cmDocumentationEntry>& v); + /** Represent a set of policy values. */ + typedef std::map<cmPolicies::PolicyID, + cmPolicies::PolicyStatus> PolicyMap; + private: // might have to make these internal for VS6 not sure yet std::map<PolicyID,cmPolicy *> Policies; |