1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 02:08:27 +08:00

cmCPackGeneratorFactory: rule of zero

This commit is contained in:
Tushar Maheshwari
2019-09-07 14:15:08 +05:30
committed by Kyle Edwards
parent e6ddb57479
commit c9c1eb99fe
3 changed files with 12 additions and 32 deletions

View File

@@ -6,7 +6,6 @@
#include <utility>
#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<cmCPackGenerator> 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<cmCPackGenerator> gen(it->second());
if (!gen) {
return nullptr;
}
gen->SetLogger(this->Logger);
return gen;
}
void cmCPackGeneratorFactory::RegisterGenerator(

View File

@@ -6,8 +6,8 @@
#include "cmConfigure.h" // IWYU pragma: keep
#include <map>
#include <memory>
#include <string>
#include <vector>
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<cmCPackGenerator> NewGenerator(const std::string& name);
using CreateGeneratorCall = cmCPackGenerator*();
@@ -44,9 +39,6 @@ public:
}
private:
cmCPackGenerator* NewGeneratorInternal(const std::string& name);
std::vector<cmCPackGenerator*> Generators;
using t_GeneratorCreatorsMap = std::map<std::string, CreateGeneratorCall*>;
t_GeneratorCreatorsMap GeneratorCreators;
DescriptionsMap GeneratorDescriptions;

View File

@@ -25,6 +25,7 @@
#include <cstddef>
#include <iostream>
#include <map>
#include <memory>
#include <sstream>
#include <string>
#include <utility>
@@ -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<cmCPackGenerator> cpackGenerator =
generators.NewGenerator(gen);
if (cpackGenerator) {
cpackGenerator->SetTrace(trace);
cpackGenerator->SetTraceExpand(traceExpand);