summaryrefslogtreecommitdiffstats
path: root/Source/CPack/cmCPackGenerators.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/CPack/cmCPackGenerators.cxx')
-rw-r--r--Source/CPack/cmCPackGenerators.cxx106
1 files changed, 106 insertions, 0 deletions
diff --git a/Source/CPack/cmCPackGenerators.cxx b/Source/CPack/cmCPackGenerators.cxx
new file mode 100644
index 0000000..54da497
--- /dev/null
+++ b/Source/CPack/cmCPackGenerators.cxx
@@ -0,0 +1,106 @@
+/*=========================================================================
+
+ Program: CMake - Cross-Platform Makefile Generator
+ Module: $RCSfile$
+ Language: C++
+ Date: $Date$
+ Version: $Revision$
+
+ Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
+ See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
+
+#include "cmCPackGenerators.h"
+
+#include "cmCPackGenericGenerator.h"
+#include "cmCPackTGZGenerator.h"
+#include "cmCPackSTGZGenerator.h"
+#include "cmCPackNSISGenerator.h"
+#include "cmCPackPackageMakerGenerator.h"
+
+//----------------------------------------------------------------------
+cmCPackGenerators::cmCPackGenerators()
+{
+ this->RegisterGenerator("TGZ", cmCPackTGZGenerator::CreateGenerator);
+ this->RegisterGenerator("STGZ", cmCPackSTGZGenerator::CreateGenerator);
+ this->RegisterGenerator("NSIS", cmCPackNSISGenerator::CreateGenerator);
+ this->RegisterGenerator("PackageMaker", cmCPackPackageMakerGenerator::CreateGenerator);
+}
+
+//----------------------------------------------------------------------
+cmCPackGenerators::~cmCPackGenerators()
+{
+ std::vector<cmCPackGenericGenerator*>::iterator it;
+ for ( it = m_Generators.begin(); it != m_Generators.end(); ++ it )
+ {
+ delete *it;
+ }
+}
+
+//----------------------------------------------------------------------
+cmCPackGenericGenerator* cmCPackGenerators::NewGenerator(const char* name)
+{
+ cmCPackGenericGenerator* gen = this->NewGeneratorInternal(name);
+ if ( !gen )
+ {
+ return 0;
+ }
+ if ( !gen->Initialize(name) )
+ {
+ delete gen;
+ return 0;
+ }
+ m_Generators.push_back(gen);
+ return gen;
+}
+
+//----------------------------------------------------------------------
+cmCPackGenericGenerator* cmCPackGenerators::NewGeneratorInternal(const char* name)
+{
+ if ( !name )
+ {
+ return 0;
+ }
+ cmCPackGenerators::t_GeneratorCreatorsMap::iterator it = m_GeneratorCreators.find(name);
+ if ( it == m_GeneratorCreators.end() )
+ {
+ return 0;
+ }
+ return (it->second)();
+ /*
+ std::string sname = name;
+ if ( sname == "STGZ" )
+ {
+ return new cmCPackSTGZGenerator;
+ }
+ if ( sname == "TGZ" )
+ {
+ return new cmCPackTGZGenerator;
+ }
+ if ( sname == "NSIS" )
+ {
+ return new cmCPackNSISGenerator;
+ }
+ if ( sname == "PackageMaker" )
+ {
+ return new cmCPackPackageMakerGenerator;
+ }
+ return new cmCPackGenericGenerator;
+ */
+}
+
+//----------------------------------------------------------------------
+void cmCPackGenerators::RegisterGenerator(const char* name, CreateGeneratorCall* createGenerator)
+{
+ if ( !name || !createGenerator )
+ {
+ std::cerr << "Cannot register generator" << std::endl;
+ return;
+ }
+ m_GeneratorCreators[name] = createGenerator;
+}