From c29d3692d700f7ef6d5833242878b4ec6f81c928 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 25 Jan 2016 14:10:58 +0100 Subject: 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 --- src/tools/uic/cpp/cppwriteinitialization.cpp | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) (limited to 'src/tools') 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 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 &directives) -- cgit v1.2.3