cmCPackGeneratorFactory.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #ifndef cmCPackGeneratorFactory_h
  4. #define cmCPackGeneratorFactory_h
  5. #include "cmConfigure.h" // IWYU pragma: keep
  6. #include <map>
  7. #include <string>
  8. #include <vector>
  9. class cmCPackGenerator;
  10. class cmCPackLog;
  11. /** \class cmCPackGeneratorFactory
  12. * \brief A container for CPack generators
  13. *
  14. */
  15. class cmCPackGeneratorFactory
  16. {
  17. public:
  18. cmCPackGeneratorFactory();
  19. ~cmCPackGeneratorFactory();
  20. cmCPackGeneratorFactory(const cmCPackGeneratorFactory&) = delete;
  21. cmCPackGeneratorFactory& operator=(const cmCPackGeneratorFactory&) = delete;
  22. //! Get the generator
  23. cmCPackGenerator* NewGenerator(const std::string& name);
  24. void DeleteGenerator(cmCPackGenerator* gen);
  25. using CreateGeneratorCall = cmCPackGenerator*();
  26. void RegisterGenerator(const std::string& name,
  27. const char* generatorDescription,
  28. CreateGeneratorCall* createGenerator);
  29. void SetLogger(cmCPackLog* logger) { this->Logger = logger; }
  30. using DescriptionsMap = std::map<std::string, std::string>;
  31. const DescriptionsMap& GetGeneratorsList() const
  32. {
  33. return this->GeneratorDescriptions;
  34. }
  35. private:
  36. cmCPackGenerator* NewGeneratorInternal(const std::string& name);
  37. std::vector<cmCPackGenerator*> Generators;
  38. using t_GeneratorCreatorsMap = std::map<std::string, CreateGeneratorCall*>;
  39. t_GeneratorCreatorsMap GeneratorCreators;
  40. DescriptionsMap GeneratorDescriptions;
  41. cmCPackLog* Logger;
  42. };
  43. #endif