summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qresource.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2020-05-02 23:03:39 +0200
committerMarc Mutz <marc.mutz@kdab.com>2020-05-05 07:24:42 +0200
commitf5a32861e321a839e8293e3f5b28169b26128592 (patch)
tree7194993bc443e47185b51c3b3a201634ac55006c /src/corelib/io/qresource.cpp
parenta6a412dbb6c82f6a4885e54fbef0cfe14fbcd4ab (diff)
QResource: port a local QSet to QDuplicateTracker
Apart from a more fitting, minimal, API, QDuplicateTracker also transparently uses C++17 pmr::monotonic_buffer_resource to avoid, or at least reduce, memory allocations. Change-Id: If059f2ac66967168fe269cd62aaee9cfeb10f17e Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/io/qresource.cpp')
-rw-r--r--src/corelib/io/qresource.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index 9a2fd196a2..51c47d7fc6 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -55,6 +55,7 @@
#include <qplatformdefs.h>
#include <qendian.h>
#include "private/qabstractfileengine_p.h"
+#include "private/qduplicatetracker_p.h"
#include "private/qnumeric_p.h"
#include "private/qsimd_p.h"
#include "private/qtools_p.h"
@@ -417,25 +418,22 @@ QResourcePrivate::ensureChildren() const
QString path = absoluteFilePath, k;
if(path.startsWith(QLatin1Char(':')))
path = path.mid(1);
- QSet<QString> kids;
+ QDuplicateTracker<QString> kids;
+ kids.reserve(related.size());
QString cleaned = cleanPath(path);
for(int i = 0; i < related.size(); ++i) {
QResourceRoot *res = related.at(i);
if(res->mappingRootSubdir(path, &k) && !k.isEmpty()) {
- if(!kids.contains(k)) {
+ if (!kids.hasSeen(k))
children += k;
- kids.insert(k);
- }
} else {
const int node = res->findNode(cleaned);
if(node != -1) {
QStringList related_children = res->children(node);
for(int kid = 0; kid < related_children.size(); ++kid) {
k = related_children.at(kid);
- if(!kids.contains(k)) {
+ if (!kids.hasSeen(k))
children += k;
- kids.insert(k);
- }
}
}
}