diff options
Diffstat (limited to 'Sluift/LuaElementConvertors.h')
-rw-r--r-- | Sluift/LuaElementConvertors.h | 71 |
1 files changed, 37 insertions, 34 deletions
diff --git a/Sluift/LuaElementConvertors.h b/Sluift/LuaElementConvertors.h index 36da15a..bfcffdd 100644 --- a/Sluift/LuaElementConvertors.h +++ b/Sluift/LuaElementConvertors.h @@ -1,47 +1,50 @@ /* - * Copyright (c) 2013 Remko Tronçon - * Licensed under the GNU General Public License. + * Copyright (c) 2013-2017 Isode Limited. + * All rights reserved. * See the COPYING file for more information. */ #pragma once -#include <Swiften/Base/Override.h> - +#include <memory> #include <vector> -#include <boost/shared_ptr.hpp> + #include <boost/optional.hpp> struct lua_State; namespace Swift { - class LuaElementConvertor; - class Payload; - - class LuaElementConvertors { - public: - LuaElementConvertors(); - virtual ~LuaElementConvertors(); - - boost::shared_ptr<Payload> convertFromLua(lua_State*, int index); - int convertToLua(lua_State*, boost::shared_ptr<Payload>); - - /** - * Adds a toplevel type+data table with the given type. - */ - boost::shared_ptr<Payload> convertFromLuaUntyped(lua_State*, int index, const std::string& type); - - /** - * Strips the toplevel type+data table, and only return the - * data. - */ - int convertToLuaUntyped(lua_State*, boost::shared_ptr<Payload>); - - private: - boost::optional<std::string> doConvertToLuaUntyped(lua_State*, boost::shared_ptr<Payload>); - void registerConvertors(); - - private: - std::vector< boost::shared_ptr<LuaElementConvertor> > convertors; - }; + class LuaElementConvertor; + class Element; + + class LuaElementConvertors { + public: + LuaElementConvertors(); + virtual ~LuaElementConvertors(); + + std::shared_ptr<Element> convertFromLua(lua_State*, int index); + int convertToLua(lua_State*, std::shared_ptr<Element>); + + /** + * Adds a toplevel type+data table with the given type. + */ + std::shared_ptr<Element> convertFromLuaUntyped(lua_State*, int index, const std::string& type); + + /** + * Strips the toplevel type+data table, and only return the + * data. + */ + int convertToLuaUntyped(lua_State*, std::shared_ptr<Element>); + + const std::vector< std::shared_ptr<LuaElementConvertor> >& getConvertors() const { + return convertors; + } + + private: + boost::optional<std::string> doConvertToLuaUntyped(lua_State*, std::shared_ptr<Element>); + void registerConvertors(); + + private: + std::vector< std::shared_ptr<LuaElementConvertor> > convertors; + }; } |