diff options
Diffstat (limited to 'Sluift/LuaElementConvertor.h')
-rw-r--r-- | Sluift/LuaElementConvertor.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/Sluift/LuaElementConvertor.h b/Sluift/LuaElementConvertor.h new file mode 100644 index 0000000..5e55add --- /dev/null +++ b/Sluift/LuaElementConvertor.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2013 Remko Tronçon + * Licensed under the GNU General Public License. + * See the COPYING file for more information. + */ + +#pragma once + +#include <Swiften/Base/Override.h> + +#include <string> +#include <boost/shared_ptr.hpp> +#include <boost/optional.hpp> + +struct lua_State; + +namespace Swift { + class Element; + + class LuaElementConvertor { + public: + static boost::optional<std::string> NO_RESULT; + + struct Documentation { + Documentation(const std::string& className, const std::string& description) : + className(className), description(description) {} + std::string className; + std::string description; + }; + + virtual ~LuaElementConvertor(); + + virtual boost::shared_ptr<Element> convertFromLua(lua_State*, int index, const std::string& type) = 0; + virtual boost::optional<std::string> convertToLua(lua_State*, boost::shared_ptr<Element>) = 0; + + virtual boost::optional<Documentation> getDocumentation() const { + return boost::optional<Documentation>(); + } + }; +} |