aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpyside/pysidesignal.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2023-11-15 12:24:57 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2023-11-16 16:18:51 +0100
commit6816114494a2555121ffe4fba22f7845daf0c748 (patch)
tree0fabf15d3f930b2971a2fbbd31f5e4c829e13bb6 /sources/pyside6/libpyside/pysidesignal.cpp
parent9f7b808f64be9c01a17153839c368626edac32ed (diff)
libpyside: Port the signal signature code from QString to QByteArray
Since the name ends up in QMetaObject::addSlot() taking a QByteArray anyways, there is no point in constructing the name using QString. Task-number: PYSIDE-2524 Change-Id: Ib27a55efa8b22eb983d5e27e3a981efd72e9996f Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside/pysidesignal.cpp')
-rw-r--r--sources/pyside6/libpyside/pysidesignal.cpp36
1 files changed, 18 insertions, 18 deletions
diff --git a/sources/pyside6/libpyside/pysidesignal.cpp b/sources/pyside6/libpyside/pysidesignal.cpp
index 4653e3940..503044f24 100644
--- a/sources/pyside6/libpyside/pysidesignal.cpp
+++ b/sources/pyside6/libpyside/pysidesignal.cpp
@@ -530,7 +530,7 @@ static PyObject *signalInstanceConnect(PyObject *self, PyObject *args, PyObject
// Get signature args
bool isShortCircuit = false;
- QStringList argsSignature = PySide::Signal::getArgsFromSignature(it->d->signature,
+ QByteArrayList argsSignature = PySide::Signal::getArgsFromSignature(it->d->signature,
&isShortCircuit);
qsizetype signatureArgs = argsSignature.size();
@@ -1214,29 +1214,30 @@ EmitterData getEmitterData(PySideSignalInstance *signal)
return result;
}
-QStringList getArgsFromSignature(const char *signature, bool *isShortCircuit)
+QByteArrayList getArgsFromSignature(const char *signature, bool *isShortCircuit)
{
- QString qsignature = QString::fromLatin1(signature).trimmed();
- QStringList result;
+ QByteArray qsignature = QByteArray(signature).trimmed();
+ QByteArrayList result;
if (isShortCircuit)
*isShortCircuit = !qsignature.contains(u'(');
- if (qsignature.contains(u"()") || qsignature.contains(u"(void)"))
+ if (qsignature.contains("()") || qsignature.contains("(void)"))
return result;
- if (qsignature.endsWith(u')')) {
- const int paren = qsignature.indexOf(u'(');
+ if (qsignature.endsWith(')')) {
+ const auto paren = qsignature.indexOf('(');
if (paren >= 0) {
qsignature.chop(1);
qsignature.remove(0, paren + 1);
result = qsignature.split(u',');
- for (QString &type : result)
+ for (auto &type : result)
type = type.trimmed();
}
}
return result;
}
-QString getCallbackSignature(const char *signal, QObject *receiver, PyObject *callback, bool encodeName)
+QByteArray getCallbackSignature(const char *signal, QObject *receiver,
+ PyObject *callback, bool encodeName)
{
QByteArray functionName;
qsizetype numArgs = -1;
@@ -1309,9 +1310,8 @@ QString getCallbackSignature(const char *signal, QObject *receiver, PyObject *ca
functionName[0] = '_';
functionName[functionName.size() - 1] = '_';
}
- const QString functionNameS = QLatin1String(functionName);
- QString signature = encodeName ? codeCallbackName(callback, functionNameS) : functionNameS;
- QStringList args = getArgsFromSignature(signal, &isShortCircuit);
+ QByteArray signature = encodeName ? codeCallbackName(callback, functionName) : functionName;
+ QByteArrayList args = getArgsFromSignature(signal, &isShortCircuit);
if (!isShortCircuit) {
signature.append(u'(');
@@ -1319,8 +1319,8 @@ QString getCallbackSignature(const char *signal, QObject *receiver, PyObject *ca
numArgs = std::numeric_limits<qsizetype>::max();
while (!args.isEmpty() && (args.size() > (numArgs - useSelf)))
args.removeLast();
- signature.append(args.join(u','));
- signature.append(u')');
+ signature.append(args.join(','));
+ signature.append(')');
}
return signature;
}
@@ -1339,21 +1339,21 @@ bool checkQtSignal(const char *signal)
return true;
}
-QString codeCallbackName(PyObject *callback, const QString &funcName)
+QByteArray codeCallbackName(PyObject *callback, const QByteArray &funcName)
{
if (PyMethod_Check(callback)) {
PyObject *self = PyMethod_GET_SELF(callback);
PyObject *func = PyMethod_GET_FUNCTION(callback);
- return funcName + QString::number(quint64(self), 16) + QString::number(quint64(func), 16);
+ return funcName + QByteArray::number(quint64(self), 16) + QByteArray::number(quint64(func), 16);
}
// PYSIDE-1523: Handle the compiled case.
if (PySide::isCompiledMethod(callback)) {
// Not retaining references inline with what PyMethod_GET_(SELF|FUNC) does.
Shiboken::AutoDecRef self(PyObject_GetAttr(callback, PySide::PySideName::im_self()));
Shiboken::AutoDecRef func(PyObject_GetAttr(callback, PySide::PySideName::im_func()));
- return funcName + QString::number(quint64(self), 16) + QString::number(quint64(func), 16);
+ return funcName + QByteArray::number(quint64(self), 16) + QByteArray::number(quint64(func), 16);
}
- return funcName + QString::number(quint64(callback), 16);
+ return funcName + QByteArray::number(quint64(callback), 16);
}
QByteArray voidType()