aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpptools/projectpart.cpp
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2017-02-07 15:00:38 +0100
committerMarco Bubke <marco.bubke@qt.io>2017-09-14 15:23:56 +0000
commitb6e12f4a1c2a8dbc7a672f0cf42ea76ece71b10d (patch)
tree81550e7fce5053ecb1ead60ddf59534d44517a87 /src/plugins/cpptools/projectpart.cpp
parent3adb71d45ebebd8c8fc2ec6beeb7a5ee67d64e4e (diff)
Convert macros from plain QByteArray to a vector of structs
The old code model expected the macros as C++ formatted text ("#define Foo 42) but newer targets like the Clang codemodel expect key value arguments like "-DFoo=42". So instead of parsing the text again and again we use an abstract data description. Task-number: QTCREATORBUG-17915 Change-Id: I0179fd13c48a581e91ee79bba9d42d501c26f19f Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/cpptools/projectpart.cpp')
-rw-r--r--src/plugins/cpptools/projectpart.cpp15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/plugins/cpptools/projectpart.cpp b/src/plugins/cpptools/projectpart.cpp
index 6a87adf93f7..e77e079c808 100644
--- a/src/plugins/cpptools/projectpart.cpp
+++ b/src/plugins/cpptools/projectpart.cpp
@@ -25,6 +25,8 @@
#include "projectpart.h"
+#include <utils/algorithm.h>
+
#include <QFile>
#include <QDir>
#include <QTextStream>
@@ -43,16 +45,9 @@ void ProjectPart::updateLanguageFeatures()
if (!hasQt) {
languageFeatures.qtKeywordsEnabled = false;
} else {
- const QByteArray noKeywordsMacro = "#define QT_NO_KEYWORDS";
- const int noKeywordsIndex = projectDefines.indexOf(noKeywordsMacro);
- if (noKeywordsIndex == -1) {
- languageFeatures.qtKeywordsEnabled = true;
- } else {
- const char nextChar = projectDefines.at(noKeywordsIndex + noKeywordsMacro.length());
- // Detect "#define QT_NO_KEYWORDS" and "#define QT_NO_KEYWORDS 1", but exclude
- // "#define QT_NO_KEYWORDS_FOO"
- languageFeatures.qtKeywordsEnabled = nextChar != '\n' && nextChar != ' ';
- }
+ languageFeatures.qtKeywordsEnabled = !Utils::contains(
+ projectMacros,
+ [] (const ProjectExplorer::Macro &macro) { return macro.key == "QT_NO_KEYWORDS"; });
}
}