Browse Source

cmCxxModuleMapper: Use value semantics in path conversion callback

The call site already owns a path it doesn't need when the callback
returns.  Hand ownership to the callback so it can optionally mutate
the path without necessarily allocating.
Brad King 2 years ago
parent
commit
f79817fcf0
3 changed files with 3 additions and 3 deletions
  1. 1 1
      Source/cmCxxModuleMapper.cxx
  2. 1 1
      Source/cmCxxModuleMapper.h
  3. 1 1
      Source/cmGlobalNinjaGenerator.cxx

+ 1 - 1
Source/cmCxxModuleMapper.cxx

@@ -21,7 +21,7 @@ cm::optional<std::string> CxxModuleLocations::BmiGeneratorPathForModule(
   std::string const& logical_name) const
 {
   if (auto l = this->BmiLocationForModule(logical_name)) {
-    return this->PathForGenerator(*l);
+    return this->PathForGenerator(std::move(*l));
   }
   return {};
 }

+ 1 - 1
Source/cmCxxModuleMapper.h

@@ -30,7 +30,7 @@ struct CxxModuleLocations
   std::string RootDirectory;
 
   // A function to convert a full path to a path for the generator.
-  std::function<std::string(std::string const&)> PathForGenerator;
+  std::function<std::string(std::string)> PathForGenerator;
 
   // Lookup the BMI location of a logical module name.
   std::function<cm::optional<std::string>(std::string const&)>

+ 1 - 1
Source/cmGlobalNinjaGenerator.cxx

@@ -2629,7 +2629,7 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile(
   {
     CxxModuleLocations locs;
     locs.RootDirectory = ".";
-    locs.PathForGenerator = [this](std::string const& path) -> std::string {
+    locs.PathForGenerator = [this](std::string path) -> std::string {
       return this->ConvertToNinjaPath(path);
     };
     locs.BmiLocationForModule =