QMetaType: inline isValid() and isRegistered()

isValid() is (or could be) used in a lot of places, so make it inline.
One could effectively write it as:
    mt == QMetaType()
And rely on comparesEqual() knowing that an invalid type cannot equal to
a valid one.

I'm inlining isRegistered() because it's a simple function.

I chose to use the QT6_DECL_NEW_OVERLOAD technique instead of
QT_CORE_INLINED_SINCE because the latter does not apply inlining to
QtCore itself (aside from LTO).

Change-Id: I0e727ab80c42d51867d0fffd2f9641bc88f926b1
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
This commit is contained in:
Thiago Macieira 2024-08-27 10:19:07 -07:00
parent 0568511e84
commit 0120d8ea1e
4 changed files with 27 additions and 9 deletions

View File

@ -1245,6 +1245,18 @@ QUuid QUuid::createUuidV5(const QUuid &ns, const QByteArray &baseData) noexcept
#endif // QT_CORE_REMOVED_SINCE(6, 8)
#if QT_CORE_REMOVED_SINCE(6, 9)
#include "qmetatype.h"
bool QMetaType::isRegistered() const
{
return isRegistered(QT6_CALL_NEW_OVERLOAD);
}
bool QMetaType::isValid() const
{
return isValid(QT6_CALL_NEW_OVERLOAD);
}
#include "quuid.h"

View File

@ -512,10 +512,6 @@ const char *QtMetaTypePrivate::typedefNameForType(const QtPrivate::QMetaTypeInte
\sa isRegistered()
*/
bool QMetaType::isValid() const
{
return d_ptr;
}
/*!
\fn bool QMetaType::isRegistered() const
@ -527,10 +523,6 @@ bool QMetaType::isValid() const
\sa qRegisterMetaType(), isValid()
*/
bool QMetaType::isRegistered() const
{
return d_ptr && d_ptr->typeId.loadRelaxed();
}
/*!
\fn int QMetaType::id() const

View File

@ -457,8 +457,12 @@ public:
explicit constexpr QMetaType(const QtPrivate::QMetaTypeInterface *d) : d_ptr(d) {}
constexpr QMetaType() = default;
#if QT_CORE_REMOVED_SINCE(6, 9)
bool isValid() const;
bool isRegistered() const;
#endif
constexpr bool isValid(QT6_DECL_NEW_OVERLOAD) const noexcept;
inline bool isRegistered(QT6_DECL_NEW_OVERLOAD) const noexcept;
void registerType() const
{
// "register" is a reserved keyword
@ -2640,6 +2644,16 @@ constexpr QMetaType QMetaType::fromType()
return QMetaType(QtPrivate::qMetaTypeInterfaceForType<T>());
}
constexpr bool QMetaType::isValid(QT6_IMPL_NEW_OVERLOAD) const noexcept
{
return d_ptr;
}
bool QMetaType::isRegistered(QT6_IMPL_NEW_OVERLOAD) const noexcept
{
return d_ptr && d_ptr->typeId.loadRelaxed();
}
constexpr qsizetype QMetaType::sizeOf() const
{
return d_ptr ? d_ptr->size : 0;

View File

@ -713,7 +713,7 @@ public:
inline bool QVariant::isValid() const
{
return d.type().isValid();
return d.type().isValid(QT6_CALL_NEW_OVERLOAD);
}
#ifndef QT_NO_DATASTREAM