diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2001-09-06 21:28:24 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2001-09-06 21:28:24 (GMT) |
commit | d204791e45b245fd0a10b2b31ab6ace9a8c3cf65 (patch) | |
tree | 183547168a76c000f332f7bad6b77a43f309a09d /Source/cmMakefileGenerator.cxx | |
parent | ecd4acfb01035d227f68c29ce0f65b2193bbd410 (diff) | |
download | CMake-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.cxx | 45 |
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; +} |