summaryrefslogtreecommitdiffstats
path: root/squirrel_3_0_1_stable/sqplus/SquirrelObject.cpp
diff options
context:
space:
mode:
authorlapayo94@gmail.com <lapayo94@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-07-08 23:01:08 +0200
committerlapayo94@gmail.com <lapayo94@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-07-08 23:01:08 +0200
commit083228a10dffcaa77b1d0035c29013c6802befd4 (patch)
tree4d8ba1ce8501f044d10135e836e6f956f1b99fa4 /squirrel_3_0_1_stable/sqplus/SquirrelObject.cpp
parentAdded a lilypad finisher (diff)
downloadcuberite-083228a10dffcaa77b1d0035c29013c6802befd4.tar
cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.tar.gz
cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.tar.bz2
cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.tar.lz
cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.tar.xz
cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.tar.zst
cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.zip
Diffstat (limited to 'squirrel_3_0_1_stable/sqplus/SquirrelObject.cpp')
-rw-r--r--squirrel_3_0_1_stable/sqplus/SquirrelObject.cpp702
1 files changed, 0 insertions, 702 deletions
diff --git a/squirrel_3_0_1_stable/sqplus/SquirrelObject.cpp b/squirrel_3_0_1_stable/sqplus/SquirrelObject.cpp
deleted file mode 100644
index 58d43bbed..000000000
--- a/squirrel_3_0_1_stable/sqplus/SquirrelObject.cpp
+++ /dev/null
@@ -1,702 +0,0 @@
-#include "sqplus.h"
-
-SquirrelObject::SquirrelObject(void)
-{
- sq_resetobject(&_o);
-}
-
-SquirrelObject::~SquirrelObject()
-{
- Reset();
-}
-
-SquirrelObject::SquirrelObject(const SquirrelObject &o)
-{
- _o = o._o;
- sq_addref(SquirrelVM::_VM,&_o);
-}
-
-SquirrelObject::SquirrelObject(HSQOBJECT o)
-{
- _o = o;
- sq_addref(SquirrelVM::_VM,&_o);
-}
-
-void SquirrelObject::Reset(void) {
- if(SquirrelVM::_VM)
- sq_release(SquirrelVM::_VM,&_o);
- else if( _o._type!=OT_NULL && _o._unVal.pRefCounted )
- printf( "SquirrelObject::~SquirrelObject - Cannot release\n" );
- sq_resetobject(&_o);
-} // SquirrelObject::Reset
-
-SquirrelObject SquirrelObject::Clone()
-{
- SquirrelObject ret;
- if(GetType() == OT_TABLE || GetType() == OT_ARRAY)
- {
- sq_pushobject(SquirrelVM::_VM,_o);
- sq_clone(SquirrelVM::_VM,-1);
- ret.AttachToStackObject(-1);
- sq_pop(SquirrelVM::_VM,2);
- }
- return ret;
-
-}
-
-SquirrelObject & SquirrelObject::operator =(const SquirrelObject &o)
-{
- //HSQOBJECT t;
- //t = o._o;
- //sq_addref(SquirrelVM::_VM,&t);
- sq_addref(SquirrelVM::_VM, (HSQOBJECT*)&o._o);
- sq_release(SquirrelVM::_VM,&_o);
- //_o = t;
- _o = o._o;
- return *this;
-}
-
-SquirrelObject & SquirrelObject::operator =(HSQOBJECT ho)
-{
- sq_addref(SquirrelVM::_VM,&ho);
- sq_release(SquirrelVM::_VM,&_o);
- _o = ho;
- return *this;
-}
-
-SquirrelObject & SquirrelObject::operator =(int n)
-{
- sq_pushinteger(SquirrelVM::_VM,n);
- AttachToStackObject(-1);
- sq_pop(SquirrelVM::_VM,1);
- return *this;
-}
-
-#include <assert.h>
-#include "../squirrel/sqstate.h"
-#include "../squirrel/sqvm.h"
-
-SquirrelObject & SquirrelObject::operator =(HSQUIRRELVM v)
-{
- if( v && SquirrelVM::_VM ){
- SquirrelVM::_VM->Push(v);
- AttachToStackObject(-1);
- sq_poptop(SquirrelVM::_VM);
- }
- else Reset();
- return *this;
-}
-
-bool SquirrelObject::operator == (const SquirrelObject &o)
-{
- bool cmp = false;
- HSQUIRRELVM v = SquirrelVM::GetVMPtr();
- int oldtop = sq_gettop(v);
-
- sq_pushobject(v, GetObjectHandle());
- sq_pushobject(v, o.GetObjectHandle());
- if(sq_cmp(v) == 0)
- cmp = true;
-
- sq_settop(v, oldtop);
- return cmp;
-}
-
-bool SquirrelObject::CompareUserPointer( const SquirrelObject &o )
-{
- if( _o._type == o.GetObjectHandle()._type )
- if( _o._unVal.pUserPointer == o.GetObjectHandle()._unVal.pUserPointer )
- return true;
-
- return false;
-}
-
-void SquirrelObject::ArrayAppend(const SquirrelObject &o)
-{
- if(sq_isarray(_o)) {
- sq_pushobject(SquirrelVM::_VM,_o);
- sq_pushobject(SquirrelVM::_VM,o._o);
- sq_arrayappend(SquirrelVM::_VM,-2);
- sq_pop(SquirrelVM::_VM,1);
- }
-}
-
-void SquirrelObject::AttachToStackObject(int idx)
-{
- HSQOBJECT t;
- sq_getstackobj(SquirrelVM::_VM,idx,&t);
- sq_addref(SquirrelVM::_VM,&t);
- sq_release(SquirrelVM::_VM,&_o);
- _o = t;
-}
-
-BOOL SquirrelObject::SetDelegate(SquirrelObject &obj)
-{
- if(obj.GetType() == OT_TABLE ||
- obj.GetType() == OT_NULL) {
- switch(_o._type) {
- case OT_USERDATA:
- case OT_TABLE:
- sq_pushobject(SquirrelVM::_VM,_o);
- sq_pushobject(SquirrelVM::_VM,obj._o);
- if(SQ_SUCCEEDED(sq_setdelegate(SquirrelVM::_VM,-2))) {
- sq_pop(SquirrelVM::_VM,1);
- return TRUE;
- }
- sq_pop(SquirrelVM::_VM,1);
- break;
- }
- }
- return FALSE;
-}
-
-SquirrelObject SquirrelObject::GetDelegate()
-{
- SquirrelObject ret;
- if(_o._type == OT_TABLE || _o._type == OT_USERDATA)
- {
- int top = sq_gettop(SquirrelVM::_VM);
- sq_pushobject(SquirrelVM::_VM,_o);
- sq_getdelegate(SquirrelVM::_VM,-1);
- ret.AttachToStackObject(-1);
- sq_settop(SquirrelVM::_VM,top);
-// sq_pop(SquirrelVM::_VM,2);
- }
- return ret;
-}
-
-BOOL SquirrelObject::IsNull() const
-{
- return sq_isnull(_o);
-}
-
-BOOL SquirrelObject::IsNumeric() const
-{
- return sq_isnumeric(_o);
-}
-
-int SquirrelObject::Len() const
-{
- int ret = 0;
- if(sq_isarray(_o) || sq_istable(_o) || sq_isstring(_o)) {
- sq_pushobject(SquirrelVM::_VM,_o);
- ret = sq_getsize(SquirrelVM::_VM,-1);
- sq_pop(SquirrelVM::_VM,1);
- }
- return ret;
-}
-
-#define _SETVALUE_INT_BEGIN \
- BOOL ret = FALSE; \
- int top = sq_gettop(SquirrelVM::_VM); \
- sq_pushobject(SquirrelVM::_VM,_o); \
- sq_pushinteger(SquirrelVM::_VM,key);
-
-#define _SETVALUE_INT_END \
- if(SQ_SUCCEEDED(sq_rawset(SquirrelVM::_VM,-3))) { \
- ret = TRUE; \
- } \
- sq_settop(SquirrelVM::_VM,top); \
- return ret;
-
-BOOL SquirrelObject::SetValue(INT key,const SquirrelObject &val)
-{
- _SETVALUE_INT_BEGIN
- sq_pushobject(SquirrelVM::_VM,val._o);
- _SETVALUE_INT_END
-}
-
-BOOL SquirrelObject::SetValue(INT key,INT n)
-{
- _SETVALUE_INT_BEGIN
- sq_pushinteger(SquirrelVM::_VM,n);
- _SETVALUE_INT_END
-}
-
-BOOL SquirrelObject::SetValue(INT key,FLOAT f)
-{
- _SETVALUE_INT_BEGIN
- sq_pushfloat(SquirrelVM::_VM,f);
- _SETVALUE_INT_END
-}
-
-BOOL SquirrelObject::SetValue(INT key,const SQChar *s)
-{
- _SETVALUE_INT_BEGIN
- sq_pushstring(SquirrelVM::_VM,s,-1);
- _SETVALUE_INT_END
-}
-
-BOOL SquirrelObject::SetValue(INT key,bool b)
-{
- _SETVALUE_INT_BEGIN
- sq_pushbool(SquirrelVM::_VM,b);
- _SETVALUE_INT_END
-}
-
-BOOL SquirrelObject::SetValue(const SquirrelObject &key,const SquirrelObject &val)
-{
- BOOL ret = FALSE;
- int top = sq_gettop(SquirrelVM::_VM);
- sq_pushobject(SquirrelVM::_VM,_o);
- sq_pushobject(SquirrelVM::_VM,key._o);
- sq_pushobject(SquirrelVM::_VM,val._o);
- if(SQ_SUCCEEDED(sq_rawset(SquirrelVM::_VM,-3))) {
- ret = TRUE;
- }
- sq_settop(SquirrelVM::_VM,top);
- return ret;
-}
-
-#define _SETVALUE_STR_BEGIN \
- BOOL ret = FALSE; \
- int top = sq_gettop(SquirrelVM::_VM); \
- sq_pushobject(SquirrelVM::_VM,_o); \
- sq_pushstring(SquirrelVM::_VM,key,-1);
-
-#define _SETVALUE_STR_END \
- if(SQ_SUCCEEDED(sq_rawset(SquirrelVM::_VM,-3))) { \
- ret = TRUE; \
- } \
- sq_settop(SquirrelVM::_VM,top); \
- return ret;
-
-BOOL SquirrelObject::SetValue(const SQChar *key,const SquirrelObject &val)
-{
- _SETVALUE_STR_BEGIN
- sq_pushobject(SquirrelVM::_VM,val._o);
- _SETVALUE_STR_END
-}
-
-BOOL SquirrelObject::SetValue(const SQChar *key,INT n)
-{
- _SETVALUE_STR_BEGIN
- sq_pushinteger(SquirrelVM::_VM,n);
- _SETVALUE_STR_END
-}
-
-BOOL SquirrelObject::SetValue(const SQChar *key,FLOAT f)
-{
- _SETVALUE_STR_BEGIN
- sq_pushfloat(SquirrelVM::_VM,f);
- _SETVALUE_STR_END
-}
-
-BOOL SquirrelObject::SetValue(const SQChar *key,const SQChar *s)
-{
- _SETVALUE_STR_BEGIN
- sq_pushstring(SquirrelVM::_VM,s,-1);
- _SETVALUE_STR_END
-}
-
-BOOL SquirrelObject::SetValue(const SQChar *key,bool b)
-{
- _SETVALUE_STR_BEGIN
- sq_pushbool(SquirrelVM::_VM,b);
- _SETVALUE_STR_END
-}
-
-// === BEGIN User Pointer, User Data ===
-
-BOOL SquirrelObject::SetUserPointer(const SQChar * key,SQUserPointer up) {
- _SETVALUE_STR_BEGIN
- sq_pushuserpointer(SquirrelVM::_VM,up);
- _SETVALUE_STR_END
-} // SquirrelObject::SetUserPointer
-
-SQUserPointer SquirrelObject::GetUserPointer(const SQChar * key) {
- SQUserPointer ret = NULL;
- if (GetSlot(key)) {
- sq_getuserpointer(SquirrelVM::_VM,-1,&ret);
- sq_pop(SquirrelVM::_VM,1);
- } // if
- sq_pop(SquirrelVM::_VM,1);
- return ret;
-} // SquirrelObject::GetUserPointer
-
-BOOL SquirrelObject::SetUserPointer(INT key,SQUserPointer up) {
- _SETVALUE_INT_BEGIN
- sq_pushuserpointer(SquirrelVM::_VM,up);
- _SETVALUE_INT_END
-} // SquirrelObject::SetUserPointer
-
-SQUserPointer SquirrelObject::GetUserPointer(INT key) {
- SQUserPointer ret = NULL;
- if (GetSlot(key)) {
- sq_getuserpointer(SquirrelVM::_VM,-1,&ret);
- sq_pop(SquirrelVM::_VM,1);
- } // if
- sq_pop(SquirrelVM::_VM,1);
- return ret;
-} // SquirrelObject::GetUserPointer
-
-// === User Data ===
-
-BOOL SquirrelObject::NewUserData(const SQChar * key,INT size,SQUserPointer * typetag) {
- _SETVALUE_STR_BEGIN
- sq_newuserdata(SquirrelVM::_VM,size);
- if (typetag) {
- sq_settypetag(SquirrelVM::_VM,-1,typetag);
- } // if
- _SETVALUE_STR_END
-} // SquirrelObject::NewUserData
-
-BOOL SquirrelObject::GetUserData(const SQChar * key,SQUserPointer * data,SQUserPointer * typetag) {
- BOOL ret = false;
- if (GetSlot(key)) {
- sq_getuserdata(SquirrelVM::_VM,-1,data,typetag);
- sq_pop(SquirrelVM::_VM,1);
- ret = true;
- } // if
- sq_pop(SquirrelVM::_VM,1);
- return ret;
-} // SquirrelObject::GetUserData
-
-BOOL SquirrelObject::RawGetUserData(const SQChar * key,SQUserPointer * data,SQUserPointer * typetag) {
- BOOL ret = false;
- if (RawGetSlot(key)) {
- sq_getuserdata(SquirrelVM::_VM,-1,data,typetag);
- sq_pop(SquirrelVM::_VM,1);
- ret = true;
- } // if
- sq_pop(SquirrelVM::_VM,1);
- return ret;
-} // SquirrelObject::RawGetUserData
-
-// === END User Pointer ===
-
-// === BEGIN Arrays ===
-
-BOOL SquirrelObject::ArrayResize(INT newSize) {
-// int top = sq_gettop(SquirrelVM::_VM);
- sq_pushobject(SquirrelVM::_VM,GetObjectHandle());
- BOOL res = sq_arrayresize(SquirrelVM::_VM,-1,newSize) == SQ_OK;
- sq_pop(SquirrelVM::_VM,1);
-// sq_settop(SquirrelVM::_VM,top);
- return res;
-} // SquirrelObject::ArrayResize
-
-BOOL SquirrelObject::ArrayExtend(INT amount) {
- int newLen = Len()+amount;
- return ArrayResize(newLen);
-} // SquirrelObject::ArrayExtend
-
-BOOL SquirrelObject::ArrayReverse(void) {
- sq_pushobject(SquirrelVM::_VM,GetObjectHandle());
- BOOL res = sq_arrayreverse(SquirrelVM::_VM,-1) == SQ_OK;
- sq_pop(SquirrelVM::_VM,1);
- return res;
-} // SquirrelObject::ArrayReverse
-
-SquirrelObject SquirrelObject::ArrayPop(SQBool returnPoppedVal) {
- SquirrelObject ret;
- int top = sq_gettop(SquirrelVM::_VM);
- sq_pushobject(SquirrelVM::_VM,GetObjectHandle());
- if (sq_arraypop(SquirrelVM::_VM,-1,returnPoppedVal) == SQ_OK) {
- if (returnPoppedVal) {
- ret.AttachToStackObject(-1);
- } // if
- } // if
- sq_settop(SquirrelVM::_VM,top);
- return ret;
-} // SquirrelObject::ArrayPop
-
-// === END Arrays ===
-
-SQObjectType SquirrelObject::GetType()
-{
- return _o._type;
-}
-
-BOOL SquirrelObject::GetSlot(INT key) const
-{
- sq_pushobject(SquirrelVM::_VM,_o);
- sq_pushinteger(SquirrelVM::_VM,key);
- if(SQ_SUCCEEDED(sq_get(SquirrelVM::_VM,-2))) {
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-SquirrelObject SquirrelObject::GetValue(INT key)const
-{
- SquirrelObject ret;
- if(GetSlot(key)) {
- ret.AttachToStackObject(-1);
- sq_pop(SquirrelVM::_VM,1);
- }
- sq_pop(SquirrelVM::_VM,1);
- return ret;
-}
-
-FLOAT SquirrelObject::GetFloat(INT key) const
-{
- FLOAT ret = 0.0f;
- if(GetSlot(key)) {
- sq_getfloat(SquirrelVM::_VM,-1,&ret);
- sq_pop(SquirrelVM::_VM,1);
- }
- sq_pop(SquirrelVM::_VM,1);
- return ret;
-}
-
-INT SquirrelObject::GetInt(INT key) const
-{
- INT ret = 0;
- if(GetSlot(key)) {
- sq_getinteger(SquirrelVM::_VM,-1,&ret);
- sq_pop(SquirrelVM::_VM,1);
- }
- sq_pop(SquirrelVM::_VM,1);
- return ret;
-}
-
-const SQChar *SquirrelObject::GetString(INT key) const
-{
- const SQChar *ret = NULL;
- if(GetSlot(key)) {
- sq_getstring(SquirrelVM::_VM,-1,&ret);
- sq_pop(SquirrelVM::_VM,1);
- }
- sq_pop(SquirrelVM::_VM,1);
- return ret;
-}
-
-bool SquirrelObject::GetBool(INT key) const
-{
- SQBool ret = FALSE;
- if(GetSlot(key)) {
- sq_getbool(SquirrelVM::_VM,-1,&ret);
- sq_pop(SquirrelVM::_VM,1);
- }
- sq_pop(SquirrelVM::_VM,1);
- return ret?true:false;
-}
-
-BOOL SquirrelObject::Exists(const SQChar *key) const
-{
- if(GetSlot(key)) {
- sq_pop(SquirrelVM::_VM,2);
- return TRUE;
- } else {
- sq_pop(SquirrelVM::_VM,1);
- return FALSE;
- }
-}
-////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-
-BOOL SquirrelObject::GetSlot(const SQChar *name) const
-{
- sq_pushobject(SquirrelVM::_VM,_o);
- sq_pushstring(SquirrelVM::_VM,name,-1);
- if(SQ_SUCCEEDED(sq_get(SquirrelVM::_VM,-2))) {
- return TRUE;
- }
-
- return FALSE;
-}
-
-BOOL SquirrelObject::RawGetSlot(const SQChar *name) const {
- sq_pushobject(SquirrelVM::_VM,_o);
- sq_pushstring(SquirrelVM::_VM,name,-1);
- if(SQ_SUCCEEDED(sq_rawget(SquirrelVM::_VM,-2))) {
- return TRUE;
- }
- return FALSE;
-} // SquirrelObject::RawGetSlot
-
-SquirrelObject SquirrelObject::GetValue(const SQChar *key)const
-{
- SquirrelObject ret;
- if(GetSlot(key)) {
- ret.AttachToStackObject(-1);
- sq_pop(SquirrelVM::_VM,1);
- }
- sq_pop(SquirrelVM::_VM,1);
- return ret;
-}
-
-FLOAT SquirrelObject::GetFloat(const SQChar *key) const
-{
- FLOAT ret = 0.0f;
- if(GetSlot(key)) {
- sq_getfloat(SquirrelVM::_VM,-1,&ret);
- sq_pop(SquirrelVM::_VM,1);
- }
- sq_pop(SquirrelVM::_VM,1);
- return ret;
-}
-
-INT SquirrelObject::GetInt(const SQChar *key) const
-{
- INT ret = 0;
- if(GetSlot(key)) {
- sq_getinteger(SquirrelVM::_VM,-1,&ret);
- sq_pop(SquirrelVM::_VM,1);
- }
- sq_pop(SquirrelVM::_VM,1);
- return ret;
-}
-
-const SQChar *SquirrelObject::GetString(const SQChar *key) const
-{
- const SQChar *ret = NULL;
- if(GetSlot(key)) {
- sq_getstring(SquirrelVM::_VM,-1,&ret);
- sq_pop(SquirrelVM::_VM,1);
- }
- sq_pop(SquirrelVM::_VM,1);
- return ret;
-}
-
-bool SquirrelObject::GetBool(const SQChar *key) const
-{
- SQBool ret = FALSE;
- if(GetSlot(key)) {
- sq_getbool(SquirrelVM::_VM,-1,&ret);
- sq_pop(SquirrelVM::_VM,1);
- }
- sq_pop(SquirrelVM::_VM,1);
- return ret?true:false;
-}
-
-SQUserPointer SquirrelObject::GetInstanceUP(SQUserPointer tag) const
-{
- SQUserPointer up;
- sq_pushobject(SquirrelVM::_VM,_o);
- if (SQ_FAILED(sq_getinstanceup(SquirrelVM::_VM,-1,(SQUserPointer*)&up,tag))) {
- sq_reseterror(SquirrelVM::_VM);
- up = NULL;
- } // if
- sq_pop(SquirrelVM::_VM,1);
- return up;
-}
-
-BOOL SquirrelObject::SetInstanceUP(SQUserPointer up)
-{
- if(!sq_isinstance(_o)) return FALSE;
- sq_pushobject(SquirrelVM::_VM,_o);
- sq_setinstanceup(SquirrelVM::_VM,-1,up);
- sq_pop(SquirrelVM::_VM,1);
- return TRUE;
-}
-
-SquirrelObject SquirrelObject::GetAttributes(const SQChar *key)
-{
- SquirrelObject ret;
- int top = sq_gettop(SquirrelVM::_VM);
- sq_pushobject(SquirrelVM::_VM,_o);
- if(key)
- sq_pushstring(SquirrelVM::_VM,key,-1);
- else
- sq_pushnull(SquirrelVM::_VM);
- if(SQ_SUCCEEDED(sq_getattributes(SquirrelVM::_VM,-2))) {
- ret.AttachToStackObject(-1);
- }
- sq_settop(SquirrelVM::_VM,top);
- return ret;
-}
-
-BOOL SquirrelObject::BeginIteration()
-{
- if(!sq_istable(_o) && !sq_isarray(_o) && !sq_isclass(_o))
- return FALSE;
- sq_pushobject(SquirrelVM::_VM,_o);
- sq_pushnull(SquirrelVM::_VM);
- return TRUE;
-}
-
-BOOL SquirrelObject::Next(SquirrelObject &key,SquirrelObject &val)
-{
- if(SQ_SUCCEEDED(sq_next(SquirrelVM::_VM,-2))) {
- key.AttachToStackObject(-2);
- val.AttachToStackObject(-1);
- sq_pop(SquirrelVM::_VM,2);
- return TRUE;
- }
- return FALSE;
-}
-
-BOOL SquirrelObject::GetTypeTag(SQUserPointer * typeTag) {
- if (SQ_SUCCEEDED(sq_getobjtypetag(&_o,typeTag))) {
- return TRUE;
- } // if
- return FALSE;
-} // SquirrelObject::GetTypeTag
-
-const SQChar * SquirrelObject::GetTypeName(const SQChar * key) {
-#if 1
- // This version will work even if SQ_SUPPORT_INSTANCE_TYPE_INFO is not enabled.
- SqPlus::ScriptStringVar256 varNameTag;
- SqPlus::getVarNameTag(varNameTag,sizeof(varNameTag),key);
- SQUserPointer data=0;
- if (!RawGetUserData(varNameTag,&data)) {
- return NULL;
- } // if
- SqPlus::VarRefPtr vr = (SqPlus::VarRefPtr)data;
- return vr->varType->GetTypeName();
-#else // This version will only work if SQ_SUPPORT_INSTANCE_TYPE_INFO is enabled.
- SquirrelObject so = GetValue(key);
- if (so.IsNull()) return NULL;
- return so.GetTypeName();
-#endif
-} // SquirrelObject::GetTypeName
-
-const SQChar * SquirrelObject::GetTypeName(INT key) {
- SquirrelObject so = GetValue(key);
- if (so.IsNull()) return NULL;
- return so.GetTypeName();
-} // SquirrelObject::GetTypeName
-
-const SQChar * SquirrelObject::GetTypeName(void) {
- SQUserPointer typeTag=NULL;
- if (SQ_SUCCEEDED(sq_getobjtypetag(&_o,&typeTag))) {
- SquirrelObject typeTable = SquirrelVM::GetRootTable().GetValue(SQ_PLUS_TYPE_TABLE);
- if (typeTable.IsNull()) {
- return NULL; // Not compiled with SQ_SUPPORT_INSTANCE_TYPE_INFO enabled.
- } // if
- return typeTable.GetString(INT((size_t)typeTag));
- } // if
- return NULL;
-} // SquirrelObject::GetTypeName
-
-SquirrelObject SquirrelObject::GetBase(void)
-{
- SquirrelObject ret;
- sq_pushobject(SquirrelVM::_VM,_o);
- sq_getbase(SquirrelVM::_VM,-1);
- ret.AttachToStackObject(-1);
- sq_pop(SquirrelVM::_VM,2);
-
- return ret;
-}
-
-const SQChar* SquirrelObject::ToString()
-{
- return sq_objtostring(&_o);
-}
-
-SQInteger SquirrelObject::ToInteger()
-{
- return sq_objtointeger(&_o);
-}
-
-SQFloat SquirrelObject::ToFloat()
-{
- return sq_objtofloat(&_o);
-}
-
-bool SquirrelObject::ToBool()
-{
- //<<FIXME>>
- return _o._unVal.nInteger?true:false;
-}
-
-void SquirrelObject::EndIteration()
-{
- sq_pop(SquirrelVM::_VM,2);
-}
-