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