UGDK
src/ugdk/script/languages/lua/luadata.h
Go to the documentation of this file.
00001 
00002 #ifndef UGDK_SCRIPT_LUA_LUADATA_H_
00003 #define UGDK_SCRIPT_LUA_LUADATA_H_
00004 
00005 #include <ugdk/script/type.h>
00006 #include <ugdk/script/virtualdata.h>
00007 
00008 #include <ugdk/script/languages/lua/defs.h>
00009 #include <ugdk/script/languages/lua/luawrapper.h>
00010 
00011 namespace ugdk {
00012 namespace script {
00013 namespace lua {
00014 
00015 class LuaData : public VirtualData {
00016 
00017   public:
00018 
00019     LuaData(LuaWrapper* wrapper, DataID id) :
00020         wrapper_(wrapper),
00021         id_(id) {}
00022 
00023     ~LuaData();
00024 
00025     void* Unwrap(const VirtualType& type, bool disown) const;
00026     const char* UnwrapString() const;
00027     bool UnwrapBoolean() const;
00028     int UnwrapInteger() const;
00029     double UnwrapNumber() const;
00030     Vector UnwrapVector() const;
00031     List UnwrapList() const;
00032     Map UnwrapMap() const;
00033 
00034     void Wrap(void* data, const VirtualType& type);
00035     void WrapString(const char* str);
00036     void WrapBoolean(bool boolean);
00037     void WrapInteger(int number);
00038     void WrapNumber(double number);
00039 
00040     LangWrapper* wrapper () const { return wrapper_; }
00041 
00042     Ptr Execute(const std::vector<Ptr>& args);
00043 
00044     Ptr GetAttribute(Ptr key);
00045 
00046     Ptr SetAttribute(Ptr key, Ptr value);
00047     
00048     void* unsafe_data() const {
00049         return const_cast<void*>(static_cast<const void*>(this));
00050     }
00051 
00052     DataID id () const { return id_; }
00053 
00055 
00057     void UnsafePopValue();
00058 
00059     void UnsafePushValue();
00060 
00061     void AddToBuffer();
00062     void RemoveFromBuffer() {}
00063 
00064   private:
00065 
00066     LuaWrapper* wrapper_;
00067     DataID      id_;
00068 
00069 };
00070 
00071 } /* namespace lua */
00072 } /* namespace script */
00073 } /* namespace ugdk */
00074 
00075 #endif /* UGDK_SCRIPT_LUA_LUADATA_H_ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines