diff options
Diffstat (limited to 'sources/pyside6/libpyside/pysidemetafunction.cpp')
-rw-r--r-- | sources/pyside6/libpyside/pysidemetafunction.cpp | 118 |
1 files changed, 42 insertions, 76 deletions
diff --git a/sources/pyside6/libpyside/pysidemetafunction.cpp b/sources/pyside6/libpyside/pysidemetafunction.cpp index 939e52e12..e8173b97d 100644 --- a/sources/pyside6/libpyside/pysidemetafunction.cpp +++ b/sources/pyside6/libpyside/pysidemetafunction.cpp @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt for Python. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "pysidemetafunction.h" #include "pysidemetafunction_p.h" @@ -58,26 +22,30 @@ struct PySideMetaFunctionPrivate static void functionFree(void *); static PyObject *functionCall(PyObject *, PyObject *, PyObject *); -static PyType_Slot PySideMetaFunctionType_slots[] = { - {Py_tp_call, (void *)functionCall}, - {Py_tp_new, (void *)PyType_GenericNew}, - {Py_tp_free, (void *)functionFree}, - {Py_tp_dealloc, (void *)Sbk_object_dealloc}, - {0, 0} -}; -static PyType_Spec PySideMetaFunctionType_spec = { - "2:PySide6.QtCore.MetaFunction", - sizeof(PySideMetaFunction), - 0, - Py_TPFLAGS_DEFAULT, - PySideMetaFunctionType_slots, -}; - +static PyTypeObject *createMetaFunctionType() +{ + PyType_Slot PySideMetaFunctionType_slots[] = { + {Py_tp_call, reinterpret_cast<void *>(functionCall)}, + {Py_tp_new, reinterpret_cast<void *>(PyType_GenericNew)}, + {Py_tp_free, reinterpret_cast<void *>(functionFree)}, + {Py_tp_dealloc, reinterpret_cast<void *>(Sbk_object_dealloc)}, + {0, nullptr} + }; + + PyType_Spec PySideMetaFunctionType_spec = { + "2:PySide6.QtCore.MetaFunction", + sizeof(PySideMetaFunction), + 0, + Py_TPFLAGS_DEFAULT, + PySideMetaFunctionType_slots, + }; + + return SbkType_FromSpec(&PySideMetaFunctionType_spec); +} -PyTypeObject *PySideMetaFunctionTypeF(void) +PyTypeObject *PySideMetaFunction_TypeF(void) { - static PyTypeObject *type = reinterpret_cast<PyTypeObject *>( - SbkType_FromSpec(&PySideMetaFunctionType_spec)); + static auto *type = createMetaFunctionType(); return type; } @@ -93,13 +61,13 @@ PyObject *functionCall(PyObject *self, PyObject *args, PyObject * /* kw */) PyObject *retVal; if (!PySide::MetaFunction::call(function->d->qobject, function->d->methodIndex, args, &retVal)) - return 0; + return nullptr; return retVal; } } // extern "C" -namespace PySide { namespace MetaFunction { +namespace PySide::MetaFunction { static const char *MetaFunction_SignatureStrings[] = { "PySide6.QtCore.MetaFunction.__call__(self,*args:typing.Any)->typing.Any", @@ -107,28 +75,28 @@ static const char *MetaFunction_SignatureStrings[] = { void init(PyObject *module) { - if (InitSignatureStrings(PySideMetaFunctionTypeF(), MetaFunction_SignatureStrings) < 0) + if (InitSignatureStrings(PySideMetaFunction_TypeF(), MetaFunction_SignatureStrings) < 0) return; - Py_INCREF(PySideMetaFunctionTypeF()); - PyModule_AddObject(module, "MetaFunction", reinterpret_cast<PyObject *>(PySideMetaFunctionTypeF())); + Py_INCREF(PySideMetaFunction_TypeF()); + PyModule_AddObject(module, "MetaFunction", reinterpret_cast<PyObject *>(PySideMetaFunction_TypeF())); } PySideMetaFunction *newObject(QObject *source, int methodIndex) { if (methodIndex >= source->metaObject()->methodCount()) - return 0; + return nullptr; QMetaMethod method = source->metaObject()->method(methodIndex); if ((method.methodType() == QMetaMethod::Slot) || (method.methodType() == QMetaMethod::Method)) { - PySideMetaFunction *function = PyObject_New(PySideMetaFunction, PySideMetaFunctionTypeF()); + PySideMetaFunction *function = PyObject_New(PySideMetaFunction, PySideMetaFunction_TypeF()); function->d = new PySideMetaFunctionPrivate(); function->d->qobject = source; function->d->methodIndex = methodIndex; return function; } - return 0; + return nullptr; } bool call(QObject *self, int methodIndex, PyObject *args, PyObject **retVal) @@ -138,20 +106,20 @@ bool call(QObject *self, int methodIndex, PyObject *args, PyObject **retVal) QList<QByteArray> argTypes = method.parameterTypes(); // args given plus return type - Shiboken::AutoDecRef sequence(PySequence_Fast(args, 0)); - int numArgs = PySequence_Fast_GET_SIZE(sequence.object()) + 1; + Shiboken::AutoDecRef sequence(PySequence_Fast(args, nullptr)); + qsizetype numArgs = PySequence_Fast_GET_SIZE(sequence.object()) + 1; - if (numArgs - 1 > argTypes.count()) { + if (numArgs - 1 > argTypes.size()) { PyErr_Format(PyExc_TypeError, "%s only accepts %d argument(s), %d given!", method.methodSignature().constData(), - argTypes.count(), numArgs - 1); + argTypes.size(), numArgs - 1); return false; } - if (numArgs - 1 < argTypes.count()) { + if (numArgs - 1 < argTypes.size()) { PyErr_Format(PyExc_TypeError, "%s needs %d argument(s), %d given!", method.methodSignature().constData(), - argTypes.count(), numArgs - 1); + argTypes.size(), numArgs - 1); return false; } @@ -165,12 +133,12 @@ bool call(QObject *self, int methodIndex, PyObject *args, PyObject **retVal) else argTypes.prepend(QByteArray()); - int i; - for (i = 0; i < numArgs; ++i) { + int i = 0; + for (; i < numArgs; ++i) { const QByteArray &typeName = argTypes.at(i); // This must happen only when the method hasn't return type. if (typeName.isEmpty()) { - methArgs[i] = 0; + methArgs[i] = nullptr; continue; } @@ -225,7 +193,5 @@ bool call(QObject *self, int methodIndex, PyObject *args, PyObject **retVal) return ok; } - -} //namespace MetaFunction -} //namespace PySide +} //namespace PySide::MetaFunction |