summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefileGenerator.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2001-09-06 21:28:24 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2001-09-06 21:28:24 (GMT)
commitd204791e45b245fd0a10b2b31ab6ace9a8c3cf65 (patch)
tree183547168a76c000f332f7bad6b77a43f309a09d /Source/cmMakefileGenerator.cxx
parentecd4acfb01035d227f68c29ce0f65b2193bbd410 (diff)
downloadCMake-d204791e45b245fd0a10b2b31ab6ace9a8c3cf65.zip
CMake-d204791e45b245fd0a10b2b31ab6ace9a8c3cf65.tar.gz
CMake-d204791e45b245fd0a10b2b31ab6ace9a8c3cf65.tar.bz2
ENH: integrate borland support
Diffstat (limited to 'Source/cmMakefileGenerator.cxx')
-rw-r--r--Source/cmMakefileGenerator.cxx45
1 files changed, 45 insertions, 0 deletions
diff --git a/Source/cmMakefileGenerator.cxx b/Source/cmMakefileGenerator.cxx
index d2c1b0c..a662029 100644
--- a/Source/cmMakefileGenerator.cxx
+++ b/Source/cmMakefileGenerator.cxx
@@ -40,8 +40,53 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
=========================================================================*/
#include "cmMakefileGenerator.h"
+// static list of registered generators
+std::map<cmStdString, cmMakefileGenerator*>
+cmMakefileGenerator::s_RegisteredGenerators;
+
+
void cmMakefileGenerator::SetMakefile(cmMakefile* mf)
{
m_Makefile = mf;
}
+void cmMakefileGenerator::GetRegisteredGenerators(std::vector<std::string>& names)
+{
+ for(std::map<cmStdString, cmMakefileGenerator*>::iterator i
+ = s_RegisteredGenerators.begin();
+ i != s_RegisteredGenerators.end(); ++i)
+ {
+ names.push_back(i->first);
+ }
+}
+
+
+void
+cmMakefileGenerator::RegisterGenerator(cmMakefileGenerator* mg)
+{
+ std::map<cmStdString, cmMakefileGenerator*>::iterator i =
+ s_RegisteredGenerators.find(mg->GetName());
+ // delete re-registered objects
+ if(i != s_RegisteredGenerators.end())
+ {
+ delete i->second;
+ }
+ s_RegisteredGenerators[mg->GetName()] = mg;
+}
+
+
+cmMakefileGenerator*
+cmMakefileGenerator::CreateGenerator(const char* name)
+{
+ std::map<cmStdString, cmMakefileGenerator*>::iterator i;
+ for(i = s_RegisteredGenerators.begin();
+ i != s_RegisteredGenerators.end(); ++i)
+ {
+ cmMakefileGenerator* gen = i->second;
+ if(strcmp(name, gen->GetName()) == 0)
+ {
+ return gen->CreateObject();
+ }
+ }
+ return 0;
+}