diff options
author | Brad King <brad.king@kitware.com> | 2015-01-15 14:54:04 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2015-01-15 14:54:04 (GMT) |
commit | 4ecc392b42e999e3e103eac0c0e28fa63c39167c (patch) | |
tree | afc707f7434f8fbf617c2960e7e8f8d90fffc866 /Source | |
parent | 6418eef222304db9a884a3cf101f86c2eabfb503 (diff) | |
parent | 65b81da458614c6a4652ea2e4fc933893c671281 (diff) | |
download | CMake-4ecc392b42e999e3e103eac0c0e28fa63c39167c.zip CMake-4ecc392b42e999e3e103eac0c0e28fa63c39167c.tar.gz CMake-4ecc392b42e999e3e103eac0c0e28fa63c39167c.tar.bz2 |
Merge topic 'delete-algorithm'
65b81da4 cmVariableWatch: Use the cmDeleteAll algorithm with for_each.
30d2de9a cmGeneratorExpressionEvaluator: Replace own algorithm with cmDeleteAll.
4a6e795b Use the cmDeleteAll algorithm instead of trivial raw loops.
abb4a678 Add a generic algorithm for deleting items in a container.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CPack/cmCPackGeneratorFactory.cxx | 6 | ||||
-rw-r--r-- | Source/CursesDialog/cmCursesMainForm.cxx | 13 | ||||
-rw-r--r-- | Source/cmCTest.cxx | 8 | ||||
-rw-r--r-- | Source/cmComputeLinkDepends.cxx | 7 | ||||
-rw-r--r-- | Source/cmDependsC.cxx | 7 | ||||
-rw-r--r-- | Source/cmDocumentation.cxx | 7 | ||||
-rw-r--r-- | Source/cmExportSet.cxx | 5 | ||||
-rw-r--r-- | Source/cmFileLockPool.cxx | 17 | ||||
-rw-r--r-- | Source/cmGeneratorExpression.cxx | 10 | ||||
-rw-r--r-- | Source/cmGeneratorExpressionEvaluator.cxx | 27 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 20 | ||||
-rw-r--r-- | Source/cmInstalledFile.h | 6 | ||||
-rw-r--r-- | Source/cmMakeDepend.cxx | 7 | ||||
-rw-r--r-- | Source/cmMakefile.cxx | 46 | ||||
-rw-r--r-- | Source/cmOrderDirectories.cxx | 14 | ||||
-rw-r--r-- | Source/cmPolicies.cxx | 8 | ||||
-rw-r--r-- | Source/cmStandardIncludes.h | 27 | ||||
-rw-r--r-- | Source/cmTarget.cxx | 8 | ||||
-rw-r--r-- | Source/cmVariableWatch.cxx | 21 | ||||
-rw-r--r-- | Source/cmake.cxx | 12 |
20 files changed, 68 insertions, 208 deletions
diff --git a/Source/CPack/cmCPackGeneratorFactory.cxx b/Source/CPack/cmCPackGeneratorFactory.cxx index 94ca536..a07c29a 100644 --- a/Source/CPack/cmCPackGeneratorFactory.cxx +++ b/Source/CPack/cmCPackGeneratorFactory.cxx @@ -158,11 +158,7 @@ cmCPackGeneratorFactory::cmCPackGeneratorFactory() //---------------------------------------------------------------------- cmCPackGeneratorFactory::~cmCPackGeneratorFactory() { - std::vector<cmCPackGenerator*>::iterator it; - for ( it = this->Generators.begin(); it != this->Generators.end(); ++ it ) - { - delete *it; - } + cmDeleteAll(this->Generators); } //---------------------------------------------------------------------- diff --git a/Source/CursesDialog/cmCursesMainForm.cxx b/Source/CursesDialog/cmCursesMainForm.cxx index 4200e9e..248efaf 100644 --- a/Source/CursesDialog/cmCursesMainForm.cxx +++ b/Source/CursesDialog/cmCursesMainForm.cxx @@ -69,11 +69,7 @@ cmCursesMainForm::~cmCursesMainForm() // Clean-up composites if (this->Entries) { - std::vector<cmCursesCacheEntryComposite*>::iterator it; - for (it = this->Entries->begin(); it != this->Entries->end(); ++it) - { - delete *it; - } + cmDeleteAll(*this->Entries); } delete this->Entries; if (this->CMakeInstance) @@ -188,12 +184,7 @@ void cmCursesMainForm::InitializeUI() // Clean old entries if (this->Entries) { - // Have to call delete on each pointer - std::vector<cmCursesCacheEntryComposite*>::iterator it; - for (it = this->Entries->begin(); it != this->Entries->end(); ++it) - { - delete *it; - } + cmDeleteAll(*this->Entries); } delete this->Entries; this->Entries = newEntries; diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index f80d4ac..76873ad 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -378,13 +378,7 @@ cmCTest::cmCTest() //---------------------------------------------------------------------- cmCTest::~cmCTest() { - cmCTest::t_TestingHandlers::iterator it; - for ( it = this->TestingHandlers.begin(); - it != this->TestingHandlers.end(); ++ it ) - { - delete it->second; - it->second = 0; - } + cmDeleteAll(this->TestingHandlers); this->SetOutputLogFileName(0); } diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx index 0ddb571..f0bae28 100644 --- a/Source/cmComputeLinkDepends.cxx +++ b/Source/cmComputeLinkDepends.cxx @@ -200,12 +200,7 @@ cmComputeLinkDepends //---------------------------------------------------------------------------- cmComputeLinkDepends::~cmComputeLinkDepends() { - for(std::vector<DependSetList*>::iterator - i = this->InferredDependSets.begin(); - i != this->InferredDependSets.end(); ++i) - { - delete *i; - } + cmDeleteAll(this->InferredDependSets); delete this->CCG; } diff --git a/Source/cmDependsC.cxx b/Source/cmDependsC.cxx index a8711eb..5ae065e 100644 --- a/Source/cmDependsC.cxx +++ b/Source/cmDependsC.cxx @@ -90,12 +90,7 @@ cmDependsC::cmDependsC(cmLocalGenerator* lg, cmDependsC::~cmDependsC() { this->WriteCacheFile(); - - for (std::map<std::string, cmIncludeLines*>::iterator it= - this->FileCache.begin(); it!=this->FileCache.end(); ++it) - { - delete it->second; - } + cmDeleteAll(this->FileCache); } //---------------------------------------------------------------------------- diff --git a/Source/cmDocumentation.cxx b/Source/cmDocumentation.cxx index 3ff1017..a268d12 100644 --- a/Source/cmDocumentation.cxx +++ b/Source/cmDocumentation.cxx @@ -87,12 +87,7 @@ cmDocumentation::cmDocumentation() //---------------------------------------------------------------------------- cmDocumentation::~cmDocumentation() { - for(std::map<std::string,cmDocumentationSection *>::iterator i = - this->AllSections.begin(); - i != this->AllSections.end(); ++i) - { - delete i->second; - } + cmDeleteAll(this->AllSections); } //---------------------------------------------------------------------------- diff --git a/Source/cmExportSet.cxx b/Source/cmExportSet.cxx index 33b0630..14812e4 100644 --- a/Source/cmExportSet.cxx +++ b/Source/cmExportSet.cxx @@ -15,10 +15,7 @@ cmExportSet::~cmExportSet() { - for(unsigned int i = 0; i < this->TargetExports.size(); ++ i) - { - delete this->TargetExports[i]; - } + cmDeleteAll(this->TargetExports); } void cmExportSet::AddTargetExport(cmTargetExport* te) diff --git a/Source/cmFileLockPool.cxx b/Source/cmFileLockPool.cxx index 551a75a..cf8e9a9 100644 --- a/Source/cmFileLockPool.cxx +++ b/Source/cmFileLockPool.cxx @@ -23,16 +23,8 @@ cmFileLockPool::cmFileLockPool() cmFileLockPool::~cmFileLockPool() { - for (It i = this->FunctionScopes.begin(); - i != this->FunctionScopes.end(); ++i) - { - delete *i; - } - - for (It i = this->FileScopes.begin(); i != this->FileScopes.end(); ++i) - { - delete *i; - } + cmDeleteAll(this->FunctionScopes); + cmDeleteAll(this->FileScopes); } void cmFileLockPool::PushFunctionScope() @@ -148,10 +140,7 @@ cmFileLockPool::ScopePool::ScopePool() cmFileLockPool::ScopePool::~ScopePool() { - for (It i = this->Locks.begin(); i != this->Locks.end(); ++i) - { - delete *i; - } + cmDeleteAll(this->Locks); } cmFileLockResult cmFileLockPool::ScopePool::Lock( diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx index 861122c..b2a2386 100644 --- a/Source/cmGeneratorExpression.cxx +++ b/Source/cmGeneratorExpression.cxx @@ -150,15 +150,7 @@ cmCompiledGeneratorExpression::cmCompiledGeneratorExpression( //---------------------------------------------------------------------------- cmCompiledGeneratorExpression::~cmCompiledGeneratorExpression() { - std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it - = this->Evaluators.begin(); - const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end - = this->Evaluators.end(); - - for ( ; it != end; ++it) - { - delete *it; - } + cmDeleteAll(this->Evaluators); } //---------------------------------------------------------------------------- diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index 6b2d461..3b1e9c2 100644 --- a/Source/cmGeneratorExpressionEvaluator.cxx +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -2052,30 +2052,9 @@ std::string GeneratorExpressionContent::EvaluateParameters( } //---------------------------------------------------------------------------- -static void deleteAll(const std::vector<cmGeneratorExpressionEvaluator*> &c) -{ - std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it - = c.begin(); - const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end - = c.end(); - for ( ; it != end; ++it) - { - delete *it; - } -} - -//---------------------------------------------------------------------------- GeneratorExpressionContent::~GeneratorExpressionContent() { - deleteAll(this->IdentifierChildren); - - typedef std::vector<cmGeneratorExpressionEvaluator*> EvaluatorVector; - std::vector<EvaluatorVector>::const_iterator pit = - this->ParamChildren.begin(); - const std::vector<EvaluatorVector>::const_iterator pend = - this->ParamChildren.end(); - for ( ; pit != pend; ++pit) - { - deleteAll(*pit); - } + cmDeleteAll(this->IdentifierChildren); + std::for_each(this->ParamChildren.begin(), this->ParamChildren.end(), + cmDeleteAll<std::vector<cmGeneratorExpressionEvaluator*> >); } diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index aee96dd..d17710e 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1517,27 +1517,13 @@ void cmGlobalGenerator::ClearGeneratorMembers() } this->GeneratorTargets.clear(); - for(std::vector<cmGeneratorExpressionEvaluationFile*>::const_iterator - li = this->EvaluationFiles.begin(); - li != this->EvaluationFiles.end(); - ++li) - { - delete *li; - } + cmDeleteAll(this->EvaluationFiles); this->EvaluationFiles.clear(); - for(std::map<std::string, cmExportBuildFileGenerator*>::iterator - i = this->BuildExportSets.begin(); - i != this->BuildExportSets.end(); ++i) - { - delete i->second; - } + cmDeleteAll(this->BuildExportSets); this->BuildExportSets.clear(); - for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) - { - delete this->LocalGenerators[i]; - } + cmDeleteAll(this->LocalGenerators); this->LocalGenerators.clear(); this->ExportSets.clear(); diff --git a/Source/cmInstalledFile.h b/Source/cmInstalledFile.h index 7134a4e..503f92c 100644 --- a/Source/cmInstalledFile.h +++ b/Source/cmInstalledFile.h @@ -38,11 +38,7 @@ public: ~Property() { - for(ExpressionVectorType::iterator i = ValueExpressions.begin(); - i != ValueExpressions.end(); ++i) - { - delete *i; - } + cmDeleteAll(this->ValueExpressions); } ExpressionVectorType ValueExpressions; diff --git a/Source/cmMakeDepend.cxx b/Source/cmMakeDepend.cxx index 1499e57..54b8535 100644 --- a/Source/cmMakeDepend.cxx +++ b/Source/cmMakeDepend.cxx @@ -34,12 +34,7 @@ cmMakeDepend::cmMakeDepend() cmMakeDepend::~cmMakeDepend() { - for(DependInformationMapType::iterator i = - this->DependInformationMap.begin(); - i != this->DependInformationMap.end(); ++i) - { - delete i->second; - } + cmDeleteAll(this->DependInformationMap); } diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index b532a38..c96c6da 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -194,45 +194,13 @@ bool cmMakefile::NeedCacheCompatibility(int major, int minor) const cmMakefile::~cmMakefile() { - for(std::vector<cmInstallGenerator*>::iterator - i = this->InstallGenerators.begin(); - i != this->InstallGenerators.end(); ++i) - { - delete *i; - } - for(std::vector<cmTestGenerator*>::iterator - i = this->TestGenerators.begin(); - i != this->TestGenerators.end(); ++i) - { - delete *i; - } - for(std::vector<cmSourceFile*>::iterator i = this->SourceFiles.begin(); - i != this->SourceFiles.end(); ++i) - { - delete *i; - } - for(std::map<std::string, cmTest*>::iterator i = this->Tests.begin(); - i != this->Tests.end(); ++i) - { - delete i->second; - } - for(std::vector<cmTarget*>::iterator - i = this->ImportedTargetsOwned.begin(); - i != this->ImportedTargetsOwned.end(); ++i) - { - delete *i; - } - for(unsigned int i=0; i < this->FinalPassCommands.size(); i++) - { - delete this->FinalPassCommands[i]; - } - std::vector<cmFunctionBlocker*>::iterator pos; - for (pos = this->FunctionBlockers.begin(); - pos != this->FunctionBlockers.end(); ++pos) - { - cmFunctionBlocker* b = *pos; - delete b; - } + cmDeleteAll(this->InstallGenerators); + cmDeleteAll(this->TestGenerators); + cmDeleteAll(this->SourceFiles); + cmDeleteAll(this->Tests); + cmDeleteAll(this->ImportedTargetsOwned); + cmDeleteAll(this->FinalPassCommands); + cmDeleteAll(this->FunctionBlockers); this->FunctionBlockers.clear(); if (this->PolicyStack.size() != 1) { diff --git a/Source/cmOrderDirectories.cxx b/Source/cmOrderDirectories.cxx index 116d42f..23f8526 100644 --- a/Source/cmOrderDirectories.cxx +++ b/Source/cmOrderDirectories.cxx @@ -291,18 +291,8 @@ cmOrderDirectories::cmOrderDirectories(cmGlobalGenerator* gg, //---------------------------------------------------------------------------- cmOrderDirectories::~cmOrderDirectories() { - for(std::vector<cmOrderDirectoriesConstraint*>::iterator - i = this->ConstraintEntries.begin(); - i != this->ConstraintEntries.end(); ++i) - { - delete *i; - } - for(std::vector<cmOrderDirectoriesConstraint*>::iterator - i = this->ImplicitDirEntries.begin(); - i != this->ImplicitDirEntries.end(); ++i) - { - delete *i; - } + cmDeleteAll(this->ConstraintEntries); + cmDeleteAll(this->ImplicitDirEntries); } //---------------------------------------------------------------------------- diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index da64617..3a48101 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -378,13 +378,7 @@ cmPolicies::cmPolicies() cmPolicies::~cmPolicies() { - // free the policies - std::map<cmPolicies::PolicyID,cmPolicy *>::iterator i - = this->Policies.begin(); - for (;i != this->Policies.end(); ++i) - { - delete i->second; - } + cmDeleteAll(this->Policies); } void cmPolicies::DefinePolicy(cmPolicies::PolicyID iD, diff --git a/Source/cmStandardIncludes.h b/Source/cmStandardIncludes.h index 2d988c9..251a043 100644 --- a/Source/cmStandardIncludes.h +++ b/Source/cmStandardIncludes.h @@ -237,4 +237,31 @@ private: const std::string m_test; }; +namespace ContainerAlgorithms { + +template<typename Container> +struct DefaultDeleter +{ + void operator()(typename Container::value_type value) { + delete value; + } +}; + +template<typename K, typename V> +struct DefaultDeleter<std::map<K, V> > +{ + void operator()(typename std::map<K, V>::value_type value) { + delete value.second; + } +}; + +} + +template<typename Container> +void cmDeleteAll(Container const& c) +{ + std::for_each(c.begin(), c.end(), + ContainerAlgorithms::DefaultDeleter<Container>()); +} + #endif diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 1c03bb1..8e060c4 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -226,13 +226,7 @@ cmLinkImplItem cmTargetInternals::TargetPropertyEntry::NoLinkImplItem; static void deleteAndClear( std::vector<cmTargetInternals::TargetPropertyEntry*> &entries) { - for (std::vector<cmTargetInternals::TargetPropertyEntry*>::const_iterator - it = entries.begin(), - end = entries.end(); - it != end; ++it) - { - delete *it; - } + cmDeleteAll(entries); entries.clear(); } diff --git a/Source/cmVariableWatch.cxx b/Source/cmVariableWatch.cxx index cb6cb12..b8a6df2 100644 --- a/Source/cmVariableWatch.cxx +++ b/Source/cmVariableWatch.cxx @@ -34,21 +34,16 @@ cmVariableWatch::cmVariableWatch() { } -cmVariableWatch::~cmVariableWatch() +template<typename C> +void deleteAllSecond(typename C::value_type it) { - cmVariableWatch::StringToVectorOfPairs::iterator svp_it; - - for ( svp_it = this->WatchMap.begin(); - svp_it != this->WatchMap.end(); ++svp_it ) - { - cmVariableWatch::VectorOfPairs::iterator p_it; + cmDeleteAll(it.second); +} - for ( p_it = svp_it->second.begin(); - p_it != svp_it->second.end(); ++p_it ) - { - delete *p_it; - } - } +cmVariableWatch::~cmVariableWatch() +{ + std::for_each(this->WatchMap.begin(), this->WatchMap.end(), + deleteAllSecond<cmVariableWatch::StringToVectorOfPairs>); } bool cmVariableWatch::AddWatch(const std::string& variable, diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 5e48157..4244b25 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -171,16 +171,8 @@ cmake::~cmake() delete this->GlobalGenerator; this->GlobalGenerator = 0; } - for(RegisteredCommandsMap::iterator j = this->Commands.begin(); - j != this->Commands.end(); ++j) - { - delete (*j).second; - } - for(RegisteredGeneratorsVector::iterator j = this->Generators.begin(); - j != this->Generators.end(); ++j) - { - delete *j; - } + cmDeleteAll(this->Commands); + cmDeleteAll(this->Generators); #ifdef CMAKE_BUILD_WITH_CMAKE delete this->VariableWatch; #endif |