diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2016-01-25 14:10:58 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2016-01-26 17:49:13 +0000 |
commit | c29d3692d700f7ef6d5833242878b4ec6f81c928 (patch) | |
tree | 30cb1ea5da6bdb65cfb8b1fb816409500a434a4b /src/tools/uic/cpp/cppwriteinitialization.cpp | |
parent | 1ac6644ddacd93732faec22d1e47b7f0ac12753f (diff) |
uic: optimize generateMultiDirectiveBegin()
Instead of building a QMap with dummy values, just to sort the
elements of the QSet, build a QList, and sort that.
Also use QStringList::join() instead of rolling our own loop.
Change-Id: Iebb7faac8e4b72d6f71b3ab3feba7865b1a102f3
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Diffstat (limited to 'src/tools/uic/cpp/cppwriteinitialization.cpp')
-rw-r--r-- | src/tools/uic/cpp/cppwriteinitialization.cpp | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp index bd036a13a6..4ad4f60ca8 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.cpp +++ b/src/tools/uic/cpp/cppwriteinitialization.cpp @@ -2488,24 +2488,16 @@ static void generateMultiDirectiveBegin(QTextStream &outputStream, const QSet<QS if (directives.isEmpty()) return; - QMap<QString, bool> map; // bool is dummy. The idea is to sort that (always generate in the same order) by putting a set into a map - foreach (const QString &str, directives) - map.insert(str, true); - - if (map.size() == 1) { - outputStream << "#ifndef " << map.constBegin().key() << endl; + if (directives.size() == 1) { + outputStream << "#ifndef " << *directives.cbegin() << endl; return; } - outputStream << "#if"; - bool doOr = false; - foreach (const QString &str, map.keys()) { - if (doOr) - outputStream << " ||"; - outputStream << " !defined(" << str << ')'; - doOr = true; - } - outputStream << endl; + auto list = directives.toList(); + // sort (always generate in the same order): + std::sort(list.begin(), list.end()); + + outputStream << "#if !defined(" << list.join(QLatin1String(") || !defined(")) << ')' << endl; } static void generateMultiDirectiveEnd(QTextStream &outputStream, const QSet<QString> &directives) |