summaryrefslogtreecommitdiffstats
path: root/Source/cmTarget.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-07-16 16:58:19 (GMT)
committerBrad King <brad.king@kitware.com>2014-07-16 17:38:22 (GMT)
commit89095514a7f6d7075e8d2fda1b88445b87a3bec8 (patch)
tree8df72a3224670b12eb3fc5efdef65101d9295e27 /Source/cmTarget.cxx
parent9d72df45057afd955d6bbb7ee2ceb62ab8dc777a (diff)
downloadCMake-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.cxx18
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