diff options
author | Brad King <brad.king@kitware.com> | 2014-07-16 16:58:19 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-07-16 17:38:22 (GMT) |
commit | 89095514a7f6d7075e8d2fda1b88445b87a3bec8 (patch) | |
tree | 8df72a3224670b12eb3fc5efdef65101d9295e27 /Source/cmTarget.cxx | |
parent | 9d72df45057afd955d6bbb7ee2ceb62ab8dc777a (diff) | |
download | CMake-89095514a7f6d7075e8d2fda1b88445b87a3bec8.zip CMake-89095514a7f6d7075e8d2fda1b88445b87a3bec8.tar.gz CMake-89095514a7f6d7075e8d2fda1b88445b87a3bec8.tar.bz2 |
cmTarget: Refactor GetLinkImplementationClosure internals
Store the 'Done' flag directly in each map entry instead of using a
separate map.
Diffstat (limited to 'Source/cmTarget.cxx')
-rw-r--r-- | Source/cmTarget.cxx | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 8185bcc..d3a9beb 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -164,6 +164,13 @@ public: typedef std::map<std::string, cmTarget::LinkClosure> LinkClosureMapType; LinkClosureMapType LinkClosureMap; + struct LinkImplClosure: public std::vector<cmTarget const*> + { + LinkImplClosure(): Done(false) {} + bool Done; + }; + std::map<std::string, LinkImplClosure> LinkImplClosureMap; + typedef std::map<std::string, std::vector<cmSourceFile*> > SourceFilesMapType; SourceFilesMapType SourceFilesMap; @@ -203,15 +210,12 @@ public: CachedLinkInterfaceSourcesEntries; std::map<std::string, std::vector<TargetPropertyEntry*> > CachedLinkInterfaceCompileFeaturesEntries; - std::map<std::string, std::vector<cmTarget const*> > - CachedLinkImplementationClosure; std::map<std::string, bool> CacheLinkInterfaceIncludeDirectoriesDone; std::map<std::string, bool> CacheLinkInterfaceCompileDefinitionsDone; std::map<std::string, bool> CacheLinkInterfaceCompileOptionsDone; std::map<std::string, bool> CacheLinkInterfaceSourcesDone; std::map<std::string, bool> CacheLinkInterfaceCompileFeaturesDone; - std::map<std::string, bool> CacheLinkImplementationClosureDone; }; cmLinkImplItem cmTargetInternals::TargetPropertyEntry::NoLinkImplItem; @@ -6034,11 +6038,11 @@ void processILibs(const std::string& config, std::vector<cmTarget const*> const& cmTarget::GetLinkImplementationClosure(const std::string& config) const { - std::vector<cmTarget const*>& tgts = - this->Internal->CachedLinkImplementationClosure[config]; - if(!this->Internal->CacheLinkImplementationClosureDone[config]) + cmTargetInternals::LinkImplClosure& tgts = + this->Internal->LinkImplClosureMap[config]; + if(!tgts.Done) { - this->Internal->CacheLinkImplementationClosureDone[config] = true; + tgts.Done = true; std::set<cmTarget const*> emitted; cmTarget::LinkImplementationLibraries const* impl |