1
0
Эх сурвалжийг харах

Merge topic 'prop_t'

60f57d0dcc cmPropertyMap: Introduce cmProp as return type for GetProperty() functions

Acked-by: Kitware Robot <[email protected]>
Merge-request: !4471
Brad King 5 жил өмнө
parent
commit
d2e0b8bcfd

+ 2 - 1
Source/cmCPluginAPI.cxx

@@ -585,7 +585,8 @@ const char* CCONV cmSourceFileGetProperty(void* arg, const char* prop)
   if (!strcmp(prop, "LOCATION")) {
     return sf->FullPath.c_str();
   }
-  return sf->Properties.GetPropertyValue(prop);
+  cmProp retVal = sf->Properties.GetPropertyValue(prop);
+  return retVal ? retVal->c_str() : nullptr;
 }
 
 int CCONV cmSourceFileGetPropertyAsBool(void* arg, const char* prop)

+ 2 - 1
Source/cmCacheManager.cxx

@@ -628,7 +628,8 @@ const char* cmCacheManager::CacheEntry::GetProperty(
   if (prop == "VALUE") {
     return this->Value.c_str();
   }
-  return this->Properties.GetPropertyValue(prop);
+  cmProp retVal = this->Properties.GetPropertyValue(prop);
+  return retVal ? retVal->c_str() : nullptr;
 }
 
 void cmCacheManager::CacheEntry::SetProperty(const std::string& prop,

+ 6 - 6
Source/cmExportFileGenerator.cxx

@@ -1215,9 +1215,9 @@ bool cmExportFileGenerator::PopulateExportProperties(
   std::string& errorMessage)
 {
   auto& targetProperties = gte->Target->GetProperties();
-  if (const char* exportProperties =
+  if (cmProp exportProperties =
         targetProperties.GetPropertyValue("EXPORT_PROPERTIES")) {
-    for (auto& prop : cmExpandedList(exportProperties)) {
+    for (auto& prop : cmExpandedList(*exportProperties)) {
       /* Black list reserved properties */
       if (cmHasLiteralPrefix(prop, "IMPORTED_") ||
           cmHasLiteralPrefix(prop, "INTERFACE_")) {
@@ -1228,15 +1228,15 @@ bool cmExportFileGenerator::PopulateExportProperties(
         errorMessage = e.str();
         return false;
       }
-      auto propertyValue = targetProperties.GetPropertyValue(prop);
+      cmProp propertyValue = targetProperties.GetPropertyValue(prop);
       if (propertyValue == nullptr) {
         // Asked to export a property that isn't defined on the target. Do not
         // consider this an error, there's just nothing to export.
         continue;
       }
       std::string evaluatedValue = cmGeneratorExpression::Preprocess(
-        propertyValue, cmGeneratorExpression::StripAllGeneratorExpressions);
-      if (evaluatedValue != propertyValue) {
+        *propertyValue, cmGeneratorExpression::StripAllGeneratorExpressions);
+      if (evaluatedValue != *propertyValue) {
         std::ostringstream e;
         e << "Target \"" << gte->Target->GetName() << "\" contains property \""
           << prop << "\" in EXPORT_PROPERTIES but this property contains a "
@@ -1244,7 +1244,7 @@ bool cmExportFileGenerator::PopulateExportProperties(
         errorMessage = e.str();
         return false;
       }
-      properties[prop] = propertyValue;
+      properties[prop] = *propertyValue;
     }
   }
   return true;

+ 4 - 6
Source/cmPropertyMap.cxx

@@ -42,13 +42,11 @@ void cmPropertyMap::RemoveProperty(const std::string& name)
   Map_.erase(name);
 }
 
-const char* cmPropertyMap::GetPropertyValue(const std::string& name) const
+cmProp cmPropertyMap::GetPropertyValue(const std::string& name) const
 {
-  {
-    auto it = Map_.find(name);
-    if (it != Map_.end()) {
-      return it->second.c_str();
-    }
+  auto it = Map_.find(name);
+  if (it != Map_.end()) {
+    return &it->second;
   }
   return nullptr;
 }

+ 3 - 1
Source/cmPropertyMap.h

@@ -10,6 +10,8 @@
 #include <utility>
 #include <vector>
 
+using cmProp = const std::string*;
+
 /** \class cmPropertyMap
  * \brief String property map.
  */
@@ -31,7 +33,7 @@ public:
                       bool asString = false);
 
   //! Get the property value
-  const char* GetPropertyValue(const std::string& name) const;
+  cmProp GetPropertyValue(const std::string& name) const;
 
   //! Remove the property @a name from the map
   void RemoveProperty(const std::string& name);

+ 3 - 2
Source/cmSourceFile.cxx

@@ -361,7 +361,7 @@ const char* cmSourceFile::GetProperty(const std::string& prop) const
     return output.c_str();
   }
 
-  const char* retVal = this->Properties.GetPropertyValue(prop);
+  cmProp retVal = this->Properties.GetPropertyValue(prop);
   if (!retVal) {
     cmMakefile const* mf = this->Location.GetMakefile();
     const bool chain =
@@ -369,9 +369,10 @@ const char* cmSourceFile::GetProperty(const std::string& prop) const
     if (chain) {
       return mf->GetProperty(prop, chain);
     }
+    return nullptr;
   }
 
-  return retVal;
+  return retVal->c_str();
 }
 
 const char* cmSourceFile::GetSafeProperty(const std::string& prop) const

+ 2 - 1
Source/cmState.cxx

@@ -625,7 +625,8 @@ const char* cmState::GetGlobalProperty(const std::string& prop)
   }
 
 #undef STRING_LIST_ELEMENT
-  return this->GlobalProperties.GetPropertyValue(prop);
+  cmProp retVal = this->GlobalProperties.GetPropertyValue(prop);
+  return retVal ? retVal->c_str() : nullptr;
 }
 
 bool cmState::GetGlobalPropertyAsBool(const std::string& prop)

+ 2 - 2
Source/cmStateDirectory.cxx

@@ -634,7 +634,7 @@ const char* cmStateDirectory::GetProperty(const std::string& prop,
     return output.c_str();
   }
 
-  const char* retVal = this->DirectoryState->Properties.GetPropertyValue(prop);
+  cmProp retVal = this->DirectoryState->Properties.GetPropertyValue(prop);
   if (!retVal && chain) {
     cmStateSnapshot parentSnapshot =
       this->Snapshot_.GetBuildsystemDirectoryParent();
@@ -644,7 +644,7 @@ const char* cmStateDirectory::GetProperty(const std::string& prop,
     return this->Snapshot_.State->GetGlobalProperty(prop);
   }
 
-  return retVal;
+  return retVal ? retVal->c_str() : nullptr;
 }
 
 bool cmStateDirectory::GetPropertyAsBool(const std::string& prop) const

+ 3 - 2
Source/cmStateSnapshot.cxx

@@ -411,11 +411,12 @@ void cmStateSnapshot::InitializeFromParent()
     this->Position->BuildSystemDirectory->LinkDirectoriesBacktraces,
     this->Position->LinkDirectoriesPosition);
 
