New grow and skid sounds from remaxim
[supertux.git] / src / squirrel / squirrel / sqdebug.cpp
index 96da72d..14f7f64 100644 (file)
@@ -8,9 +8,26 @@
 #include "sqclosure.h"
 #include "sqstring.h"
 
+SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger level,SQFunctionInfo *fi)
+{
+       SQInteger cssize = v->_callsstacksize;
+       if (cssize > level) {
+               SQVM::CallInfo &ci = v->_callsstack[cssize-level-1];
+               if(sq_isclosure(ci._closure)) {
+                       SQClosure *c = _closure(ci._closure);
+                       SQFunctionProto *proto = _funcproto(c->_function);
+                       fi->funcid = proto;
+                       fi->name = type(proto->_name) == OT_STRING?_stringval(proto->_name):_SC("unknown");
+                       fi->source = type(proto->_name) == OT_STRING?_stringval(proto->_sourcename):_SC("unknown");
+                       return SQ_OK;
+               }
+       }
+       return sq_throwerror(v,_SC("the object is not a closure"));
+}
+
 SQRESULT sq_stackinfos(HSQUIRRELVM v, SQInteger level, SQStackInfos *si)
 {
-       SQInteger cssize = v->_callsstack.size();
+       SQInteger cssize = v->_callsstacksize;
        if (cssize > level) {
                memset(si, 0, sizeof(SQStackInfos));
                SQVM::CallInfo &ci = v->_callsstack[cssize-level-1];
@@ -85,7 +102,7 @@ void SQVM::Raise_CompareError(const SQObject &o1, const SQObject &o2)
 void SQVM::Raise_ParamTypeError(SQInteger nparam,SQInteger typemask,SQInteger type)
 {
        SQObjectPtr exptypes = SQString::Create(_ss(this), _SC(""), -1);
-       SQInteger found = 0;
+       SQInteger found = 0;    
        for(SQInteger i=0; i<16; i++)
        {
                SQInteger mask = 0x00000001 << i;