From 9b481a78bffb0bd92165ad1944c01f1f0cf25cca Mon Sep 17 00:00:00 2001 From: Fabian Kosmale Date: Fri, 4 Oct 2024 15:21:59 +0200 Subject: [PATCH] QMetaMethod: Introduce nameView The QBAView returning variant of name. It can avoid the check whether the meta-object is dynamic, as it doesn't promise to keep the data valid when the meta-object is gone. Change-Id: Id1fcf1827a30c5d35ea1f40c8a519b88be43c23b Reviewed-by: Ulf Hermann Reviewed-by: Thiago Macieira --- src/corelib/kernel/qmetaobject.cpp | 14 ++++++++++++++ src/corelib/kernel/qmetaobject.h | 1 + .../corelib/kernel/qmetamethod/tst_qmetamethod.cpp | 1 + 3 files changed, 16 insertions(+) diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index 001a074d685..0fab011f9a9 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -2114,6 +2114,20 @@ QByteArray QMetaMethod::name() const return stringData(mobj, QMetaMethodPrivate::get(this)->name()); } +/*! + \since 6.9 + + Returns the name of this method. + The returned QByteArrayView is valid as long as the meta-object of + the class to which the method belongs is valid. + + \sa name + */ +QByteArrayView QMetaMethod::nameView() const +{ + return QMetaMethodPrivate::get(this)->name(); +} + /*! \since 5.0 diff --git a/src/corelib/kernel/qmetaobject.h b/src/corelib/kernel/qmetaobject.h index 57dbd0cfbed..60e0a2127a5 100644 --- a/src/corelib/kernel/qmetaobject.h +++ b/src/corelib/kernel/qmetaobject.h @@ -22,6 +22,7 @@ class Q_CORE_EXPORT QMetaMethod QByteArray methodSignature() const; QByteArray name() const; + QByteArrayView nameView() const; const char *typeName() const; int returnType() const; QMetaType returnMetaType() const; diff --git a/tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp b/tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp index 59fb7475241..1eb97e26cbb 100644 --- a/tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp +++ b/tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp @@ -614,6 +614,7 @@ void tst_QMetaMethod::method() QByteArray computedName = signature.left(signature.indexOf('(')); QCOMPARE(method.name(), computedName); + QCOMPARE_EQ(method.nameView(), method.name()); QCOMPARE(method.tag(), ""); QCOMPARE(method.returnType(), returnType);