UGDK  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
luadata.h
Go to the documentation of this file.
1 
2 #ifndef UGDK_SCRIPT_LUA_LUADATA_H_
3 #define UGDK_SCRIPT_LUA_LUADATA_H_
4 
6 #include <ugdk/script/type.h>
8 
11 
12 namespace ugdk {
13 namespace script {
14 namespace lua {
15 
16 class LuaData : public VirtualData {
17 
18  public:
19 
21  wrapper_(wrapper),
22  id_(id) {}
23 
24  ~LuaData();
25 
26  void* Unwrap(const VirtualType& type, bool disown) const override;
27  const char* UnwrapString() const override;
28  bool UnwrapBoolean() const override;
29  int UnwrapInteger() const override;
30  double UnwrapNumber() const override;
31  Vector UnwrapVector() const override;
32  List UnwrapList() const override;
33  Map UnwrapMap() const override;
34 
35  void Wrap(void* data, const VirtualType& type, bool disown) override;
36  void WrapString(const char* str) override;
37  void WrapBoolean(bool boolean) override;
38  void WrapInteger(int number) override;
39  void WrapNumber(double number) override;
40 
41  LangWrapper* wrapper () const { return wrapper_; }
42 
43  Ptr Execute(const std::vector<Ptr>& args);
44 
45  Ptr GetAttribute(Ptr key);
46 
47  Ptr SetAttribute(Ptr key, Ptr value);
48 
49  void* unsafe_data() const {
50  return const_cast<void*>(static_cast<const void*>(this));
51  }
52 
53  DataID id () const { return id_; }
54 
56 
58  void UnsafePopValue();
59 
60  void UnsafePushValue();
61 
62  void AddToBuffer();
63  void RemoveFromBuffer() {}
64 
65  private:
66 
67  LuaWrapper* wrapper_;
68  DataID id_;
69 
70 };
71 
72 } /* namespace lua */
73 } /* namespace script */
74 } /* namespace ugdk */
75 
76 #endif /* UGDK_SCRIPT_LUA_LUADATA_H_ */
Abstract class representing virtual script data.
Definition: virtualdata.h:42
void UnsafePopValue()
Unsafely sets this LuaData objects data.
void Wrap(void *data, const VirtualType &type, bool disown) override
Tries to wrap the given data with the given type.
void RemoveFromBuffer()
Definition: luadata.h:63
void WrapString(const char *str) override
List UnwrapList() const override
const char * UnwrapString() const override
Definition: luadata.h:16
DataID id() const
Definition: luadata.h:53
Definition: luawrapper.h:20
Definition: animation.h:11
Definition: type.h:13
Map UnwrapMap() const override
void * unsafe_data() const
Definition: luadata.h:49
LangWrapper * wrapper() const
Definition: luadata.h:41
std::shared_ptr< VirtualData > Ptr
Definition: virtualdata.h:46
int UnwrapInteger() const override
double UnwrapNumber() const override
std::map< Ptr, Ptr > Map
Definition: virtualdata.h:51
Ptr SetAttribute(Ptr key, Ptr value)
void * Unwrap(const VirtualType &type, bool disown) const override
Tries to unwrap the data contained in this object using the given type.
Vector UnwrapVector() const override
void WrapBoolean(bool boolean) override
Ptr GetAttribute(Ptr key)
Tries to get a attribute with the given name from this object.
void WrapNumber(double number) override
Definition: langwrapper.h:17
LuaData(LuaWrapper *wrapper, DataID id)
Definition: luadata.h:20
Ptr Execute(const std::vector< Ptr > &args)
std::list< Ptr > List
Definition: virtualdata.h:50
std::vector< Ptr > Vector
Definition: virtualdata.h:49
bool UnwrapBoolean() const override
int DataID
Definition: defs.h:20
void WrapInteger(int number) override