[Cmake-commits] CMake branch, next, updated. v3.2.2-2455-ga9884e4
Stephen Kelly
steveire at gmail.com
Sun May 3 14:35:54 EDT 2015
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, next has been updated
via a9884e44e9f074b0747bbad4ed926b94f8ffb3d5 (commit)
via bdac4ea191295ca63b6f845ab71df210fb141d4e (commit)
from f1c2f3da46a095710fe02c6dbd27329a10920cd4 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a9884e44e9f074b0747bbad4ed926b94f8ffb3d5
commit a9884e44e9f074b0747bbad4ed926b94f8ffb3d5
Merge: f1c2f3d bdac4ea
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun May 3 14:35:53 2015 -0400
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Sun May 3 14:35:53 2015 -0400
Merge topic 'refactor-cmPolicies' into next
bdac4ea1 cmPolicies: Implement PolicyMap in terms of bitset.
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bdac4ea191295ca63b6f845ab71df210fb141d4e
commit bdac4ea191295ca63b6f845ab71df210fb141d4e
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun May 3 10:12:34 2015 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Sun May 3 20:35:41 2015 +0200
cmPolicies: Implement PolicyMap in terms of bitset.
diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx
index f593149..31ab4dc 100644
--- a/Source/cmPolicies.cxx
+++ b/Source/cmPolicies.cxx
@@ -328,24 +328,51 @@ cmPolicies::GetRequiredAlwaysPolicyError(cmPolicies::PolicyID id)
return e.str();
}
+cmPolicies::PolicyMap::PolicyMap()
+{
+ this->UNDEFINED.set();
+}
+
cmPolicies::PolicyStatus
cmPolicies::PolicyMap::Get(cmPolicies::PolicyID id) const
{
- return this->find(id)->second;
+ PolicyStatus status = cmPolicies::WARN;
+
+ if (this->OLD[id])
+ {
+ status = cmPolicies::OLD;
+ }
+ else if (this->NEW[id])
+ {
+ status = cmPolicies::NEW;
+ }
+ else if (this->REQUIRED_ALWAYS[id])
+ {
+ status = cmPolicies::REQUIRED_ALWAYS;
+ }
+ else if (this->REQUIRED_IF_USED[id])
+ {
+ status = cmPolicies::REQUIRED_IF_USED;
+ }
+ return status;
}
void cmPolicies::PolicyMap::Set(cmPolicies::PolicyID id,
cmPolicies::PolicyStatus status)
{
- (*this)[id] = status;
+ this->UNDEFINED.reset(id);
+ this->OLD[id] = (status == cmPolicies::OLD);
+ this->NEW[id] = (status == cmPolicies::NEW);
+ this->REQUIRED_ALWAYS[id] = (status == cmPolicies::REQUIRED_ALWAYS);
+ this->REQUIRED_IF_USED[id] = (status == cmPolicies::REQUIRED_IF_USED);
}
bool cmPolicies::PolicyMap::IsDefined(cmPolicies::PolicyID id) const
{
- return this->find(id) != this->end();
+ return !this->UNDEFINED[id];
}
bool cmPolicies::PolicyMap::IsEmpty() const
{
- return this->empty();
+ return !this->UNDEFINED.none();
}
diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h
index 46b725a..63376dd 100644
--- a/Source/cmPolicies.h
+++ b/Source/cmPolicies.h
@@ -14,6 +14,8 @@
#include "cmCustomCommand.h"
+#include <bitset>
+
class cmMakefile;
class cmPolicy;
@@ -268,12 +270,20 @@ public:
static std::string GetRequiredAlwaysPolicyError(cmPolicies::PolicyID id);
/** Represent a set of policy values. */
- struct PolicyMap : private std::map<PolicyID, PolicyStatus>
+ struct PolicyMap
{
+ PolicyMap();
PolicyStatus Get(PolicyID id) const;
void Set(PolicyID id, PolicyStatus status);
bool IsDefined(PolicyID id) const;
bool IsEmpty() const;
+
+ private:
+ std::bitset<cmPolicies::CMPCOUNT> UNDEFINED;
+ std::bitset<cmPolicies::CMPCOUNT> OLD;
+ std::bitset<cmPolicies::CMPCOUNT> NEW;
+ std::bitset<cmPolicies::CMPCOUNT> REQUIRED_IF_USED;
+ std::bitset<cmPolicies::CMPCOUNT> REQUIRED_ALWAYS;
};
};
-----------------------------------------------------------------------
Summary of changes:
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list