Bläddra i källkod

cmGeneratorTarget: Inline GetSourceFiles from cmTarget.

Stephen Kelly 10 år sedan
förälder
incheckning
7b6dc0fe45
3 ändrade filer med 49 tillägg och 49 borttagningar
  1. 34 1
      Source/cmGeneratorTarget.cxx
  2. 6 43
      Source/cmTarget.cxx
  3. 9 5
      Source/cmTarget.h

+ 34 - 1
Source/cmGeneratorTarget.cxx

@@ -842,7 +842,40 @@ static void AddInterfaceEntries(
 void cmGeneratorTarget::GetSourceFiles(std::vector<cmSourceFile*> &files,
                                        const std::string& config) const
 {
-  this->Target->GetSourceFiles(files, config);
+  // Lookup any existing link implementation for this configuration.
+  std::string key = cmSystemTools::UpperCase(config);
+
+  cmTarget::SourceFilesMapType& sfm = this->Target->GetSourceFilesMap();
+  if(!this->Target->GetLinkImplementationLanguageIsContextDependent())
+    {
+    files = sfm.begin()->second;
+    return;
+    }
+
+  cmTarget::SourceFilesMapType::iterator
+    it = sfm.find(key);
+  if(it != sfm.end())
+    {
+    files = it->second;
+    }
+  else
+    {
+    std::vector<std::string> srcs;
+    this->Target->GetSourceFiles(srcs, config);
+
+    std::set<cmSourceFile*> emitted;
+
+    for(std::vector<std::string>::const_iterator i = srcs.begin();
+        i != srcs.end(); ++i)
+      {
+      cmSourceFile* sf = this->Makefile->GetOrCreateSource(*i);
+      if (emitted.insert(sf).second)
+        {
+        files.push_back(sf);
+        }
+      }
+    sfm[key] = files;
+    }
 }
 
 //----------------------------------------------------------------------------

+ 6 - 43
Source/cmTarget.cxx

@@ -101,9 +101,7 @@ public:
                    HeadToLinkImplementationMap> LinkImplMapType;
   LinkImplMapType LinkImplMap;
 
-  typedef std::map<std::string, std::vector<cmSourceFile*> >
-                                                       SourceFilesMapType;
-  SourceFilesMapType SourceFilesMap;
+  cmTarget::SourceFilesMapType SourceFilesMap;
 
   std::set<cmLinkItem> UtilityItems;
   bool UtilityItemsDone;
@@ -409,6 +407,11 @@ void cmTarget::Compute()
         this->Internal->SourceItems, true);
 }
 
+cmTarget::SourceFilesMapType& cmTarget::GetSourceFilesMap() const
+{
+  return this->Internal->SourceFilesMap;
+}
+
 //----------------------------------------------------------------------------
 void cmTarget::AddUtility(const std::string& u, cmMakefile *makefile)
 {
@@ -735,46 +738,6 @@ void cmTarget::GetSourceFiles(std::vector<std::string> &files,
   cmDeleteAll(linkInterfaceSourcesEntries);
 }
 
-//----------------------------------------------------------------------------
-void cmTarget::GetSourceFiles(std::vector<cmSourceFile*> &files,
-                              const std::string& config) const
-{
-
-  // Lookup any existing link implementation for this configuration.
-  std::string key = cmSystemTools::UpperCase(config);
-
-  if(!this->LinkImplementationLanguageIsContextDependent)
-    {
-    files = this->Internal->SourceFilesMap.begin()->second;
-    return;
-    }
-
-  cmTargetInternals::SourceFilesMapType::iterator
-    it = this->Internal->SourceFilesMap.find(key);
-  if(it != this->Internal->SourceFilesMap.end())
-    {
-    files = it->second;
-    }
-  else
-    {
-    std::vector<std::string> srcs;
-    this->GetSourceFiles(srcs, config);
-
-    std::set<cmSourceFile*> emitted;
-
-    for(std::vector<std::string>::const_iterator i = srcs.begin();
-        i != srcs.end(); ++i)
-      {
-      cmSourceFile* sf = this->Makefile->GetOrCreateSource(*i);
-      if (emitted.insert(sf).second)
-        {
-        files.push_back(sf);
-        }
-      }
-    this->Internal->SourceFilesMap[key] = files;
-    }
-}
-
 //----------------------------------------------------------------------------
 void cmTarget::AddTracedSources(std::vector<std::string> const& srcs)
 {

+ 9 - 5
Source/cmTarget.h

@@ -135,11 +135,15 @@ public:
 
   void Compute();
 
-  /**
-   * Get the list of the source files used by this target
-   */
-  void GetSourceFiles(std::vector<cmSourceFile*> &files,
-                      const std::string& config) const;
+  typedef std::map<std::string, std::vector<cmSourceFile*> >
+                                                       SourceFilesMapType;
+
+  SourceFilesMapType& GetSourceFilesMap() const;
+
+  bool GetLinkImplementationLanguageIsContextDependent() const {
+    return this->LinkImplementationLanguageIsContextDependent;
+  }
+
   /**
    * Add sources to the target.
    */