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