-  const char* include_regex =
+  cmProp include_regex =
     parent->BuildSystemDirectory->Properties.GetPropertyValue(
       "INCLUDE_REGULAR_EXPRESSION");
   this->Position->BuildSystemDirectory->Properties.SetProperty(
-    "INCLUDE_REGULAR_EXPRESSION", include_regex);
+    "INCLUDE_REGULAR_EXPRESSION",
+    include_regex ? include_regex->c_str() : nullptr);
 }
 
 cmState* cmStateSnapshot::GetState() const

+ 3 - 2
Source/cmTarget.cxx

@@ -1771,7 +1771,7 @@ const char* cmTarget::GetProperty(const std::string& prop) const
     }
   }
 
-  const char* retVal = impl->Properties.GetPropertyValue(prop);
+  cmProp retVal = impl->Properties.GetPropertyValue(prop);
   if (!retVal) {
     const bool chain =
       impl->Makefile->GetState()->IsPropertyChained(prop, cmProperty::TARGET);
@@ -1779,8 +1779,9 @@ const char* cmTarget::GetProperty(const std::string& prop) const
       return impl->Makefile->GetStateSnapshot().GetDirectory().GetProperty(
         prop, chain);
     }
+    return nullptr;
   }
-  return retVal;
+  return retVal->c_str();
 }
 
 const char* cmTarget::GetSafeProperty(const std::string& prop) const

+ 3 - 2
Source/cmTest.cxx

@@ -34,15 +34,16 @@ void cmTest::SetCommand(std::vector<std::string> const& command)
 
 const char* cmTest::GetProperty(const std::string& prop) const
 {
-  const char* retVal = this->Properties.GetPropertyValue(prop);
+  cmProp retVal = this->Properties.GetPropertyValue(prop);
   if (!retVal) {
     const bool chain =
       this->Makefile->GetState()->IsPropertyChained(prop, cmProperty::TEST);
     if (chain) {
       return this->Makefile->GetProperty(prop, chain);
     }
+    return nullptr;
   }
-  return retVal;
+  return retVal->c_str();
 }
 
 bool cmTest::GetPropertyAsBool(const std::string& prop) const

+ 2 - 2
Source/cmVisualStudio10TargetGenerator.cxx

@@ -1017,7 +1017,7 @@ void cmVisualStudio10TargetGenerator::WriteEmbeddedResourceGroup(Elem& e0)
           if (p.find(propNamePrefix) == 0) {
             std::string tagName = p.substr(propNamePrefix.length());
             if (!tagName.empty()) {
-              std::string value = props.GetPropertyValue(p);
+              const std::string& value = *props.GetPropertyValue(p);
               if (!value.empty()) {
                 e2.Element(tagName, value);
               }
@@ -4802,7 +4802,7 @@ void cmVisualStudio10TargetGenerator::GetCSharpSourceProperties(
       if (p.find(propNamePrefix) == 0) {
         std::string tagName = p.substr(propNamePrefix.length());
         if (!tagName.empty()) {
-          const std::string val = props.GetPropertyValue(p);
+          const std::string& val = *props.GetPropertyValue(p);
           if (!val.empty()) {
             tags[tagName] = val;
           } else {