From 700e6341e51f5e6f45303fab3d0a84a3eb249eba Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Mon, 27 Jul 2020 17:34:10 +0200 Subject: Pass QMetaType by value Now that QMetaType is not refcounted anymore, we can and should pass it by value. Change-Id: I848db65070713762f548ca949097c27783aacad4 Reviewed-by: Thiago Macieira --- src/corelib/kernel/qmetatype.cpp | 10 +++++----- src/corelib/kernel/qmetatype.h | 6 +++--- src/corelib/kernel/qproperty.cpp | 2 +- src/corelib/kernel/qproperty.h | 5 ++--- src/corelib/kernel/qproperty_p.h | 2 +- src/corelib/kernel/qpropertyprivate.h | 8 ++++---- src/corelib/kernel/qvariant.h | 2 +- 7 files changed, 17 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 42c5c7cb32..20d5c9130f 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -806,7 +806,7 @@ void QMetaType::unregisterMetaType(QMetaType type) Returns the QMetaType corresponding to the type in the template parameter. */ -/*! \fn bool operator==(const QMetaType &a, const QMetaType &b) +/*! \fn bool operator==(QMetaType a, QMetaType b) \since 5.15 \relates QMetaType \overload @@ -815,7 +815,7 @@ void QMetaType::unregisterMetaType(QMetaType type) as the QMetaType \a b, otherwise returns \c false. */ -/*! \fn bool operator!=(const QMetaType &a, const QMetaType &b) +/*! \fn bool operator!=(QMetaType a, QMetaType b) \since 5.15 \relates QMetaType \overload @@ -1714,7 +1714,7 @@ static QMetaEnum metaEnumFromType(QMetaType t) } #endif -static bool convertFromEnum(const QMetaType &fromType, const void *from, QMetaType toType, void *to) +static bool convertFromEnum(QMetaType fromType, const void *from, QMetaType toType, void *to) { qlonglong ll; if (fromType.flags() & QMetaType::IsUnsignedEnumeration) { @@ -1966,7 +1966,7 @@ static bool convertToAssociativeIterable(QMetaType fromType, const void *from, v #ifndef QT_BOOTSTRAPPED -static bool canConvertMetaObject(const QMetaType &fromType, const QMetaType &toType) +static bool canConvertMetaObject(QMetaType fromType, QMetaType toType) { if ((fromType.flags() & QMetaType::PointerToQObject) && (toType.flags() & QMetaType::PointerToQObject)) { return fromType.metaObject()->inherits(toType.metaObject()) || @@ -2128,7 +2128,7 @@ bool QMetaType::convert(QMetaType fromType, const void *from, QMetaType toType, \sa convert(), QSequentialIterable, Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE(), QAssociativeIterable, Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE() */ -bool QMetaType::canConvert(const QMetaType &fromType, const QMetaType &toType) +bool QMetaType::canConvert(QMetaType fromType, QMetaType toType) { int fromTypeId = fromType.id(); int toTypeId = toType.id(); diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index b72b2f69be..bf76f39a2a 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -438,8 +438,8 @@ public: static QMetaType fromType(); static QMetaType fromName(QByteArrayView name); - friend bool operator==(const QMetaType &a, const QMetaType &b) { return a.id() == b.id(); } - friend bool operator!=(const QMetaType &a, const QMetaType &b) { return !(a == b); } + friend bool operator==(QMetaType a, QMetaType b) { return a.id() == b.id(); } + friend bool operator!=(QMetaType a, QMetaType b) { return !(a == b); } public: @@ -538,7 +538,7 @@ public: #endif static bool convert(QMetaType fromType, const void *from, QMetaType toType, void *to); - static bool canConvert(const QMetaType &fromType, const QMetaType &toType); + static bool canConvert(QMetaType fromType, QMetaType toType); #if QT_DEPRECATED_SINCE(6, 0) QT_DEPRECATED_VERSION_6_0 static bool convert(const void *from, int fromTypeId, void *to, int toTypeId) diff --git a/src/corelib/kernel/qproperty.cpp b/src/corelib/kernel/qproperty.cpp index cbb2954a98..926ccdd8de 100644 --- a/src/corelib/kernel/qproperty.cpp +++ b/src/corelib/kernel/qproperty.cpp @@ -150,7 +150,7 @@ bool QPropertyBindingPrivate::evaluateIfDirtyAndReturnTrueIfValueChanged() QUntypedPropertyBinding::QUntypedPropertyBinding() = default; -QUntypedPropertyBinding::QUntypedPropertyBinding(const QMetaType &metaType, QUntypedPropertyBinding::BindingEvaluationFunction function, +QUntypedPropertyBinding::QUntypedPropertyBinding(QMetaType metaType, QUntypedPropertyBinding::BindingEvaluationFunction function, const QPropertyBindingSourceLocation &location) { d = new QPropertyBindingPrivate(metaType, std::move(function), std::move(location)); diff --git a/src/corelib/kernel/qproperty.h b/src/corelib/kernel/qproperty.h index ae7f3a5050..1064180c27 100644 --- a/src/corelib/kernel/qproperty.h +++ b/src/corelib/kernel/qproperty.h @@ -43,7 +43,6 @@ #include #include #include -#include #include #include #include @@ -123,7 +122,7 @@ public: using BindingEvaluationFunction = QtPrivate::QPropertyBindingFunction; QUntypedPropertyBinding(); - QUntypedPropertyBinding(const QMetaType &metaType, BindingEvaluationFunction function, const QPropertyBindingSourceLocation &location); + QUntypedPropertyBinding(QMetaType metaType, BindingEvaluationFunction function, const QPropertyBindingSourceLocation &location); QUntypedPropertyBinding(QUntypedPropertyBinding &&other); QUntypedPropertyBinding(const QUntypedPropertyBinding &other); QUntypedPropertyBinding &operator=(const QUntypedPropertyBinding &other); @@ -151,7 +150,7 @@ class QPropertyBinding : public QUntypedPropertyBinding struct BindingAdaptor { Functor impl; - bool operator()(const QMetaType &/*metaType*/, void *dataPtr) + bool operator()(QMetaType /*metaType*/, void *dataPtr) { PropertyType *propertyPtr = static_cast(dataPtr); PropertyType newValue = impl(); diff --git a/src/corelib/kernel/qproperty_p.h b/src/corelib/kernel/qproperty_p.h index 159c652657..1ddb3dd453 100644 --- a/src/corelib/kernel/qproperty_p.h +++ b/src/corelib/kernel/qproperty_p.h @@ -166,7 +166,7 @@ public: // public because the auto-tests access it, too. size_t dependencyObserverCount = 0; - QPropertyBindingPrivate(const QMetaType &metaType, QUntypedPropertyBinding::BindingEvaluationFunction evaluationFunction, + QPropertyBindingPrivate(QMetaType metaType, QUntypedPropertyBinding::BindingEvaluationFunction evaluationFunction, const QPropertyBindingSourceLocation &location) : isBool(metaType.id() == QMetaType::Bool) , evaluationFunction(std::move(evaluationFunction)) diff --git a/src/corelib/kernel/qpropertyprivate.h b/src/corelib/kernel/qpropertyprivate.h index e65ab324fa..ab8c96b17f 100644 --- a/src/corelib/kernel/qpropertyprivate.h +++ b/src/corelib/kernel/qpropertyprivate.h @@ -54,6 +54,7 @@ #include #include #include +#include #include @@ -63,14 +64,13 @@ class QUntypedPropertyBinding; class QPropertyBindingPrivate; using QPropertyBindingPrivatePtr = QExplicitlySharedDataPointer; struct QPropertyBasePointer; -class QMetaType; namespace QtPrivate { // writes binding result into dataPtr -using QPropertyBindingFunction = std::function; +using QPropertyBindingFunction = std::function; -using QPropertyGuardFunction = bool(*)(const QMetaType &, void *dataPtr, +using QPropertyGuardFunction = bool(*)(QMetaType, void *dataPtr, QPropertyBindingFunction, void *owner); using QPropertyObserverCallback = void (*)(void *, void *); @@ -242,7 +242,7 @@ struct QPropertyGuardFunctionHelper template struct QPropertyGuardFunctionHelper { - static auto guard(const QMetaType &metaType, void *dataPtr, + static auto guard(const QMetaType metaType, void *dataPtr, QPropertyBindingFunction eval, void *owner) -> bool { T t = T(); diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index e9509e637a..ae4c26ed7a 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -443,7 +443,7 @@ class Q_CORE_EXPORT QVariant quintptr packedType : sizeof(QMetaType) * 8 - 2; Private() noexcept : is_shared(false), is_null(true), packedType(0) {} - explicit Private(const QMetaType &type) noexcept : is_shared(false), is_null(false) + explicit Private(QMetaType type) noexcept : is_shared(false), is_null(false) { quintptr mt = quintptr(type.d_ptr); Q_ASSERT((mt & 0x3) == 0); -- cgit v1.2.3