#pragma once
#include "cmConfigure.h"
#include <map>
#include <memory>
#include <string>
#include "cmCPackConfigure.h"
class cmCPackGenerator;
class cmCPackLog;
class cmCPackGeneratorFactory
{
public:
cmCPackGeneratorFactory();
std::unique_ptr<cmCPackGenerator> NewGenerator(std::string const& name);
using CreateGeneratorCall = cmCPackGenerator*();
void RegisterGenerator(std::string const& name,
char const* generatorDescription,
CreateGeneratorCall* createGenerator);
void SetLogger(cmCPackLog* logger) { this->Logger = logger; }
using DescriptionsMap = std::map<std::string, std::string>;
DescriptionsMap const& GetGeneratorsList() const
{
return this->GeneratorDescriptions;
}
private:
using t_GeneratorCreatorsMap = std::map<std::string, CreateGeneratorCall*>;
t_GeneratorCreatorsMap GeneratorCreators;
DescriptionsMap GeneratorDescriptions;
cmCPackLog* Logger{};
};