[Cmake-commits] CMake branch, next, updated. v3.2.2-2323-g6571f74

Stephen Kelly steveire at gmail.com
Wed Apr 29 17:53:42 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  6571f7429e95375354f2eca53e1e2d763b26e22b (commit)
       via  a730146586cfe616f8fd37b69526dc1a251ff1a3 (commit)
       via  b2a5889c8c78b52c5a6abdd9b4950b293c3045f5 (commit)
       via  2afcd5f3d8836bab7f49fb26c2493748ca3682cf (commit)
       via  d858f36339d61e45913165bc957d645bf1060f54 (commit)
      from  c56d56295184eb9387cf40ea34f02c69e53bfa06 (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=6571f7429e95375354f2eca53e1e2d763b26e22b
commit 6571f7429e95375354f2eca53e1e2d763b26e22b
Merge: c56d562 a730146
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Apr 29 17:53:41 2015 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Apr 29 17:53:41 2015 -0400

    Merge topic 'MakeClosure-external-loop' into next
    
    a7301465 cmDefinitions: Implement MakeClosure in terms of reverse iterators.
    b2a5889c cmDefinitions: Convert MakeClosure into a static method.
    2afcd5f3 cmDefinitions: Implement MakeClosure in terms of a vector of ancestors.
    d858f363 cmDefinitions: Use list of cmDefinitions* to create closure.

diff --cc Source/cmDefinitions.h
index 211c8e1,87f5c34..4c7f11f
--- a/Source/cmDefinitions.h
+++ b/Source/cmDefinitions.h
@@@ -45,10 -47,12 +47,12 @@@ public
    /** Get the set of all local keys.  */
    std::vector<std::string> LocalKeys() const;
  
 -  /** Compute the set of all defined keys.  */
 -  std::vector<std::string> ClosureKeys() const;
 +  std::vector<std::string>
 +  ClosureKeys(std::set<std::string>& bound) const;
  
-   cmDefinitions MakeClosure() const;
+   static cmDefinitions MakeClosure(
+       std::list<cmDefinitions>::const_reverse_iterator rbegin,
+       std::list<cmDefinitions>::const_reverse_iterator rend);
  
  private:
    // String with existence boolean.

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a730146586cfe616f8fd37b69526dc1a251ff1a3
commit a730146586cfe616f8fd37b69526dc1a251ff1a3
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Apr 29 23:48:43 2015 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Wed Apr 29 23:48:43 2015 +0200

    cmDefinitions: Implement MakeClosure in terms of reverse iterators.
    
    Iterate directly over the parent content provided by cmMakefile.

diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx
index d1fbe74..718d9ec 100644
--- a/Source/cmDefinitions.cxx
+++ b/Source/cmDefinitions.cxx
@@ -76,27 +76,27 @@ std::vector<std::string> cmDefinitions::LocalKeys() const
 
 //----------------------------------------------------------------------------
 cmDefinitions cmDefinitions::MakeClosure(
-    std::list<cmDefinitions const*>::iterator begin,
-    std::list<cmDefinitions const*>::iterator end)
+    std::list<cmDefinitions>::const_reverse_iterator rbegin,
+    std::list<cmDefinitions>::const_reverse_iterator rend)
 {
   std::set<std::string> undefined;
   cmDefinitions closure;
-  closure.MakeClosure(undefined, begin, end);
+  closure.MakeClosure(undefined, rbegin, rend);
   return closure;
 }
 
 //----------------------------------------------------------------------------
 void
 cmDefinitions::MakeClosure(std::set<std::string>& undefined,
-                           std::list<cmDefinitions const*>::iterator begin,
-                           std::list<cmDefinitions const*>::iterator end)
+    std::list<cmDefinitions>::const_reverse_iterator rbegin,
+    std::list<cmDefinitions>::const_reverse_iterator rend)
 {
-  for (std::list<cmDefinitions const*>::const_iterator it = begin;
-       it != end; ++it)
+  for (std::list<cmDefinitions>::const_reverse_iterator it = rbegin;
+       it != rend; ++it)
     {
     // Consider local definitions.
-    for(MapType::const_iterator mi = (*it)->Map.begin();
-        mi != (*it)->Map.end(); ++mi)
+    for(MapType::const_iterator mi = it->Map.begin();
+        mi != it->Map.end(); ++mi)
       {
       // Use this key if it is not already set or unset.
       if(this->Map.find(mi->first) == this->Map.end() &&
diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h
index 67b6170..87f5c34 100644
--- a/Source/cmDefinitions.h
+++ b/Source/cmDefinitions.h
@@ -51,8 +51,8 @@ public:
   std::vector<std::string> ClosureKeys() const;
 
   static cmDefinitions MakeClosure(
-      std::list<cmDefinitions const*>::iterator begin,
-      std::list<cmDefinitions const*>::iterator end);
+      std::list<cmDefinitions>::const_reverse_iterator rbegin,
+      std::list<cmDefinitions>::const_reverse_iterator rend);
 
 private:
   // String with existence boolean.
@@ -84,8 +84,8 @@ private:
   Def const& GetInternal(const std::string& key);
 
   void MakeClosure(std::set<std::string>& undefined,
-                   std::list<cmDefinitions const*>::iterator begin,
-                   std::list<cmDefinitions const*>::iterator end);
+                   std::list<cmDefinitions>::const_reverse_iterator rbegin,
+                   std::list<cmDefinitions>::const_reverse_iterator rend);
 };
 
 #endif
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 8797090..6451874 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -63,15 +63,9 @@ public:
 
   void InitializeDefinitions(cmMakefile* parent)
   {
-    std::list<cmDefinitions const*> defPtrs;
-    for (std::list<cmDefinitions>::iterator it =
-         parent->Internal->VarStack.begin();
-         it != parent->Internal->VarStack.end(); ++it)
-      {
-      defPtrs.push_back(&*it);
-      }
-    this->VarStack.back() = cmDefinitions::MakeClosure(defPtrs.begin(),
-                                                       defPtrs.end());
+    this->VarStack.back() =
+        cmDefinitions::MakeClosure(parent->Internal->VarStack.rbegin(),
+                                   parent->Internal->VarStack.rend());
   }
 
   const char* GetDefinition(std::string const& name)

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b2a5889c8c78b52c5a6abdd9b4950b293c3045f5
commit b2a5889c8c78b52c5a6abdd9b4950b293c3045f5
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 26 16:13:56 2015 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Wed Apr 29 23:44:20 2015 +0200

    cmDefinitions: Convert MakeClosure into a static method.
    
    Accept a range of cmDefinitions*.

diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx
index 873a7b4..d1fbe74 100644
--- a/Source/cmDefinitions.cxx
+++ b/Source/cmDefinitions.cxx
@@ -75,18 +75,13 @@ std::vector<std::string> cmDefinitions::LocalKeys() const
 }
 
 //----------------------------------------------------------------------------
