Browse Source

Add cmGlobalGeneratorFactory::GetGenerators()

This allows cmGlobalGeneratorFactory to create more than
one type of cmGlobalGenerator in a next step.
Patrick Gansterer 13 years ago
parent
commit
30a695021c
3 changed files with 11 additions and 1 deletions
  1. 7 0
      Source/cmGlobalGeneratorFactory.h
  2. 3 0
      Source/cmGlobalXCodeGenerator.cxx
  3. 1 1
      Source/cmake.cxx

+ 7 - 0
Source/cmGlobalGeneratorFactory.h

@@ -33,6 +33,9 @@ public:
 
   /** Get the documentation entry for this factory */
   virtual void GetDocumentation(cmDocumentationEntry& entry) const = 0;
+
+  /** Get the names of the current registered generators */
+  virtual void GetGenerators(std::vector<std::string>& names) const = 0;
 };
 
 template<class T>
@@ -46,6 +49,10 @@ public:
   /** Get the documentation entry for this factory */
   virtual void GetDocumentation(cmDocumentationEntry& entry) const {
     T().GetDocumentation(entry); }
+
+  /** Get the names of the current registered generators */
+  virtual void GetGenerators(std::vector<std::string>& names) const {
+    names.push_back(T::GetActualName()); }
 };
 
 #endif

+ 3 - 0
Source/cmGlobalXCodeGenerator.cxx

@@ -120,6 +120,9 @@ public:
 
   virtual void GetDocumentation(cmDocumentationEntry& entry) const {
     cmGlobalXCodeGenerator().GetDocumentation(entry); }
+
+  virtual void GetGenerators(std::vector<std::string>& names) const {
+    names.push_back(cmGlobalXCodeGenerator::GetActualName()); }
 };
 
 //----------------------------------------------------------------------------

+ 1 - 1
Source/cmake.cxx

@@ -1877,7 +1877,7 @@ void cmake::GetRegisteredGenerators(std::vector<std::string>& names)
   for(RegisteredGeneratorsMap::const_iterator i = this->Generators.begin();
       i != this->Generators.end(); ++i)
     {
-    names.push_back(i->first);
+    i->second->GetGenerators(names);
     }
   for(RegisteredExtraGeneratorsMap::const_iterator
       i = this->ExtraGenerators.begin();