Przeglądaj źródła

cmListFileBacktrace: Internalize the step of making paths relative.

Currently cmMakefile calls MakeRelative on a copy of the backtrace,
emits the copy to the stream once, then discards the copy.  There
is no need to have API for the path conversion.
Stephen Kelly 10 lat temu
rodzic
commit
499ebb6564
3 zmienionych plików z 8 dodań i 23 usunięć
  1. 8 18
      Source/cmListFileCache.cxx
  2. 0 4
      Source/cmListFileCache.h
  3. 0 1
      Source/cmake.cxx

+ 8 - 18
Source/cmListFileCache.cxx

@@ -405,29 +405,17 @@ void cmListFileBacktrace::Append(cmListFileContext const& context)
   this->push_back(context);
 }
 
-//----------------------------------------------------------------------------
-void cmListFileBacktrace::MakeRelative()
-{
-  if (this->Relative)
-    {
-    return;
-    }
-  for (cmListFileBacktrace::iterator i = this->begin();
-       i != this->end(); ++i)
-    {
-    i->FilePath = this->LocalGenerator->Convert(i->FilePath,
-                                                cmLocalGenerator::HOME);
-    }
-  this->Relative = true;
-}
-
 void cmListFileBacktrace::PrintTitle(std::ostream& out)
 {
   if (this->empty())
     {
     return;
     }
-  out << (this->front().Line ? " at " : " in ") << this->front();
+
+  cmListFileContext lfc = this->front();
+  lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath,
+                                               cmLocalGenerator::HOME);
+  out << (lfc.Line ? " at " : " in ") << lfc;
 }
 
 void cmListFileBacktrace::PrintCallStack(std::ostream& out)
@@ -441,7 +429,9 @@ void cmListFileBacktrace::PrintCallStack(std::ostream& out)
   out << "Call Stack (most recent call first):\n";
   while(i != this->end())
     {
-    cmListFileContext const& lfc = *i;
+    cmListFileContext lfc = *i;
+    lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath,
+                                                 cmLocalGenerator::HOME);
     out << "  " << lfc << "\n";
     ++i;
     }

+ 0 - 4
Source/cmListFileCache.h

@@ -76,19 +76,15 @@ class cmListFileBacktrace: private std::vector<cmListFileContext>
   public:
     cmListFileBacktrace(cmLocalGenerator* localGen = 0)
       : LocalGenerator(localGen)
-      , Relative(localGen ? false : true)
     {
     }
 
     void Append(cmListFileContext const& context);
 
-    void MakeRelative();
-
     void PrintTitle(std::ostream& out);
     void PrintCallStack(std::ostream& out);
   private:
     cmLocalGenerator* LocalGenerator;
-    bool Relative;
 };
 
 struct cmListFile

+ 0 - 1
Source/cmake.cxx

@@ -2519,7 +2519,6 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text,
                          cmListFileBacktrace const& bt)
 {
   cmListFileBacktrace backtrace = bt;
-  backtrace.MakeRelative();
 
   std::ostringstream msg;
   if (!this->PrintMessagePreamble(t, msg))