UGDK  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
virtualdata.h
Go to the documentation of this file.
1 #ifndef UGDK_SCRIPT_VIRTUALDATA_H_
2 #define UGDK_SCRIPT_VIRTUALDATA_H_
3 
4 #include <vector>
5 #include <list>
6 #include <map>
7 #include <memory>
8 #include <functional>
9 
10 #include <ugdk/structure/types.h>
11 #include <ugdk/script/type.h>
12 
13 /*namespace ugdk {
14 namespace script {
15 class VirtualData;
16 }
17 }
18 
19 namespace std {
20 
21 template <>
22 struct less<std::shared_ptr<ugdk::script::VirtualData> > :
23 binary_function <std::shared_ptr<ugdk::script::VirtualData>,
24  std::shared_ptr<ugdk::script::VirtualData>,
25  bool> {
26  bool operator() (const std::shared_ptr<ugdk::script::VirtualData>& x,
27  const std::shared_ptr<ugdk::script::VirtualData>& y)
28  const
29  {return x.get()<y.get();}
30 };
31 
32 }*/
33 
34 namespace ugdk {
35 
36 namespace script {
37 
38 class VirtualObj;
39 class LangWrapper;
40 
42 class VirtualData : public std::enable_shared_from_this<VirtualData> {
43 
44  public:
45 
46  typedef std::shared_ptr<VirtualData> Ptr;
47  typedef std::shared_ptr<const VirtualData> ConstPtr;
48  typedef std::weak_ptr<VirtualData> WeakPtr;
49  typedef std::vector<Ptr> Vector;
50  typedef std::list<Ptr> List;
51  typedef std::map<Ptr, Ptr> Map;
52 
53  virtual ~VirtualData() {}
54 
55  Ptr Copy() {
56  return shared_from_this();
57  }
58 
60  virtual void* Unwrap(const VirtualType& type, bool disown) const = 0;
61  virtual const char* UnwrapString() const = 0;
62  virtual bool UnwrapBoolean() const = 0;
63  virtual int UnwrapInteger() const = 0;
64  virtual double UnwrapNumber() const = 0;
65  virtual Vector UnwrapVector() const = 0;
66  virtual List UnwrapList() const = 0;
67  virtual Map UnwrapMap() const = 0;
68 
70 
89  virtual void Wrap(void* data, const VirtualType& type, bool disown) = 0;
90  virtual void WrapString(const char* str) = 0;
91  virtual void WrapBoolean(bool boolean) = 0;
92  virtual void WrapInteger(int number) = 0;
93  virtual void WrapNumber(double number) = 0;
94 
95  virtual LangWrapper* wrapper () const = 0;
96 
99  virtual Ptr Execute(const Vector& args) = 0;
100 
102 
104  virtual Ptr GetAttribute(Ptr key) = 0;
105 
106  virtual Ptr SetAttribute(Ptr key, Ptr value) = 0;
107 
108  virtual void* unsafe_data() const = 0;
109 
110  virtual void AddToBuffer() {}
111  virtual void RemoveFromBuffer() {}
112 
113  protected:
114 
116 
117  private:
118 
119 
120 
121 };
122 
123 } /* namespace script */
124 
125 } /* namespace ugdk */
126 
127 #endif /* UGDK_SCRIPT_VIRTUALDATA_H_ */
Abstract class representing virtual script data.
Definition: virtualdata.h:42
virtual int UnwrapInteger() const =0
std::shared_ptr< const VirtualData > ConstPtr
Definition: virtualdata.h:47
virtual void * Unwrap(const VirtualType &type, bool disown) const =0
Tries to unwrap the data contained in this object using the given type.
virtual Ptr GetAttribute(Ptr key)=0
Tries to get a attribute with the given name from this object.
virtual void RemoveFromBuffer()
Definition: virtualdata.h:111
virtual bool UnwrapBoolean() const =0
virtual void Wrap(void *data, const VirtualType &type, bool disown)=0
Tries to wrap the given data with the given type.
virtual double UnwrapNumber() const =0
Definition: animation.h:11
Definition: type.h:13
virtual Ptr SetAttribute(Ptr key, Ptr value)=0
std::shared_ptr< VirtualData > Ptr
Definition: virtualdata.h:46
virtual Map UnwrapMap() const =0
std::map< Ptr, Ptr > Map
Definition: virtualdata.h:51
VirtualData()
Definition: virtualdata.h:115
virtual void WrapBoolean(bool boolean)=0
virtual void WrapNumber(double number)=0
virtual Vector UnwrapVector() const =0
virtual List UnwrapList() const =0
std::weak_ptr< VirtualData > WeakPtr
Definition: virtualdata.h:48
virtual void AddToBuffer()
Definition: virtualdata.h:110
virtual const char * UnwrapString() const =0
Definition: langwrapper.h:17
std::list< Ptr > List
Definition: virtualdata.h:50
virtual ~VirtualData()
Definition: virtualdata.h:53
std::vector< Ptr > Vector
Definition: virtualdata.h:49
virtual void * unsafe_data() const =0
virtual void WrapInteger(int number)=0
virtual Ptr Execute(const Vector &args)=0
Ptr Copy()
Definition: virtualdata.h:55
virtual void WrapString(const char *str)=0
virtual LangWrapper * wrapper() const =0