summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2011-09-20 18:49:30 (GMT)
committerRemko Tronçon <git@el-tramo.be>2011-09-20 19:15:26 (GMT)
commit5c1ec7985808aba408bec724f5b90fed0dbcb7ce (patch)
tree9d980111f412b55913e3029ac4e28bad18d77f53 /Swiften/Parser/PayloadParsers/BlockParser.h
parent36ab1556313fe42a77d38d056ace0bd9ae6ce573 (diff)
downloadswift-5c1ec7985808aba408bec724f5b90fed0dbcb7ce.zip
swift-5c1ec7985808aba408bec724f5b90fed0dbcb7ce.tar.bz2
Added XEP-191 parserialements.
Diffstat (limited to 'Swiften/Parser/PayloadParsers/BlockParser.h')
-rw-r--r--Swiften/Parser/PayloadParsers/BlockParser.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/Swiften/Parser/PayloadParsers/BlockParser.h b/Swiften/Parser/PayloadParsers/BlockParser.h
new file mode 100644
index 0000000..cd727ad
--- /dev/null
+++ b/Swiften/Parser/PayloadParsers/BlockParser.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2011 Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Elements/Nickname.h>
+#include <Swiften/Parser/GenericPayloadParser.h>
+
+namespace Swift {
+ template<typename BLOCK_ELEMENT>
+ class BlockParser : public GenericPayloadParser<BLOCK_ELEMENT> {
+ public:
+ BlockParser() : GenericPayloadParser<BLOCK_ELEMENT>() {
+ }
+
+ virtual void handleStartElement(const std::string& element, const std::string&, const AttributeMap& attributes) {
+ if (level == 1 && element == "item") {
+ JID jid(attributes.getAttribute("jid"));
+ if (jid.isValid()) {
+ GenericPayloadParser<BLOCK_ELEMENT>::getPayloadInternal()->addItem(jid);
+ }
+ }
+ ++level;
+ }
+
+ virtual void handleEndElement(const std::string&, const std::string&) {
+ --level;
+ }
+
+ virtual void handleCharacterData(const std::string&) {
+ }
+
+ private:
+ int level;
+ };
+}