cmCPackGeneratorFactory.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. #include "cmCPackConfigure.h" // IWYU pragma: keep
  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. //! Get the generator
  20. std::unique_ptr<cmCPackGenerator> NewGenerator(std::string const& name);
  21. using CreateGeneratorCall = cmCPackGenerator*();
  22. void RegisterGenerator(std::string const& name,
  23. char const* generatorDescription,
  24. CreateGeneratorCall* createGenerator);
  25. void SetLogger(cmCPackLog* logger) { this->Logger = logger; }
  26. using DescriptionsMap = std::map<std::string, std::string>;
  27. DescriptionsMap const& GetGeneratorsList() const
  28. {
  29. return this->GeneratorDescriptions;
  30. }
  31. private:
  32. using t_GeneratorCreatorsMap = std::map<std::string, CreateGeneratorCall*>;
  33. t_GeneratorCreatorsMap GeneratorCreators;
  34. DescriptionsMap GeneratorDescriptions;
  35. cmCPackLog* Logger{};
  36. };