/* * Copyright (c) 2013-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include #include #include #include #include namespace Swift { class PayloadSerializerCollection; class XMLElement; class SWIFTEN_API StanzaSerializer : public ElementSerializer { public: StanzaSerializer(const std::string& tag, PayloadSerializerCollection* payloadSerializers, const boost::optional& explicitNS = boost::optional()); virtual SafeByteArray serialize(std::shared_ptr element) const; virtual SafeByteArray serialize(std::shared_ptr element, const std::string& xmlns) const; virtual void setStanzaSpecificAttributes(std::shared_ptr, XMLElement&) const = 0; private: std::string tag_; PayloadSerializerCollection* payloadSerializers_; boost::optional explicitDefaultNS_; }; }