summaryrefslogtreecommitdiffstats
path: root/src/corelib/mimetypes/qmimeprovider.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2024-02-07 11:06:26 +0100
committerMarc Mutz <marc.mutz@qt.io>2024-02-09 11:39:27 +0000
commite3cc87c5f49d9bf824d6e667bf3b206470cf3b2d (patch)
treea9c85b84114483aa824a40b1aafd7de9ac018b5f /src/corelib/mimetypes/qmimeprovider.cpp
parent38c62c58514d574f44caf799e5568a2e9eebffeb (diff)
QMimeBinaryProvider: cut out the QMap middle-man
In Qt 6, QMap is just a shared pointer to a std::map. QMimeBinaryProvider::m_mimetypeExtra is never copied, though, so the implicit sharing that QMap adds on top of std::map is useless. Use the underlying std::map directly. Yes, the std::map API is a bit raw around the edges (std::pair value_type), but we're professionals here. Saves more than 1.7KiB in TEXT size on optimized AMD64 GCC 11 C++20 Linux builds. As a drive-by, cut out the insertIt temporary, too, and assign directly to `it`. Change-Id: If3fd98a7e7017909d00b8725f8c252b19459d5b6 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src/corelib/mimetypes/qmimeprovider.cpp')
-rw-r--r--src/corelib/mimetypes/qmimeprovider.cpp36
1 files changed, 14 insertions, 22 deletions
diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp
index 3aa21d1eeb..458cd46385 100644
--- a/src/corelib/mimetypes/qmimeprovider.cpp
+++ b/src/corelib/mimetypes/qmimeprovider.cpp
@@ -9,7 +9,6 @@
#include <qstandardpaths.h>
#include "qmimemagicrulematcher_p.h"
-#include <QMap>
#include <QXmlStreamReader>
#include <QBuffer>
#include <QDir>
@@ -488,30 +487,24 @@ void QMimeBinaryProvider::addAllMimeTypes(QList<QMimeType> &result)
QMimeTypePrivate::LocaleHash QMimeBinaryProvider::localeComments(const QString &name)
{
MimeTypeExtraMap::const_iterator it = loadMimeTypeExtra(name);
- if (it != m_mimetypeExtra.constEnd()) {
- const MimeTypeExtra &e = it.value();
- return e.localeComments;
- }
+ if (it != m_mimetypeExtra.cend())
+ return it->second.localeComments;
return {};
}
bool QMimeBinaryProvider::hasGlobDeleteAll(const QString &name)
{
MimeTypeExtraMap::const_iterator it = loadMimeTypeExtra(name);
- if (it != m_mimetypeExtra.constEnd()) {
- const MimeTypeExtra &e = it.value();
- return e.hasGlobDeleteAll;
- }
+ if (it != m_mimetypeExtra.cend())
+ return it->second.hasGlobDeleteAll;
return {};
}
QStringList QMimeBinaryProvider::globPatterns(const QString &name)
{
MimeTypeExtraMap::const_iterator it = loadMimeTypeExtra(name);
- if (it != m_mimetypeExtra.constEnd()) {
- const MimeTypeExtra &e = it.value();
- return e.globPatterns;
- }
+ if (it != m_mimetypeExtra.cend())
+ return it->second.globPatterns;
return {};
}
@@ -519,8 +512,8 @@ QMimeBinaryProvider::MimeTypeExtraMap::const_iterator
QMimeBinaryProvider::loadMimeTypeExtra(const QString &mimeName)
{
#if QT_CONFIG(xmlstreamreader)
- auto it = m_mimetypeExtra.constFind(mimeName);
- if (it == m_mimetypeExtra.constEnd()) {
+ auto it = m_mimetypeExtra.find(mimeName);
+ if (it == m_mimetypeExtra.cend()) {
// load comment and globPatterns
// shared-mime-info since 1.3 lowercases the xml files
@@ -530,21 +523,20 @@ QMimeBinaryProvider::loadMimeTypeExtra(const QString &mimeName)
QFile qfile(mimeFile);
if (!qfile.open(QFile::ReadOnly))
- return m_mimetypeExtra.constEnd();
+ return m_mimetypeExtra.cend();
- auto insertIt = m_mimetypeExtra.insert(mimeName, MimeTypeExtra{});
- it = insertIt;
- MimeTypeExtra &extra = insertIt.value();
+ it = m_mimetypeExtra.try_emplace(mimeName).first;
+ MimeTypeExtra &extra = it->second;
QString mainPattern;
QXmlStreamReader xml(&qfile);
if (xml.readNextStartElement()) {
if (xml.name() != "mime-type"_L1) {
- return m_mimetypeExtra.constEnd();
+ return m_mimetypeExtra.cend();
}
const auto name = xml.attributes().value("type"_L1);
if (name.isEmpty())
- return m_mimetypeExtra.constEnd();
+ return m_mimetypeExtra.cend();
if (name.compare(mimeName, Qt::CaseInsensitive))
qWarning() << "Got name" << name << "in file" << mimeFile << "expected" << mimeName;
@@ -585,7 +577,7 @@ QMimeBinaryProvider::loadMimeTypeExtra(const QString &mimeName)
#else
Q_UNUSED(mimeName);
qWarning("Cannot load mime type since QXmlStreamReader is not available.");
- return m_mimetypeExtra.constEnd();
+ return m_mimetypeExtra.cend();
#endif // feature xmlstreamreader
}