浏览代码

Ninja: remove warnings

Peter Kümmel 13 年之前
父节点
当前提交
44ba4cfdb6

+ 9 - 10
Source/cmMakefileTargetGenerator.cxx

@@ -29,7 +29,7 @@
 
 cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target)
   : OSXBundleGenerator(0)
-  , MacOSXContentGenerator(this)
+  , MacOSXContentGenerator(0)
 {
   this->BuildFileStream = 0;
   this->InfoFileStream = 0;
@@ -52,6 +52,12 @@ cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target)
     {
     this->NoRuleMessages = cmSystemTools::IsOff(ruleStatus);
     }
+  MacOSXContentGenerator = new MacOSXContentGeneratorType(this);
+}
+
+cmMakefileTargetGenerator::~cmMakefileTargetGenerator()
+{
+  delete MacOSXContentGenerator;
 }
 
 cmMakefileTargetGenerator *
@@ -157,10 +163,10 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules()
     }
   this->OSXBundleGenerator->GenerateMacOSXContentStatements(
     this->GeneratorTarget->HeaderSources,
-    &this->MacOSXContentGenerator);
+    this->MacOSXContentGenerator);
   this->OSXBundleGenerator->GenerateMacOSXContentStatements(
     this->GeneratorTarget->ExtraSources,
-    &this->MacOSXContentGenerator);
+    this->MacOSXContentGenerator);
   for(std::vector<cmSourceFile*>::const_iterator
         si = this->GeneratorTarget->ExternalObjects.begin();
       si != this->GeneratorTarget->ExternalObjects.end(); ++si)
@@ -348,13 +354,6 @@ void cmMakefileTargetGenerator::WriteTargetLanguageFlags()
     }
 }
 
-//----------------------------------------------------------------------------
-cmMakefileTargetGenerator::MacOSXContentGeneratorType::
-MacOSXContentGeneratorType(cmMakefileTargetGenerator* generator)
-  : cmOSXBundleGenerator::MacOSXContentGeneratorType()
-  , Generator(generator)
-{
-}
 
 //----------------------------------------------------------------------------
 void

+ 8 - 8
Source/cmMakefileTargetGenerator.h

@@ -35,7 +35,7 @@ class cmMakefileTargetGenerator
 public:
   // constructor to set the ivars
   cmMakefileTargetGenerator(cmTarget* target);
-  virtual ~cmMakefileTargetGenerator() {};
+  virtual ~cmMakefileTargetGenerator();
 
   // construct using this factory call
   static cmMakefileTargetGenerator *New(cmTarget *tgt);
@@ -74,17 +74,17 @@ protected:
   void WriteTargetDependRules();
 
   // write rules for Mac OS X Application Bundle content.
-  class MacOSXContentGeneratorType
-    : public cmOSXBundleGenerator::MacOSXContentGeneratorType
+  struct MacOSXContentGeneratorType :
+    cmOSXBundleGenerator::MacOSXContentGeneratorType
   {
-  public:
-    MacOSXContentGeneratorType(cmMakefileTargetGenerator* Generator);
-    virtual void operator()(cmSourceFile& source, const char* pkgloc);
+    MacOSXContentGeneratorType(cmMakefileTargetGenerator* gen) :
+      Generator(gen) {}
+
+    void operator()(cmSourceFile& source, const char* pkgloc);
 
   private:
     cmMakefileTargetGenerator* Generator;
   };
-  friend class MacOSXContentGeneratorType;
 
   // write the rules for an object
   void WriteObjectRuleFiles(cmSourceFile& source);
@@ -234,7 +234,7 @@ protected:
   std::string MacContentDirectory;
   std::set<cmStdString> MacContentFolders;
   cmOSXBundleGenerator* OSXBundleGenerator;
-  MacOSXContentGeneratorType MacOSXContentGenerator;
+  MacOSXContentGeneratorType* MacOSXContentGenerator;
 
   typedef std::map<cmStdString, cmStdString> ByLanguageMap;
   std::string GetFlags(const std::string &l);

+ 5 - 10
Source/cmNinjaTargetGenerator.cxx

