[Cmake-commits] CMake branch, next, updated. v3.2.2-2401-g99af85f

Brad King brad.king at kitware.com
Fri May 1 11:55:30 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  99af85fc89359e5b2a79e2484d5249b6c3a85af6 (commit)
       via  8cc064e37d44d239f16e1de8390713be1968a363 (commit)
      from  603942d29753c0c44a1bee603e2cd524d4de6934 (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=99af85fc89359e5b2a79e2484d5249b6c3a85af6
commit 99af85fc89359e5b2a79e2484d5249b6c3a85af6
Merge: 603942d 8cc064e
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri May 1 11:55:30 2015 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri May 1 11:55:30 2015 -0400

    Merge topic 'refactor-cmDefinitions-Get' into next
    
    8cc064e3 cmDefinitions: Re-introduce recursion that seems faster


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8cc064e37d44d239f16e1de8390713be1968a363
commit 8cc064e37d44d239f16e1de8390713be1968a363
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri May 1 11:37:38 2015 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri May 1 11:53:44 2015 -0400

    cmDefinitions: Re-introduce recursion that seems faster

diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx
index ff530d7..c42d060 100644
--- a/Source/cmDefinitions.cxx
+++ b/Source/cmDefinitions.cxx
@@ -14,31 +14,37 @@
 #include <assert.h>
 
 //----------------------------------------------------------------------------
+cmDefinitions::Def cmDefinitions::NoDef;
+
+//----------------------------------------------------------------------------
 const char* cmDefinitions::Get(const std::string& key,
-    std::list<cmDefinitions>::reverse_iterator rit,
+    std::list<cmDefinitions>::reverse_iterator rbegin,
     std::list<cmDefinitions>::reverse_iterator rend)
 {
-  std::list<cmDefinitions>::reverse_iterator rbegin = rit;
-  assert(rit != rend);
-  MapType::const_iterator i;
-  Def def;
-  for ( ; rit != rend; ++rit)
+  Def const& def = cmDefinitions::GetInternal(key, rbegin, rend);
+  return def.Exists? def.c_str() : 0;
+}
+
+//----------------------------------------------------------------------------
+cmDefinitions::Def const& cmDefinitions::GetInternal(
+  const std::string& key,
+  std::list<cmDefinitions>::reverse_iterator rbegin,
+  std::list<cmDefinitions>::reverse_iterator rend)
+{
+  assert(rbegin != rend);
+  MapType::const_iterator i = rbegin->Map.find(key);
+  if (i != rbegin->Map.end())
     {
-    i = rit->Map.find(key);
-    if(i != rit->Map.end())
-      {
-      def = i->second;
-      break;
-      }
+    return i->second;
     }
-
-  std::list<cmDefinitions>::reverse_iterator last = rit;
-  // Store the result in intermediate scopes.
-  for (rit = rbegin; rit != last; ++rit)
+  std::list<cmDefinitions>::reverse_iterator rit = rbegin;
+  ++rit;
+  if (rit == rend)
     {
-    i = rit->Map.insert(MapType::value_type(key, def)).first;
+    return cmDefinitions::NoDef;
     }
-  return i->second.Exists ? i->second.c_str() : 0;
+  Def const& def = cmDefinitions::GetInternal(key, rit, rend);
+  return rbegin->Map.insert(MapType::value_type(key, def)).first->second;
 }
 
 //----------------------------------------------------------------------------
diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h
index ae42b8e..b244793 100644
--- a/Source/cmDefinitions.h
+++ b/Source/cmDefinitions.h
@@ -32,7 +32,7 @@ public:
   /** Get the value associated with a key; null if none.
       Store the result locally if it came from a parent.  */
   static const char* Get(const std::string& key,
-                         std::list<cmDefinitions>::reverse_iterator rit,
+                         std::list<cmDefinitions>::reverse_iterator rbegin,
                          std::list<cmDefinitions>::reverse_iterator rend);
 
   /** Set (or unset if null) a value associated with a key.  */
@@ -63,6 +63,7 @@ private:
     Def(Def const& d): std_string(d), Exists(d.Exists) {}
     bool Exists;
   };
+  static Def NoDef;
 
   // Local definitions, set or unset.
 #if defined(CMAKE_BUILD_WITH_CMAKE)
@@ -72,6 +73,9 @@ private:
 #endif
   MapType Map;
 
+  static Def const& GetInternal(const std::string& key,
+    std::list<cmDefinitions>::reverse_iterator rbegin,
+    std::list<cmDefinitions>::reverse_iterator rend);
   void MakeClosure(std::set<std::string>& undefined,
                    std::list<cmDefinitions>::const_reverse_iterator rbegin,
                    std::list<cmDefinitions>::const_reverse_iterator rend);

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

Summary of changes:
 Source/cmDefinitions.cxx |   42 ++++++++++++++++++++++++------------------
 Source/cmDefinitions.h   |    6 +++++-
 2 files changed, 29 insertions(+), 19 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list