aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2021-08-26 19:20:40 +0200
committerLinus Jahn <lnj@kaidan.im>2021-08-26 23:18:23 +0200
commitbd1522d9809a0e171ff122c5c6e323a3a838da16 (patch)
treedde4c23d03f7ac74408c8032fdfc3c25ffb98a88 /src/base
parented8e1ccc3522d9cbbd2d751d1a4a66b1ebe21390 (diff)
downloadqxmpp-bd1522d9809a0e171ff122c5c6e323a3a838da16.tar.gz
Add QXmppNonza
Some objects currently inherit from QXmppStanza although they don't make use of most of the stanza's features (like having to/from/id). This is currently necessary, because only QXmppStanzas can be sent via the client or stream. The QXmppNonza class should fix that by only providing the most important features (parse + toXml).
Diffstat (limited to 'src/base')
-rw-r--r--src/base/QXmppNonza.cpp58
-rw-r--r--src/base/QXmppNonza.h43
2 files changed, 101 insertions, 0 deletions
diff --git a/src/base/QXmppNonza.cpp b/src/base/QXmppNonza.cpp
new file mode 100644
index 00000000..e5c12f83
--- /dev/null
+++ b/src/base/QXmppNonza.cpp
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2008-2021 The QXmpp developers
+ *
+ * Authors:
+ * Linus Jahn
+ *
+ * Source:
+ * https://github.com/qxmpp-project/qxmpp
+ *
+ * This file is a part of QXmpp library.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ */
+
+#include "QXmppNonza.h"
+
+///
+/// \class QXmppNonza
+///
+/// Abstract class for content that can be parsed from DOM and serialized to
+/// XML.
+///
+/// If you want to implement a XMPP stanza (IQ, message or presence) then you
+/// should use QXmppStanza. Directly inheriting from this class is useful for
+/// other elements like stream management elements in the XML stream.
+///
+/// \since QXmpp 1.5
+///
+
+///
+/// \fn QXmppNonza::isXmppStanza
+///
+/// Indicates if the QXmppStanza is a stanza in the XMPP sense (i. e. a message,
+/// iq or presence)
+///
+/// \since QXmpp 1.0 (moved from QXmppStanza in 1.5)
+///
+
+///
+/// \fn QXmppNonza::parse
+///
+/// Parses the object from a DOM element.
+///
+
+///
+/// \fn QXmppNonza::toXml
+///
+/// Serializes the object to XML using a QXmlStreamWriter.
+///
diff --git a/src/base/QXmppNonza.h b/src/base/QXmppNonza.h
new file mode 100644
index 00000000..8b493a38
--- /dev/null
+++ b/src/base/QXmppNonza.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2008-2021 The QXmpp developers
+ *
+ * Authors:
+ * Linus Jahn
+ *
+ * Source:
+ * https://github.com/qxmpp-project/qxmpp
+ *
+ * This file is a part of QXmpp library.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ */
+
+#ifndef QXMPPNONZA_H
+#define QXMPPNONZA_H
+
+#include "QXmppGlobal.h"
+
+class QXmlStreamWriter;
+class QDomElement;
+
+class QXmppNonza
+{
+public:
+ QXmppNonza() = default;
+ virtual ~QXmppNonza() = default;
+
+ virtual inline bool isXmppStanza() const { return false; }
+ virtual void parse(const QDomElement &) = 0;
+ virtual void toXml(QXmlStreamWriter *writer) const = 0;
+};
+
+#endif // QXMPPNONZA_H