-cmDefinitions cmDefinitions::MakeClosure() const
+cmDefinitions cmDefinitions::MakeClosure(
+    std::list<cmDefinitions const*>::iterator begin,
+    std::list<cmDefinitions const*>::iterator end)
 {
   std::set<std::string> undefined;
   cmDefinitions closure;
-  cmDefinitions const* defs = this;
-  std::list<cmDefinitions const*> ups;
-  while(defs)
-    {
-    ups.push_back(defs);
-    defs = defs->Up;
-    }
-  closure.MakeClosure(undefined, ups.begin(), ups.end());
+  closure.MakeClosure(undefined, begin, end);
   return closure;
 }
 
diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h
index 40e0531..67b6170 100644
--- a/Source/cmDefinitions.h
+++ b/Source/cmDefinitions.h
@@ -50,7 +50,9 @@ public:
   /** Compute the set of all defined keys.  */
   std::vector<std::string> ClosureKeys() const;
 
-  cmDefinitions MakeClosure() const;
+  static cmDefinitions MakeClosure(
+      std::list<cmDefinitions const*>::iterator begin,
+      std::list<cmDefinitions const*>::iterator end);
 
 private:
   // String with existence boolean.
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 8cfb83a..8797090 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -63,7 +63,15 @@ public:
 
   void InitializeDefinitions(cmMakefile* parent)
   {
-    this->VarStack.back() = parent->Internal->VarStack.back().MakeClosure();
+    std::list<cmDefinitions const*> defPtrs;
+    for (std::list<cmDefinitions>::iterator it =
+         parent->Internal->VarStack.begin();
+         it != parent->Internal->VarStack.end(); ++it)
+      {
+      defPtrs.push_back(&*it);
+      }
+    this->VarStack.back() = cmDefinitions::MakeClosure(defPtrs.begin(),
+                                                       defPtrs.end());
   }
 
   const char* GetDefinition(std::string const& name)

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2afcd5f3d8836bab7f49fb26c2493748ca3682cf
commit 2afcd5f3d8836bab7f49fb26c2493748ca3682cf
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 26 16:00:18 2015 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Wed Apr 29 23:40:01 2015 +0200

    cmDefinitions: Implement MakeClosure in terms of a vector of ancestors.

diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx
index 5fe57c8..873a7b4 100644
--- a/Source/cmDefinitions.cxx
+++ b/Source/cmDefinitions.cxx
@@ -11,8 +11,6 @@
 ============================================================================*/
 #include "cmDefinitions.h"
 
-#include <list>
-
 //----------------------------------------------------------------------------
 cmDefinitions::Def cmDefinitions::NoDef;
 
@@ -81,22 +79,25 @@ cmDefinitions cmDefinitions::MakeClosure() const
 {
   std::set<std::string> undefined;
   cmDefinitions closure;
-  closure.MakeClosure(undefined, this);
-  return closure;
-}
-
-//----------------------------------------------------------------------------
-void cmDefinitions::MakeClosure(std::set<std::string>& undefined,
-                                cmDefinitions const* defs)
-{
+  cmDefinitions const* defs = this;
   std::list<cmDefinitions const*> ups;
   while(defs)
     {
     ups.push_back(defs);
     defs = defs->Up;
     }
-  for (std::list<cmDefinitions const*>::const_iterator it = ups.begin();
-       it != ups.end(); ++it)
+  closure.MakeClosure(undefined, ups.begin(), ups.end());
+  return closure;
+}
+
+//----------------------------------------------------------------------------
+void
+cmDefinitions::MakeClosure(std::set<std::string>& undefined,
+                           std::list<cmDefinitions const*>::iterator begin,
+                           std::list<cmDefinitions const*>::iterator end)
+{
+  for (std::list<cmDefinitions const*>::const_iterator it = begin;
+       it != end; ++it)
     {
     // Consider local definitions.
     for(MapType::const_iterator mi = (*it)->Map.begin();
diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h
index 6917402..40e0531 100644
--- a/Source/cmDefinitions.h
+++ b/Source/cmDefinitions.h
@@ -17,6 +17,8 @@
 #include "cmsys/hash_map.hxx"
 #endif
 
+#include <list>
+
 /** \class cmDefinitions
  * \brief Store a scope of variable definitions for CMake language.
  *
@@ -80,7 +82,8 @@ private:
   Def const& GetInternal(const std::string& key);
 
   void MakeClosure(std::set<std::string>& undefined,
-                   cmDefinitions const* defs);
+                   std::list<cmDefinitions const*>::iterator begin,
+                   std::list<cmDefinitions const*>::iterator end);
 };
 
 #endif

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d858f36339d61e45913165bc957d645bf1060f54
commit d858f36339d61e45913165bc957d645bf1060f54
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 26 15:54:02 2015 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Wed Apr 29 23:38:44 2015 +0200

    cmDefinitions: Use list of cmDefinitions* to create closure.

diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx
index 2ee2618..5fe57c8 100644
--- a/Source/cmDefinitions.cxx
+++ b/Source/cmDefinitions.cxx
@@ -11,6 +11,8 @@
 ============================================================================*/
 #include "cmDefinitions.h"
 
+#include <list>
+
 //----------------------------------------------------------------------------
 cmDefinitions::Def cmDefinitions::NoDef;
 
@@ -87,11 +89,18 @@ cmDefinitions cmDefinitions::MakeClosure() const
 void cmDefinitions::MakeClosure(std::set<std::string>& undefined,
                                 cmDefinitions const* defs)
 {
+  std::list<cmDefinitions const*> ups;
   while(defs)
     {
+    ups.push_back(defs);
+    defs = defs->Up;
+    }
+  for (std::list<cmDefinitions const*>::const_iterator it = ups.begin();
+       it != ups.end(); ++it)
+    {
     // Consider local definitions.
-    for(MapType::const_iterator mi = defs->Map.begin();
-        mi != defs->Map.end(); ++mi)
+    for(MapType::const_iterator mi = (*it)->Map.begin();
+        mi != (*it)->Map.end(); ++mi)
       {
       // Use this key if it is not already set or unset.
       if(this->Map.find(mi->first) == this->Map.end() &&
@@ -107,7 +116,6 @@ void cmDefinitions::MakeClosure(std::set<std::string>& undefined,
           }
         }
       }
-    defs = defs->Up;
     }
 }
 

-----------------------------------------------------------------------

Summary of changes:
 Source/cmDefinitions.cxx |   20 ++++++++++++--------
 Source/cmDefinitions.h   |    9 +++++++--
 Source/cmMakefile.cxx    |    4 +++-
 3 files changed, 22 insertions(+), 11 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list