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, master has been updated
       via  917d98699e8dd13de89e2993b0b630cf64f17706 (commit)
       via  437d0c16c72a45da8c81919f953859f5af71b19b (commit)
      from  424d86be5b332d2f5b85dfd2ba2900430f7e02c3 (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 -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=917d98699e8dd13de89e2993b0b630cf64f17706
commit 917d98699e8dd13de89e2993b0b630cf64f17706
Merge: 424d86b 437d0c1
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Fri Sep 7 20:07:48 2018 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Fri Sep 7 16:08:02 2018 -0400

    Merge topic 'definitions-get'
    
    437d0c16c7 cmStateSnapshot::GetDefinition(): Return std::string const*
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !2356


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=437d0c16c72a45da8c81919f953859f5af71b19b
commit 437d0c16c72a45da8c81919f953859f5af71b19b
Author:     Vitaly Stakhovsky <vvs31...@gitlab.org>
AuthorDate: Wed Sep 5 20:08:17 2018 -0400
Commit:     Vitaly Stakhovsky <vvs31...@gitlab.org>
CommitDate: Wed Sep 5 20:08:17 2018 -0400

    cmStateSnapshot::GetDefinition(): Return std::string const*
    
    Expose std::string type used internally in cmDefinitions instead of const 
char*

diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx
index e766854..5fafaf9 100644
--- a/Source/cmDefinitions.cxx
+++ b/Source/cmDefinitions.cxx
@@ -30,11 +30,11 @@ cmDefinitions::Def const& cmDefinitions::GetInternal(const 
std::string& key,
   return begin->Map.insert(MapType::value_type(key, def)).first->second;
 }
 
-const char* cmDefinitions::Get(const std::string& key, StackIter begin,
-                               StackIter end)
+const std::string* cmDefinitions::Get(const std::string& key, StackIter begin,
+                                      StackIter end)
 {
   Def const& def = cmDefinitions::GetInternal(key, begin, end, false);
-  return def.Exists ? def.c_str() : nullptr;
+  return def.Exists ? &def : nullptr;
 }
 
 void cmDefinitions::Raise(const std::string& key, StackIter begin,
diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h
index 528b157..4ab5be6 100644
--- a/Source/cmDefinitions.h
+++ b/Source/cmDefinitions.h
@@ -23,8 +23,8 @@ class cmDefinitions
   typedef cmLinkedTree<cmDefinitions>::iterator StackIter;
 
 public:
-  static const char* Get(const std::string& key, StackIter begin,
-                         StackIter end);
+  static const std::string* Get(const std::string& key, StackIter begin,
+                                StackIter end);
 
   static void Raise(const std::string& key, StackIter begin, StackIter end);
 
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 6127b57..8d2f932 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -2368,8 +2368,10 @@ const char* cmMakefile::GetRequiredDefinition(const 
std::string& name) const
 
 bool cmMakefile::IsDefinitionSet(const std::string& name) const
 {
-  const char* def = this->StateSnapshot.GetDefinition(name);
-  if (!def) {
+  const char* def;
+  if (const std::string* d = this->StateSnapshot.GetDefinition(name)) {
+    def = d->c_str();
+  } else {
     def = this->GetState()->GetInitializedCacheValue(name);
   }
 #ifdef CMAKE_BUILD_WITH_CMAKE
@@ -2385,8 +2387,10 @@ bool cmMakefile::IsDefinitionSet(const std::string& 
name) const
 
 const char* cmMakefile::GetDefinition(const std::string& name) const
 {
-  const char* def = this->StateSnapshot.GetDefinition(name);
-  if (!def) {
+  const char* def;
+  if (const std::string* d = this->StateSnapshot.GetDefinition(name)) {
+    def = d->c_str();
+  } else {
     def = this->GetState()->GetInitializedCacheValue(name);
   }
 #ifdef CMAKE_BUILD_WITH_CMAKE
@@ -2402,8 +2406,9 @@ const char* cmMakefile::GetDefinition(const std::string& 
name) const
       // A callback was executed and may have caused re-allocation of the
       // variable storage.  Look it up again for now.
       // FIXME: Refactor variable storage to avoid this problem.
-      def = this->StateSnapshot.GetDefinition(name);
-      if (!def) {
+      if (const std::string* d = this->StateSnapshot.GetDefinition(name)) {
+        def = d->c_str();
+      } else {
         def = this->GetState()->GetInitializedCacheValue(name);
       }
     }
diff --git a/Source/cmOptionCommand.cxx b/Source/cmOptionCommand.cxx
index 239cd00..7d620bd 100644
--- a/Source/cmOptionCommand.cxx
+++ b/Source/cmOptionCommand.cxx
@@ -31,7 +31,7 @@ bool cmOptionCommand::InitialPass(std::vector<std::string> 
const& args,
   bool checkAndWarn = false;
   {
     auto status = this->Makefile->GetPolicyStatus(cmPolicies::CMP0077);
-    const char* existsBeforeSet =
+    const auto* existsBeforeSet =
       this->Makefile->GetStateSnapshot().GetDefinition(args[0]);
     switch (status) {
       case cmPolicies::WARN:
@@ -72,7 +72,7 @@ bool cmOptionCommand::InitialPass(std::vector<std::string> 
const& args,
                                      args[1].c_str(), cmStateEnums::BOOL);
 
   if (checkAndWarn) {
-    const char* existsAfterSet =
+    const auto* existsAfterSet =
       this->Makefile->GetStateSnapshot().GetDefinition(args[0]);
     if (!existsAfterSet) {
       std::ostringstream w;
diff --git a/Source/cmState.cxx b/Source/cmState.cxx
index 5651594..89738f4 100644
--- a/Source/cmState.cxx
+++ b/Source/cmState.cxx
@@ -298,9 +298,9 @@ cmStateSnapshot cmState::Reset()
 
   {
     std::string srcDir =
-      cmDefinitions::Get("CMAKE_SOURCE_DIR", pos->Vars, pos->Root);
+      *cmDefinitions::Get("CMAKE_SOURCE_DIR", pos->Vars, pos->Root);
     std::string binDir =
-      cmDefinitions::Get("CMAKE_BINARY_DIR", pos->Vars, pos->Root);
+      *cmDefinitions::Get("CMAKE_BINARY_DIR", pos->Vars, pos->Root);
     this->VarTree.Clear();
     pos->Vars = this->VarTree.Push(this->VarTree.Root());
     pos->Parent = this->VarTree.Root();
diff --git a/Source/cmStateSnapshot.cxx b/Source/cmStateSnapshot.cxx
index ec428a6..0379e7e 100644
--- a/Source/cmStateSnapshot.cxx
+++ b/Source/cmStateSnapshot.cxx
@@ -204,7 +204,8 @@ bool cmStateSnapshot::HasDefinedPolicyCMP0011()
   return !this->Position->Policies->IsEmpty();
 }
 
-const char* cmStateSnapshot::GetDefinition(std::string const& name) const
+std::string const* cmStateSnapshot::GetDefinition(
+  std::string const& name) const
 {
   assert(this->Position->Vars.IsValid());
   return cmDefinitions::Get(name, this->Position->Vars, this->Position->Root);
@@ -426,8 +427,8 @@ std::string cmStateSnapshot::GetProjectName() const
 
 void cmStateSnapshot::InitializeFromParent_ForSubdirsCommand()
 {
-  std::string currentSrcDir = this->GetDefinition("CMAKE_CURRENT_SOURCE_DIR");
-  std::string currentBinDir = this->GetDefinition("CMAKE_CURRENT_BINARY_DIR");
+  std::string currentSrcDir = *this->GetDefinition("CMAKE_CURRENT_SOURCE_DIR");
+  std::string currentBinDir = *this->GetDefinition("CMAKE_CURRENT_BINARY_DIR");
   this->InitializeFromParent();
   this->SetDefinition("CMAKE_SOURCE_DIR", this->State->GetSourceDirectory());
   this->SetDefinition("CMAKE_BINARY_DIR", this->State->GetBinaryDirectory());
diff --git a/Source/cmStateSnapshot.h b/Source/cmStateSnapshot.h
index af5653b..014c62e 100644
--- a/Source/cmStateSnapshot.h
+++ b/Source/cmStateSnapshot.h
@@ -22,7 +22,7 @@ public:
   cmStateSnapshot(cmState* state = nullptr);
   cmStateSnapshot(cmState* state, cmStateDetail::PositionType position);
 
-  const char* GetDefinition(std::string const& name) const;
+  std::string const* GetDefinition(std::string const& name) const;
   bool IsInitialized(std::string const& name) const;
   void SetDefinition(std::string const& name, std::string const& value);
   void RemoveDefinition(std::string const& name);

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

Summary of changes:
 Source/cmDefinitions.cxx   |  6 +++---
 Source/cmDefinitions.h     |  4 ++--
 Source/cmMakefile.cxx      | 17 +++++++++++------
 Source/cmOptionCommand.cxx |  4 ++--
 Source/cmState.cxx         |  4 ++--
 Source/cmStateSnapshot.cxx |  7 ++++---
 Source/cmStateSnapshot.h   |  2 +-
 7 files changed, 25 insertions(+), 19 deletions(-)


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
https://cmake.org/mailman/listinfo/cmake-commits

Reply via email to