Browse Source

modified how source files store properties

Ken Martin 23 years ago
parent
commit
7b5a8762c6

+ 1 - 1
Source/cmAbstractFilesCommand.cxx

@@ -44,7 +44,7 @@ bool cmAbstractFilesCommand::InitialPass(std::vector<std::string> const& argsIn)
     cmSourceFile* sf = m_Makefile->GetSource(j->c_str());
     cmSourceFile* sf = m_Makefile->GetSource(j->c_str());
     if(sf)
     if(sf)
       {
       {
-      sf->SetIsAnAbstractClass(true);
+      sf->SetProperty("ABSTRACT","1");
       }
       }
     else
     else
       {
       {

+ 1 - 1
Source/cmAuxSourceDirectoryCommand.cxx

@@ -69,7 +69,7 @@ bool cmAuxSourceDirectoryCommand::InitialPass(std::vector<std::string> const& ar
           cmfile.SetName(fullname.c_str(), m_Makefile->GetCurrentDirectory(),
           cmfile.SetName(fullname.c_str(), m_Makefile->GetCurrentDirectory(),
                          m_Makefile->GetSourceExtensions(),
                          m_Makefile->GetSourceExtensions(),
                          m_Makefile->GetHeaderExtensions());
                          m_Makefile->GetHeaderExtensions());
-          cmfile.SetIsAnAbstractClass(false);
+          cmfile.SetProperty("ABSTRACT","0");
           m_Makefile->AddSource(cmfile);
           m_Makefile->AddSource(cmfile);
           if (sourceListValue.size() > 0)
           if (sourceListValue.size() > 0)
             {
             {

+ 1 - 1
Source/cmBorlandMakefileGenerator.cxx

@@ -169,7 +169,7 @@ OutputBuildObjectFromSource(std::ostream& fout,
     shared = true;
     shared = true;
     }
     }
   // Header files shouldn't have build rules.
   // Header files shouldn't have build rules.
-  if(source.IsAHeaderFileOnly())
+  if(source.GetPropertyAsBool("HEADER_FILE_ONLY"))
     {
     {
     return;
     return;
     }
     }

+ 2 - 2
Source/cmCreateTestSourceList.cxx

@@ -279,7 +279,7 @@ bool cmCreateTestSourceList::InitialPass(std::vector<std::string> const& argsIn)
   cmSourceFile cfile;
   cmSourceFile cfile;
   std::string sourceListValue;
   std::string sourceListValue;
   
   
-  cfile.SetIsAnAbstractClass(false);
+  cfile.SetProperty("ABSTRACT","0");
   cfile.SetName(cmSystemTools::GetFilenameWithoutExtension(args[1]).c_str(), 
   cfile.SetName(cmSystemTools::GetFilenameWithoutExtension(args[1]).c_str(), 
                 m_Makefile->GetCurrentOutputDirectory(),
                 m_Makefile->GetCurrentOutputDirectory(),
                 cmSystemTools::GetFilenameExtension(args[1]).c_str()+1, 
                 cmSystemTools::GetFilenameExtension(args[1]).c_str()+1, 
@@ -290,7 +290,7 @@ bool cmCreateTestSourceList::InitialPass(std::vector<std::string> const& argsIn)
   for(i = testsBegin; i != tests.end(); ++i)
   for(i = testsBegin; i != tests.end(); ++i)
     {
     {
     cmSourceFile cfile;
     cmSourceFile cfile;
-    cfile.SetIsAnAbstractClass(false);
+    cfile.SetProperty("ABSTRACT","0");
     cfile.SetName(i->c_str(), 
     cfile.SetName(i->c_str(), 
                   m_Makefile->GetCurrentDirectory(),
                   m_Makefile->GetCurrentDirectory(),
                   m_Makefile->GetSourceExtensions(), 
                   m_Makefile->GetSourceExtensions(), 

+ 1 - 1
Source/cmDSPWriter.cxx

@@ -277,7 +277,7 @@ void cmDSPWriter::WriteDSPFile(std::ostream& fout,
       const char* compileFlags = 0;
       const char* compileFlags = 0;
       if(cc->second.m_SourceFile)
       if(cc->second.m_SourceFile)
         {
         {
-        compileFlags = cc->second.m_SourceFile->GetCompileFlags();
+        compileFlags = cc->second.m_SourceFile->GetProperty("COMPILE_FLAGS");
         }
         }
       if (source != libName || target.GetType() == cmTarget::UTILITY)
       if (source != libName || target.GetType() == cmTarget::UTILITY)
         {
         {

+ 1 - 1
Source/cmFLTKWrapUICommand.cxx

@@ -64,7 +64,7 @@ bool cmFLTKWrapUICommand::InitialPass(std::vector<std::string> const& args)
     cmSourceFile *curr = m_Makefile->GetSource(i->c_str());
     cmSourceFile *curr = m_Makefile->GetSource(i->c_str());
     // if we should use the source GUI 
     // if we should use the source GUI 
     // to generate .cxx and .h files
     // to generate .cxx and .h files
-    if (!curr || !curr->GetWrapExclude())
+    if (!curr || !curr->GetPropertyAsBool("WRAP_EXCLUDE"))
       {
       {
       cmSourceFile header_file;
       cmSourceFile header_file;
       cmSourceFile source_file;
       cmSourceFile source_file;

+ 3 - 3
Source/cmGetSourceFilePropertyCommand.cxx

@@ -32,15 +32,15 @@ bool cmGetSourceFilePropertyCommand::InitialPass(std::vector<std::string> const&
     {
     {
     if(args[2] == "ABSTRACT")
     if(args[2] == "ABSTRACT")
       {
       {
-      m_Makefile->AddDefinition(var, sf->IsAnAbstractClass());
+      m_Makefile->AddDefinition(var, sf->GetPropertyAsBool("ABSTRACT"));
       }
       }
     if(args[2] == "WRAP_EXCLUDE")
     if(args[2] == "WRAP_EXCLUDE")
       {
       {
-      m_Makefile->AddDefinition(var, sf->GetWrapExclude());
+      m_Makefile->AddDefinition(var, sf->GetPropertyAsBool("WRAP_EXCLUDE"));
       }
       }
     if(args[2] == "COMPILE_FLAGS")
     if(args[2] == "COMPILE_FLAGS")
       {
       {
-      m_Makefile->AddDefinition(var, sf->GetCompileFlags());
+      m_Makefile->AddDefinition(var, sf->GetProperty("COMPILE_FLAGS"));
       }
       }
     }
     }
   else
   else

+ 1 - 1
Source/cmMSDotNETGenerator.cxx

@@ -1126,7 +1126,7 @@ void cmMSDotNETGenerator::WriteVCProjFile(std::ostream& fout,
       const char* compileFlags = 0;
       const char* compileFlags = 0;
       if(cc->second.m_SourceFile)
       if(cc->second.m_SourceFile)
         {
         {
-        compileFlags = cc->second.m_SourceFile->GetCompileFlags();
+        compileFlags = cc->second.m_SourceFile->GetProperty("COMPILE_FLAGS");
         }
         }
       if (source != libName || target.GetType() == cmTarget::UTILITY)
       if (source != libName || target.GetType() == cmTarget::UTILITY)
         {
         {

+ 1 - 1
Source/cmMakeDepend.cxx

@@ -277,7 +277,7 @@ void cmMakeDepend::GenerateMakefileDependencies()
     for(std::vector<cmSourceFile*>::const_iterator i = classes.begin(); 
     for(std::vector<cmSourceFile*>::const_iterator i = classes.begin(); 
         i != classes.end(); ++i)
         i != classes.end(); ++i)
       {
       {
-      if(!(*i)->GetIsAHeaderFileOnly())
+      if(!(*i)->GetPropertyAsBool("HEADER_FILE_ONLY"))
         {
         {
         cmDependInformation* info =
         cmDependInformation* info =
           this->GetDependInformation((*i)->GetFullPath().c_str(),NULL);
           this->GetDependInformation((*i)->GetFullPath().c_str(),NULL);

+ 3 - 1
Source/cmNMakeMakefileGenerator.cxx

@@ -324,8 +324,10 @@ OutputBuildObjectFromSource(std::ostream& fout,
                             bool shared)
                             bool shared)
 { 
 { 
   // Header files shouldn't have build rules.
   // Header files shouldn't have build rules.
-  if(source.IsAHeaderFileOnly())
+  if(source.GetPropertyAsBool("HEADER_FILE_ONLY"))
+    {
     return;
     return;
+    }
 
 
   std::string comment = "Build ";
   std::string comment = "Build ";
   std::string objectFile = std::string(shortName) + 
   std::string objectFile = std::string(shortName) + 

+ 2 - 2
Source/cmQTWrapCPPCommand.cxx

@@ -65,12 +65,12 @@ bool cmQTWrapCPPCommand::InitialPass(std::vector<std::string> const& argsIn)
     cmSourceFile *curr = m_Makefile->GetSource(j->c_str());
     cmSourceFile *curr = m_Makefile->GetSource(j->c_str());
     
     
     // if we should wrap the class
     // if we should wrap the class
-    if (!curr || !curr->GetWrapExclude())
+    if (!curr || !curr->GetPropertyAsBool("WRAP_EXCLUDE"))
       {
       {
       cmSourceFile file;
       cmSourceFile file;
       if (curr)
       if (curr)
         {
         {
-        file.SetIsAnAbstractClass(curr->IsAnAbstractClass());
+        file.SetProperty("ABSTRACT",curr->GetProperty("ABSTRACT"));
         }
         }
       std::string srcName = cmSystemTools::GetFilenameWithoutExtension(*j);
       std::string srcName = cmSystemTools::GetFilenameWithoutExtension(*j);
       std::string newName = "moc_" + srcName;
       std::string newName = "moc_" + srcName;

+ 1 - 1
Source/cmQTWrapUICommand.cxx

@@ -63,7 +63,7 @@ bool cmQTWrapUICommand::InitialPass(std::vector<std::string> const& argsIn)
     cmSourceFile *curr = m_Makefile->GetSource(j->c_str());
     cmSourceFile *curr = m_Makefile->GetSource(j->c_str());
     
     
     // if we should wrap the class
     // if we should wrap the class
-    if (!curr || !curr->GetWrapExclude())
+    if (!curr || !curr->GetPropertyAsBool("WRAP_EXCLUDE"))
       {
       {
       cmSourceFile header_file;
       cmSourceFile header_file;
       cmSourceFile source_file;
       cmSourceFile source_file;

+ 60 - 31
Source/cmSetSourceFilesPropertiesCommand.cxx

@@ -17,8 +17,8 @@
 #include "cmSetSourceFilesPropertiesCommand.h"
 #include "cmSetSourceFilesPropertiesCommand.h"
 
 
 // cmSetSourceFilesPropertiesCommand
 // cmSetSourceFilesPropertiesCommand
-bool cmSetSourceFilesPropertiesCommand::InitialPass(std::vector<std::string> const& 
-                                                 argsIn)
+bool cmSetSourceFilesPropertiesCommand::InitialPass(
+  std::vector<std::string> const& argsIn)
 {
 {
   if(argsIn.size() < 2 )
   if(argsIn.size() < 2 )
     {
     {
@@ -28,70 +28,99 @@ bool cmSetSourceFilesPropertiesCommand::InitialPass(std::vector<std::string> con
   std::vector<std::string> args;
   std::vector<std::string> args;
   cmSystemTools::ExpandListArguments(argsIn, args);
   cmSystemTools::ExpandListArguments(argsIn, args);
 
 
+  // first collect up the list of files
+  std::vector<std::string> propertyPairs;
+  bool doingFiles = true;
+  int numFiles = 0;
   std::vector<std::string>::const_iterator j;
   std::vector<std::string>::const_iterator j;
-  // first collect up all the flags that need to be set on the file
-  bool abstract = false;
-  bool wrap_exclude = false;
-  bool generated = false;
-  std::string flags;
   for(j= args.begin(); j != args.end();++j)
   for(j= args.begin(); j != args.end();++j)
     {
     {
+    // old style allows for specifier before PROPERTIES keyword
     if(*j == "ABSTRACT")
     if(*j == "ABSTRACT")
       {
       {
-      abstract = true;
+      doingFiles = false;
+      propertyPairs.push_back("ABSTRACT");
+      propertyPairs.push_back("1");
       }
       }
     else if(*j == "WRAP_EXCLUDE")
     else if(*j == "WRAP_EXCLUDE")
       {
       {
-      wrap_exclude = true;
+      doingFiles = false;
+      propertyPairs.push_back("WRAP_EXCLUDE");
+      propertyPairs.push_back("1");
       }
       }
     else if(*j == "GENERATED")
     else if(*j == "GENERATED")
       {
       {
-      generated = true;
+      doingFiles = false;
+      propertyPairs.push_back("GENERATED");
+      propertyPairs.push_back("1");
       }
       }
     else if(*j == "COMPILE_FLAGS")
     else if(*j == "COMPILE_FLAGS")
       {
       {
+      doingFiles = false;
+      propertyPairs.push_back("COMPILE_FLAGS");
       ++j;
       ++j;
       if(j == args.end())
       if(j == args.end())
         {
         {
-         this->SetError("called with incorrect number of arguments FLAGS with no flags");
-         return false;
+        this->SetError("called with incorrect number of arguments COMPILE_FLAGS with no flags");
+        return false;
         }
         }
-      flags = *j;
+      propertyPairs.push_back(*j);
+      }
+    else if(*j == "PROPERTIES")
+      {
+      doingFiles = false;
+      // now loop through the rest of the arguments, new style
+      ++j;
+      while (j != args.end())
+        {
+        propertyPairs.push_back(*j);
+        ++j;
+        if(j == args.end())
+          {
+          this->SetError("called with incorrect number of arguments.");
+          return false;
+          }
+        propertyPairs.push_back(*j);
+        ++j;
+        }
+      }
+    else if (doingFiles)
+      {
+      numFiles++;
+      }
+    else
+      {
+      this->SetError("called with illegal arguments, maybe missing a PROPERTIES specifier?");
+      return false;
       }
       }
     }
     }
+  
   // now loop over all the files
   // now loop over all the files
-  for(j = args.begin(); j != args.end(); ++j)
+  int i, k;
+  for(i = 0; i < numFiles; ++i)
     {   
     {   
-    // at the sign of the first property exit the loop
-    if(*j == "ABSTRACT" || *j == "WRAP_EXCLUDE" || *j == "COMPILE_FLAGS")
-      {
-      break;
-      }
     // if the file is already in the makefile just set properites on it
     // if the file is already in the makefile just set properites on it
-    cmSourceFile* sf = m_Makefile->GetSource(j->c_str());
+    cmSourceFile* sf = m_Makefile->GetSource(args[i].c_str());
     if(sf)
     if(sf)
       {
       {
-      if(flags.size())
+      // now loop through all the props and set them
+      for (k = 0; k < propertyPairs.size(); k = k + 2)
         {
         {
-        sf->SetCompileFlags(flags.c_str());
+        sf->SetProperty(propertyPairs[k].c_str(),propertyPairs[k+1].c_str());
         }
         }
-      sf->SetIsAnAbstractClass(abstract);
-      sf->SetWrapExclude(wrap_exclude);
       }
       }
     // if file is not already in the makefile, then add it
     // if file is not already in the makefile, then add it
     else
     else
       { 
       { 
-      std::string newfile = *j;
+      std::string newfile = args[i];
       cmSourceFile file; 
       cmSourceFile file; 
       std::string path = cmSystemTools::GetFilenamePath(newfile);
       std::string path = cmSystemTools::GetFilenamePath(newfile);
-      // set the flags
-      file.SetIsAnAbstractClass(abstract);
-      file.SetWrapExclude(wrap_exclude);
-      if(flags.size())
+      // now loop through all the props and set them
+      for (k = 0; k < propertyPairs.size(); k = k + 2)
         {
         {
-        file.SetCompileFlags(flags.c_str());
+        file.SetProperty(propertyPairs[k].c_str(),propertyPairs[k+1].c_str());
         }
         }
-      if(generated)
+      if(file.GetPropertyAsBool("GENERATED"))
         {
         {
         std::string ext = cmSystemTools::GetFilenameExtension(newfile);
         std::string ext = cmSystemTools::GetFilenameExtension(newfile);
         std::string name_no_ext = cmSystemTools::GetFilenameName(newfile.c_str());
         std::string name_no_ext = cmSystemTools::GetFilenameName(newfile.c_str());

+ 3 - 3
Source/cmSetSourceFilesPropertiesCommand.h

@@ -53,9 +53,9 @@ public:
   virtual const char* GetFullDocumentation()
   virtual const char* GetFullDocumentation()
     {
     {
       return
       return
-        "SET_SOURCE_FILES_PROPERTIES(file1 file2 .. filen [ABSTRACT|WRAP_EXCLUDE|GENERATED|COMPILE_FLAGS] [flags]) "
-        "Set properties on a file.   The syntax for the command is to list all the files you want "
-        "to change, and then provide the values you want to set next.";
+        "SET_SOURCE_FILES_PROPERTIES(file1 file2 .. filen PROPERTIES prop1 value1 prop2 value2 ... prop2 valuen)"
+        "Set properties on a file. The syntax for the command is to list all the files you want "
+        "to change, and then provide the values you want to set next. Common boolean properties ABSTRACT, WRAP_EXCLUDE, GENERATED and COMPILE_FLAGS. The first three are boolean properties (use a 1 or 0, TRUE or FALSE) while the COMPILE_FLAGS accepts any string. You can make up your own properties as well.";
     }
     }
   
   
   cmTypeMacro(cmSetSourceFilesPropertiesCommand, cmCommand);
   cmTypeMacro(cmSetSourceFilesPropertiesCommand, cmCommand);

+ 36 - 21
Source/cmSourceFile.cxx

@@ -28,7 +28,7 @@ void cmSourceFile::SetName(const char* name, const char* dir,
                            const std::vector<std::string>& sourceExts,
                            const std::vector<std::string>& sourceExts,
                            const std::vector<std::string>& headerExts)
                            const std::vector<std::string>& headerExts)
 {
 {
-  m_HeaderFileOnly = true;
+  this->SetProperty("HEADER_FILE_ONLY","1");
 
 
   m_SourceName = name;
   m_SourceName = name;
   std::string pathname = dir;
   std::string pathname = dir;
@@ -68,10 +68,11 @@ void cmSourceFile::SetName(const char* name, const char* dir,
       }
       }
 
 
     // See if the file is a header file
     // See if the file is a header file
-    if(std::find( headerExts.begin(), headerExts.end(), m_SourceExtension ) == headerExts.end())
-      m_HeaderFileOnly = false;
-    else
-      m_HeaderFileOnly = true;
+    if(std::find( headerExts.begin(), headerExts.end(), m_SourceExtension ) ==
+       headerExts.end())
+      {
+      this->SetProperty("HEADER_FILE_ONLY","0");
+      }
     m_FullPath = hname;
     m_FullPath = hname;
     return;
     return;
     }
     }
@@ -86,7 +87,7 @@ void cmSourceFile::SetName(const char* name, const char* dir,
     if(cmSystemTools::FileExists(hname.c_str()))
     if(cmSystemTools::FileExists(hname.c_str()))
       {
       {
       m_SourceExtension = *ext;
       m_SourceExtension = *ext;
-      m_HeaderFileOnly = false;
+      this->SetProperty("HEADER_FILE_ONLY","0");
       m_FullPath = hname;
       m_FullPath = hname;
       return;
       return;
       }
       }
@@ -128,7 +129,7 @@ void cmSourceFile::SetName(const char* name, const char* dir,
 void cmSourceFile::SetName(const char* name, const char* dir, const char *ext,
 void cmSourceFile::SetName(const char* name, const char* dir, const char *ext,
                            bool hfo)
                            bool hfo)
 {
 {
-  m_HeaderFileOnly = hfo;
+  this->SetProperty("HEADER_FILE_ONLY",(hfo ? "1" : "0"));
   m_SourceName = name;
   m_SourceName = name;
   std::string pathname = dir;
   std::string pathname = dir;
   if(pathname != "")
   if(pathname != "")
@@ -149,24 +150,38 @@ void cmSourceFile::SetName(const char* name, const char* dir, const char *ext,
 
 
 void cmSourceFile::Print() const
 void cmSourceFile::Print() const
 {
 {
-  if(m_AbstractClass)
-    {
-    std::cerr <<  "Abstract ";
-    }
-  else
+  std::cerr << "m_FullPath: " <<  m_FullPath << "\n";
+  std::cerr << "m_SourceName: " << m_SourceName << std::endl;
+  std::cerr << "m_SourceExtension: " << m_SourceExtension << "\n";
+}
+
+void cmSourceFile::SetProperty(const char* prop, const char* value)
+{
+  if (!prop)
     {
     {
-    std::cerr << "Concrete ";
+    return;
     }
     }
-  if(m_HeaderFileOnly)
+  m_Properties[prop] = value;
+}
+
+const char *cmSourceFile::GetProperty(const char* prop) const
+{
+  std::map<cmStdString,cmStdString>::const_iterator i = 
+    m_Properties.find(prop);
+  if (i != m_Properties.end())
     {
     {
-    std::cerr << "Header file ";
+    return i->second.c_str();
     }
     }
-  else
+  return 0;
+}
+
+bool cmSourceFile::GetPropertyAsBool(const char* prop) const
+{
+  std::map<cmStdString,cmStdString>::const_iterator i = 
+    m_Properties.find(prop);
+  if (i != m_Properties.end())
     {
     {
-    std::cerr << "CXX file ";
+    return cmSystemTools::IsOn(i->second.c_str());
     }
     }
-  std::cerr << "m_CompileFlags: " << m_CompileFlags << "\n";
-  std::cerr << "m_FullPath: " <<  m_FullPath << "\n";
-  std::cerr << "m_SourceName: " << m_SourceName << std::endl;
-  std::cerr << "m_SourceExtension: " << m_SourceExtension << "\n";
+  return false;
 }
 }

+ 7 - 30
Source/cmSourceFile.h

@@ -34,9 +34,6 @@ public:
    */
    */
   cmSourceFile()
   cmSourceFile()
     {
     {
-    m_AbstractClass = false;
-    m_HeaderFileOnly = false;
-    m_WrapExclude = false;
     }
     }
   
   
   /**
   /**
@@ -61,26 +58,11 @@ public:
    */
    */
   void Print() const;
   void Print() const;
 
 
-  /**
-   * Indicate whether the class is abstract (non-instantiable).
-   */
-  bool IsAnAbstractClass() const { return m_AbstractClass; }
-  bool GetIsAnAbstractClass() const { return m_AbstractClass; }
-  void SetIsAnAbstractClass(bool f) { m_AbstractClass = f; }
-
-  /**
-   * Indicate whether the class should not be wrapped
-   */
-  bool GetWrapExclude() const { return m_WrapExclude; }
-  void SetWrapExclude(bool f) { m_WrapExclude = f; }
-
-  /**
-   * Indicate whether this class is defined with only the header file.
-   */
-  bool IsAHeaderFileOnly() const { return m_HeaderFileOnly; }
-  bool GetIsAHeaderFileOnly() const { return m_HeaderFileOnly; }
-  void SetIsAHeaderFileOnly(bool f) { m_HeaderFileOnly = f; }
-
+  ///! Set/Get a property of this source file
+  void SetProperty(const char *prop, const char *value);
+  const char *GetProperty(const char *prop) const;
+  bool GetPropertyAsBool(const char *prop) const;
+    
   /**
   /**
    * The full path to the file.
    * The full path to the file.
    */
    */
@@ -107,14 +89,9 @@ public:
   const std::vector<std::string> &GetDepends() const {return m_Depends;}
   const std::vector<std::string> &GetDepends() const {return m_Depends;}
   std::vector<std::string> &GetDepends() {return m_Depends;}
   std::vector<std::string> &GetDepends() {return m_Depends;}
 
 
-  ///! Set/Get per file compiler flags
-  void SetCompileFlags(const char* f)  { m_CompileFlags = f;}
-  const char* GetCompileFlags() const { return m_CompileFlags.size() ? m_CompileFlags.c_str(): 0; }
 private:
 private:
-  bool m_AbstractClass;
-  bool m_WrapExclude;
-  bool m_HeaderFileOnly;
-  std::string m_CompileFlags;
+
+  std::map<cmStdString,cmStdString> m_Properties;
   std::string m_FullPath;
   std::string m_FullPath;
   std::string m_SourceName;
   std::string m_SourceName;
   std::string m_SourceExtension;
   std::string m_SourceExtension;

+ 1 - 1
Source/cmSourceFilesCommand.cxx

@@ -71,7 +71,7 @@ bool cmSourceFilesCommand::InitialPass(std::vector<std::string> const& argsIn)
       continue;
       continue;
       }
       }
     cmSourceFile file;
     cmSourceFile file;
-    file.SetIsAnAbstractClass(false);
+    file.SetProperty("ABSTRACT","0");
     std::string path = cmSystemTools::GetFilenamePath(copy);
     std::string path = cmSystemTools::GetFilenamePath(copy);
     if ( generated )
     if ( generated )
       {
       {

+ 2 - 2
Source/cmTarget.cxx

@@ -76,7 +76,7 @@ void cmTarget::GenerateSourceFilesFromSourceLists( cmMakefile &mf)
             else
             else
               {
               {
               cmSourceFile file;
               cmSourceFile file;
-              file.SetIsAnAbstractClass(false);
+              file.SetProperty("ABSTRACT","0");
               file.SetName(args[i].c_str(), mf.GetCurrentDirectory(),
               file.SetName(args[i].c_str(), mf.GetCurrentDirectory(),
                            mf.GetSourceExtensions(),
                            mf.GetSourceExtensions(),
                            mf.GetHeaderExtensions());
                            mf.GetHeaderExtensions());
@@ -92,7 +92,7 @@ void cmTarget::GenerateSourceFilesFromSourceLists( cmMakefile &mf)
     if (!done)
     if (!done)
       {
       {
       cmSourceFile file;
       cmSourceFile file;
-      file.SetIsAnAbstractClass(false);
+      file.SetProperty("ABSTRACT","0");
       file.SetName(temps.c_str(), mf.GetCurrentDirectory(),
       file.SetName(temps.c_str(), mf.GetCurrentDirectory(),
                    mf.GetSourceExtensions(),
                    mf.GetSourceExtensions(),
                    mf.GetHeaderExtensions());
                    mf.GetHeaderExtensions());

+ 10 - 10
Source/cmUnixMakefileGenerator.cxx

@@ -123,7 +123,7 @@ void cmUnixMakefileGenerator::ProcessDepends(const cmMakeDepend &md)
     for(std::vector<cmSourceFile*>::iterator i = classes.begin(); 
     for(std::vector<cmSourceFile*>::iterator i = classes.begin(); 
         i != classes.end(); ++i)
         i != classes.end(); ++i)
       {
       {
-      if(!(*i)->GetIsAHeaderFileOnly())
+      if(!(*i)->GetPropertyAsBool("HEADER_FILE_ONLY"))
         {
         {
         // get the depends
         // get the depends
         const cmDependInformation *info = 
         const cmDependInformation *info = 
@@ -375,7 +375,7 @@ void cmUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
       for(std::vector<cmSourceFile*>::iterator i = classes.begin(); 
       for(std::vector<cmSourceFile*>::iterator i = classes.begin(); 
           i != classes.end(); i++)
           i != classes.end(); i++)
         {
         {
-        if(!(*i)->IsAHeaderFileOnly())
+        if(!(*i)->GetPropertyAsBool("HEADER_FILE_ONLY"))
           {
           {
           std::string outExt(this->GetOutputExtension((*i)->GetSourceExtension().c_str()));
           std::string outExt(this->GetOutputExtension((*i)->GetSourceExtension().c_str()));
           if(outExt.size())
           if(outExt.size())
@@ -390,7 +390,7 @@ void cmUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
       for(std::vector<cmSourceFile*>::iterator i = classes.begin(); 
       for(std::vector<cmSourceFile*>::iterator i = classes.begin(); 
           i != classes.end(); i++)
           i != classes.end(); i++)
         {
         {
-        if(!(*i)->IsAHeaderFileOnly())
+        if(!(*i)->GetPropertyAsBool("HEADER_FILE_ONLY"))
           {
           {
           std::string outExt(this->GetOutputExtension((*i)->GetSourceExtension().c_str()));
           std::string outExt(this->GetOutputExtension((*i)->GetSourceExtension().c_str()));
           if(outExt.size())
           if(outExt.size())
@@ -1307,7 +1307,7 @@ bool cmUnixMakefileGenerator::OutputObjectDepends(std::ostream& fout)
     for(std::vector<cmSourceFile*>::const_iterator source = sources.begin(); 
     for(std::vector<cmSourceFile*>::const_iterator source = sources.begin(); 
         source != sources.end(); ++source)
         source != sources.end(); ++source)
       {
       {
-      if(!(*source)->IsAHeaderFileOnly())
+      if(!(*source)->GetPropertyAsBool("HEADER_FILE_ONLY"))
         {
         {
         if(!(*source)->GetDepends().empty())
         if(!(*source)->GetDepends().empty())
           {
           {
@@ -1358,7 +1358,7 @@ void cmUnixMakefileGenerator::OutputCheckDepends(std::ostream& fout)
     for(std::vector<cmSourceFile*>::const_iterator source = sources.begin(); 
     for(std::vector<cmSourceFile*>::const_iterator source = sources.begin(); 
         source != sources.end(); ++source)
         source != sources.end(); ++source)
       {
       {
-      if(!(*source)->IsAHeaderFileOnly())
+      if(!(*source)->GetPropertyAsBool("HEADER_FILE_ONLY"))
         {
         {
         if(!(*source)->GetDepends().empty())
         if(!(*source)->GetDepends().empty())
           {
           {
@@ -1816,7 +1816,7 @@ void cmUnixMakefileGenerator::OutputMakeRules(std::ostream& fout)
     for(std::vector<cmSourceFile*>::const_iterator source = sources.begin(); 
     for(std::vector<cmSourceFile*>::const_iterator source = sources.begin(); 
         source != sources.end(); ++source)
         source != sources.end(); ++source)
       {
       {
-      if(!(*source)->IsAHeaderFileOnly())
+      if(!(*source)->GetPropertyAsBool("HEADER_FILE_ONLY"))
         {
         {
           allsources += " \\\n";
           allsources += " \\\n";
           allsources += this->ConvertToOutputPath((*source)->GetFullPath().c_str());
           allsources += this->ConvertToOutputPath((*source)->GetFullPath().c_str());
@@ -1931,7 +1931,7 @@ OutputBuildObjectFromSource(std::ostream& fout,
                             bool shared)
                             bool shared)
 {
 {
   // Header files shouldn't have build rules.
   // Header files shouldn't have build rules.
-  if(source.IsAHeaderFileOnly())
+  if(source.GetPropertyAsBool("HEADER_FILE_ONLY"))
     {
     {
     return;
     return;
     }
     }
@@ -2005,7 +2005,7 @@ void cmUnixMakefileGenerator::OutputSourceObjectBuildRules(std::ostream& fout)
     for(std::vector<cmSourceFile*>::const_iterator source = sources.begin(); 
     for(std::vector<cmSourceFile*>::const_iterator source = sources.begin(); 
         source != sources.end(); ++source)
         source != sources.end(); ++source)
       {
       {
-      if(!(*source)->IsAHeaderFileOnly())
+      if(!(*source)->GetPropertyAsBool("HEADER_FILE_ONLY"))
         {
         {
         std::string shortName;
         std::string shortName;
         std::string sourceName;
         std::string sourceName;
@@ -2042,9 +2042,9 @@ void cmUnixMakefileGenerator::OutputSourceObjectBuildRules(std::ostream& fout)
         // Only output a rule for each .o once.
         // Only output a rule for each .o once.
         if(rules.find(shortNameWithExt) == rules.end())
         if(rules.find(shortNameWithExt) == rules.end())
           {
           {
-          if((*source)->GetCompileFlags())
+          if((*source)->GetProperty("COMPILE_FLAGS"))
             {
             {
-            exportsDef += (*source)->GetCompileFlags();
+            exportsDef += (*source)->GetProperty("COMPILE_FLAGS");
             exportsDef += " ";
             exportsDef += " ";
             }
             }
           this->OutputBuildObjectFromSource(fout,
           this->OutputBuildObjectFromSource(fout,

+ 6 - 5
Source/cmVTKMakeInstantiatorCommand.cxx

@@ -111,7 +111,8 @@ cmVTKMakeInstantiatorCommand
     // vtkIndent and vtkTimeStamp are special cases and are not
     // vtkIndent and vtkTimeStamp are special cases and are not
     // vtkObject subclasses.
     // vtkObject subclasses.
     if(
     if(
-      (!sf || (!sf->GetWrapExclude() && !sf->GetIsAnAbstractClass())) &&
+      (!sf || (!sf->GetPropertyAsBool("WRAP_EXCLUDE") && 
+               !sf->GetPropertyAsBool("ABSTRACT"))) &&
       ((srcName != "vtkIndent") && (srcName != "vtkTimeStamp")))
       ((srcName != "vtkIndent") && (srcName != "vtkTimeStamp")))
       {
       {
       m_Classes.push_back(srcName);
       m_Classes.push_back(srcName);
@@ -159,8 +160,8 @@ cmVTKMakeInstantiatorCommand
   
   
   // Add the generated source file into the source list.
   // Add the generated source file into the source list.
   cmSourceFile file;
   cmSourceFile file;
-  file.SetWrapExclude(true);
-  file.SetIsAnAbstractClass(false);
+  file.SetProperty("WRAP_EXCLUDE","1");
+  file.SetProperty("ABSTRACT","0");
   file.SetName(fileName.c_str(), filePath.c_str(),
   file.SetName(fileName.c_str(), filePath.c_str(),
                m_Makefile->GetSourceExtensions(),
                m_Makefile->GetSourceExtensions(),
                m_Makefile->GetHeaderExtensions());
                m_Makefile->GetHeaderExtensions());
@@ -197,8 +198,8 @@ cmVTKMakeInstantiatorCommand
       
       
       // Add the generated source file into the source list.
       // Add the generated source file into the source list.
       cmSourceFile file;
       cmSourceFile file;
-      file.SetWrapExclude(true);
-      file.SetIsAnAbstractClass(false);
+      file.SetProperty("WRAP_EXCLUDE","1");
+      file.SetProperty("ABSTRACT","0");
       file.SetName(fileName.c_str(), filePath.c_str(),
       file.SetName(fileName.c_str(), filePath.c_str(),
                    m_Makefile->GetSourceExtensions(),
                    m_Makefile->GetSourceExtensions(),
                    m_Makefile->GetHeaderExtensions());
                    m_Makefile->GetHeaderExtensions());

+ 4 - 4
Source/cmVTKWrapJavaCommand.cxx

@@ -55,12 +55,12 @@ bool cmVTKWrapJavaCommand::InitialPass(std::vector<std::string> const& argsIn)
     cmSourceFile *curr = m_Makefile->GetSource(j->c_str());
     cmSourceFile *curr = m_Makefile->GetSource(j->c_str());
 
 
     // if we should wrap the class
     // if we should wrap the class
-    if (!curr || !curr->GetWrapExclude())
+    if (!curr || !curr->GetPropertyAsBool("WRAP_EXCLUDE"))
       {
       {
       cmSourceFile file;
       cmSourceFile file;
       if (curr)
       if (curr)
         {
         {
-        file.SetIsAnAbstractClass(curr->IsAnAbstractClass());
+        file.SetProperty("ABSTRACT",curr->GetProperty("ABSTRACT"));
         }
         }
       std::string srcName = cmSystemTools::GetFilenameWithoutExtension(*j);
       std::string srcName = cmSystemTools::GetFilenameWithoutExtension(*j);
       std::string newName = srcName + "Java";
       std::string newName = srcName + "Java";
@@ -124,7 +124,7 @@ void cmVTKWrapJavaCommand::FinalPass()
       {
       {
       args.push_back(hints);
       args.push_back(hints);
       }
       }
-    args.push_back((m_WrapClasses[classNum].IsAnAbstractClass() ? "0" : "1"));
+    args.push_back((m_WrapClasses[classNum].GetPropertyAsBool("ABSTRACT") ? "0" : "1"));
     args.push_back(res);
     args.push_back(res);
 
 
     m_Makefile->AddCustomCommand(m_WrapHeaders[classNum].c_str(),
     m_Makefile->AddCustomCommand(m_WrapHeaders[classNum].c_str(),
@@ -137,7 +137,7 @@ void cmVTKWrapJavaCommand::FinalPass()
       {
       {
       args2.push_back(hints);
       args2.push_back(hints);
       }
       }
-    args2.push_back((m_WrapClasses[classNum].IsAnAbstractClass() ? "0" : "1"));
+    args2.push_back((m_WrapClasses[classNum].GetPropertyAsBool("ABSTRACT") ? "0" : "1"));
     args2.push_back(res2);
     args2.push_back(res2);
 
 
     m_Makefile->AddCustomCommand(m_WrapHeaders[classNum].c_str(),
     m_Makefile->AddCustomCommand(m_WrapHeaders[classNum].c_str(),

+ 4 - 4
Source/cmVTKWrapPythonCommand.cxx

@@ -66,12 +66,12 @@ bool cmVTKWrapPythonCommand::InitialPass(std::vector<std::string> const& argsIn)
     cmSourceFile *curr = m_Makefile->GetSource(j->c_str());
     cmSourceFile *curr = m_Makefile->GetSource(j->c_str());
     
     
     // if we should wrap the class
     // if we should wrap the class
-    if (!curr || !curr->GetWrapExclude())
+    if (!curr || !curr->GetPropertyAsBool("WRAP_EXCLUDE"))
       {
       {
       cmSourceFile file;
       cmSourceFile file;
       if (curr)
       if (curr)
         {
         {
-        file.SetIsAnAbstractClass(curr->IsAnAbstractClass());
+        file.SetProperty("ABSTRACT",curr->GetProperty("ABSTRACT"));
         }
         }
       std::string srcName = cmSystemTools::GetFilenameWithoutExtension(*j);
       std::string srcName = cmSystemTools::GetFilenameWithoutExtension(*j);
       std::string newName = srcName + "Python";
       std::string newName = srcName + "Python";
@@ -88,7 +88,7 @@ bool cmVTKWrapPythonCommand::InitialPass(std::vector<std::string> const& argsIn)
     }
     }
   
   
   cmSourceFile cfile;
   cmSourceFile cfile;
-  cfile.SetIsAnAbstractClass(false);
+  cfile.SetProperty("ABSTRACT","0");
   this->CreateInitFile(res);
   this->CreateInitFile(res);
   cfile.SetName(initName.c_str(), m_Makefile->GetCurrentOutputDirectory(),
   cfile.SetName(initName.c_str(), m_Makefile->GetCurrentOutputDirectory(),
                 "cxx",false);
                 "cxx",false);
@@ -125,7 +125,7 @@ void cmVTKWrapPythonCommand::FinalPass()
       {
       {
       args.push_back(hints);
       args.push_back(hints);
       }
       }
-    args.push_back((m_WrapClasses[classNum].IsAnAbstractClass() ? "0" : "1"));
+    args.push_back((m_WrapClasses[classNum].GetPropertyAsBool("ABSTRACT") ? "0" : "1"));
     args.push_back(res);
     args.push_back(res);
 
 
     m_Makefile->AddCustomCommand(m_WrapHeaders[classNum].c_str(),
     m_Makefile->AddCustomCommand(m_WrapHeaders[classNum].c_str(),

+ 5 - 5
Source/cmVTKWrapTclCommand.cxx

@@ -102,12 +102,12 @@ bool cmVTKWrapTclCommand::InitialPass(std::vector<std::string> const& argsIn)
       cmSourceFile *curr = m_Makefile->GetSource(j->c_str());
       cmSourceFile *curr = m_Makefile->GetSource(j->c_str());
       
       
       // if we should wrap the class
       // if we should wrap the class
-      if (!curr || !curr->GetWrapExclude())
+      if (!curr || !curr->GetPropertyAsBool("WRAP_EXCLUDE"))
         {
         {
         cmSourceFile file;
         cmSourceFile file;
         if (curr)
         if (curr)
           {
           {
-          file.SetIsAnAbstractClass(curr->IsAnAbstractClass());
+          file.SetProperty("ABSTRACT",curr->GetProperty("ABSTRACT"));
           }
           }
         std::string srcName = cmSystemTools::GetFilenameWithoutExtension(*j);
         std::string srcName = cmSystemTools::GetFilenameWithoutExtension(*j);
         std::string newName = srcName + "Tcl";
         std::string newName = srcName + "Tcl";
@@ -124,7 +124,7 @@ bool cmVTKWrapTclCommand::InitialPass(std::vector<std::string> const& argsIn)
       }
       }
     // add the init file
     // add the init file
     cmSourceFile cfile;
     cmSourceFile cfile;
-    cfile.SetIsAnAbstractClass(false);
+    cfile.SetProperty("ABSTRACT","0");
     std::string newName = m_LibraryName;
     std::string newName = m_LibraryName;
     newName += "Init";
     newName += "Init";
     this->CreateInitFile(res);
     this->CreateInitFile(res);
@@ -162,7 +162,7 @@ void cmVTKWrapTclCommand::FinalPass()
       {
       {
       args.push_back(hints);
       args.push_back(hints);
       }
       }
-    args.push_back((m_WrapClasses[classNum].IsAnAbstractClass() ? "0" : "1"));
+    args.push_back((m_WrapClasses[classNum].GetPropertyAsBool("ABSTRACT") ? "0" : "1"));
     std::string res = m_Makefile->GetCurrentOutputDirectory();
     std::string res = m_Makefile->GetCurrentOutputDirectory();
     res += "/";
     res += "/";
     res += m_WrapClasses[classNum].GetSourceName() + ".cxx";
     res += m_WrapClasses[classNum].GetSourceName() + ".cxx";
@@ -184,7 +184,7 @@ bool cmVTKWrapTclCommand::CreateInitFile(std::string& res)
   size_t classNum;
   size_t classNum;
   for(classNum = 0; classNum < lastClass; classNum++)
   for(classNum = 0; classNum < lastClass; classNum++)
     {
     {
-    if (!m_WrapClasses[classNum].IsAnAbstractClass())
+    if (!m_WrapClasses[classNum].GetPropertyAsBool("ABSTRACT"))
       {
       {
       std::string cls = m_WrapHeaders[classNum];
       std::string cls = m_WrapHeaders[classNum];
       cls = cls.substr(0,cls.size()-2);
       cls = cls.substr(0,cls.size()-2);

+ 2 - 2
Source/cmWrapExcludeFilesCommand.cxx

@@ -42,7 +42,7 @@ bool cmWrapExcludeFilesCommand::InitialPass(std::vector<std::string> const& args
     cmSourceFile* sf = m_Makefile->GetSource(j->c_str());
     cmSourceFile* sf = m_Makefile->GetSource(j->c_str());
     if(sf)
     if(sf)
       {
       {
-      sf->SetWrapExclude(true);
+      sf->SetProperty("WRAP_EXCLUDE","1");
       }
       }
     // if file is not already in the makefile, then add it
     // if file is not already in the makefile, then add it
     else
     else
@@ -51,7 +51,7 @@ bool cmWrapExcludeFilesCommand::InitialPass(std::vector<std::string> const& args
       cmSourceFile file; 
       cmSourceFile file; 
       std::string path = cmSystemTools::GetFilenamePath(newfile);
       std::string path = cmSystemTools::GetFilenamePath(newfile);
       // set the flags
       // set the flags
-      file.SetWrapExclude(true);
+      file.SetProperty("WRAP_EXCLUDE","1");
       // if this is a full path then 
       // if this is a full path then 
       if((path.size() && path[0] == '/') ||
       if((path.size() && path[0] == '/') ||
          (path.size() > 1 && path[1] == ':'))
          (path.size() > 1 && path[1] == ':'))