/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include #include "cmCPackConfigure.h" // IWYU pragma: keep class cmCPackGenerator; class cmCPackLog; /** \class cmCPackGeneratorFactory * \brief A container for CPack generators * */ class cmCPackGeneratorFactory { public: cmCPackGeneratorFactory(); //! Get the generator std::unique_ptr NewGenerator(const std::string& name); using CreateGeneratorCall = cmCPackGenerator*(); void RegisterGenerator(const std::string& name, const char* generatorDescription, CreateGeneratorCall* createGenerator); void SetLogger(cmCPackLog* logger) { this->Logger = logger; } using DescriptionsMap = std::map; const DescriptionsMap& GetGeneratorsList() const { return this->GeneratorDescriptions; } private: using t_GeneratorCreatorsMap = std::map; t_GeneratorCreatorsMap GeneratorCreators; DescriptionsMap GeneratorDescriptions; cmCPackLog* Logger{}; };