Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2024-07-08 10:37:39 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2024-07-09 10:30:35 +0200
commite3b159b241b452ceb1013fd9aebe0d9a25a64ed9 (patch)
tree7f7588244f325733771804d6d1a3759e627df432 /sources/pyside6/libpyside
parentf5744f1b402a59e8bd8453d659dd8dd84a872711 (diff)
libpyside: Avoid QByteArray construction getArgsFromSignature()
Task-number: PYSIDE-2810 Change-Id: I54601a5a3f1f7cd648e5e382850ee10fbe240dac Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside')
-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;
}