From 10511aa0849936df3724556f1f42fc3e4cf43f9f Mon Sep 17 00:00:00 2001 From: Alex Neundorf Date: Sun, 10 Feb 2013 17:49:42 +0100 Subject: [PATCH 1/2] automoc: use a std::vector<> instead a std::list Alex --- Source/cmQtAutomoc.cxx | 23 ++++++++++++----------- Source/cmQtAutomoc.h | 10 +++++----- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/Source/cmQtAutomoc.cxx b/Source/cmQtAutomoc.cxx index cc421751e..8a2d308fb 100644 --- a/Source/cmQtAutomoc.cxx +++ b/Source/cmQtAutomoc.cxx @@ -44,10 +44,10 @@ static bool containsQ_OBJECT(const std::string& text) static std::string findMatchingHeader(const std::string& absPath, const std::string& mocSubDir, const std::string& basename, - const std::list& headerExtensions) + const std::vector& headerExtensions) { std::string header; - for(std::list::const_iterator ext = headerExtensions.begin(); + for(std::vector::const_iterator ext = headerExtensions.begin(); ext != headerExtensions.end(); ++ext) { @@ -528,7 +528,7 @@ bool cmQtAutomoc::RunAutomoc() std::vector sourceFiles; cmSystemTools::ExpandListArgument(this->Sources, sourceFiles); - std::list headerExtensions; + std::vector headerExtensions; headerExtensions.push_back(".h"); headerExtensions.push_back(".hpp"); headerExtensions.push_back(".hxx"); @@ -643,7 +643,7 @@ bool cmQtAutomoc::RunAutomoc() void cmQtAutomoc::ParseCppFile(const std::string& absFilename, - const std::list& headerExtensions, + const std::vector& headerExtensions, std::map& includedMocs) { cmsys::RegularExpression mocIncludeRegExp( @@ -821,7 +821,7 @@ void cmQtAutomoc::ParseCppFile(const std::string& absFilename, void cmQtAutomoc::StrictParseCppFile(const std::string& absFilename, - const std::list& headerExtensions, + const std::vector& headerExtensions, std::map& includedMocs) { cmsys::RegularExpression mocIncludeRegExp( @@ -932,8 +932,8 @@ void cmQtAutomoc::StrictParseCppFile(const std::string& absFilename, void cmQtAutomoc::SearchHeadersForCppFile(const std::string& absFilename, - const std::list& headerExtensions, - std::set& absHeaders) + const std::vector& headerExtensions, + std::set& absHeaders) { // search for header files and private header files we may need to moc: const std::string basename = @@ -941,7 +941,7 @@ void cmQtAutomoc::SearchHeadersForCppFile(const std::string& absFilename, const std::string absPath = cmsys::SystemTools::GetFilenamePath( cmsys::SystemTools::GetRealPath(absFilename.c_str())) + '/'; - for(std::list::const_iterator ext = headerExtensions.begin(); + for(std::vector::const_iterator ext = headerExtensions.begin(); ext != headerExtensions.end(); ++ext) { @@ -952,7 +952,7 @@ void cmQtAutomoc::SearchHeadersForCppFile(const std::string& absFilename, break; } } - for(std::list::const_iterator ext = headerExtensions.begin(); + for(std::vector::const_iterator ext = headerExtensions.begin(); ext != headerExtensions.end(); ++ext) { @@ -1077,7 +1077,8 @@ bool cmQtAutomoc::GenerateMoc(const std::string& sourceFile, } -std::string cmQtAutomoc::Join(const std::list& lst,char separator) +std::string cmQtAutomoc::Join(const std::vector& lst, + char separator) { if (lst.empty()) { @@ -1085,7 +1086,7 @@ std::string cmQtAutomoc::Join(const std::list& lst,char separator) } std::string result; - for (std::list::const_iterator it = lst.begin(); + for (std::vector::const_iterator it = lst.begin(); it != lst.end(); ++it) { diff --git a/Source/cmQtAutomoc.h b/Source/cmQtAutomoc.h index a73747781..ea30b1595 100644 --- a/Source/cmQtAutomoc.h +++ b/Source/cmQtAutomoc.h @@ -41,14 +41,14 @@ private: bool GenerateMoc(const std::string& sourceFile, const std::string& mocFileName); void ParseCppFile(const std::string& absFilename, - const std::list& headerExtensions, + const std::vector& headerExtensions, std::map& includedMocs); void StrictParseCppFile(const std::string& absFilename, - const std::list& headerExtensions, + const std::vector& headerExtensions, std::map& includedMocs); void SearchHeadersForCppFile(const std::string& absFilename, - const std::list& headerExtensions, - std::set& absHeaders); + const std::vector& headerExtensions, + std::set& absHeaders); void ParseHeaders(const std::set& absHeaders, const std::map& includedMocs, @@ -56,7 +56,7 @@ private: void Init(); - std::string Join(const std::list& lst, char separator); + std::string Join(const std::vector& lst, char separator); bool EndsWith(const std::string& str, const std::string& with); bool StartsWith(const std::string& str, const std::string& with); std::string ReadAll(const std::string& filename); From 27e14a813cd399db778485961c0e66bd5cf488d6 Mon Sep 17 00:00:00 2001 From: Alex Neundorf Date: Sun, 10 Feb 2013 17:58:29 +0100 Subject: [PATCH 2/2] automoc: use the header extensions from cmMakefile Instead of having an own set of C header extensions, use cmMakefile::GetHeaderExtensions() (#13904) Alex --- Source/cmQtAutomoc.cxx | 32 +++++++++----------------------- Source/cmQtAutomoc.h | 2 +- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/Source/cmQtAutomoc.cxx b/Source/cmQtAutomoc.cxx index 8a2d308fb..4818f1bd5 100644 --- a/Source/cmQtAutomoc.cxx +++ b/Source/cmQtAutomoc.cxx @@ -51,7 +51,7 @@ static std::string findMatchingHeader(const std::string& absPath, ext != headerExtensions.end(); ++ext) { - std::string sourceFilePath = absPath + basename + (*ext); + std::string sourceFilePath = absPath + basename + "." + (*ext); if (cmsys::SystemTools::FileExists(sourceFilePath.c_str())) { header = sourceFilePath; @@ -59,7 +59,7 @@ static std::string findMatchingHeader(const std::string& absPath, } if (!mocSubDir.empty()) { - sourceFilePath = mocSubDir + basename + (*ext); + sourceFilePath = mocSubDir + basename + "." + (*ext); if (cmsys::SystemTools::FileExists(sourceFilePath.c_str())) { header = sourceFilePath; @@ -296,7 +296,7 @@ bool cmQtAutomoc::Run(const char* targetDirectory) if (this->QtMajorVersion == "4" || this->QtMajorVersion == "5") { - success = this->RunAutomoc(); + success = this->RunAutomoc(makefile); } this->WriteOldMocDefinitionsFile(targetDirectory); @@ -504,7 +504,7 @@ void cmQtAutomoc::Init() } -bool cmQtAutomoc::RunAutomoc() +bool cmQtAutomoc::RunAutomoc(cmMakefile* makefile) { if (!cmsys::SystemTools::FileExists(this->OutMocCppFilename.c_str()) || (this->OldCompileSettingsStr != this->CurrentCompileSettingsStr)) @@ -528,22 +528,8 @@ bool cmQtAutomoc::RunAutomoc() std::vector sourceFiles; cmSystemTools::ExpandListArgument(this->Sources, sourceFiles); - std::vector headerExtensions; - headerExtensions.push_back(".h"); - headerExtensions.push_back(".hpp"); - headerExtensions.push_back(".hxx"); -#if defined(_WIN32) - // not case sensitive, don't add ".H" -#elif defined(__APPLE__) - // detect case-sensitive filesystem - long caseSensitive = pathconf(this->Srcdir.c_str(), _PC_CASE_SENSITIVE); - if (caseSensitive == 1) - { - headerExtensions.push_back(".H"); - } -#else - headerExtensions.push_back(".H"); -#endif + const std::vector& headerExtensions = + makefile->GetHeaderExtensions(); for (std::vector::const_iterator it = sourceFiles.begin(); it != sourceFiles.end(); @@ -945,7 +931,7 @@ void cmQtAutomoc::SearchHeadersForCppFile(const std::string& absFilename, ext != headerExtensions.end(); ++ext) { - const std::string headerName = absPath + basename + (*ext); + const std::string headerName = absPath + basename + "." + (*ext); if (cmsys::SystemTools::FileExists(headerName.c_str())) { absHeaders.insert(headerName); @@ -956,7 +942,7 @@ void cmQtAutomoc::SearchHeadersForCppFile(const std::string& absFilename, ext != headerExtensions.end(); ++ext) { - const std::string privateHeaderName = absPath+basename+"_p"+(*ext); + const std::string privateHeaderName = absPath+basename+"_p."+(*ext); if (cmsys::SystemTools::FileExists(privateHeaderName.c_str())) { absHeaders.insert(privateHeaderName); @@ -1090,7 +1076,7 @@ std::string cmQtAutomoc::Join(const std::vector& lst, it != lst.end(); ++it) { - result += (*it) + separator; + result += "." + (*it) + separator; } result.erase(result.end() - 1); return result; diff --git a/Source/cmQtAutomoc.h b/Source/cmQtAutomoc.h index ea30b1595..69da80e4f 100644 --- a/Source/cmQtAutomoc.h +++ b/Source/cmQtAutomoc.h @@ -37,7 +37,7 @@ private: std::string MakeCompileSettingsString(cmMakefile* makefile); - bool RunAutomoc(); + bool RunAutomoc(cmMakefile* makefile); bool GenerateMoc(const std::string& sourceFile, const std::string& mocFileName); void ParseCppFile(const std::string& absFilename,