cmCPackGeneratorFactory.h 1.2 KB

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