Update SQUIRREL to 2.2.5
[supertux.git] / external / squirrel / sqstdlib / sqstdaux.cpp
old mode 100644 (file)
new mode 100755 (executable)
index d53073b..5b87639
-/* see copyright notice in squirrel.h */
-#include <squirrel.h>
-#include <sqstdaux.h>
-#include <assert.h>
-
-void sqstd_printcallstack(HSQUIRRELVM v)
-{
-       SQPRINTFUNCTION pf = sq_getprintfunc(v);
-       if(pf) {
-               SQStackInfos si;
-               SQInteger i;
-               SQBool b;
-               SQFloat f;
-               const SQChar *s;
-               SQInteger level=1; //1 is to skip this function that is level 0
-               const SQChar *name=0; 
-               SQInteger seq=0;
-               pf(v,_SC("\nCALLSTACK\n"));
-               while(SQ_SUCCEEDED(sq_stackinfos(v,level,&si)))
-               {
-                       const SQChar *fn=_SC("unknown");
-                       const SQChar *src=_SC("unknown");
-                       if(si.funcname)fn=si.funcname;
-                       if(si.source)src=si.source;
-                       pf(v,_SC("*FUNCTION [%s()] %s line [%d]\n"),fn,src,si.line);
-                       level++;
-               }
-               level=0;
-               pf(v,_SC("\nLOCALS\n"));
-
-               for(level=0;level<10;level++){
-                       seq=0;
-                       while((name = sq_getlocal(v,level,seq)))
-                       {
-                               seq++;
-                               switch(sq_gettype(v,-1))
-                               {
-                               case OT_NULL:
-                                       pf(v,_SC("[%s] NULL\n"),name);
-                                       break;
-                               case OT_INTEGER:
-                                       sq_getinteger(v,-1,&i);
-                                       pf(v,_SC("[%s] %d\n"),name,i);
-                                       break;
-                               case OT_FLOAT:
-                                       sq_getfloat(v,-1,&f);
-                                       pf(v,_SC("[%s] %.14g\n"),name,f);
-                                       break;
-                               case OT_USERPOINTER:
-                                       pf(v,_SC("[%s] USERPOINTER\n"),name);
-                                       break;
-                               case OT_STRING:
-                                       sq_getstring(v,-1,&s);
-                                       pf(v,_SC("[%s] \"%s\"\n"),name,s);
-                                       break;
-                               case OT_TABLE:
-                                       pf(v,_SC("[%s] TABLE\n"),name);
-                                       break;
-                               case OT_ARRAY:
-                                       pf(v,_SC("[%s] ARRAY\n"),name);
-                                       break;
-                               case OT_CLOSURE:
-                                       pf(v,_SC("[%s] CLOSURE\n"),name);
-                                       break;
-                               case OT_NATIVECLOSURE:
-                                       pf(v,_SC("[%s] NATIVECLOSURE\n"),name);
-                                       break;
-                               case OT_GENERATOR:
-                                       pf(v,_SC("[%s] GENERATOR\n"),name);
-                                       break;
-                               case OT_USERDATA:
-                                       pf(v,_SC("[%s] USERDATA\n"),name);
-                                       break;
-                               case OT_THREAD:
-                                       pf(v,_SC("[%s] THREAD\n"),name);
-                                       break;
-                               case OT_CLASS:
-                                       pf(v,_SC("[%s] CLASS\n"),name);
-                                       break;
-                               case OT_INSTANCE:
-                                       pf(v,_SC("[%s] INSTANCE\n"),name);
-                                       break;
-                               case OT_WEAKREF:
-                                       pf(v,_SC("[%s] WEAKREF\n"),name);
-                                       break;
-                               case OT_BOOL:{
-                                       sq_getbool(v,-1,&b);
-                                       pf(v,_SC("[%s] %s\n"),name,b?_SC("true"):_SC("false"));
-                                                        }
-                                       break;
-                               default: assert(0); break;
-                               }
-                               sq_pop(v,1);
-                       }
-               }
-       }
-}
-
-static SQInteger _sqstd_aux_printerror(HSQUIRRELVM v)
-{
-       SQPRINTFUNCTION pf = sq_getprintfunc(v);
-       if(pf) {
-               const SQChar *sErr = 0;
-               if(sq_gettop(v)>=1) {
-                       if(SQ_SUCCEEDED(sq_getstring(v,2,&sErr)))       {
-                               pf(v,_SC("\nAN ERROR HAS OCCURED [%s]\n"),sErr);
-                       }
-                       else{
-                               pf(v,_SC("\nAN ERROR HAS OCCURED [unknown]\n"));
-                       }
-                       sqstd_printcallstack(v);
-               }
-       }
-       return 0;
-}
-
-void _sqstd_compiler_error(HSQUIRRELVM v,const SQChar *sErr,const SQChar *sSource,SQInteger line,SQInteger column)
-{
-       SQPRINTFUNCTION pf = sq_getprintfunc(v);
-       if(pf) {
-               pf(v,_SC("%s line = (%d) column = (%d) : error %s\n"),sSource,line,column,sErr);
-       }
-}
-
-void sqstd_seterrorhandlers(HSQUIRRELVM v)
-{
-       sq_setcompilererrorhandler(v,_sqstd_compiler_error);
-       sq_newclosure(v,_sqstd_aux_printerror,0);
-       sq_seterrorhandler(v);
-}
+/* see copyright notice in squirrel.h */\r
+#include <squirrel.h>\r
+#include <sqstdaux.h>\r
+#include <assert.h>\r
+\r
+void sqstd_printcallstack(HSQUIRRELVM v)\r
+{\r
+       SQPRINTFUNCTION pf = sq_getprintfunc(v);\r
+       if(pf) {\r
+               SQStackInfos si;\r
+               SQInteger i;\r
+               SQBool b;\r
+               SQFloat f;\r
+               const SQChar *s;\r
+               SQInteger level=1; //1 is to skip this function that is level 0\r
+               const SQChar *name=0; \r
+               SQInteger seq=0;\r
+               pf(v,_SC("\nCALLSTACK\n"));\r
+               while(SQ_SUCCEEDED(sq_stackinfos(v,level,&si)))\r
+               {\r
+                       const SQChar *fn=_SC("unknown");\r
+                       const SQChar *src=_SC("unknown");\r
+                       if(si.funcname)fn=si.funcname;\r
+                       if(si.source)src=si.source;\r
+                       pf(v,_SC("*FUNCTION [%s()] %s line [%d]\n"),fn,src,si.line);\r
+                       level++;\r
+               }\r
+               level=0;\r
+               pf(v,_SC("\nLOCALS\n"));\r
+\r
+               for(level=0;level<10;level++){\r
+                       seq=0;\r
+                       while((name = sq_getlocal(v,level,seq)))\r
+                       {\r
+                               seq++;\r
+                               switch(sq_gettype(v,-1))\r
+                               {\r
+                               case OT_NULL:\r
+                                       pf(v,_SC("[%s] NULL\n"),name);\r
+                                       break;\r
+                               case OT_INTEGER:\r
+                                       sq_getinteger(v,-1,&i);\r
+                                       pf(v,_SC("[%s] %d\n"),name,i);\r
+                                       break;\r
+                               case OT_FLOAT:\r
+                                       sq_getfloat(v,-1,&f);\r
+                                       pf(v,_SC("[%s] %.14g\n"),name,f);\r
+                                       break;\r
+                               case OT_USERPOINTER:\r
+                                       pf(v,_SC("[%s] USERPOINTER\n"),name);\r
+                                       break;\r
+                               case OT_STRING:\r
+                                       sq_getstring(v,-1,&s);\r
+                                       pf(v,_SC("[%s] \"%s\"\n"),name,s);\r
+                                       break;\r
+                               case OT_TABLE:\r
+                                       pf(v,_SC("[%s] TABLE\n"),name);\r
+                                       break;\r
+                               case OT_ARRAY:\r
+                                       pf(v,_SC("[%s] ARRAY\n"),name);\r
+                                       break;\r
+                               case OT_CLOSURE:\r
+                                       pf(v,_SC("[%s] CLOSURE\n"),name);\r
+                                       break;\r
+                               case OT_NATIVECLOSURE:\r
+                                       pf(v,_SC("[%s] NATIVECLOSURE\n"),name);\r
+                                       break;\r
+                               case OT_GENERATOR:\r
+                                       pf(v,_SC("[%s] GENERATOR\n"),name);\r
+                                       break;\r
+                               case OT_USERDATA:\r
+                                       pf(v,_SC("[%s] USERDATA\n"),name);\r
+                                       break;\r
+                               case OT_THREAD:\r
+                                       pf(v,_SC("[%s] THREAD\n"),name);\r
+                                       break;\r
+                               case OT_CLASS:\r
+                                       pf(v,_SC("[%s] CLASS\n"),name);\r
+                                       break;\r
+                               case OT_INSTANCE:\r
+                                       pf(v,_SC("[%s] INSTANCE\n"),name);\r
+                                       break;\r
+                               case OT_WEAKREF:\r
+                                       pf(v,_SC("[%s] WEAKREF\n"),name);\r
+                                       break;\r
+                               case OT_BOOL:{\r
+                                       sq_getbool(v,-1,&b);\r
+                                       pf(v,_SC("[%s] %s\n"),name,b?_SC("true"):_SC("false"));\r
+                                                        }\r
+                                       break;\r
+                               default: assert(0); break;\r
+                               }\r
+                               sq_pop(v,1);\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+static SQInteger _sqstd_aux_printerror(HSQUIRRELVM v)\r
+{\r
+       SQPRINTFUNCTION pf = sq_getprintfunc(v);\r
+       if(pf) {\r
+               const SQChar *sErr = 0;\r
+               if(sq_gettop(v)>=1) {\r
+                       if(SQ_SUCCEEDED(sq_getstring(v,2,&sErr)))       {\r
+                               pf(v,_SC("\nAN ERROR HAS OCCURED [%s]\n"),sErr);\r
+                       }\r
+                       else{\r
+                               pf(v,_SC("\nAN ERROR HAS OCCURED [unknown]\n"));\r
+                       }\r
+                       sqstd_printcallstack(v);\r
+               }\r
+       }\r
+       return 0;\r
+}\r
+\r
+void _sqstd_compiler_error(HSQUIRRELVM v,const SQChar *sErr,const SQChar *sSource,SQInteger line,SQInteger column)\r
+{\r
+       SQPRINTFUNCTION pf = sq_getprintfunc(v);\r
+       if(pf) {\r
+               pf(v,_SC("%s line = (%d) column = (%d) : error %s\n"),sSource,line,column,sErr);\r
+       }\r
+}\r
+\r
+void sqstd_seterrorhandlers(HSQUIRRELVM v)\r
+{\r
+       sq_setcompilererrorhandler(v,_sqstd_compiler_error);\r
+       sq_newclosure(v,_sqstd_aux_printerror,0);\r
+       sq_seterrorhandler(v);\r
+}\r