summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2005-04-13 20:35:26 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2005-04-13 20:35:26 (GMT)
commit826405a1b668900ef4d5ecc0b676197e978bb80f (patch)
treeff388e4ea49a6368370e2d67de5486d0a4a7c7ae /Source
parent030dd4b91e4023ce73ae0c9ca675227202ed1e1b (diff)
downloadCMake-826405a1b668900ef4d5ecc0b676197e978bb80f.zip
CMake-826405a1b668900ef4d5ecc0b676197e978bb80f.tar.gz
CMake-826405a1b668900ef4d5ecc0b676197e978bb80f.tar.bz2
ENH: Speedup by storing source name without last extension
Diffstat (limited to 'Source')
-rw-r--r--Source/cmMakefile.cxx3
-rw-r--r--Source/cmSourceFile.cxx11
-rw-r--r--Source/cmSourceFile.h6
3 files changed, 18 insertions, 2 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 61ab3ba..43964d7 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -1769,8 +1769,7 @@ cmSourceFile* cmMakefile::GetSource(const char* sourceName) const
for(std::vector<cmSourceFile*>::const_iterator i = m_SourceFiles.begin();
i != m_SourceFiles.end(); ++i)
{
- if (cmSystemTools::GetFilenameWithoutLastExtension((*i)->GetFullPath())
- == sname &&
+ if ((*i)->GetSourceNameWithoutLastExtension() == sname &&
cmSystemTools::GetFilenamePath((*i)->GetFullPath()) == path &&
(ext.size() == 0 || (ext == (*i)->GetSourceExtension())))
{
diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx
index 6fac024..8da72c3 100644
--- a/Source/cmSourceFile.cxx
+++ b/Source/cmSourceFile.cxx
@@ -29,6 +29,7 @@ void cmSourceFile::SetName(const char* name, const char* dir,
{
this->SetProperty("HEADER_FILE_ONLY","1");
+ m_SourceNameWithoutLastExtension = "";
m_SourceName = name;
@@ -142,6 +143,7 @@ void cmSourceFile::SetName(const char* name, const char* dir, const char *ext,
bool hfo)
{
this->SetProperty("HEADER_FILE_ONLY",(hfo ? "1" : "0"));
+ m_SourceNameWithoutLastExtension = "";
m_SourceName = name;
std::string pathname = dir;
if(pathname != "")
@@ -210,3 +212,12 @@ void cmSourceFile::SetCustomCommand(cmCustomCommand* cc)
}
m_CustomCommand = cc;
}
+
+const std::string& cmSourceFile::GetSourceNameWithoutLastExtension()
+{
+ if ( m_SourceNameWithoutLastExtension.empty() )
+ {
+ m_SourceNameWithoutLastExtension = cmSystemTools::GetFilenameWithoutLastExtension(m_FullPath);
+ }
+ return m_SourceNameWithoutLastExtension;
+}
diff --git a/Source/cmSourceFile.h b/Source/cmSourceFile.h
index ea78397..c8ad1dd 100644
--- a/Source/cmSourceFile.h
+++ b/Source/cmSourceFile.h
@@ -101,6 +101,11 @@ public:
const std::vector<std::string> &GetDepends() const {return m_Depends;}
std::vector<std::string> &GetDepends() {return m_Depends;}
+ /**
+ * Get the source name without last extension
+ */
+ const std::string& GetSourceNameWithoutLastExtension();
+
private:
std::map<cmStdString,cmStdString> m_Properties;
cmCustomCommand *m_CustomCommand;
@@ -108,6 +113,7 @@ private:
std::string m_SourceName;
std::string m_SourceExtension;
std::vector<std::string> m_Depends;
+ std::string m_SourceNameWithoutLastExtension;
};
#endif