/* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include #include namespace Swift { template class SWIFTEN_API GenericStanzaSerializer : public StanzaSerializer { public: GenericStanzaSerializer(const std::string& tag, PayloadSerializerCollection* payloadSerializers, const boost::optional& explicitNS = boost::optional()) : StanzaSerializer(tag, payloadSerializers, explicitNS) {} virtual bool canSerialize(std::shared_ptr element) const { return dynamic_cast(element.get()) != nullptr; } virtual void setStanzaSpecificAttributes( std::shared_ptr stanza, XMLElement& element) const { setStanzaSpecificAttributesGeneric( std::dynamic_pointer_cast(stanza), element); } virtual void setStanzaSpecificAttributesGeneric( std::shared_ptr, XMLElement&) const = 0; }; }