summaryrefslogtreecommitdiffstats
path: root/Source/cmSourceFile.cxx
diff options
context:
space:
mode:
authorKen Martin <ken.martin@kitware.com>2001-04-24 20:49:12 (GMT)
committerKen Martin <ken.martin@kitware.com>2001-04-24 20:49:12 (GMT)
commit73f04d1409ec4dfcb3b8db3e104da2a894d019a2 (patch)
treee1578688252c8a50fb307d60045379a53a02d646 /Source/cmSourceFile.cxx
parentb5746484e4c396489b707e0f8b4d1f539e62a965 (diff)
downloadCMake-73f04d1409ec4dfcb3b8db3e104da2a894d019a2.zip
CMake-73f04d1409ec4dfcb3b8db3e104da2a894d019a2.tar.gz
CMake-73f04d1409ec4dfcb3b8db3e104da2a894d019a2.tar.bz2
many fixes and cleanup and features
Diffstat (limited to 'Source/cmSourceFile.cxx')
-rw-r--r--Source/cmSourceFile.cxx125
1 files changed, 125 insertions, 0 deletions
diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx
new file mode 100644
index 0000000..da642a1
--- /dev/null
+++ b/Source/cmSourceFile.cxx
@@ -0,0 +1,125 @@
+/*=========================================================================
+
+ Program: Insight Segmentation & Registration Toolkit
+ Module: $RCSfile$
+ Language: C++
+ Date: $Date$
+ Version: $Revision$
+
+
+ Copyright (c) 2000 National Library of Medicine
+ All rights reserved.
+
+ See COPYRIGHT.txt for copyright details.
+
+=========================================================================*/
+#include "cmSourceFile.h"
+#include "cmStandardIncludes.h"
+#include "cmSystemTools.h"
+
+
+
+// Set the name of the class and the full path to the file.
+// The class must be found in dir and end in name.cxx, name.txx,
+// name.c or it will be considered a header file only class
+// and not included in the build process
+void cmSourceFile::SetName(const char* name, const char* dir)
+{
+ m_HeaderFileOnly = true;
+ m_SourceName = name;
+ std::string pathname = dir;
+ if(pathname != "")
+ {
+ pathname += "/";
+ }
+
+ // First try and see whether the listed file can be found
+ // as is without extensions added on.
+ pathname += m_SourceName;
+ std::string hname = pathname;
+ if(cmSystemTools::FileExists(hname.c_str()))
+ {
+ m_HeaderFileOnly = false;
+ m_FullPath = hname;
+ return;
+ }
+
+ // Try various extentions
+ hname = pathname;
+ hname += ".cxx";
+ if(cmSystemTools::FileExists(hname.c_str()))
+ {
+ m_SourceExtension = "cxx";
+ m_HeaderFileOnly = false;
+ m_FullPath = hname;
+ return;
+ }
+
+ hname = pathname;
+ hname += ".c";
+ if(cmSystemTools::FileExists(hname.c_str()))
+ {
+ m_HeaderFileOnly = false;
+ m_SourceExtension = "c";
+ m_FullPath = hname;
+ return;
+ }
+ hname = pathname;
+ hname += ".txx";
+ if(cmSystemTools::FileExists(hname.c_str()))
+ {
+ m_HeaderFileOnly = false;
+ m_SourceExtension = "txx";
+ m_FullPath = hname;
+ return;
+ }
+ hname = pathname;
+ hname += ".h";
+ if(cmSystemTools::FileExists(hname.c_str()))
+ {
+ m_SourceExtension = "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 cmSourceFile::SetName(const char* name, const char* dir, const char *ext,
+ bool hfo)
+{
+ m_HeaderFileOnly = hfo;
+ m_SourceName = name;
+ std::string pathname = dir;
+ if(pathname != "")
+ {
+ pathname += "/";
+ }
+
+ pathname += m_SourceName + "." + ext;
+ m_FullPath = pathname;
+ m_SourceExtension = ext;
+ return;
+}
+
+void cmSourceFile::Print() const
+{
+ if(m_AbstractClass)
+ {
+ std::cout << "Abstract ";
+ }
+ else
+ {
+ std::cout << "Concrete ";
+ }
+ if(m_HeaderFileOnly)
+ {
+ std::cout << "Header file ";
+ }
+ else
+ {
+ std::cout << "CXX file ";
+ }
+ std::cout << m_SourceName << std::endl;
+}