From 3b338dacaf0baca14bcffbdaae4a44bc4dbcc7e3 Mon Sep 17 00:00:00 2001 From: Ken Martin Date: Mon, 26 Feb 2001 17:15:44 -0500 Subject: [PATCH] added functionality, fixed bug if no file existed and with header files --- Source/cmClassFile.cxx | 29 ++++++++++++++++++++++++++--- Source/cmClassFile.h | 14 ++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/Source/cmClassFile.cxx b/Source/cmClassFile.cxx index 8e408156c..67d743681 100644 --- a/Source/cmClassFile.cxx +++ b/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() { diff --git a/Source/cmClassFile.h b/Source/cmClassFile.h index 8a9845ea8..e0e4d5039 100644 --- a/Source/cmClassFile.h +++ b/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. */