summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2013-08-25 16:39:06 (GMT)
committerRemko Tronçon <git@el-tramo.be>2013-08-27 19:47:48 (GMT)
commit1bb607f96e79845ce30dd5590b0d53cc394ac150 (patch)
tree6156622ddd1b3238aec73536e0dc25b632965a71 /Swiften/Elements
parentc4431ee90f3f1daac0a12b35bfa3378d5c570eaa (diff)
downloadswift-contrib-1bb607f96e79845ce30dd5590b0d53cc394ac150.zip
swift-contrib-1bb607f96e79845ce30dd5590b0d53cc394ac150.tar.bz2
PubSub implementation & Sluift refactoring.
Change-Id: I04ff7111b73565c00bff6db183451774a633344f
Diffstat (limited to 'Swiften/Elements')
-rw-r--r--Swiften/Elements/ContainerPayload.h33
-rw-r--r--Swiften/Elements/Form.h4
-rw-r--r--Swiften/Elements/FormField.cpp1
-rw-r--r--Swiften/Elements/FormField.h4
-rw-r--r--Swiften/Elements/PubSub.cpp15
-rw-r--r--Swiften/Elements/PubSub.h21
-rw-r--r--Swiften/Elements/PubSubAffiliation.cpp15
-rw-r--r--Swiften/Elements/PubSubAffiliation.h53
-rw-r--r--Swiften/Elements/PubSubAffiliations.cpp15
-rw-r--r--Swiften/Elements/PubSubAffiliations.h53
-rw-r--r--Swiften/Elements/PubSubConfigure.cpp15
-rw-r--r--Swiften/Elements/PubSubConfigure.h36
-rw-r--r--Swiften/Elements/PubSubCreate.cpp15
-rw-r--r--Swiften/Elements/PubSubCreate.h47
-rw-r--r--Swiften/Elements/PubSubDefault.cpp15
-rw-r--r--Swiften/Elements/PubSubDefault.h51
-rw-r--r--Swiften/Elements/PubSubError.cpp12
-rw-r--r--Swiften/Elements/PubSubError.h111
-rw-r--r--Swiften/Elements/PubSubEvent.cpp15
-rw-r--r--Swiften/Elements/PubSubEvent.h23
-rw-r--r--Swiften/Elements/PubSubEventAssociate.cpp15
-rw-r--r--Swiften/Elements/PubSubEventAssociate.h36
-rw-r--r--Swiften/Elements/PubSubEventCollection.cpp15
-rw-r--r--Swiften/Elements/PubSubEventCollection.h58
-rw-r--r--Swiften/Elements/PubSubEventConfiguration.cpp15
-rw-r--r--Swiften/Elements/PubSubEventConfiguration.h47
-rw-r--r--Swiften/Elements/PubSubEventDelete.cpp15
-rw-r--r--Swiften/Elements/PubSubEventDelete.h47
-rw-r--r--Swiften/Elements/PubSubEventDisassociate.cpp15
-rw-r--r--Swiften/Elements/PubSubEventDisassociate.h36
-rw-r--r--Swiften/Elements/PubSubEventItem.cpp15
-rw-r--r--Swiften/Elements/PubSubEventItem.h70
-rw-r--r--Swiften/Elements/PubSubEventItems.cpp15
-rw-r--r--Swiften/Elements/PubSubEventItems.h66
-rw-r--r--Swiften/Elements/PubSubEventPayload.cpp12
-rw-r--r--Swiften/Elements/PubSubEventPayload.h17
-rw-r--r--Swiften/Elements/PubSubEventPurge.cpp15
-rw-r--r--Swiften/Elements/PubSubEventPurge.h36
-rw-r--r--Swiften/Elements/PubSubEventRedirect.cpp15
-rw-r--r--Swiften/Elements/PubSubEventRedirect.h36
-rw-r--r--Swiften/Elements/PubSubEventRetract.cpp15
-rw-r--r--Swiften/Elements/PubSubEventRetract.h36
-rw-r--r--Swiften/Elements/PubSubEventSubscription.cpp15
-rw-r--r--Swiften/Elements/PubSubEventSubscription.h81
-rw-r--r--Swiften/Elements/PubSubItem.cpp15
-rw-r--r--Swiften/Elements/PubSubItem.h51
-rw-r--r--Swiften/Elements/PubSubItems.cpp15
-rw-r--r--Swiften/Elements/PubSubItems.h71
-rw-r--r--Swiften/Elements/PubSubOptions.cpp15
-rw-r--r--Swiften/Elements/PubSubOptions.h67
-rw-r--r--Swiften/Elements/PubSubOwnerAffiliation.cpp15
-rw-r--r--Swiften/Elements/PubSubOwnerAffiliation.h53
-rw-r--r--Swiften/Elements/PubSubOwnerAffiliations.cpp15
-rw-r--r--Swiften/Elements/PubSubOwnerAffiliations.h52
-rw-r--r--Swiften/Elements/PubSubOwnerConfigure.cpp15
-rw-r--r--Swiften/Elements/PubSubOwnerConfigure.h48
-rw-r--r--Swiften/Elements/PubSubOwnerDefault.cpp15
-rw-r--r--Swiften/Elements/PubSubOwnerDefault.h37
-rw-r--r--Swiften/Elements/PubSubOwnerDelete.cpp15
-rw-r--r--Swiften/Elements/PubSubOwnerDelete.h47
-rw-r--r--Swiften/Elements/PubSubOwnerPayload.cpp12
-rw-r--r--Swiften/Elements/PubSubOwnerPayload.h17
-rw-r--r--Swiften/Elements/PubSubOwnerPubSub.cpp15
-rw-r--r--Swiften/Elements/PubSubOwnerPubSub.h21
-rw-r--r--Swiften/Elements/PubSubOwnerPurge.cpp15
-rw-r--r--Swiften/Elements/PubSubOwnerPurge.h36
-rw-r--r--Swiften/Elements/PubSubOwnerRedirect.cpp15
-rw-r--r--Swiften/Elements/PubSubOwnerRedirect.h36
-rw-r--r--Swiften/Elements/PubSubOwnerSubscription.cpp15
-rw-r--r--Swiften/Elements/PubSubOwnerSubscription.h51
-rw-r--r--Swiften/Elements/PubSubOwnerSubscriptions.cpp15
-rw-r--r--Swiften/Elements/PubSubOwnerSubscriptions.h52
-rw-r--r--Swiften/Elements/PubSubPayload.cpp12
-rw-r--r--Swiften/Elements/PubSubPayload.h17
-rw-r--r--Swiften/Elements/PubSubPublish.cpp15
-rw-r--r--Swiften/Elements/PubSubPublish.h52
-rw-r--r--Swiften/Elements/PubSubRetract.cpp15
-rw-r--r--Swiften/Elements/PubSubRetract.h61
-rw-r--r--Swiften/Elements/PubSubSubscribe.cpp15
-rw-r--r--Swiften/Elements/PubSubSubscribe.h58
-rw-r--r--Swiften/Elements/PubSubSubscribeOptions.cpp15
-rw-r--r--Swiften/Elements/PubSubSubscribeOptions.h36
-rw-r--r--Swiften/Elements/PubSubSubscription.cpp15
-rw-r--r--Swiften/Elements/PubSubSubscription.h82
-rw-r--r--Swiften/Elements/PubSubSubscriptions.cpp15
-rw-r--r--Swiften/Elements/PubSubSubscriptions.h53
-rw-r--r--Swiften/Elements/PubSubUnsubscribe.cpp15
-rw-r--r--Swiften/Elements/PubSubUnsubscribe.h56
-rw-r--r--Swiften/Elements/UserLocation.cpp15
-rw-r--r--Swiften/Elements/UserLocation.h227
90 files changed, 2916 insertions, 1 deletions
diff --git a/Swiften/Elements/ContainerPayload.h b/Swiften/Elements/ContainerPayload.h
new file mode 100644
index 0000000..e2a4682
--- /dev/null
+++ b/Swiften/Elements/ContainerPayload.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+
+namespace Swift {
+ template<typename T>
+ class SWIFTEN_API ContainerPayload : public Payload {
+ public:
+ ContainerPayload() {}
+ ContainerPayload(boost::shared_ptr<T> payload) : payload(payload) {}
+
+ void setPayload(boost::shared_ptr<T> payload) {
+ this->payload = payload;
+ }
+
+ boost::shared_ptr<T> getPayload() const {
+ return payload;
+ }
+
+ private:
+ boost::shared_ptr<T> payload;
+ };
+}
diff --git a/Swiften/Elements/Form.h b/Swiften/Elements/Form.h
index bd4a2aa..76ed674 100644
--- a/Swiften/Elements/Form.h
+++ b/Swiften/Elements/Form.h
@@ -35,6 +35,7 @@ namespace Swift {
*/
void addField(boost::shared_ptr<FormField> field) {assert(field); fields_.push_back(field); }
const std::vector<boost::shared_ptr<FormField> >& getFields() const { return fields_; }
+ void clearFields() { fields_.clear(); }
void setTitle(const std::string& title) { title_ = title; }
const std::string& getTitle() const { return title_; }
@@ -50,9 +51,12 @@ namespace Swift {
void addReportedField(FormField::ref field);
const std::vector<FormField::ref>& getReportedFields() const;
+ void clearReportedFields() { reportedFields_.clear(); }
void addItem(const FormItem& item);
const std::vector<FormItem>& getItems() const;
+ void clearItems() { items_.clear(); }
+
private:
std::vector<boost::shared_ptr<FormField> > fields_;
std::vector<boost::shared_ptr<FormField> > reportedFields_;
diff --git a/Swiften/Elements/FormField.cpp b/Swiften/Elements/FormField.cpp
index 27ced82..e9e4f77 100644
--- a/Swiften/Elements/FormField.cpp
+++ b/Swiften/Elements/FormField.cpp
@@ -27,7 +27,6 @@ void FormField::setTextMultiValue(const std::string& value) {
}
void FormField::setBoolValue(bool b) {
- assert(type == BooleanType || type == UnknownType);
values.clear();
values.push_back(b ? "1" : "0");
}
diff --git a/Swiften/Elements/FormField.h b/Swiften/Elements/FormField.h
index 26e70bb..f0bebd9 100644
--- a/Swiften/Elements/FormField.h
+++ b/Swiften/Elements/FormField.h
@@ -63,6 +63,10 @@ namespace Swift {
return options;
}
+ void clearOptions() {
+ options.clear();
+ }
+
const std::vector<std::string>& getValues() const {
return values;
}
diff --git a/Swiften/Elements/PubSub.cpp b/Swiften/Elements/PubSub.cpp
new file mode 100644
index 0000000..30a6376
--- /dev/null
+++ b/Swiften/Elements/PubSub.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSub.h>
+
+using namespace Swift;
+
+PubSub::PubSub() {
+}
+
+PubSub::~PubSub() {
+}
diff --git a/Swiften/Elements/PubSub.h b/Swiften/Elements/PubSub.h
new file mode 100644
index 0000000..cd8bf43
--- /dev/null
+++ b/Swiften/Elements/PubSub.h
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/ContainerPayload.h>
+
+#include <Swiften/Elements/PubSubPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSub : public ContainerPayload<PubSubPayload> {
+ public:
+ PubSub();
+ virtual ~PubSub();
+ };
+}
diff --git a/Swiften/Elements/PubSubAffiliation.cpp b/Swiften/Elements/PubSubAffiliation.cpp
new file mode 100644
index 0000000..0b04494
--- /dev/null
+++ b/Swiften/Elements/PubSubAffiliation.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubAffiliation.h>
+
+using namespace Swift;
+
+PubSubAffiliation::PubSubAffiliation() : type(None) {
+}
+
+PubSubAffiliation::~PubSubAffiliation() {
+}
diff --git a/Swiften/Elements/PubSubAffiliation.h b/Swiften/Elements/PubSubAffiliation.h
new file mode 100644
index 0000000..2ea9376
--- /dev/null
+++ b/Swiften/Elements/PubSubAffiliation.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <string>
+
+
+
+namespace Swift {
+ class SWIFTEN_API PubSubAffiliation : public Payload {
+ public:
+ enum Type {
+ None,
+ Member,
+ Outcast,
+ Owner,
+ Publisher,
+ PublishOnly
+ };
+
+ PubSubAffiliation();
+ PubSubAffiliation(const std::string& node) : node(node), type(None) {}
+ virtual ~PubSubAffiliation();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ Type getType() const {
+ return type;
+ }
+
+ void setType(Type value) {
+ this->type = value ;
+ }
+
+
+ private:
+ std::string node;
+ Type type;
+ };
+}
diff --git a/Swiften/Elements/PubSubAffiliations.cpp b/Swiften/Elements/PubSubAffiliations.cpp
new file mode 100644
index 0000000..a53215d
--- /dev/null
+++ b/Swiften/Elements/PubSubAffiliations.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubAffiliations.h>
+
+using namespace Swift;
+
+PubSubAffiliations::PubSubAffiliations() {
+}
+
+PubSubAffiliations::~PubSubAffiliations() {
+}
diff --git a/Swiften/Elements/PubSubAffiliations.h b/Swiften/Elements/PubSubAffiliations.h
new file mode 100644
index 0000000..6a413fe
--- /dev/null
+++ b/Swiften/Elements/PubSubAffiliations.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+#include <string>
+
+#include <Swiften/Elements/PubSubAffiliation.h>
+#include <Swiften/Elements/PubSubPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubAffiliations : public PubSubPayload {
+ public:
+
+ PubSubAffiliations();
+
+ virtual ~PubSubAffiliations();
+
+ const boost::optional< std::string >& getNode() const {
+ return node;
+ }
+
+ void setNode(const boost::optional< std::string >& value) {
+ this->node = value ;
+ }
+
+ const std::vector< boost::shared_ptr<PubSubAffiliation> >& getAffiliations() const {
+ return affiliations;
+ }
+
+ void setAffiliations(const std::vector< boost::shared_ptr<PubSubAffiliation> >& value) {
+ this->affiliations = value ;
+ }
+
+ void addAffiliation(boost::shared_ptr<PubSubAffiliation> value) {
+ this->affiliations.push_back(value);
+ }
+
+
+ private:
+ boost::optional< std::string > node;
+ std::vector< boost::shared_ptr<PubSubAffiliation> > affiliations;
+ };
+}
diff --git a/Swiften/Elements/PubSubConfigure.cpp b/Swiften/Elements/PubSubConfigure.cpp
new file mode 100644
index 0000000..b1a6cb3
--- /dev/null
+++ b/Swiften/Elements/PubSubConfigure.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubConfigure.h>
+
+using namespace Swift;
+
+PubSubConfigure::PubSubConfigure() {
+}
+
+PubSubConfigure::~PubSubConfigure() {
+}
diff --git a/Swiften/Elements/PubSubConfigure.h b/Swiften/Elements/PubSubConfigure.h
new file mode 100644
index 0000000..ed91832
--- /dev/null
+++ b/Swiften/Elements/PubSubConfigure.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+
+#include <Swiften/Elements/Form.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubConfigure : public Payload {
+ public:
+
+ PubSubConfigure();
+
+ virtual ~PubSubConfigure();
+
+ boost::shared_ptr<Form> getData() const {
+ return data;
+ }
+
+ void setData(boost::shared_ptr<Form> value) {
+ this->data = value ;
+ }
+
+
+ private:
+ boost::shared_ptr<Form> data;
+ };
+}
diff --git a/Swiften/Elements/PubSubCreate.cpp b/Swiften/Elements/PubSubCreate.cpp
new file mode 100644
index 0000000..9c60de3
--- /dev/null
+++ b/Swiften/Elements/PubSubCreate.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubCreate.h>
+
+using namespace Swift;
+
+PubSubCreate::PubSubCreate() {
+}
+
+PubSubCreate::~PubSubCreate() {
+}
diff --git a/Swiften/Elements/PubSubCreate.h b/Swiften/Elements/PubSubCreate.h
new file mode 100644
index 0000000..4e4eb92
--- /dev/null
+++ b/Swiften/Elements/PubSubCreate.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+#include <string>
+
+#include <Swiften/Elements/PubSubConfigure.h>
+#include <Swiften/Elements/PubSubPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubCreate : public PubSubPayload {
+ public:
+
+ PubSubCreate();
+ PubSubCreate(const std::string& node) : node(node) {}
+ virtual ~PubSubCreate();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ boost::shared_ptr<PubSubConfigure> getConfigure() const {
+ return configure;
+ }
+
+ void setConfigure(boost::shared_ptr<PubSubConfigure> value) {
+ this->configure = value ;
+ }
+
+
+ private:
+ std::string node;
+ boost::shared_ptr<PubSubConfigure> configure;
+ };
+}
diff --git a/Swiften/Elements/PubSubDefault.cpp b/Swiften/Elements/PubSubDefault.cpp
new file mode 100644
index 0000000..923d0ad
--- /dev/null
+++ b/Swiften/Elements/PubSubDefault.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubDefault.h>
+
+using namespace Swift;
+
+PubSubDefault::PubSubDefault() : type(None) {
+}
+
+PubSubDefault::~PubSubDefault() {
+}
diff --git a/Swiften/Elements/PubSubDefault.h b/Swiften/Elements/PubSubDefault.h
new file mode 100644
index 0000000..08326e7
--- /dev/null
+++ b/Swiften/Elements/PubSubDefault.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <string>
+
+#include <Swiften/Elements/PubSubPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubDefault : public PubSubPayload {
+ public:
+ enum Type {
+ None,
+ Collection,
+ Leaf
+ };
+
+ PubSubDefault();
+
+ virtual ~PubSubDefault();
+
+ const boost::optional< std::string >& getNode() const {
+ return node;
+ }
+
+ void setNode(const boost::optional< std::string >& value) {
+ this->node = value ;
+ }
+
+ Type getType() const {
+ return type;
+ }
+
+ void setType(Type value) {
+ this->type = value ;
+ }
+
+
+ private:
+ boost::optional< std::string > node;
+ Type type;
+ };
+}
diff --git a/Swiften/Elements/PubSubError.cpp b/Swiften/Elements/PubSubError.cpp
new file mode 100644
index 0000000..db07972
--- /dev/null
+++ b/Swiften/Elements/PubSubError.cpp
@@ -0,0 +1,12 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubError.h>
+
+using namespace Swift;
+
+PubSubError::~PubSubError() {
+}
diff --git a/Swiften/Elements/PubSubError.h b/Swiften/Elements/PubSubError.h
new file mode 100644
index 0000000..3748e44
--- /dev/null
+++ b/Swiften/Elements/PubSubError.h
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Elements/Payload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubError : public Payload {
+ public:
+ enum Type {
+ UnknownType = 0,
+ ClosedNode,
+ ConfigurationRequired,
+ InvalidJID,
+ InvalidOptions,
+ InvalidPayload,
+ InvalidSubscriptionID,
+ ItemForbidden,
+ ItemRequired,
+ JIDRequired,
+ MaximumItemsExceeded,
+ MaximumNodesExceeded,
+ NodeIDRequired,
+ NotInRosterGroup,
+ NotSubscribed,
+ PayloadTooBig,
+ PayloadRequired,
+ PendingSubscription,
+ PresenceSubscriptionRequired,
+ SubscriptionIDRequired,
+ TooManySubscriptions,
+ Unsupported,
+ UnsupportedAccessModel
+ };
+
+ enum UnsupportedFeatureType {
+ UnknownUnsupportedFeatureType = 0,
+ AccessAuthorize,
+ AccessOpen,
+ AccessPresence,
+ AccessRoster,
+ AccessWhitelist,
+ AutoCreate,
+ AutoSubscribe,
+ Collections,
+ ConfigNode,
+ CreateAndConfigure,
+ CreateNodes,
+ DeleteItems,
+ DeleteNodes,
+ FilteredNotifications,
+ GetPending,
+ InstantNodes,
+ ItemIDs,
+ LastPublished,
+ LeasedSubscription,
+ ManageSubscriptions,
+ MemberAffiliation,
+ MetaData,
+ ModifyAffiliations,
+ MultiCollection,
+ MultiSubscribe,
+ OutcastAffiliation,
+ PersistentItems,
+ PresenceNotifications,
+ PresenceSubscribe,
+ Publish,
+ PublishOptions,
+ PublishOnlyAffiliation,
+ PublisherAffiliation,
+ PurgeNodes,
+ RetractItems,
+ RetrieveAffiliations,
+ RetrieveDefault,
+ RetrieveItems,
+ RetrieveSubscriptions,
+ Subscribe,
+ SubscriptionOptions,
+ SubscriptionNotifications
+ };
+
+ PubSubError(Type type = UnknownType) : type(type), unsupportedType(UnknownUnsupportedFeatureType) {
+ }
+
+ virtual ~PubSubError();
+
+ Type getType() const {
+ return type;
+ }
+
+ void setType(Type type) {
+ this->type = type;
+ }
+
+ UnsupportedFeatureType getUnsupportedFeatureType() const {
+ return unsupportedType;
+ }
+
+ void setUnsupportedFeatureType(UnsupportedFeatureType unsupportedType) {
+ this->unsupportedType = unsupportedType;
+ }
+
+ private:
+ Type type;
+ UnsupportedFeatureType unsupportedType;
+ };
+}
diff --git a/Swiften/Elements/PubSubEvent.cpp b/Swiften/Elements/PubSubEvent.cpp
new file mode 100644
index 0000000..1b63134
--- /dev/null
+++ b/Swiften/Elements/PubSubEvent.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEvent.h>
+
+using namespace Swift;
+
+PubSubEvent::PubSubEvent() {
+}
+
+PubSubEvent::~PubSubEvent() {
+}
diff --git a/Swiften/Elements/PubSubEvent.h b/Swiften/Elements/PubSubEvent.h
new file mode 100644
index 0000000..9ef6d89
--- /dev/null
+++ b/Swiften/Elements/PubSubEvent.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+
+#include <Swiften/Elements/ContainerPayload.h>
+#include <Swiften/Elements/PubSubEventPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubEvent : public ContainerPayload<PubSubEventPayload> {
+ public:
+ PubSubEvent();
+ virtual ~PubSubEvent();
+ };
+}
diff --git a/Swiften/Elements/PubSubEventAssociate.cpp b/Swiften/Elements/PubSubEventAssociate.cpp
new file mode 100644
index 0000000..cb81b46
--- /dev/null
+++ b/Swiften/Elements/PubSubEventAssociate.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEventAssociate.h>
+
+using namespace Swift;
+
+PubSubEventAssociate::PubSubEventAssociate() {
+}
+
+PubSubEventAssociate::~PubSubEventAssociate() {
+}
diff --git a/Swiften/Elements/PubSubEventAssociate.h b/Swiften/Elements/PubSubEventAssociate.h
new file mode 100644
index 0000000..a752345
--- /dev/null
+++ b/Swiften/Elements/PubSubEventAssociate.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <string>
+
+
+
+namespace Swift {
+ class SWIFTEN_API PubSubEventAssociate : public Payload {
+ public:
+
+ PubSubEventAssociate();
+
+ virtual ~PubSubEventAssociate();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+
+ private:
+ std::string node;
+ };
+}
diff --git a/Swiften/Elements/PubSubEventCollection.cpp b/Swiften/Elements/PubSubEventCollection.cpp
new file mode 100644
index 0000000..a8b2a56
--- /dev/null
+++ b/Swiften/Elements/PubSubEventCollection.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEventCollection.h>
+
+using namespace Swift;
+
+PubSubEventCollection::PubSubEventCollection() {
+}
+
+PubSubEventCollection::~PubSubEventCollection() {
+}
diff --git a/Swiften/Elements/PubSubEventCollection.h b/Swiften/Elements/PubSubEventCollection.h
new file mode 100644
index 0000000..e4498aa
--- /dev/null
+++ b/Swiften/Elements/PubSubEventCollection.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <boost/shared_ptr.hpp>
+#include <string>
+
+#include <Swiften/Elements/PubSubEventDisassociate.h>
+#include <Swiften/Elements/PubSubEventAssociate.h>
+#include <Swiften/Elements/PubSubEventPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubEventCollection : public PubSubEventPayload {
+ public:
+
+ PubSubEventCollection();
+
+ virtual ~PubSubEventCollection();
+
+ const boost::optional< std::string >& getNode() const {
+ return node;
+ }
+
+ void setNode(const boost::optional< std::string >& value) {
+ this->node = value ;
+ }
+
+ boost::shared_ptr<PubSubEventDisassociate> getDisassociate() const {
+ return disassociate;
+ }
+
+ void setDisassociate(boost::shared_ptr<PubSubEventDisassociate> value) {
+ this->disassociate = value ;
+ }
+
+ boost::shared_ptr<PubSubEventAssociate> getAssociate() const {
+ return associate;
+ }
+
+ void setAssociate(boost::shared_ptr<PubSubEventAssociate> value) {
+ this->associate = value ;
+ }
+
+
+ private:
+ boost::optional< std::string > node;
+ boost::shared_ptr<PubSubEventDisassociate> disassociate;
+ boost::shared_ptr<PubSubEventAssociate> associate;
+ };
+}
diff --git a/Swiften/Elements/PubSubEventConfiguration.cpp b/Swiften/Elements/PubSubEventConfiguration.cpp
new file mode 100644
index 0000000..93ce6a3
--- /dev/null
+++ b/Swiften/Elements/PubSubEventConfiguration.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEventConfiguration.h>
+
+using namespace Swift;
+
+PubSubEventConfiguration::PubSubEventConfiguration() {
+}
+
+PubSubEventConfiguration::~PubSubEventConfiguration() {
+}
diff --git a/Swiften/Elements/PubSubEventConfiguration.h b/Swiften/Elements/PubSubEventConfiguration.h
new file mode 100644
index 0000000..7ebfce1
--- /dev/null
+++ b/Swiften/Elements/PubSubEventConfiguration.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+#include <string>
+
+#include <Swiften/Elements/Form.h>
+#include <Swiften/Elements/PubSubEventPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubEventConfiguration : public PubSubEventPayload {
+ public:
+
+ PubSubEventConfiguration();
+
+ virtual ~PubSubEventConfiguration();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ boost::shared_ptr<Form> getData() const {
+ return data;
+ }
+
+ void setData(boost::shared_ptr<Form> value) {
+ this->data = value ;
+ }
+
+
+ private:
+ std::string node;
+ boost::shared_ptr<Form> data;
+ };
+}
diff --git a/Swiften/Elements/PubSubEventDelete.cpp b/Swiften/Elements/PubSubEventDelete.cpp
new file mode 100644
index 0000000..85bbf2e
--- /dev/null
+++ b/Swiften/Elements/PubSubEventDelete.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEventDelete.h>
+
+using namespace Swift;
+
+PubSubEventDelete::PubSubEventDelete() {
+}
+
+PubSubEventDelete::~PubSubEventDelete() {
+}
diff --git a/Swiften/Elements/PubSubEventDelete.h b/Swiften/Elements/PubSubEventDelete.h
new file mode 100644
index 0000000..fecfb0e
--- /dev/null
+++ b/Swiften/Elements/PubSubEventDelete.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+#include <string>
+
+#include <Swiften/Elements/PubSubEventRedirect.h>
+#include <Swiften/Elements/PubSubEventPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubEventDelete : public PubSubEventPayload {
+ public:
+
+ PubSubEventDelete();
+
+ virtual ~PubSubEventDelete();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ boost::shared_ptr<PubSubEventRedirect> getRedirects() const {
+ return redirects;
+ }
+
+ void setRedirects(boost::shared_ptr<PubSubEventRedirect> value) {
+ this->redirects = value ;
+ }
+
+
+ private:
+ std::string node;
+ boost::shared_ptr<PubSubEventRedirect> redirects;
+ };
+}
diff --git a/Swiften/Elements/PubSubEventDisassociate.cpp b/Swiften/Elements/PubSubEventDisassociate.cpp
new file mode 100644
index 0000000..55e1c4e
--- /dev/null
+++ b/Swiften/Elements/PubSubEventDisassociate.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEventDisassociate.h>
+
+using namespace Swift;
+
+PubSubEventDisassociate::PubSubEventDisassociate() {
+}
+
+PubSubEventDisassociate::~PubSubEventDisassociate() {
+}
diff --git a/Swiften/Elements/PubSubEventDisassociate.h b/Swiften/Elements/PubSubEventDisassociate.h
new file mode 100644
index 0000000..cad9843
--- /dev/null
+++ b/Swiften/Elements/PubSubEventDisassociate.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <string>
+
+
+
+namespace Swift {
+ class SWIFTEN_API PubSubEventDisassociate : public Payload {
+ public:
+
+ PubSubEventDisassociate();
+
+ virtual ~PubSubEventDisassociate();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+
+ private:
+ std::string node;
+ };
+}
diff --git a/Swiften/Elements/PubSubEventItem.cpp b/Swiften/Elements/PubSubEventItem.cpp
new file mode 100644
index 0000000..6bb3823
--- /dev/null
+++ b/Swiften/Elements/PubSubEventItem.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEventItem.h>
+
+using namespace Swift;
+
+PubSubEventItem::PubSubEventItem() {
+}
+
+PubSubEventItem::~PubSubEventItem() {
+}
diff --git a/Swiften/Elements/PubSubEventItem.h b/Swiften/Elements/PubSubEventItem.h
new file mode 100644
index 0000000..25ebc82
--- /dev/null
+++ b/Swiften/Elements/PubSubEventItem.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+#include <string>
+
+#include <Swiften/Elements/Payload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubEventItem : public Payload {
+ public:
+
+ PubSubEventItem();
+
+ virtual ~PubSubEventItem();
+
+ const boost::optional< std::string >& getNode() const {
+ return node;
+ }
+
+ void setNode(const boost::optional< std::string >& value) {
+ this->node = value ;
+ }
+
+ const boost::optional< std::string >& getPublisher() const {
+ return publisher;
+ }
+
+ void setPublisher(const boost::optional< std::string >& value) {
+ this->publisher = value ;
+ }
+
+ const std::vector< boost::shared_ptr<Payload> >& getData() const {
+ return data;
+ }
+
+ void setData(const std::vector< boost::shared_ptr<Payload> >& value) {
+ this->data = value ;
+ }
+
+ void addData(boost::shared_ptr<Payload> value) {
+ this->data.push_back(value);
+ }
+
+ const boost::optional< std::string >& getID() const {
+ return id;
+ }
+
+ void setID(const boost::optional< std::string >& value) {
+ this->id = value ;
+ }
+
+
+ private:
+ boost::optional< std::string > node;
+ boost::optional< std::string > publisher;
+ std::vector< boost::shared_ptr<Payload> > data;
+ boost::optional< std::string > id;
+ };
+}
diff --git a/Swiften/Elements/PubSubEventItems.cpp b/Swiften/Elements/PubSubEventItems.cpp
new file mode 100644
index 0000000..01f3429
--- /dev/null
+++ b/Swiften/Elements/PubSubEventItems.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEventItems.h>
+
+using namespace Swift;
+
+PubSubEventItems::PubSubEventItems() {
+}
+
+PubSubEventItems::~PubSubEventItems() {
+}
diff --git a/Swiften/Elements/PubSubEventItems.h b/Swiften/Elements/PubSubEventItems.h
new file mode 100644
index 0000000..a121728
--- /dev/null
+++ b/Swiften/Elements/PubSubEventItems.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+#include <string>
+
+#include <Swiften/Elements/PubSubEventItem.h>
+#include <Swiften/Elements/PubSubEventRetract.h>
+#include <Swiften/Elements/PubSubEventPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubEventItems : public PubSubEventPayload {
+ public:
+
+ PubSubEventItems();
+
+ virtual ~PubSubEventItems();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ const std::vector< boost::shared_ptr<PubSubEventItem> >& getItems() const {
+ return items;
+ }
+
+ void setItems(const std::vector< boost::shared_ptr<PubSubEventItem> >& value) {
+ this->items = value ;
+ }
+
+ void addItem(boost::shared_ptr<PubSubEventItem> value) {
+ this->items.push_back(value);
+ }
+
+ const std::vector< boost::shared_ptr<PubSubEventRetract> >& getRetracts() const {
+ return retracts;
+ }
+
+ void setRetracts(const std::vector< boost::shared_ptr<PubSubEventRetract> >& value) {
+ this->retracts = value ;
+ }
+
+ void addRetract(boost::shared_ptr<PubSubEventRetract> value) {
+ this->retracts.push_back(value);
+ }
+
+
+ private:
+ std::string node;
+ std::vector< boost::shared_ptr<PubSubEventItem> > items;
+ std::vector< boost::shared_ptr<PubSubEventRetract> > retracts;
+ };
+}
diff --git a/Swiften/Elements/PubSubEventPayload.cpp b/Swiften/Elements/PubSubEventPayload.cpp
new file mode 100644
index 0000000..0019942
--- /dev/null
+++ b/Swiften/Elements/PubSubEventPayload.cpp
@@ -0,0 +1,12 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEventPayload.h>
+
+using namespace Swift;
+
+PubSubEventPayload::~PubSubEventPayload() {
+}
diff --git a/Swiften/Elements/PubSubEventPayload.h b/Swiften/Elements/PubSubEventPayload.h
new file mode 100644
index 0000000..81fb9a8
--- /dev/null
+++ b/Swiften/Elements/PubSubEventPayload.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubEventPayload : public Payload {
+ public:
+ virtual ~PubSubEventPayload();
+ };
+}
diff --git a/Swiften/Elements/PubSubEventPurge.cpp b/Swiften/Elements/PubSubEventPurge.cpp
new file mode 100644
index 0000000..3fd77ed
--- /dev/null
+++ b/Swiften/Elements/PubSubEventPurge.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEventPurge.h>
+
+using namespace Swift;
+
+PubSubEventPurge::PubSubEventPurge() {
+}
+
+PubSubEventPurge::~PubSubEventPurge() {
+}
diff --git a/Swiften/Elements/PubSubEventPurge.h b/Swiften/Elements/PubSubEventPurge.h
new file mode 100644
index 0000000..5f04049
--- /dev/null
+++ b/Swiften/Elements/PubSubEventPurge.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <string>
+
+#include <Swiften/Elements/PubSubEventPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubEventPurge : public PubSubEventPayload {
+ public:
+
+ PubSubEventPurge();
+
+ virtual ~PubSubEventPurge();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+
+ private:
+ std::string node;
+ };
+}
diff --git a/Swiften/Elements/PubSubEventRedirect.cpp b/Swiften/Elements/PubSubEventRedirect.cpp
new file mode 100644
index 0000000..adde8bc
--- /dev/null
+++ b/Swiften/Elements/PubSubEventRedirect.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEventRedirect.h>
+
+using namespace Swift;
+
+PubSubEventRedirect::PubSubEventRedirect() {
+}
+
+PubSubEventRedirect::~PubSubEventRedirect() {
+}
diff --git a/Swiften/Elements/PubSubEventRedirect.h b/Swiften/Elements/PubSubEventRedirect.h
new file mode 100644
index 0000000..918c7f4
--- /dev/null
+++ b/Swiften/Elements/PubSubEventRedirect.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <string>
+
+
+
+namespace Swift {
+ class SWIFTEN_API PubSubEventRedirect : public Payload {
+ public:
+
+ PubSubEventRedirect();
+
+ virtual ~PubSubEventRedirect();
+
+ const std::string& getURI() const {
+ return uri;
+ }
+
+ void setURI(const std::string& value) {
+ this->uri = value ;
+ }
+
+
+ private:
+ std::string uri;
+ };
+}
diff --git a/Swiften/Elements/PubSubEventRetract.cpp b/Swiften/Elements/PubSubEventRetract.cpp
new file mode 100644
index 0000000..bb3ebb1
--- /dev/null
+++ b/Swiften/Elements/PubSubEventRetract.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEventRetract.h>
+
+using namespace Swift;
+
+PubSubEventRetract::PubSubEventRetract() {
+}
+
+PubSubEventRetract::~PubSubEventRetract() {
+}
diff --git a/Swiften/Elements/PubSubEventRetract.h b/Swiften/Elements/PubSubEventRetract.h
new file mode 100644
index 0000000..3c2d9c4
--- /dev/null
+++ b/Swiften/Elements/PubSubEventRetract.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <string>
+
+
+
+namespace Swift {
+ class SWIFTEN_API PubSubEventRetract : public Payload {
+ public:
+
+ PubSubEventRetract();
+
+ virtual ~PubSubEventRetract();
+
+ const std::string& getID() const {
+ return id;
+ }
+
+ void setID(const std::string& value) {
+ this->id = value ;
+ }
+
+
+ private:
+ std::string id;
+ };
+}
diff --git a/Swiften/Elements/PubSubEventSubscription.cpp b/Swiften/Elements/PubSubEventSubscription.cpp
new file mode 100644
index 0000000..fb069f9
--- /dev/null
+++ b/Swiften/Elements/PubSubEventSubscription.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubEventSubscription.h>
+
+using namespace Swift;
+
+PubSubEventSubscription::PubSubEventSubscription() : subscription(None) {
+}
+
+PubSubEventSubscription::~PubSubEventSubscription() {
+}
diff --git a/Swiften/Elements/PubSubEventSubscription.h b/Swiften/Elements/PubSubEventSubscription.h
new file mode 100644
index 0000000..b74d4f5
--- /dev/null
+++ b/Swiften/Elements/PubSubEventSubscription.h
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <string>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+
+#include <Swiften/JID/JID.h>
+#include <Swiften/Elements/PubSubEventPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubEventSubscription : public PubSubEventPayload {
+ public:
+ enum SubscriptionType {
+ None,
+ Pending,
+ Subscribed,
+ Unconfigured
+ };
+
+ PubSubEventSubscription();
+
+ virtual ~PubSubEventSubscription();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ const JID& getJID() const {
+ return jid;
+ }
+
+ void setJID(const JID& value) {
+ this->jid = value ;
+ }
+
+ SubscriptionType getSubscription() const {
+ return subscription;
+ }
+
+ void setSubscription(SubscriptionType value) {
+ this->subscription = value ;
+ }
+
+ const boost::optional< std::string >& getSubscriptionID() const {
+ return subscriptionID;
+ }
+
+ void setSubscriptionID(const boost::optional< std::string >& value) {
+ this->subscriptionID = value ;
+ }
+
+ const boost::posix_time::ptime& getExpiry() const {
+ return expiry;
+ }
+
+ void setExpiry(const boost::posix_time::ptime& value) {
+ this->expiry = value ;
+ }
+
+
+ private:
+ std::string node;
+ JID jid;
+ SubscriptionType subscription;
+ boost::optional< std::string > subscriptionID;
+ boost::posix_time::ptime expiry;
+ };
+}
diff --git a/Swiften/Elements/PubSubItem.cpp b/Swiften/Elements/PubSubItem.cpp
new file mode 100644
index 0000000..ae6206f
--- /dev/null
+++ b/Swiften/Elements/PubSubItem.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubItem.h>
+
+using namespace Swift;
+
+PubSubItem::PubSubItem() {
+}
+
+PubSubItem::~PubSubItem() {
+}
diff --git a/Swiften/Elements/PubSubItem.h b/Swiften/Elements/PubSubItem.h
new file mode 100644
index 0000000..93ff03a
--- /dev/null
+++ b/Swiften/Elements/PubSubItem.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+#include <string>
+
+#include <Swiften/Elements/Payload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubItem : public Payload {
+ public:
+
+ PubSubItem();
+
+ virtual ~PubSubItem();
+
+ const std::vector< boost::shared_ptr<Payload> >& getData() const {
+ return data;
+ }
+
+ void setData(const std::vector< boost::shared_ptr<Payload> >& value) {
+ this->data = value ;
+ }
+
+ void addData(boost::shared_ptr<Payload> value) {
+ this->data.push_back(value);
+ }
+
+ const std::string& getID() const {
+ return id;
+ }
+
+ void setID(const std::string& value) {
+ this->id = value ;
+ }
+
+
+ private:
+ std::vector< boost::shared_ptr<Payload> > data;
+ std::string id;
+ };
+}
diff --git a/Swiften/Elements/PubSubItems.cpp b/Swiften/Elements/PubSubItems.cpp
new file mode 100644
index 0000000..f235e11
--- /dev/null
+++ b/Swiften/Elements/PubSubItems.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubItems.h>
+
+using namespace Swift;
+
+PubSubItems::PubSubItems() {
+}
+
+PubSubItems::~PubSubItems() {
+}
diff --git a/Swiften/Elements/PubSubItems.h b/Swiften/Elements/PubSubItems.h
new file mode 100644
index 0000000..7cd279b
--- /dev/null
+++ b/Swiften/Elements/PubSubItems.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+#include <string>
+
+#include <Swiften/Elements/PubSubItem.h>
+#include <Swiften/Elements/PubSubPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubItems : public PubSubPayload {
+ public:
+
+ PubSubItems();
+ PubSubItems(const std::string& node) : node(node) {}
+ virtual ~PubSubItems();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ const std::vector< boost::shared_ptr<PubSubItem> >& getItems() const {
+ return items;
+ }
+
+ void setItems(const std::vector< boost::shared_ptr<PubSubItem> >& value) {
+ this->items = value ;
+ }
+
+ void addItem(boost::shared_ptr<PubSubItem> value) {
+ this->items.push_back(value);
+ }
+
+ const boost::optional< unsigned int >& getMaximumItems() const {
+ return maximumItems;
+ }
+
+ void setMaximumItems(const boost::optional< unsigned int >& value) {
+ this->maximumItems = value ;
+ }
+
+ const boost::optional< std::string >& getSubscriptionID() const {
+ return subscriptionID;
+ }
+
+ void setSubscriptionID(const boost::optional< std::string >& value) {
+ this->subscriptionID = value ;
+ }
+
+
+ private:
+ std::string node;
+ std::vector< boost::shared_ptr<PubSubItem> > items;
+ boost::optional< unsigned int > maximumItems;
+ boost::optional< std::string > subscriptionID;
+ };
+}
diff --git a/Swiften/Elements/PubSubOptions.cpp b/Swiften/Elements/PubSubOptions.cpp
new file mode 100644
index 0000000..22c4054
--- /dev/null
+++ b/Swiften/Elements/PubSubOptions.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubOptions.h>
+
+using namespace Swift;
+
+PubSubOptions::PubSubOptions() {
+}
+
+PubSubOptions::~PubSubOptions() {
+}
diff --git a/Swiften/Elements/PubSubOptions.h b/Swiften/Elements/PubSubOptions.h
new file mode 100644
index 0000000..0e9483e
--- /dev/null
+++ b/Swiften/Elements/PubSubOptions.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <boost/shared_ptr.hpp>
+#include <string>
+
+#include <Swiften/Elements/Form.h>
+#include <Swiften/Elements/PubSubPayload.h>
+#include <Swiften/JID/JID.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubOptions : public PubSubPayload {
+ public:
+
+ PubSubOptions();
+
+ virtual ~PubSubOptions();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ const JID& getJID() const {
+ return jid;
+ }
+
+ void setJID(const JID& value) {
+ this->jid = value ;
+ }
+
+ boost::shared_ptr<Form> getData() const {
+ return data;
+ }
+
+ void setData(boost::shared_ptr<Form> value) {
+ this->data = value ;
+ }
+
+ const boost::optional< std::string >& getSubscriptionID() const {
+ return subscriptionID;
+ }
+
+ void setSubscriptionID(const boost::optional< std::string >& value) {
+ this->subscriptionID = value ;
+ }
+
+
+ private:
+ std::string node;
+ JID jid;
+ boost::shared_ptr<Form> data;
+ boost::optional< std::string > subscriptionID;
+ };
+}
diff --git a/Swiften/Elements/PubSubOwnerAffiliation.cpp b/Swiften/Elements/PubSubOwnerAffiliation.cpp
new file mode 100644
index 0000000..8dc8be6
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerAffiliation.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubOwnerAffiliation.h>
+
+using namespace Swift;
+
+PubSubOwnerAffiliation::PubSubOwnerAffiliation() : type(None) {
+}
+
+PubSubOwnerAffiliation::~PubSubOwnerAffiliation() {
+}
diff --git a/Swiften/Elements/PubSubOwnerAffiliation.h b/Swiften/Elements/PubSubOwnerAffiliation.h
new file mode 100644
index 0000000..68851d3
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerAffiliation.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+
+
+#include <Swiften/JID/JID.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubOwnerAffiliation : public Payload {
+ public:
+ enum Type {
+ None,
+ Member,
+ Outcast,
+ Owner,
+ Publisher,
+ PublishOnly
+ };
+
+ PubSubOwnerAffiliation();
+
+ virtual ~PubSubOwnerAffiliation();
+
+ const JID& getJID() const {
+ return jid;
+ }
+
+ void setJID(const JID& value) {
+ this->jid = value ;
+ }
+
+ Type getType() const {
+ return type;
+ }
+
+ void setType(Type value) {
+ this->type = value ;
+ }
+
+
+ private:
+ JID jid;
+ Type type;
+ };
+}
diff --git a/Swiften/Elements/PubSubOwnerAffiliations.cpp b/Swiften/Elements/PubSubOwnerAffiliations.cpp
new file mode 100644
index 0000000..b87a78a
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerAffiliations.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubOwnerAffiliations.h>
+
+using namespace Swift;
+
+PubSubOwnerAffiliations::PubSubOwnerAffiliations() {
+}
+
+PubSubOwnerAffiliations::~PubSubOwnerAffiliations() {
+}
diff --git a/Swiften/Elements/PubSubOwnerAffiliations.h b/Swiften/Elements/PubSubOwnerAffiliations.h
new file mode 100644
index 0000000..75578df
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerAffiliations.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+#include <string>
+
+#include <Swiften/Elements/PubSubOwnerPayload.h>
+#include <Swiften/Elements/PubSubOwnerAffiliation.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubOwnerAffiliations : public PubSubOwnerPayload {
+ public:
+
+ PubSubOwnerAffiliations();
+
+ virtual ~PubSubOwnerAffiliations();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ const std::vector< boost::shared_ptr<PubSubOwnerAffiliation> >& getAffiliations() const {
+ return affiliations;
+ }
+
+ void setAffiliations(const std::vector< boost::shared_ptr<PubSubOwnerAffiliation> >& value) {
+ this->affiliations = value ;
+ }
+
+ void addAffiliation(boost::shared_ptr<PubSubOwnerAffiliation> value) {
+ this->affiliations.push_back(value);
+ }
+
+
+ private:
+ std::string node;
+ std::vector< boost::shared_ptr<PubSubOwnerAffiliation> > affiliations;
+ };
+}
diff --git a/Swiften/Elements/PubSubOwnerConfigure.cpp b/Swiften/Elements/PubSubOwnerConfigure.cpp
new file mode 100644
index 0000000..8db923d
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerConfigure.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubOwnerConfigure.h>
+
+using namespace Swift;
+
+PubSubOwnerConfigure::PubSubOwnerConfigure() {
+}
+
+PubSubOwnerConfigure::~PubSubOwnerConfigure() {
+}
diff --git a/Swiften/Elements/PubSubOwnerConfigure.h b/Swiften/Elements/PubSubOwnerConfigure.h
new file mode 100644
index 0000000..d882ec4
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerConfigure.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <boost/shared_ptr.hpp>
+#include <string>
+
+#include <Swiften/Elements/PubSubOwnerPayload.h>
+#include <Swiften/Elements/Form.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubOwnerConfigure : public PubSubOwnerPayload {
+ public:
+
+ PubSubOwnerConfigure();
+ PubSubOwnerConfigure(const std::string& node) : node(node) {}
+ virtual ~PubSubOwnerConfigure();
+
+ const boost::optional< std::string >& getNode() const {
+ return node;
+ }
+
+ void setNode(const boost::optional< std::string >& value) {
+ this->node = value ;
+ }
+
+ boost::shared_ptr<Form> getData() const {
+ return data;
+ }
+
+ void setData(boost::shared_ptr<Form> value) {
+ this->data = value ;
+ }
+
+
+ private:
+ boost::optional< std::string > node;
+ boost::shared_ptr<Form> data;
+ };
+}
diff --git a/Swiften/Elements/PubSubOwnerDefault.cpp b/Swiften/Elements/PubSubOwnerDefault.cpp
new file mode 100644
index 0000000..ebb51a7
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerDefault.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubOwnerDefault.h>
+
+using namespace Swift;
+
+PubSubOwnerDefault::PubSubOwnerDefault() {
+}
+
+PubSubOwnerDefault::~PubSubOwnerDefault() {
+}
diff --git a/Swiften/Elements/PubSubOwnerDefault.h b/Swiften/Elements/PubSubOwnerDefault.h
new file mode 100644
index 0000000..1dbd3a2
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerDefault.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+
+#include <Swiften/Elements/PubSubOwnerPayload.h>
+#include <Swiften/Elements/Form.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubOwnerDefault : public PubSubOwnerPayload {
+ public:
+
+ PubSubOwnerDefault();
+
+ virtual ~PubSubOwnerDefault();
+
+ boost::shared_ptr<Form> getData() const {
+ return data;
+ }
+
+ void setData(boost::shared_ptr<Form> value) {
+ this->data = value ;
+ }
+
+
+ private:
+ boost::shared_ptr<Form> data;
+ };
+}
diff --git a/Swiften/Elements/PubSubOwnerDelete.cpp b/Swiften/Elements/PubSubOwnerDelete.cpp
new file mode 100644
index 0000000..a785424
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerDelete.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubOwnerDelete.h>
+
+using namespace Swift;
+
+PubSubOwnerDelete::PubSubOwnerDelete() {
+}
+
+PubSubOwnerDelete::~PubSubOwnerDelete() {
+}
diff --git a/Swiften/Elements/PubSubOwnerDelete.h b/Swiften/Elements/PubSubOwnerDelete.h
new file mode 100644
index 0000000..c6bb3e9
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerDelete.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+#include <string>
+
+#include <Swiften/Elements/PubSubOwnerPayload.h>
+#include <Swiften/Elements/PubSubOwnerRedirect.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubOwnerDelete : public PubSubOwnerPayload {
+ public:
+
+ PubSubOwnerDelete();
+ PubSubOwnerDelete(const std::string& node) : node(node) {}
+ virtual ~PubSubOwnerDelete();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ boost::shared_ptr<PubSubOwnerRedirect> getRedirect() const {
+ return redirect;
+ }
+
+ void setRedirect(boost::shared_ptr<PubSubOwnerRedirect> value) {
+ this->redirect = value ;
+ }
+
+
+ private:
+ std::string node;
+ boost::shared_ptr<PubSubOwnerRedirect> redirect;
+ };
+}
diff --git a/Swiften/Elements/PubSubOwnerPayload.cpp b/Swiften/Elements/PubSubOwnerPayload.cpp
new file mode 100644
index 0000000..92c1dd2
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerPayload.cpp
@@ -0,0 +1,12 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubOwnerPayload.h>
+
+using namespace Swift;
+
+PubSubOwnerPayload::~PubSubOwnerPayload() {
+}
diff --git a/Swiften/Elements/PubSubOwnerPayload.h b/Swiften/Elements/PubSubOwnerPayload.h
new file mode 100644
index 0000000..a2ddaaa
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerPayload.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubOwnerPayload : public Payload {
+ public:
+ virtual ~PubSubOwnerPayload();
+ };
+}
diff --git a/Swiften/Elements/PubSubOwnerPubSub.cpp b/Swiften/Elements/PubSubOwnerPubSub.cpp
new file mode 100644
index 0000000..022452d
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerPubSub.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubOwnerPubSub.h>
+
+using namespace Swift;
+
+PubSubOwnerPubSub::PubSubOwnerPubSub() {
+}
+
+PubSubOwnerPubSub::~PubSubOwnerPubSub() {
+}
diff --git a/Swiften/Elements/PubSubOwnerPubSub.h b/Swiften/Elements/PubSubOwnerPubSub.h
new file mode 100644
index 0000000..dd72abe
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerPubSub.h
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/ContainerPayload.h>
+
+#include <Swiften/Elements/PubSubOwnerPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubOwnerPubSub : public ContainerPayload<PubSubOwnerPayload> {
+ public:
+ PubSubOwnerPubSub();
+ virtual ~PubSubOwnerPubSub();
+ };
+}
diff --git a/Swiften/Elements/PubSubOwnerPurge.cpp b/Swiften/Elements/PubSubOwnerPurge.cpp
new file mode 100644
index 0000000..d0ac57d
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerPurge.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubOwnerPurge.h>
+
+using namespace Swift;
+
+PubSubOwnerPurge::PubSubOwnerPurge() {
+}
+
+PubSubOwnerPurge::~PubSubOwnerPurge() {
+}
diff --git a/Swiften/Elements/PubSubOwnerPurge.h b/Swiften/Elements/PubSubOwnerPurge.h
new file mode 100644
index 0000000..fc410f8
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerPurge.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <string>
+
+#include <Swiften/Elements/PubSubOwnerPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubOwnerPurge : public PubSubOwnerPayload {
+ public:
+
+ PubSubOwnerPurge();
+
+ virtual ~PubSubOwnerPurge();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+
+ private:
+ std::string node;
+ };
+}
diff --git a/Swiften/Elements/PubSubOwnerRedirect.cpp b/Swiften/Elements/PubSubOwnerRedirect.cpp
new file mode 100644
index 0000000..164c216
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerRedirect.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubOwnerRedirect.h>
+
+using namespace Swift;
+
+PubSubOwnerRedirect::PubSubOwnerRedirect() {
+}
+
+PubSubOwnerRedirect::~PubSubOwnerRedirect() {
+}
diff --git a/Swiften/Elements/PubSubOwnerRedirect.h b/Swiften/Elements/PubSubOwnerRedirect.h
new file mode 100644
index 0000000..61db1d1
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerRedirect.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <string>
+
+
+
+namespace Swift {
+ class SWIFTEN_API PubSubOwnerRedirect : public Payload {
+ public:
+
+ PubSubOwnerRedirect();
+
+ virtual ~PubSubOwnerRedirect();
+
+ const std::string& getURI() const {
+ return uri;
+ }
+
+ void setURI(const std::string& value) {
+ this->uri = value ;
+ }
+
+
+ private:
+ std::string uri;
+ };
+}
diff --git a/Swiften/Elements/PubSubOwnerSubscription.cpp b/Swiften/Elements/PubSubOwnerSubscription.cpp
new file mode 100644
index 0000000..3334e36
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerSubscription.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubOwnerSubscription.h>
+
+using namespace Swift;
+
+PubSubOwnerSubscription::PubSubOwnerSubscription() : subscription(None) {
+}
+
+PubSubOwnerSubscription::~PubSubOwnerSubscription() {
+}
diff --git a/Swiften/Elements/PubSubOwnerSubscription.h b/Swiften/Elements/PubSubOwnerSubscription.h
new file mode 100644
index 0000000..1c302df
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerSubscription.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+
+
+#include <Swiften/JID/JID.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubOwnerSubscription : public Payload {
+ public:
+ enum SubscriptionType {
+ None,
+ Pending,
+ Subscribed,
+ Unconfigured
+ };
+
+ PubSubOwnerSubscription();
+
+ virtual ~PubSubOwnerSubscription();
+
+ const JID& getJID() const {
+ return jid;
+ }
+
+ void setJID(const JID& value) {
+ this->jid = value ;
+ }
+
+ SubscriptionType getSubscription() const {
+ return subscription;
+ }
+
+ void setSubscription(SubscriptionType value) {
+ this->subscription = value ;
+ }
+
+
+ private:
+ JID jid;
+ SubscriptionType subscription;
+ };
+}
diff --git a/Swiften/Elements/PubSubOwnerSubscriptions.cpp b/Swiften/Elements/PubSubOwnerSubscriptions.cpp
new file mode 100644
index 0000000..a4deb59
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerSubscriptions.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubOwnerSubscriptions.h>
+
+using namespace Swift;
+
+PubSubOwnerSubscriptions::PubSubOwnerSubscriptions() {
+}
+
+PubSubOwnerSubscriptions::~PubSubOwnerSubscriptions() {
+}
diff --git a/Swiften/Elements/PubSubOwnerSubscriptions.h b/Swiften/Elements/PubSubOwnerSubscriptions.h
new file mode 100644
index 0000000..08a2f5c
--- /dev/null
+++ b/Swiften/Elements/PubSubOwnerSubscriptions.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+#include <string>
+
+#include <Swiften/Elements/PubSubOwnerPayload.h>
+#include <Swiften/Elements/PubSubOwnerSubscription.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubOwnerSubscriptions : public PubSubOwnerPayload {
+ public:
+
+ PubSubOwnerSubscriptions();
+
+ virtual ~PubSubOwnerSubscriptions();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ const std::vector< boost::shared_ptr<PubSubOwnerSubscription> >& getSubscriptions() const {
+ return subscriptions;
+ }
+
+ void setSubscriptions(const std::vector< boost::shared_ptr<PubSubOwnerSubscription> >& value) {
+ this->subscriptions = value ;
+ }
+
+ void addSubscription(boost::shared_ptr<PubSubOwnerSubscription> value) {
+ this->subscriptions.push_back(value);
+ }
+
+
+ private:
+ std::string node;
+ std::vector< boost::shared_ptr<PubSubOwnerSubscription> > subscriptions;
+ };
+}
diff --git a/Swiften/Elements/PubSubPayload.cpp b/Swiften/Elements/PubSubPayload.cpp
new file mode 100644
index 0000000..b529959
--- /dev/null
+++ b/Swiften/Elements/PubSubPayload.cpp
@@ -0,0 +1,12 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubPayload.h>
+
+using namespace Swift;
+
+PubSubPayload::~PubSubPayload() {
+}
diff --git a/Swiften/Elements/PubSubPayload.h b/Swiften/Elements/PubSubPayload.h
new file mode 100644
index 0000000..476939b
--- /dev/null
+++ b/Swiften/Elements/PubSubPayload.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubPayload : public Payload {
+ public:
+ virtual ~PubSubPayload();
+ };
+}
diff --git a/Swiften/Elements/PubSubPublish.cpp b/Swiften/Elements/PubSubPublish.cpp
new file mode 100644
index 0000000..2ee3880
--- /dev/null
+++ b/Swiften/Elements/PubSubPublish.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubPublish.h>
+
+using namespace Swift;
+
+PubSubPublish::PubSubPublish() {
+}
+
+PubSubPublish::~PubSubPublish() {
+}
diff --git a/Swiften/Elements/PubSubPublish.h b/Swiften/Elements/PubSubPublish.h
new file mode 100644
index 0000000..1d99420
--- /dev/null
+++ b/Swiften/Elements/PubSubPublish.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+#include <string>
+
+#include <Swiften/Elements/PubSubItem.h>
+#include <Swiften/Elements/PubSubPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubPublish : public PubSubPayload {
+ public:
+
+ PubSubPublish();
+
+ virtual ~PubSubPublish();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ const std::vector< boost::shared_ptr<PubSubItem> >& getItems() const {
+ return items;
+ }
+
+ void setItems(const std::vector< boost::shared_ptr<PubSubItem> >& value) {
+ this->items = value ;
+ }
+
+ void addItem(boost::shared_ptr<PubSubItem> value) {
+ this->items.push_back(value);
+ }
+
+
+ private:
+ std::string node;
+ std::vector< boost::shared_ptr<PubSubItem> > items;
+ };
+}
diff --git a/Swiften/Elements/PubSubRetract.cpp b/Swiften/Elements/PubSubRetract.cpp
new file mode 100644
index 0000000..7e3676e
--- /dev/null
+++ b/Swiften/Elements/PubSubRetract.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubRetract.h>
+
+using namespace Swift;
+
+PubSubRetract::PubSubRetract() {
+}
+
+PubSubRetract::~PubSubRetract() {
+}
diff --git a/Swiften/Elements/PubSubRetract.h b/Swiften/Elements/PubSubRetract.h
new file mode 100644
index 0000000..e55897b
--- /dev/null
+++ b/Swiften/Elements/PubSubRetract.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+#include <string>
+
+#include <Swiften/Elements/PubSubItem.h>
+#include <Swiften/Elements/PubSubPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubRetract : public PubSubPayload {
+ public:
+
+ PubSubRetract();
+
+ virtual ~PubSubRetract();
+
+ const std::string& getNode() const {
+ return node;
+ }
+
+ void setNode(const std::string& value) {
+ this->node = value ;
+ }
+
+ const std::vector< boost::shared_ptr<PubSubItem> >& getItems() const {
+ return items;
+ }
+
+ void setItems(const std::vector< boost::shared_ptr<PubSubItem> >& value) {
+ this->items = value ;
+ }
+
+ void addItem(boost::shared_ptr<PubSubItem> value) {
+ this->items.push_back(value);
+ }
+
+ bool isNotify() const {
+ return notify;
+ }
+
+ void setNotify(bool value) {
+ this->notify = value ;
+ }
+
+
+ private:
+ std::string node;
+ std::vector< boost::shared_ptr<PubSubItem> > items;
+ bool notify;
+ };
+}
diff --git a/Swiften/Elements/PubSubSubscribe.cpp b/Swiften/Elements/PubSubSubscribe.cpp
new file mode 100644
index 0000000..4720321
--- /dev/null
+++ b/Swiften/Elements/PubSubSubscribe.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubSubscribe.h>
+
+using namespace Swift;
+
+PubSubSubscribe::PubSubSubscribe() {
+}
+
+PubSubSubscribe::~PubSubSubscribe() {
+}
diff --git a/Swiften/Elements/PubSubSubscribe.h b/Swiften/Elements/PubSubSubscribe.h
new file mode 100644
index 0000000..e2cc4ae
--- /dev/null
+++ b/Swiften/Elements/PubSubSubscribe.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <boost/shared_ptr.hpp>
+#include <string>
+
+#include <Swiften/Elements/PubSubOptions.h>
+#include <Swiften/Elements/PubSubPayload.h>
+#include <Swiften/JID/JID.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubSubscribe : public PubSubPayload {
+ public:
+
+ PubSubSubscribe();
+
+ virtual ~PubSubSubscribe();
+
+ const boost::optional< std::string >& getNode() const {
+ return node;
+ }
+
+ void setNode(const boost::optional< std::string >& value) {
+ this->node = value ;
+ }
+
+ const JID& getJID() const {
+ return jid;
+ }
+
+ void setJID(const JID& value) {
+ this->jid = value ;
+ }
+
+ boost::shared_ptr<PubSubOptions> getOptions() const {
+ return options;
+ }
+
+ void setOptions(boost::shared_ptr<PubSubOptions> value) {
+ this->options = value ;
+ }
+
+
+ private:
+ boost::optional< std::string > node;
+ JID jid;
+ boost::shared_ptr<PubSubOptions> options;
+ };
+}
diff --git a/Swiften/Elements/PubSubSubscribeOptions.cpp b/Swiften/Elements/PubSubSubscribeOptions.cpp
new file mode 100644
index 0000000..8770620
--- /dev/null
+++ b/Swiften/Elements/PubSubSubscribeOptions.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubSubscribeOptions.h>
+
+using namespace Swift;
+
+PubSubSubscribeOptions::PubSubSubscribeOptions() {
+}
+
+PubSubSubscribeOptions::~PubSubSubscribeOptions() {
+}
diff --git a/Swiften/Elements/PubSubSubscribeOptions.h b/Swiften/Elements/PubSubSubscribeOptions.h
new file mode 100644
index 0000000..6612d82
--- /dev/null
+++ b/Swiften/Elements/PubSubSubscribeOptions.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+
+
+
+
+namespace Swift {
+ class SWIFTEN_API PubSubSubscribeOptions : public Payload {
+ public:
+
+ PubSubSubscribeOptions();
+
+ virtual ~PubSubSubscribeOptions();
+
+ bool isRequired() const {
+ return required;
+ }
+
+ void setRequired(bool value) {
+ this->required = value ;
+ }
+
+
+ private:
+ bool required;
+ };
+}
diff --git a/Swiften/Elements/PubSubSubscription.cpp b/Swiften/Elements/PubSubSubscription.cpp
new file mode 100644
index 0000000..a25fc06
--- /dev/null
+++ b/Swiften/Elements/PubSubSubscription.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubSubscription.h>
+
+using namespace Swift;
+
+PubSubSubscription::PubSubSubscription() : subscription(None) {
+}
+
+PubSubSubscription::~PubSubSubscription() {
+}
diff --git a/Swiften/Elements/PubSubSubscription.h b/Swiften/Elements/PubSubSubscription.h
new file mode 100644
index 0000000..977cd55
--- /dev/null
+++ b/Swiften/Elements/PubSubSubscription.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <boost/shared_ptr.hpp>
+#include <string>
+
+#include <Swiften/Elements/PubSubSubscribeOptions.h>
+#include <Swiften/Elements/PubSubPayload.h>
+#include <Swiften/JID/JID.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubSubscription : public PubSubPayload {
+ public:
+ enum SubscriptionType {
+ None,
+ Pending,
+ Subscribed,
+ Unconfigured
+ };
+
+ PubSubSubscription();
+
+ virtual ~PubSubSubscription();
+
+ const boost::optional< std::string >& getNode() const {
+ return node;
+ }
+
+ void setNode(const boost::optional< std::string >& value) {
+ this->node = value ;
+ }
+
+ const boost::optional< std::string >& getSubscriptionID() const {
+ return subscriptionID;
+ }
+
+ void setSubscriptionID(const boost::optional< std::string >& value) {
+ this->subscriptionID = value ;
+ }
+
+ const JID& getJID() const {
+ return jid;
+ }
+
+ void setJID(const JID& value) {
+ this->jid = value ;
+ }
+
+ boost::shared_ptr<PubSubSubscribeOptions> getOptions() const {
+ return options;
+ }
+
+ void setOptions(boost::shared_ptr<PubSubSubscribeOptions> value) {
+ this->options = value ;
+ }
+
+ SubscriptionType getSubscription() const {
+ return subscription;
+ }
+
+ void setSubscription(SubscriptionType value) {
+ this->subscription = value ;
+ }
+
+
+ private:
+ boost::optional< std::string > node;
+ boost::optional< std::string > subscriptionID;
+ JID jid;
+ boost::shared_ptr<PubSubSubscribeOptions> options;
+ SubscriptionType subscription;
+ };
+}
diff --git a/Swiften/Elements/PubSubSubscriptions.cpp b/Swiften/Elements/PubSubSubscriptions.cpp
new file mode 100644
index 0000000..626e122
--- /dev/null
+++ b/Swiften/Elements/PubSubSubscriptions.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubSubscriptions.h>
+
+using namespace Swift;
+
+PubSubSubscriptions::PubSubSubscriptions() {
+}
+
+PubSubSubscriptions::~PubSubSubscriptions() {
+}
diff --git a/Swiften/Elements/PubSubSubscriptions.h b/Swiften/Elements/PubSubSubscriptions.h
new file mode 100644
index 0000000..c7c19c5
--- /dev/null
+++ b/Swiften/Elements/PubSubSubscriptions.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+#include <string>
+
+#include <Swiften/Elements/PubSubSubscription.h>
+#include <Swiften/Elements/PubSubPayload.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubSubscriptions : public PubSubPayload {
+ public:
+
+ PubSubSubscriptions();
+ PubSubSubscriptions(const std::string& node) : node(node) {}
+ virtual ~PubSubSubscriptions();
+
+ const boost::optional< std::string >& getNode() const {
+ return node;
+ }
+
+ void setNode(const boost::optional< std::string >& value) {
+ this->node = value ;
+ }
+
+ const std::vector< boost::shared_ptr<PubSubSubscription> >& getSubscriptions() const {
+ return subscriptions;
+ }
+
+ void setSubscriptions(const std::vector< boost::shared_ptr<PubSubSubscription> >& value) {
+ this->subscriptions = value ;
+ }
+
+ void addSubscription(boost::shared_ptr<PubSubSubscription> value) {
+ this->subscriptions.push_back(value);
+ }
+
+
+ private:
+ boost::optional< std::string > node;
+ std::vector< boost::shared_ptr<PubSubSubscription> > subscriptions;
+ };
+}
diff --git a/Swiften/Elements/PubSubUnsubscribe.cpp b/Swiften/Elements/PubSubUnsubscribe.cpp
new file mode 100644
index 0000000..a4b8318
--- /dev/null
+++ b/Swiften/Elements/PubSubUnsubscribe.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/PubSubUnsubscribe.h>
+
+using namespace Swift;
+
+PubSubUnsubscribe::PubSubUnsubscribe() {
+}
+
+PubSubUnsubscribe::~PubSubUnsubscribe() {
+}
diff --git a/Swiften/Elements/PubSubUnsubscribe.h b/Swiften/Elements/PubSubUnsubscribe.h
new file mode 100644
index 0000000..3969376
--- /dev/null
+++ b/Swiften/Elements/PubSubUnsubscribe.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <string>
+
+#include <Swiften/Elements/PubSubPayload.h>
+#include <Swiften/JID/JID.h>
+
+namespace Swift {
+ class SWIFTEN_API PubSubUnsubscribe : public PubSubPayload {
+ public:
+
+ PubSubUnsubscribe();
+
+ virtual ~PubSubUnsubscribe();
+
+ const boost::optional< std::string >& getNode() const {
+ return node;
+ }
+
+ void setNode(const boost::optional< std::string >& value) {
+ this->node = value ;
+ }
+
+ const JID& getJID() const {
+ return jid;
+ }
+
+ void setJID(const JID& value) {
+ this->jid = value ;
+ }
+
+ const boost::optional< std::string >& getSubscriptionID() const {
+ return subscriptionID;
+ }
+
+ void setSubscriptionID(const boost::optional< std::string >& value) {
+ this->subscriptionID = value ;
+ }
+
+
+ private:
+ boost::optional< std::string > node;
+ JID jid;
+ boost::optional< std::string > subscriptionID;
+ };
+}
diff --git a/Swiften/Elements/UserLocation.cpp b/Swiften/Elements/UserLocation.cpp
new file mode 100644
index 0000000..f22973e
--- /dev/null
+++ b/Swiften/Elements/UserLocation.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/Elements/UserLocation.h>
+
+using namespace Swift;
+
+UserLocation::UserLocation() {
+}
+
+UserLocation::~UserLocation() {
+}
diff --git a/Swiften/Elements/UserLocation.h b/Swiften/Elements/UserLocation.h
new file mode 100644
index 0000000..2355838
--- /dev/null
+++ b/Swiften/Elements/UserLocation.h
@@ -0,0 +1,227 @@
+/*
+ * Copyright (c) 2013 Remko Tronçon
+ * Licensed under the GNU General Public License.
+ * See the COPYING file for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/optional.hpp>
+#include <string>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+
+
+
+namespace Swift {
+ class SWIFTEN_API UserLocation : public Payload {
+ public:
+
+ UserLocation();
+
+ virtual ~UserLocation();
+
+ const boost::optional< std::string >& getArea() const {
+ return area;
+ }
+
+ void setArea(const boost::optional< std::string >& value) {
+ this->area = value ;
+ }
+
+ const boost::optional< float >& getAltitude() const {
+ return altitude;
+ }
+
+ void setAltitude(const boost::optional< float >& value) {
+ this->altitude = value ;
+ }
+
+ const boost::optional< std::string >& getLocality() const {
+ return locality;
+ }
+
+ void setLocality(const boost::optional< std::string >& value) {
+ this->locality = value ;
+ }
+
+ const boost::optional< float >& getLatitude() const {
+ return latitude;
+ }
+
+ void setLatitude(const boost::optional< float >& value) {
+ this->latitude = value ;
+ }
+
+ const boost::optional< float >& getAccuracy() const {
+ return accuracy;
+ }
+
+ void setAccuracy(const boost::optional< float >& value) {
+ this->accuracy = value ;
+ }
+
+ const boost::optional< std::string >& getDescription() const {
+ return description;
+ }
+
+ void setDescription(const boost::optional< std::string >& value) {
+ this->description = value ;
+ }
+
+ const boost::optional< std::string >& getCountryCode() const {
+ return countryCode;
+ }
+
+ void setCountryCode(const boost::optional< std::string >& value) {
+ this->countryCode = value ;
+ }
+
+ const boost::optional< boost::posix_time::ptime >& getTimestamp() const {
+ return timestamp;
+ }
+
+ void setTimestamp(const boost::optional< boost::posix_time::ptime >& value) {
+ this->timestamp = value ;
+ }
+
+ const boost::optional< std::string >& getFloor() const {
+ return floor;
+ }
+
+ void setFloor(const boost::optional< std::string >& value) {
+ this->floor = value ;
+ }
+
+ const boost::optional< std::string >& getBuilding() const {
+ return building;
+ }
+
+ void setBuilding(const boost::optional< std::string >& value) {
+ this->building = value ;
+ }
+
+ const boost::optional< std::string >& getRoom() const {
+ return room;
+ }
+
+ void setRoom(const boost::optional< std::string >& value) {
+ this->room = value ;
+ }
+
+ const boost::optional< std::string >& getCountry() const {
+ return country;
+ }
+
+ void setCountry(const boost::optional< std::string >& value) {
+ this->country = value ;
+ }
+
+ const boost::optional< std::string >& getRegion() const {
+ return region;
+ }
+
+ void setRegion(const boost::optional< std::string >& value) {
+ this->region = value ;
+ }
+
+ const boost::optional< std::string >& getURI() const {
+ return uri;
+ }
+
+ void setURI(const boost::optional< std::string >& value) {
+ this->uri = value ;
+ }
+
+ const boost::optional< float >& getLongitude() const {
+ return longitude;
+ }
+
+ void setLongitude(const boost::optional< float >& value) {
+ this->longitude = value ;
+ }
+
+ const boost::optional< float >& getError() const {
+ return error;
+ }
+
+ void setError(const boost::optional< float >& value) {
+ this->error = value ;
+ }
+
+ const boost::optional< std::string >& getPostalCode() const {
+ return postalCode;
+ }
+
+ void setPostalCode(const boost::optional< std::string >& value) {
+ this->postalCode = value ;
+ }
+
+ const boost::optional< float >& getBearing() const {
+ return bearing;
+ }
+
+ void setBearing(const boost::optional< float >& value) {
+ this->bearing = value ;
+ }
+
+ const boost::optional< std::string >& getText() const {
+ return text;
+ }
+
+ void setText(const boost::optional< std::string >& value) {
+ this->text = value ;
+ }
+
+ const boost::optional< std::string >& getDatum() const {
+ return datum;
+ }
+
+ void setDatum(const boost::optional< std::string >& value) {
+ this->datum = value ;
+ }
+
+ const boost::optional< std::string >& getStreet() const {
+ return street;
+ }
+
+ void setStreet(const boost::optional< std::string >& value) {
+ this->street = value ;
+ }
+
+ const boost::optional< float >& getSpeed() const {
+ return speed;
+ }
+
+ void setSpeed(const boost::optional< float >& value) {
+ this->speed = value ;
+ }
+
+
+ private:
+ boost::optional< std::string > area;
+ boost::optional< float > altitude;
+ boost::optional< std::string > locality;
+ boost::optional< float > latitude;
+ boost::optional< float > accuracy;
+ boost::optional< std::string > description;
+ boost::optional< std::string > countryCode;
+ boost::optional< boost::posix_time::ptime > timestamp;
+ boost::optional< std::string > floor;
+ boost::optional< std::string > building;
+ boost::optional< std::string > room;
+ boost::optional< std::string > country;
+ boost::optional< std::string > region;
+ boost::optional< std::string > uri;
+ boost::optional< float > longitude;
+ boost::optional< float > error;
+ boost::optional< std::string > postalCode;
+ boost::optional< float > bearing;
+ boost::optional< std::string > text;
+ boost::optional< std::string > datum;
+ boost::optional< std::string > street;
+ boost::optional< float > speed;
+ };
+}