From 0e6baa86a0009341a3cc7d0e256b314adf7d82b4 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Sat, 21 Jul 2012 19:38:41 +0200 Subject: refactor iq type parsing --- src/base/QXmppIq.cpp | 72 +++++++++++++--------------------------------------- 1 file changed, 17 insertions(+), 55 deletions(-) (limited to 'src/base/QXmppIq.cpp') diff --git a/src/base/QXmppIq.cpp b/src/base/QXmppIq.cpp index 128aa5d5..67f22274 100644 --- a/src/base/QXmppIq.cpp +++ b/src/base/QXmppIq.cpp @@ -28,6 +28,13 @@ #include #include +static const char* iq_types[] = { + "error", + "get", + "set", + "result" +}; + /// Constructs a QXmppIq with the specified \a type. /// /// \param type @@ -59,7 +66,15 @@ void QXmppIq::setType(QXmppIq::Type type) void QXmppIq::parse(const QDomElement &element) { QXmppStanza::parse(element); - setTypeFromStr(element.attribute("type")); + + const QString type = element.attribute("type"); + for (int i = Error; i <= Result; i++) { + if (type == iq_types[i]) { + m_type = static_cast(i); + break; + } + } + parseElementFromChild(element); } @@ -82,10 +97,7 @@ void QXmppIq::toXml( QXmlStreamWriter *xmlWriter ) const helperToXmlAddAttribute(xmlWriter, "id", id()); helperToXmlAddAttribute(xmlWriter, "to", to()); helperToXmlAddAttribute(xmlWriter, "from", from()); - if(getTypeStr().isEmpty()) - helperToXmlAddAttribute(xmlWriter, "type", "get"); - else - helperToXmlAddAttribute(xmlWriter, "type", getTypeStr()); + helperToXmlAddAttribute(xmlWriter, "type", iq_types[m_type]); toXmlElementFromChild(xmlWriter); error().toXml(xmlWriter); xmlWriter->writeEndElement(); @@ -97,53 +109,3 @@ void QXmppIq::toXmlElementFromChild( QXmlStreamWriter *writer ) const extension.toXml(writer); } /// \endcond - -QString QXmppIq::getTypeStr() const -{ - switch(m_type) - { - case QXmppIq::Error: - return "error"; - case QXmppIq::Get: - return "get"; - case QXmppIq::Set: - return "set"; - case QXmppIq::Result: - return "result"; - default: - qWarning("QXmppIq::getTypeStr() invalid type %d", (int)m_type); - return ""; - } -} - -void QXmppIq::setTypeFromStr(const QString& str) -{ - if(str == "error") - { - setType(QXmppIq::Error); - return; - } - else if(str == "get") - { - setType(QXmppIq::Get); - return; - } - else if(str == "set") - { - setType(QXmppIq::Set); - return; - } - else if(str == "result") - { - setType(QXmppIq::Result); - return; - } - else - { - setType(static_cast(-1)); - qWarning("QXmppIq::setTypeFromStr() invalid input string type: %s", - qPrintable(str)); - return; - } -} - -- cgit v1.2.3