From c9c1eb99fe011546b5d9390c7fbbeebfda491c65 Mon Sep 17 00:00:00 2001 From: Tushar Maheshwari Date: Sat, 7 Sep 2019 14:15:08 +0530 Subject: [PATCH] cmCPackGeneratorFactory: rule of zero --- Source/CPack/cmCPackGeneratorFactory.cxx | 27 ++++++------------------ Source/CPack/cmCPackGeneratorFactory.h | 12 ++--------- Source/CPack/cpack.cxx | 5 +++-- 3 files changed, 12 insertions(+), 32 deletions(-) diff --git a/Source/CPack/cmCPackGeneratorFactory.cxx b/Source/CPack/cmCPackGeneratorFactory.cxx index a564eb1603..79e344be76 100644 --- a/Source/CPack/cmCPackGeneratorFactory.cxx +++ b/Source/CPack/cmCPackGeneratorFactory.cxx @@ -6,7 +6,6 @@ #include #include "IFW/cmCPackIFWGenerator.h" -#include "cmAlgorithms.h" #ifdef HAVE_FREEBSD_PKG # include "cmCPackFreeBSDGenerator.h" #endif @@ -138,31 +137,19 @@ cmCPackGeneratorFactory::cmCPackGeneratorFactory() #endif } -cmCPackGeneratorFactory::~cmCPackGeneratorFactory() -{ - cmDeleteAll(this->Generators); -} - -cmCPackGenerator* cmCPackGeneratorFactory::NewGenerator( - const std::string& name) -{ - cmCPackGenerator* gen = this->NewGeneratorInternal(name); - if (!gen) { - return nullptr; - } - this->Generators.push_back(gen); - gen->SetLogger(this->Logger); - return gen; -} - -cmCPackGenerator* cmCPackGeneratorFactory::NewGeneratorInternal( +std::unique_ptr cmCPackGeneratorFactory::NewGenerator( const std::string& name) { auto it = this->GeneratorCreators.find(name); if (it == this->GeneratorCreators.end()) { return nullptr; } - return (it->second)(); + std::unique_ptr gen(it->second()); + if (!gen) { + return nullptr; + } + gen->SetLogger(this->Logger); + return gen; } void cmCPackGeneratorFactory::RegisterGenerator( diff --git a/Source/CPack/cmCPackGeneratorFactory.h b/Source/CPack/cmCPackGeneratorFactory.h index da2eb8d274..62b7484235 100644 --- a/Source/CPack/cmCPackGeneratorFactory.h +++ b/Source/CPack/cmCPackGeneratorFactory.h @@ -6,8 +6,8 @@ #include "cmConfigure.h" // IWYU pragma: keep #include +#include #include -#include class cmCPackGenerator; class cmCPackLog; @@ -20,14 +20,9 @@ class cmCPackGeneratorFactory { public: cmCPackGeneratorFactory(); - ~cmCPackGeneratorFactory(); - - cmCPackGeneratorFactory(const cmCPackGeneratorFactory&) = delete; - cmCPackGeneratorFactory& operator=(const cmCPackGeneratorFactory&) = delete; //! Get the generator - cmCPackGenerator* NewGenerator(const std::string& name); - void DeleteGenerator(cmCPackGenerator* gen); + std::unique_ptr NewGenerator(const std::string& name); using CreateGeneratorCall = cmCPackGenerator*(); @@ -44,9 +39,6 @@ public: } private: - cmCPackGenerator* NewGeneratorInternal(const std::string& name); - std::vector Generators; - using t_GeneratorCreatorsMap = std::map; t_GeneratorCreatorsMap GeneratorCreators; DescriptionsMap GeneratorDescriptions; diff --git a/Source/CPack/cpack.cxx b/Source/CPack/cpack.cxx index ab44a42611..ce41d40cd7 100644 --- a/Source/CPack/cpack.cxx +++ b/Source/CPack/cpack.cxx @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -237,7 +238,6 @@ int main(int argc, char const* const* argv) cmCPackGeneratorFactory generators; generators.SetLogger(&log); - cmCPackGenerator* cpackGenerator = nullptr; cmDocumentation doc; doc.addCPackStandardDocSections(); @@ -360,7 +360,8 @@ int main(int argc, char const* const* argv) parsed = 0; } if (parsed) { - cpackGenerator = generators.NewGenerator(gen); + std::unique_ptr cpackGenerator = + generators.NewGenerator(gen); if (cpackGenerator) { cpackGenerator->SetTrace(trace); cpackGenerator->SetTraceExpand(traceExpand);