summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2013-10-08 18:08:38 +0200
committerMarc Mutz <marc.mutz@kdab.com>2014-07-23 14:15:22 +0200
commitc4a2d6ca1ea3e1411391978f089c0b360c833f1b (patch)
tree5e9ab3e9a9af82b9d50f2d323a50b2ebaf84fdc2 /src/widgets
parentb52b5fa082e76466640f286de23fb4695eb997ed (diff)
QInputDialog: use a switch instead of a string pointer table
Effects on Linux AMD64 GCC 4.9-trunk -O2 stripped release: text: -72B data: -64B relocs: -4 Change-Id: Ie312e12ba42f58fa5dd61da1e64b9c22bf4738b2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/dialogs/qinputdialog.cpp35
1 files changed, 25 insertions, 10 deletions
diff --git a/src/widgets/dialogs/qinputdialog.cpp b/src/widgets/dialogs/qinputdialog.cpp
index 10d693b4a3..e7c8128337 100644
--- a/src/widgets/dialogs/qinputdialog.cpp
+++ b/src/widgets/dialogs/qinputdialog.cpp
@@ -60,25 +60,40 @@
QT_USE_NAMESPACE
-static const char *signalForMember(const char *member)
+enum CandidateSignal {
+ TextValueSelectedSignal,
+ IntValueSelectedSignal,
+ DoubleValueSelectedSignal,
+ AcceptedSignal,
+
+ NumCandidateSignals
+};
+
+static const char *candidateSignal(int which)
{
- static const int NumCandidates = 4;
- static const char * const candidateSignals[NumCandidates] = {
- SIGNAL(textValueSelected(QString)),
- SIGNAL(intValueSelected(int)),
- SIGNAL(doubleValueSelected(double)),
- SIGNAL(accepted())
+ switch (CandidateSignal(which)) {
+ case TextValueSelectedSignal: return SIGNAL(textValueSelected(QString));
+ case IntValueSelectedSignal: return SIGNAL(intValueSelected(int));
+ case DoubleValueSelectedSignal: return SIGNAL(doubleValueSelected(double));
+ case AcceptedSignal: return SIGNAL(accepted());
+
+ case NumCandidateSignals: ; // fall through
};
+ Q_UNREACHABLE();
+ return Q_NULLPTR;
+}
+static const char *signalForMember(const char *member)
+{
QByteArray normalizedMember(QMetaObject::normalizedSignature(member));
int i = 0;
- while (i < NumCandidates - 1) { // sic
- if (QMetaObject::checkConnectArgs(candidateSignals[i], normalizedMember))
+ while (i < NumCandidateSignals - 1) { // sic
+ if (QMetaObject::checkConnectArgs(candidateSignal(i), normalizedMember))
break;
++i;
}
- return candidateSignals[i];
+ return candidateSignal(i);
}
QT_BEGIN_NAMESPACE