瀏覽代碼

Added two functions to help debug scripts getstacktop, get_last_error

mingodad 13 年之前
父節點
當前提交
b6c3870b09
共有 3 個文件被更改,包括 21 次插入0 次删除
  1. 2 0
      include/squirrel.h
  2. 5 0
      squirrel/sqapi.cpp
  3. 14 0
      squirrel/sqbaselib.cpp

+ 2 - 0
include/squirrel.h

@@ -474,6 +474,8 @@ SQUIRREL_API void sq_free(void *p,SQUnsignedInteger size);
 SQUIRREL_API SQRESULT sq_stackinfos(HSQUIRRELVM v,SQInteger level,SQStackInfos *si);
 SQUIRREL_API void sq_setdebughook(HSQUIRRELVM v);
 SQUIRREL_API void sq_setnativedebughook(HSQUIRRELVM v,SQDEBUGHOOK hook);
+SQUIRREL_API SQInteger sq_getfulltop(HSQUIRRELVM v);
+SQUIRREL_API void sq_getlasterror(HSQUIRRELVM v);
 
 /*UTILITY MACRO*/
 #define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC)

+ 5 - 0
squirrel/sqapi.cpp

@@ -757,6 +757,11 @@ SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserP
 	return SQ_OK;
 }
 
+SQInteger sq_getfulltop(HSQUIRRELVM v)
+{
+	return v->_top;
+}
+
 SQInteger sq_gettop(HSQUIRRELVM v)
 {
 	return (v->_top) - v->_stackbase;

+ 14 - 0
squirrel/sqbaselib.cpp

@@ -151,6 +151,12 @@ static SQInteger base_getstackinfos(HSQUIRRELVM v)
 	sq_getinteger(v, -1, &level);
 	return __getcallstackinfos(v,level);
 }
+
+static SQInteger base_getstacktop(HSQUIRRELVM v)
+{
+    sq_pushinteger(v, sq_getfulltop(v));
+	return 1;
+}
 
 static SQInteger base_assert(HSQUIRRELVM v)
 {
@@ -217,6 +223,12 @@ static SQInteger base_error(HSQUIRRELVM v)
 	if(_ss(v)->_errorfunc) _ss(v)->_errorfunc(v,_SC("%s"),str);
 	return 0;
 }
+
+static SQInteger base_get_last_error(HSQUIRRELVM v)
+{
+    sq_getlasterror(v);
+	return 1;
+}
 
 static SQInteger base_compilestring(HSQUIRRELVM v)
 {
@@ -286,6 +298,7 @@ static SQRegFunction base_funcs[]={
 	{_SC("setdebughook"),base_setdebughook,2, NULL},
 	{_SC("enabledebuginfo"),base_enabledebuginfo,2, NULL},
 	{_SC("getstackinfos"),base_getstackinfos,2, _SC(".n")},
+	{_SC("getstacktop"),base_getstacktop,1, _SC(".")},
 	{_SC("getroottable"),base_getroottable,1, NULL},
 	{_SC("setroottable"),base_setroottable,2, NULL},
 	{_SC("getconsttable"),base_getconsttable,1, NULL},
@@ -294,6 +307,7 @@ static SQRegFunction base_funcs[]={
 	{_SC("print1"),base_print1,2, NULL},
 	{_SC("print"),base_print,-2, NULL},
 	{_SC("error"),base_error,2, NULL},
+	{_SC("get_last_error"),base_get_last_error,1, NULL},
 	{_SC("compilestring"),base_compilestring,-2, _SC(".ss")},
 	{_SC("newthread"),base_newthread,2, _SC(".c")},
 	{_SC("suspend"),base_suspend,-1, NULL},