@@ -57,7 +57,7 @@ cmNinjaTargetGenerator::New(cmTarget* target)
 
 cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmTarget* target)
   :
-    MacOSXContentGenerator(this),
+    MacOSXContentGenerator(0),
     OSXBundleGenerator(0),
     MacContentFolders(),
     Target(target),
@@ -68,10 +68,12 @@ cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmTarget* target)
 {
   this->GeneratorTarget =
     this->GetGlobalGenerator()->GetGeneratorTarget(target);
+  MacOSXContentGenerator = new MacOSXContentGeneratorType(this);
 }
 
 cmNinjaTargetGenerator::~cmNinjaTargetGenerator()
 {
+  delete MacOSXContentGenerator;
 }
 
 cmGeneratedFileStream& cmNinjaTargetGenerator::GetBuildFileStream() const
@@ -434,10 +436,10 @@ cmNinjaTargetGenerator
      }
   this->OSXBundleGenerator->GenerateMacOSXContentStatements(
     this->GeneratorTarget->HeaderSources,
-    &this->MacOSXContentGenerator);
+    this->MacOSXContentGenerator);
   this->OSXBundleGenerator->GenerateMacOSXContentStatements(
     this->GeneratorTarget->ExtraSources,
-    &this->MacOSXContentGenerator);
+    this->MacOSXContentGenerator);
   for(std::vector<cmSourceFile*>::const_iterator
         si = this->GeneratorTarget->ExternalObjects.begin();
       si != this->GeneratorTarget->ExternalObjects.end(); ++si)
@@ -645,13 +647,6 @@ cmNinjaTargetGenerator
   EnsureDirectoryExists(cmSystemTools::GetParentDirectory(path.c_str()));
 }
 
-//----------------------------------------------------------------------------
-cmNinjaTargetGenerator::MacOSXContentGeneratorType::
-MacOSXContentGeneratorType(cmNinjaTargetGenerator* generator)
-  : cmOSXBundleGenerator::MacOSXContentGeneratorType()
-  , Generator(generator)
-{
-}
 
 //----------------------------------------------------------------------------
 void

+ 7 - 6
Source/cmNinjaTargetGenerator.h

@@ -116,12 +116,13 @@ protected:
   void EnsureParentDirectoryExists(const std::string& path);
 
   // write rules for Mac OS X Application Bundle content.
-  class MacOSXContentGeneratorType
-    : public cmOSXBundleGenerator::MacOSXContentGeneratorType
+  struct MacOSXContentGeneratorType :
+    cmOSXBundleGenerator::MacOSXContentGeneratorType
   {
-  public:
-    MacOSXContentGeneratorType(cmNinjaTargetGenerator* Generator);
-    virtual void operator()(cmSourceFile& source, const char* pkgloc);
+    MacOSXContentGeneratorType(cmNinjaTargetGenerator* g) :
+      Generator(g)  {}
+
+    void operator()(cmSourceFile& source, const char* pkgloc);
 
   private:
     cmNinjaTargetGenerator* Generator;
@@ -129,7 +130,7 @@ protected:
 
 
 protected:
-  MacOSXContentGeneratorType MacOSXContentGenerator;
+  MacOSXContentGeneratorType* MacOSXContentGenerator;
   // Properly initialized by sub-classes.
   cmOSXBundleGenerator* OSXBundleGenerator;
   std::set<cmStdString> MacContentFolders;

+ 3 - 2
Source/cmOSXBundleGenerator.h

@@ -35,9 +35,9 @@ public:
   void CreateFramework(std::string const& targetName);
   void CreateCFBundle(std::string& targetName, std::string& outpath);
 
-  class MacOSXContentGeneratorType
+  struct MacOSXContentGeneratorType
   {
-  public:
+    virtual ~MacOSXContentGeneratorType() {}
     virtual void operator()(cmSourceFile& source, const char* pkgloc) = 0;
   };
 
@@ -67,4 +67,5 @@ private:
   std::set<cmStdString>* MacContentFolders;
 };
 
+
 #endif