diff options
Diffstat (limited to 'Sluift/ElementConvertors/RawXMLElementConvertor.cpp')
-rw-r--r-- | Sluift/ElementConvertors/RawXMLElementConvertor.cpp | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/Sluift/ElementConvertors/RawXMLElementConvertor.cpp b/Sluift/ElementConvertors/RawXMLElementConvertor.cpp index 35a53ca..9688677 100644 --- a/Sluift/ElementConvertors/RawXMLElementConvertor.cpp +++ b/Sluift/ElementConvertors/RawXMLElementConvertor.cpp @@ -1,17 +1,18 @@ /* - * Copyright (c) 2013 Remko Tronçon - * Licensed under the GNU General Public License. + * Copyright (c) 2013-2016 Isode Limited. + * All rights reserved. * See the COPYING file for more information. */ #include <Sluift/ElementConvertors/RawXMLElementConvertor.h> -#include <iostream> -#include <boost/smart_ptr/make_shared.hpp> +#include <memory> + #include <lua.hpp> #include <Swiften/Elements/RawXMLPayload.h> #include <Swiften/Serializer/PayloadSerializer.h> + #include <Sluift/Lua/Check.h> using namespace Swift; @@ -22,16 +23,20 @@ RawXMLElementConvertor::RawXMLElementConvertor() { RawXMLElementConvertor::~RawXMLElementConvertor() { } -boost::shared_ptr<Payload> RawXMLElementConvertor::convertFromLua(lua_State* L, int index, const std::string& type) { - if (type == "xml") { - return boost::make_shared<RawXMLPayload>(std::string(Lua::checkString(L, index))); - } - return boost::shared_ptr<Payload>(); +std::shared_ptr<Element> RawXMLElementConvertor::convertFromLua(lua_State* L, int index, const std::string& type) { + if (type == "xml") { + return std::make_shared<RawXMLPayload>(std::string(Lua::checkString(L, index))); + } + return std::shared_ptr<Payload>(); } -boost::optional<std::string> RawXMLElementConvertor::convertToLua(lua_State* L, boost::shared_ptr<Payload> payload) { - PayloadSerializer* serializer = serializers.getPayloadSerializer(payload); - assert(serializer); - lua_pushstring(L, serializer->serialize(payload).c_str()); - return std::string("xml"); +boost::optional<std::string> RawXMLElementConvertor::convertToLua(lua_State* L, std::shared_ptr<Element> element) { + std::shared_ptr<Payload> payload = std::dynamic_pointer_cast<Payload>(element); + if (!payload) { + return boost::optional<std::string>(); + } + PayloadSerializer* serializer = serializers.getPayloadSerializer(payload); + assert(serializer); + lua_pushstring(L, serializer->serialize(payload).c_str()); + return std::string("xml"); } |