diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-07-21 19:38:41 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-07-21 19:38:41 +0200 |
| commit | 0e6baa86a0009341a3cc7d0e256b314adf7d82b4 (patch) | |
| tree | d8e11e2af512bfbcc763651a984dc2cb6522932b /src/base/QXmppIq.cpp | |
| parent | 92729ab1a47e45adf19d57d60427ff2e7858e0b4 (diff) | |
| download | qxmpp-0e6baa86a0009341a3cc7d0e256b314adf7d82b4.tar.gz | |
refactor iq type parsing
Diffstat (limited to 'src/base/QXmppIq.cpp')
| -rw-r--r-- | src/base/QXmppIq.cpp | 72 |
1 files changed, 17 insertions, 55 deletions
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 <QDomElement> #include <QXmlStreamWriter> +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<Type>(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<QXmppIq::Type>(-1)); - qWarning("QXmppIq::setTypeFromStr() invalid input string type: %s", - qPrintable(str)); - return; - } -} - |
