cmCPackGeneratorFactory.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. //! Get the generator
  21. cmCPackGenerator* NewGenerator(const std::string& name);
  22. void DeleteGenerator(cmCPackGenerator* gen);
  23. typedef cmCPackGenerator* CreateGeneratorCall();
  24. void RegisterGenerator(const std::string& name,
  25. const char* generatorDescription,
  26. CreateGeneratorCall* createGenerator);
  27. void SetLogger(cmCPackLog* logger) { this->Logger = logger; }
  28. typedef std::map<std::string, std::string> DescriptionsMap;
  29. const DescriptionsMap& GetGeneratorsList() const
  30. {
  31. return this->GeneratorDescriptions;
  32. }
  33. private:
  34. cmCPackGenerator* NewGeneratorInternal(const std::string& name);
  35. std::vector<cmCPackGenerator*> Generators;
  36. typedef std::map<std::string, CreateGeneratorCall*> t_GeneratorCreatorsMap;
  37. t_GeneratorCreatorsMap GeneratorCreators;
  38. DescriptionsMap GeneratorDescriptions;
  39. cmCPackLog* Logger;
  40. };
  41. #endif