Browse Source

added functionality, fixed bug if no file existed and with header files

Ken Martin 25 years ago
parent
commit
3b338dacaf
2 changed files with 40 additions and 3 deletions
  1. 26 3
      Source/cmClassFile.cxx
  2. 14 0
      Source/cmClassFile.h

+ 26 - 3
Source/cmClassFile.cxx

@@ -49,6 +49,7 @@ void cmClassFile::SetName(const char* name, const char* dir)
   hname += ".cxx";
   if(cmSystemTools::FileExists(hname.c_str()))
     {
+    m_ClassExtension = "cxx";
     m_HeaderFileOnly = false;
     m_FullPath = hname;
     return;
@@ -59,6 +60,7 @@ void cmClassFile::SetName(const char* name, const char* dir)
   if(cmSystemTools::FileExists(hname.c_str()))
   {
     m_HeaderFileOnly = false;
+    m_ClassExtension = "c";
     m_FullPath = hname;
     return;
   }
@@ -67,18 +69,39 @@ void cmClassFile::SetName(const char* name, const char* dir)
   if(cmSystemTools::FileExists(hname.c_str()))
   {
     m_HeaderFileOnly = false;
+    m_ClassExtension = "txx";
     m_FullPath = hname;
     return;
   }
   hname = pathname;
   hname += ".h";
-  if(!cmSystemTools::FileExists(hname.c_str()))
+  if(cmSystemTools::FileExists(hname.c_str()))
     {
-    cmSystemTools::Error("can not find file ", hname.c_str());
-    cmSystemTools::Error("Tried .txx .cxx .c for ", hname.c_str());
+    m_ClassExtension = "h";
+    m_FullPath = hname;
+    return;
     }
+  
+  cmSystemTools::Error("can not find file ", hname.c_str());
+  cmSystemTools::Error("Tried .txx .cxx .c for ", hname.c_str());
 }
 
+void cmClassFile::SetName(const char* name, const char* dir, const char *ext,
+                          bool hfo)
+{
+  m_HeaderFileOnly = hfo;
+  m_ClassName = name;
+  std::string pathname = dir;
+  if(pathname != "")
+    {
+    pathname += "/";
+    }
+  
+  pathname += m_ClassName + "." + ext;
+  m_FullPath = pathname;
+  m_ClassExtension = ext;
+  return;
+}
 
 void cmClassFile::Print()
 {

+ 14 - 0
Source/cmClassFile.h

@@ -45,6 +45,14 @@ public:
    */
   void SetName(const char* name, const char* dir);
 
+  /**
+   * Set the name of the file, given the directory the file should be in.  IN
+   * this version the extesion is provided in the call. This is useful for
+   * generated files that do not exist prior to the build.  
+   */
+  void SetName(const char* name, const char* dir, const char *ext, 
+               bool headerFileOnly);
+
   /**
    * Print the structure to std::cout.
    */
@@ -76,6 +84,12 @@ public:
    */
   std::string m_ClassName;
 
+  /**
+   * The file name associated with stripped off directory and extension.
+   * (In most cases this is the name of the class.)
+   */
+  std::string m_ClassExtension;
+
   /**
    * The dependencies of this class are gathered here.
    */