[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