aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpyside/pysidesignal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside6/libpyside/pysidesignal.cpp')
-rw-r--r--sources/pyside6/libpyside/pysidesignal.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/sources/pyside6/libpyside/pysidesignal.cpp b/sources/pyside6/libpyside/pysidesignal.cpp
index 07c5a3b09..5b45da18f 100644
--- a/sources/pyside6/libpyside/pysidesignal.cpp
+++ b/sources/pyside6/libpyside/pysidesignal.cpp
@@ -1195,20 +1195,27 @@ EmitterData getEmitterData(PySideSignalInstance *signal)
QByteArrayList getArgsFromSignature(const char *signature)
{
- QByteArray qsignature = QByteArray(signature).trimmed();
+ QByteArrayView qsignature = QByteArrayView(signature).trimmed();
QByteArrayList result;
if (qsignature.contains("()") || qsignature.contains("(void)"))
return result;
- if (qsignature.endsWith(')')) {
- const auto paren = qsignature.indexOf('(');
- if (paren >= 0) {
- qsignature.chop(1);
- qsignature.remove(0, paren + 1);
- result = qsignature.split(u',');
- for (auto &type : result)
- type = type.trimmed();
+ if (!qsignature.endsWith(')'))
+ return result;
+ const auto paren = qsignature.indexOf('(');
+ if (paren < 0)
+ return result;
+
+ qsignature.chop(1);
+ qsignature = qsignature.sliced(paren + 1);
+ while (true) {
+ auto next = qsignature.indexOf(',');
+ if (next == -1) {
+ result.append(qsignature.trimmed().toByteArray());
+ break;
}
+ result.append(qsignature.sliced(0, next).trimmed().toByteArray());
+ qsignature = qsignature.sliced(next + 1);
}
return result;
}