diff options
Diffstat (limited to 'sources/pyside6/PySide6')
| -rw-r--r-- | sources/pyside6/PySide6/QtCore/typesystem_core_common.xml | 65 | ||||
| -rw-r--r-- | sources/pyside6/PySide6/glue/qtcore.cpp | 51 |
2 files changed, 116 insertions, 0 deletions
diff --git a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml index 411f55149..2ef6a25e5 100644 --- a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml +++ b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml @@ -3083,7 +3083,10 @@ <value-type name="QMetaMethod"> <extra-includes> <include file-name="pysidesignal.h" location="global"/> + <include file-name="glue/core_snippets_p.h" location="local"/> </extra-includes> + <inject-code class="native" position="beginning" file="../glue/qtcore.cpp" + snippet="qmetamethod-invoke-helpers"/> <enum-type name="Access"/> <enum-type name="MethodType"/> <add-function signature="fromSignal(PySideSignalInstance@signal@)" @@ -3095,6 +3098,68 @@ if signal is not a signal of the class. </inject-documentation> </add-function> + <add-function signature="invoke(QObject*@object@,Qt::ConnectionType@type@, + QtCoreHelper::QGenericReturnArgumentHolder@ret@, + QtCoreHelper::QGenericArgumentHolder@val0@={}, + QtCoreHelper::QGenericArgumentHolder@val1@={}, + QtCoreHelper::QGenericArgumentHolder@val2@={}, + QtCoreHelper::QGenericArgumentHolder@val3@={}, + QtCoreHelper::QGenericArgumentHolder@val4@={}, + QtCoreHelper::QGenericArgumentHolder@val5@={}, + QtCoreHelper::QGenericArgumentHolder@val6@={}, + QtCoreHelper::QGenericArgumentHolder@val7@={}, + QtCoreHelper::QGenericArgumentHolder@val8@={}, + QtCoreHelper::QGenericArgumentHolder@val9@={})" + return-type="PyObject*"> + <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" + snippet="qmetamethod-invoke-conn-type-return-arg"/> + </add-function> + <add-function signature="invoke(QObject*@object@, + QtCoreHelper::QGenericReturnArgumentHolder@ret@, + QtCoreHelper::QGenericArgumentHolder@val0@={}, + QtCoreHelper::QGenericArgumentHolder@val1@={}, + QtCoreHelper::QGenericArgumentHolder@val2@={}, + QtCoreHelper::QGenericArgumentHolder@val3@={}, + QtCoreHelper::QGenericArgumentHolder@val4@={}, + QtCoreHelper::QGenericArgumentHolder@val5@={}, + QtCoreHelper::QGenericArgumentHolder@val6@={}, + QtCoreHelper::QGenericArgumentHolder@val7@={}, + QtCoreHelper::QGenericArgumentHolder@val8@={}, + QtCoreHelper::QGenericArgumentHolder@val9@={})" + return-type="PyObject*"> + <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" + snippet="qmetamethod-invoke-return-arg"/> + </add-function> + <add-function signature="invoke(QObject*@object@,Qt::ConnectionType@type@, + QtCoreHelper::QGenericArgumentHolder@val0@={}, + QtCoreHelper::QGenericArgumentHolder@val1@={}, + QtCoreHelper::QGenericArgumentHolder@val2@={}, + QtCoreHelper::QGenericArgumentHolder@val3@={}, + QtCoreHelper::QGenericArgumentHolder@val4@={}, + QtCoreHelper::QGenericArgumentHolder@val5@={}, + QtCoreHelper::QGenericArgumentHolder@val6@={}, + QtCoreHelper::QGenericArgumentHolder@val7@={}, + QtCoreHelper::QGenericArgumentHolder@val8@={}, + QtCoreHelper::QGenericArgumentHolder@val9@={})" + return-type="PyObject*"> + <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" + snippet="qmetamethod-invoke-conn-type"/> + </add-function> + <add-function signature="invoke(QObject*@object@, + QtCoreHelper::QGenericArgumentHolder@val0@={}, + QtCoreHelper::QGenericArgumentHolder@val1@={}, + QtCoreHelper::QGenericArgumentHolder@val2@={}, + QtCoreHelper::QGenericArgumentHolder@val3@={}, + QtCoreHelper::QGenericArgumentHolder@val4@={}, + QtCoreHelper::QGenericArgumentHolder@val5@={}, + QtCoreHelper::QGenericArgumentHolder@val6@={}, + QtCoreHelper::QGenericArgumentHolder@val7@={}, + QtCoreHelper::QGenericArgumentHolder@val8@={}, + QtCoreHelper::QGenericArgumentHolder@val9@={})" + return-type="PyObject*"> + <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" + snippet="qmetamethod-invoke"/> + </add-function> <!-- This isn't part of Qt public API --> <modify-function signature="attributes()const" remove="all"/> <modify-function signature="getParameterTypes(int*)const" remove="all"/> diff --git a/sources/pyside6/PySide6/glue/qtcore.cpp b/sources/pyside6/PySide6/glue/qtcore.cpp index 0dcd458bd..d0f2e8d6d 100644 --- a/sources/pyside6/PySide6/glue/qtcore.cpp +++ b/sources/pyside6/PySide6/glue/qtcore.cpp @@ -1750,6 +1750,57 @@ QtCoreHelper::QGenericReturnArgumentHolder result(qArgData.metaType, qArgData.da %PYARG_0 = %CONVERTTOPYTHON[QtCoreHelper::QGenericReturnArgumentHolder](result); // @snippet q_return_arg +// @snippet qmetamethod-invoke-helpers +static InvokeMetaMethodFunc + createInvokeMetaMethodFunc(const QMetaMethod &method, QObject *object, + Qt::ConnectionType type = Qt::AutoConnection) +{ + return [&method, object, type](QGenericArgument a0, QGenericArgument a1, + QGenericArgument a2, QGenericArgument a3, + QGenericArgument a4, QGenericArgument a5, + QGenericArgument a6, QGenericArgument a7, + QGenericArgument a8, QGenericArgument a9) -> bool + { + return method.invoke(object, type, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); + }; +} + +static InvokeMetaMethodFuncWithReturn + createInvokeMetaMethodFuncWithReturn(const QMetaMethod &method, QObject *object, + Qt::ConnectionType type = Qt::AutoConnection) +{ + return [&method, object, type](QGenericReturnArgument r, + QGenericArgument a0, QGenericArgument a1, + QGenericArgument a2, QGenericArgument a3, + QGenericArgument a4, QGenericArgument a5, + QGenericArgument a6, QGenericArgument a7, + QGenericArgument a8, QGenericArgument a9) -> bool + { + return method.invoke(object, type, r, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); + }; +} +// @snippet qmetamethod-invoke-helpers + +// @snippet qmetamethod-invoke-conn-type-return-arg +%PYARG_0 = invokeMetaMethodWithReturn(createInvokeMetaMethodFuncWithReturn(*%CPPSELF, %1, %2), + %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13); +// @snippet qmetamethod-invoke-conn-type-return-arg + +// @snippet qmetamethod-invoke-return-arg +%PYARG_0 = invokeMetaMethodWithReturn(createInvokeMetaMethodFuncWithReturn(*%CPPSELF, %1), + %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12); +// @snippet qmetamethod-invoke-return-arg + +// @snippet qmetamethod-invoke-conn-type +%PYARG_0 = invokeMetaMethod(createInvokeMetaMethodFunc(*%CPPSELF, %1, %2), + %3, %4, %5, %6, %7, %8, %9, %10, %11, %12); +// @snippet qmetamethod-invoke-conn-type + +// @snippet qmetamethod-invoke +%PYARG_0 = invokeMetaMethod(createInvokeMetaMethodFunc(*%CPPSELF, %1), + %2, %3, %4, %5, %6, %7, %8, %9, %10, %11); +// @snippet qmetamethod-invoke + // @snippet qmetaobject-invokemethod-helpers static InvokeMetaMethodFunc createInvokeMetaMethodFunc(QObject *object, const char *methodName, |
