diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2014-07-08 00:20:56 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2014-07-08 00:20:56 (GMT) |
commit | dbd110e2b7eb08c65218a5f9d09ef12fdc62c04a (patch) | |
tree | 93444e4c106eeca34d928521bedbda8080410795 /src/uscxml/plugins/datamodel/lua/LuaDataModel.h | |
parent | d5e1f6397c52513018cd59972cf5ca8740de18eb (diff) | |
download | uscxml-dbd110e2b7eb08c65218a5f9d09ef12fdc62c04a.zip uscxml-dbd110e2b7eb08c65218a5f9d09ef12fdc62c04a.tar.gz uscxml-dbd110e2b7eb08c65218a5f9d09ef12fdc62c04a.tar.bz2 |
First signs of Lua Datamodel
Diffstat (limited to 'src/uscxml/plugins/datamodel/lua/LuaDataModel.h')
-rw-r--r-- | src/uscxml/plugins/datamodel/lua/LuaDataModel.h | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.h b/src/uscxml/plugins/datamodel/lua/LuaDataModel.h new file mode 100644 index 0000000..9677307 --- /dev/null +++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.h @@ -0,0 +1,111 @@ +/** + * @file + * @author 2012-2014 Stefan Radomski (stefan.radomski@cs.tu-darmstadt.de) + * @copyright Simplified BSD + * + * @cond + * This program is free software: you can redistribute it and/or modify + * it under the terms of the FreeBSD license as published by the FreeBSD + * project. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the FreeBSD license along with this + * program. If not, see <http://www.opensource.org/licenses/bsd-license>. + * @endcond + */ + +#ifndef LUADATAMODEL_H_113E014C +#define LUADATAMODEL_H_113E014C + +#include "uscxml/Interpreter.h" +#include <list> + +#ifdef BUILD_AS_PLUGINS +#include "uscxml/plugins/Plugins.h" +#endif + +extern "C" { +#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" +} + +namespace uscxml { +class Event; +class Data; +} + +namespace uscxml { + +class LuaDataModel : public DataModelImpl { +public: + LuaDataModel(); + virtual ~LuaDataModel(); + virtual boost::shared_ptr<DataModelImpl> create(InterpreterImpl* interpreter); + + virtual std::list<std::string> getNames() { + std::list<std::string> names; + names.push_back("lua"); + return names; + } + + virtual void initialize(); + virtual void setEvent(const Event& event); + + virtual bool validate(const std::string& location, const std::string& schema); + virtual bool isLocation(const std::string& expr); + + virtual uint32_t getLength(const std::string& expr); + virtual void setForeach(const std::string& item, + const std::string& array, + const std::string& index, + uint32_t iteration); + + virtual void pushContext(); + virtual void popContext(); + + virtual void assign(const Arabica::DOM::Element<std::string>& assignElem, + const Arabica::DOM::Node<std::string>& node, + const std::string& content); + virtual void assign(const std::string& location, const Data& data); + + virtual void init(const Arabica::DOM::Element<std::string>& dataElem, + const Arabica::DOM::Node<std::string>& node, + const std::string& content); + virtual void init(const std::string& location, const Data& data); + + virtual Data getStringAsData(const std::string& content); + virtual bool isDeclared(const std::string& expr); + + virtual void eval(const Arabica::DOM::Element<std::string>& scriptElem, + const std::string& expr); + virtual std::string evalAsString(const std::string& expr); + virtual bool evalAsBool(const Arabica::DOM::Node<std::string>& node, const std::string& expr); + virtual double evalAsNumber(const std::string& expr); + +protected: + + static int luaEventData(lua_State * l); + static int luaEventOrigin(lua_State * l); + static int luaEventOriginType(lua_State * l); + static int luaEventRaw(lua_State * l); + static int luaEventXML(lua_State * l); + static int luaEventName(lua_State * l); + static int luaEventContent(lua_State * l); + static int luaEventSendId(lua_State * l); + static int luaEventInvokeId(lua_State * l); + static int luaEventDestructor(lua_State * l); + + lua_State* _luaState; +}; + +#ifdef BUILD_AS_PLUGINS +PLUMA_INHERIT_PROVIDER(LuaDataModel, DataModelImpl); +#endif + +} + +#endif /* end of include guard: LUADATAMODEL_H_113E014C */ |