Pārlūkot izejas kodu

cmSourceFile: Cache the isUiFile check

The filename extension call is expensive, so cache the .ui check.
Ben Boeckel 11 gadi atpakaļ
vecāks
revīzija
10baf00f3d
2 mainītis faili ar 4 papildinājumiem un 3 dzēšanām
  1. 3 3
      Source/cmSourceFile.cxx
  2. 1 0
      Source/cmSourceFile.h

+ 3 - 3
Source/cmSourceFile.cxx

@@ -24,6 +24,8 @@ cmSourceFile::cmSourceFile(cmMakefile* mf, const std::string& name):
   this->CustomCommand = 0;
   this->Properties.SetCMakeInstance(mf->GetCMakeInstance());
   this->FindFullPathFailed = false;
+  this->IsUiFile = ("ui" ==
+          cmSystemTools::GetFilenameLastExtension(this->Location.GetName()));
 }
 
 //----------------------------------------------------------------------------
@@ -297,9 +299,7 @@ void cmSourceFile::SetProperty(const std::string& prop, const char* value)
 {
   this->Properties.SetProperty(prop, value, cmProperty::SOURCE_FILE);
 
-  std::string ext =
-          cmSystemTools::GetFilenameLastExtension(this->Location.GetName());
-  if (ext == ".ui")
+  if (this->IsUiFile)
     {
     cmMakefile const* mf = this->Location.GetMakefile();
     if (prop == "AUTOUIC_OPTIONS")

+ 1 - 0
Source/cmSourceFile.h

@@ -109,6 +109,7 @@ private:
   std::string FullPath;
   bool FindFullPathFailed;
   std::string ObjectLibrary;
+  bool IsUiFile;
 
   bool FindFullPath(std::string* error);
   bool TryFullPath(const std::string& path, const std::string& ext);