QLoggingRegistry: cut out the QMap middle-man

In Qt 6, QMap is just a shared pointer to a std::map.

QLoggingRegistry::qtCategoryEnvironmentOverrides 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.

This saves more than 1.1KiB in TEXT size on optimized AMD64 GCC 11
C++20 Linux builds.

Change-Id: Id72b2432ed41a97700cc2d9ecafa902b919efe84
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Marc Mutz 2024-02-07 11:56:38 +01:00
parent 6b59ff5730
commit 1461fbb5d1
2 changed files with 5 additions and 4 deletions

View File

@ -350,7 +350,7 @@ void QLoggingRegistry::unregisterCategory(QLoggingCategory *cat)
void QLoggingRegistry::registerEnvironmentOverrideForCategory(const char *categoryName,
const char *environment)
{
qtCategoryEnvironmentOverrides.insert(categoryName, environment);
qtCategoryEnvironmentOverrides.insert_or_assign(categoryName, environment);
}
/*!
@ -442,7 +442,7 @@ void QLoggingRegistry::defaultCategoryFilter(QLoggingCategory *cat)
if (it == reg->qtCategoryEnvironmentOverrides.end())
debug = false;
else
debug = qEnvironmentVariableIntValue(it.value());
debug = qEnvironmentVariableIntValue(it->second);
}
}

View File

@ -19,11 +19,12 @@
#include <QtCore/qloggingcategory.h>
#include <QtCore/qlist.h>
#include <QtCore/qhash.h>
#include <QtCore/qmap.h>
#include <QtCore/qmutex.h>
#include <QtCore/qstring.h>
#include <QtCore/qtextstream.h>
#include <map>
class tst_QLoggingRegistry;
QT_BEGIN_NAMESPACE
@ -127,7 +128,7 @@ private:
QList<QLoggingRule> ruleSets[NumRuleSets];
QHash<QLoggingCategory *, QtMsgType> categories;
QLoggingCategory::CategoryFilter categoryFilter;
QMap<QByteArrayView, const char *> qtCategoryEnvironmentOverrides;
std::map<QByteArrayView, const char *> qtCategoryEnvironmentOverrides;
friend class ::tst_QLoggingRegistry;
};