| /*============================================================================ |
| CMake - Cross Platform Makefile Generator |
| Copyright 2000-2009 Kitware, Inc. |
| |
| Distributed under the OSI-approved BSD License (the "License"); |
| see accompanying file Copyright.txt for details. |
| |
| This software is distributed WITHOUT ANY WARRANTY; without even the |
| implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| See the License for more information. |
| ============================================================================*/ |
| |
| #ifndef cmCPackGeneratorFactory_h |
| #define cmCPackGeneratorFactory_h |
| |
| #include "cmObject.h" |
| |
| class cmCPackLog; |
| class cmCPackGenerator; |
| |
| /** \class cmCPackGeneratorFactory |
| * \brief A container for CPack generators |
| * |
| */ |
| class cmCPackGeneratorFactory : public cmObject |
| { |
| public: |
| cmTypeMacro(cmCPackGeneratorFactory, cmObject); |
| |
| cmCPackGeneratorFactory(); |
| ~cmCPackGeneratorFactory(); |
| |
| //! Get the generator |
| cmCPackGenerator* NewGenerator(const char* name); |
| void DeleteGenerator(cmCPackGenerator* gen); |
| |
| typedef cmCPackGenerator* CreateGeneratorCall(); |
| |
| void RegisterGenerator(const char* name, |
| const char* generatorDescription, |
| CreateGeneratorCall* createGenerator); |
| |
| void SetLogger(cmCPackLog* logger) { this->Logger = logger; } |
| |
| typedef std::map<cmStdString, cmStdString> DescriptionsMap; |
| const DescriptionsMap& GetGeneratorsList() const |
| { return this->GeneratorDescriptions; } |
| |
| private: |
| cmCPackGenerator* NewGeneratorInternal(const char* name); |
| std::vector<cmCPackGenerator*> Generators; |
| |
| typedef std::map<cmStdString, CreateGeneratorCall*> t_GeneratorCreatorsMap; |
| t_GeneratorCreatorsMap GeneratorCreators; |
| DescriptionsMap GeneratorDescriptions; |
| cmCPackLog* Logger; |
| }; |
| |
| #endif |