diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2015-12-29 14:10:50 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2016-01-04 20:35:33 +0000 |
commit | 5feebcc973af56184f9f568a81b17e774976fff7 (patch) | |
tree | c4a9b5f4b0b5be7bce5642b1891a834cc845be67 /src/corelib/mimetypes/qmimedatabase.cpp | |
parent | cc2ea22a3050424c0dffe864146af1efc57369b4 (diff) |
QMimeDatabase: replace a QStack<QString> with std::stack<QString, QStringList>
A QStringList is almost as efficient as a QVector<QString>.
More importantly, the QStringList case can share code with
the myriad of other QStringList users, in particular
because std::stack is but the thinnest of wrappers around
its underlying container.
Saves 1400b in text size on optimized GCC 4.9 Linux AMD64
builds.
Change-Id: If37ed55802aa8a529ca772df465990ded0aaba7f
Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src/corelib/mimetypes/qmimedatabase.cpp')
-rw-r--r-- | src/corelib/mimetypes/qmimedatabase.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/corelib/mimetypes/qmimedatabase.cpp b/src/corelib/mimetypes/qmimedatabase.cpp index 57006db160..764ac55563 100644 --- a/src/corelib/mimetypes/qmimedatabase.cpp +++ b/src/corelib/mimetypes/qmimedatabase.cpp @@ -47,11 +47,11 @@ #include <QtCore/QSet> #include <QtCore/QBuffer> #include <QtCore/QUrl> -#include <QtCore/QStack> #include <QtCore/QDebug> #include <algorithm> #include <functional> +#include <stack> QT_BEGIN_NAMESPACE @@ -218,13 +218,13 @@ bool QMimeDatabasePrivate::inherits(const QString &mime, const QString &parent) { const QString resolvedParent = provider()->resolveAlias(parent); //Q_ASSERT(provider()->resolveAlias(mime) == mime); - QStack<QString> toCheck; + std::stack<QString, QStringList> toCheck; toCheck.push(mime); - while (!toCheck.isEmpty()) { - const QString current = toCheck.pop(); - if (current == resolvedParent) + while (!toCheck.empty()) { + if (toCheck.top() == resolvedParent) return true; - const auto parents = provider()->parents(current); + const auto parents = provider()->parents(toCheck.top()); + toCheck.pop(); for (const QString &par : parents) toCheck.push(par); } |