LuaDataModel.h
Go to the documentation of this file.
1 
20 #ifndef LUADATAMODEL_H_113E014C
21 #define LUADATAMODEL_H_113E014C
22 
24 #include <list>
25 
26 extern "C" {
27 #include "lua.h"
28 #include "lualib.h"
29 #include "lauxlib.h"
30 }
31 
32 #ifdef BUILD_AS_PLUGINS
33 #include "uscxml/plugins/Plugins.h"
34 #endif
35 
36 
37 namespace uscxml {
38 class Event;
39 class Data;
40 }
41 
42 namespace uscxml {
43 
49 class LuaDataModel : public DataModelImpl {
50 public:
51  LuaDataModel();
52  virtual ~LuaDataModel();
53  virtual std::shared_ptr<DataModelImpl> create(DataModelCallbacks* callbacks);
54 
55  virtual void addExtension(DataModelExtension* ext);
56 
57  virtual std::list<std::string> getNames() {
58  std::list<std::string> names;
59  names.push_back("lua");
60  return names;
61  }
62 
63  virtual bool isValidSyntax(const std::string& expr);
64 
65  virtual void setEvent(const Event& event);
66 
67  // foreach
68  virtual uint32_t getLength(const std::string& expr);
69  virtual void setForeach(const std::string& item,
70  const std::string& array,
71  const std::string& index,
72  uint32_t iteration);
73 
74  virtual bool evalAsBool(const std::string& expr);
75  virtual Data evalAsData(const std::string& expr);
76  virtual Data getAsData(const std::string& content);
77 
78  virtual bool isDeclared(const std::string& expr);
79 
80  virtual void assign(const std::string& location, const Data& data);
81  virtual void init(const std::string& location, const Data& data);
82 
83  virtual std::string andExpressions(std::list<std::string>);
84 
85 protected:
86 
87  static int luaInFunction(lua_State * l);
88 
89  lua_State* _luaState;
90 };
91 
92 #ifdef BUILD_AS_PLUGINS
93 PLUMA_INHERIT_PROVIDER(LuaDataModel, DataModelImpl);
94 #endif
95 
96 }
97 
98 #endif /* end of include guard: LUADATAMODEL_H_113E014C */
virtual Data evalAsData(const std::string &expr)
Return a string as an evaluated Data object.
Definition: LuaDataModel.cpp:327
Definition: Breakpoint.cpp:26
virtual void addExtension(DataModelExtension *ext)
Register an extension to get data into and out of the data-model.
Definition: LuaDataModel.cpp:246
virtual bool isDeclared(const std::string &expr)
Determine whether a given variable / location is declared.
Definition: LuaDataModel.cpp:443
virtual std::list< std::string > getNames()
Return a list of names to be matched by the datamodel attribute in SCXML.
Definition: LuaDataModel.h:57
virtual std::string andExpressions(std::list< std::string >)
Concat the given terms into a conjunctive form.
Definition: LuaDataModel.cpp:586
Definition: DataModelImpl.h:59
Abstract base class for all data-model implementations.
Definition: DataModelImpl.h:75
Lua data-model.
Definition: LuaDataModel.h:49
virtual void setEvent(const Event &event)
Set the given event as _event in the data-model's global scope.
Definition: LuaDataModel.cpp:250
virtual void assign(const std::string &location, const Data &data)
Assign a data object to a location in the data-model.
Definition: LuaDataModel.cpp:449
virtual std::shared_ptr< DataModelImpl > create(DataModelCallbacks *callbacks)
The Factory wants to instantiate a new instance.
Definition: LuaDataModel.cpp:189
virtual bool isValidSyntax(const std::string &expr)
Determine whether a given string constitutes valid syntax in the data-model's language.
Definition: LuaDataModel.cpp:371
virtual bool evalAsBool(const std::string &expr)
Evaluate a given expression as a boolean.
Definition: LuaDataModel.cpp:547
virtual void setForeach(const std::string &item, const std::string &array, const std::string &index, uint32_t iteration)
Set a given item to the object at a given index for one iteration.
Definition: LuaDataModel.cpp:423
Definition: Event.h:84
virtual uint32_t getLength(const std::string &expr)
Evaluate the given expression as something iterable and return its length.
Definition: LuaDataModel.cpp:385
Callbacks available for every data-model.
Definition: DataModelImpl.h:47
virtual void init(const std::string &location, const Data &data)
Initialize a variable / location in the data-model with a given data object.
Definition: LuaDataModel.cpp:542
virtual Data getAsData(const std::string &content)
Return a string as an unevaluated Data object.
Definition: LuaDataModel.cpp:563
Definition: Data.h:43