diff --git a/src/libs/utils/codegeneration.cpp b/src/libs/utils/codegeneration.cpp index aca19b91ccd868c37436671a8e5f2277c95a17d7..23e8df36b48054ce7d301f053cb990ed481b648d 100644 --- a/src/libs/utils/codegeneration.cpp +++ b/src/libs/utils/codegeneration.cpp @@ -58,10 +58,18 @@ QTCREATOR_UTILS_EXPORT QString fileNameToCppIdentifier(const QString &s) QTCREATOR_UTILS_EXPORT QString headerGuard(const QString &file) { + return headerGuard(file, QStringList()); +} + +QTCREATOR_UTILS_EXPORT QString headerGuard(const QString &file, const QStringList &namespaceList) +{ + const QChar underscore = QLatin1Char('_'); + QString rc; + for (int i = 0; i < namespaceList.count(); i++) + rc += namespaceList.at(i).toUpper() + underscore; + const QFileInfo fi(file); - QString rc = fileNameToCppIdentifier(fi.completeBaseName()).toUpper(); - rc += QLatin1Char('_'); - rc += fileNameToCppIdentifier(fi.suffix()).toUpper(); + rc += fileNameToCppIdentifier(fi.fileName()).toUpper(); return rc; } diff --git a/src/libs/utils/codegeneration.h b/src/libs/utils/codegeneration.h index 19ecd4af3140e89fc16f5638749cd6f8454d314a..8638d8b7bd91619e4e407b06408f75b4e0560637 100644 --- a/src/libs/utils/codegeneration.h +++ b/src/libs/utils/codegeneration.h @@ -49,6 +49,7 @@ namespace Utils { QTCREATOR_UTILS_EXPORT QString fileNameToCppIdentifier(const QString &s); QTCREATOR_UTILS_EXPORT QString headerGuard(const QString &file); +QTCREATOR_UTILS_EXPORT QString headerGuard(const QString &file, const QStringList &namespaceList); QTCREATOR_UTILS_EXPORT void writeIncludeFileDirective(const QString &file, diff --git a/src/plugins/cppeditor/cppclasswizard.cpp b/src/plugins/cppeditor/cppclasswizard.cpp index b86a403fa18afcd48633627fb999461861ec3831..1b22a139563effc9c8946ca759862b9d2a05251b 100644 --- a/src/plugins/cppeditor/cppclasswizard.cpp +++ b/src/plugins/cppeditor/cppclasswizard.cpp @@ -225,7 +225,7 @@ bool CppClassWizard::generateHeaderAndSource(const CppClassWizardParameters &par params.className); const QString unqualifiedClassName = namespaceList.takeLast(); - const QString guard = Utils::headerGuard(params.headerFile); + const QString guard = Utils::headerGuard(params.headerFile, namespaceList); // == Header file == QTextStream headerStr(header); diff --git a/src/plugins/designer/qtdesignerformclasscodegenerator.cpp b/src/plugins/designer/qtdesignerformclasscodegenerator.cpp index e2d1e3abced30c32d5f672122ae1e0bbdebf69c6..8571735ad6ad30a07127385bc661e05b4ee2abe2 100644 --- a/src/plugins/designer/qtdesignerformclasscodegenerator.cpp +++ b/src/plugins/designer/qtdesignerformclasscodegenerator.cpp @@ -149,7 +149,7 @@ bool QtDesignerFormClassCodeGenerator::generateCpp(const FormClassWizardParamete const QString sourceLicense = CppTools::AbstractEditorSupport::licenseTemplate(parameters.sourceFile, parameters.className); // Include guards - const QString guard = Utils::headerGuard(parameters.headerFile); + const QString guard = Utils::headerGuard(parameters.headerFile, namespaceList); QString uiInclude = QLatin1String("ui_"); uiInclude += QFileInfo(parameters.uiFile).completeBaseName(); diff --git a/src/plugins/qt4projectmanager/wizards/libraryparameters.cpp b/src/plugins/qt4projectmanager/wizards/libraryparameters.cpp index 496f2f5499646b5210ca23ab0358b261ce39c676..3cffced9a69454ac0cfb4ead7184df626ade2aff 100644 --- a/src/plugins/qt4projectmanager/wizards/libraryparameters.cpp +++ b/src/plugins/qt4projectmanager/wizards/libraryparameters.cpp @@ -74,8 +74,15 @@ void LibraryParameters::generateCode(QtProjectParameters:: Type t, const QString indent = QString(indentation, QLatin1Char(' ')); + // Do we have namespaces? + QStringList namespaceList = className.split(QLatin1String("::")); + if (namespaceList.empty()) // Paranoia! + return; + + const QString unqualifiedClassName = namespaceList.takeLast(); + // 1) Header - const QString guard = Utils::headerGuard(headerFileName); + const QString guard = Utils::headerGuard(headerFileName, namespaceList); headerStr << "#ifndef " << guard << "\n#define " << guard << '\n' << '\n'; @@ -94,14 +101,6 @@ void LibraryParameters::generateCode(QtProjectParameters:: Type t, headerStr << '\n'; } - // Do we have namespaces? - QStringList namespaceList = className.split(QLatin1String("::")); - if (namespaceList.empty()) // Paranoia! - return; - - const QString unqualifiedClassName = namespaceList.back(); - namespaceList.pop_back(); - const QString namespaceIndent = Utils::writeOpeningNameSpaces(namespaceList, indent, headerStr); // Class declaraction