From 92ffade76955f23ad467850c3df71ad8b5f67881 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Wed, 27 Jun 2018 00:48:45 +0200 Subject: [PATCH] [DEV] continue refacto --- cmdLine/rabbit.cpp | 14 +- rabbit-std/sqstdaux.cpp | 8 +- rabbit-std/sqstdaux.hpp | 4 +- rabbit-std/sqstdblob.cpp | 36 ++--- rabbit-std/sqstdblob.hpp | 8 +- rabbit-std/sqstdio.cpp | 24 +-- rabbit-std/sqstdio.hpp | 28 ++-- rabbit-std/sqstdmath.cpp | 12 +- rabbit-std/sqstdmath.hpp | 4 +- rabbit-std/sqstdstream.cpp | 24 +-- rabbit-std/sqstdstream.hpp | 22 +-- rabbit-std/sqstdstring.cpp | 38 ++--- rabbit-std/sqstdstring.hpp | 18 +-- rabbit-std/sqstdsystem.cpp | 18 +-- rabbit-std/sqstdsystem.hpp | 2 +- rabbit/rabbit.hpp | 318 ++++++++++++++++++------------------- rabbit/sqapi.cpp | 298 ++++++++++++++++------------------ rabbit/sqarray.hpp | 6 +- rabbit/sqbaselib.cpp | 183 ++++++++++----------- rabbit/sqclass.cpp | 2 +- rabbit/sqclass.hpp | 8 - rabbit/sqclosure.hpp | 29 +--- rabbit/sqcompiler.cpp | 2 +- rabbit/sqdebug.cpp | 4 +- rabbit/sqfuncproto.hpp | 5 - rabbit/sqlexer.cpp | 12 +- rabbit/sqobject.cpp | 139 +--------------- rabbit/sqobject.hpp | 24 --- rabbit/sqstate.cpp | 184 --------------------- rabbit/sqstate.hpp | 12 -- rabbit/sqtable.cpp | 2 +- rabbit/sqtable.hpp | 4 - rabbit/squserdata.hpp | 5 - rabbit/sqvm.hpp | 20 +-- 34 files changed, 538 insertions(+), 979 deletions(-) diff --git a/cmdLine/rabbit.cpp b/cmdLine/rabbit.cpp index 6b1e4a3..0945ff9 100644 --- a/cmdLine/rabbit.cpp +++ b/cmdLine/rabbit.cpp @@ -48,7 +48,7 @@ int MemAllocHook(int allocType, #endif -SQInteger quit(HSQUIRRELVM v) +SQInteger quit(HRABBITVM v) { int *done; sq_getuserpointer(v,-1,(SQUserPointer*)&done); @@ -56,7 +56,7 @@ SQInteger quit(HSQUIRRELVM v) return 0; } -void printfunc(HSQUIRRELVM SQ_UNUSED_ARG(v),const SQChar *s,...) +void printfunc(HRABBITVM SQ_UNUSED_ARG(v),const SQChar *s,...) { va_list vl; va_start(vl, s); @@ -64,7 +64,7 @@ void printfunc(HSQUIRRELVM SQ_UNUSED_ARG(v),const SQChar *s,...) va_end(vl); } -void errorfunc(HSQUIRRELVM SQ_UNUSED_ARG(v),const SQChar *s,...) +void errorfunc(HRABBITVM SQ_UNUSED_ARG(v),const SQChar *s,...) { va_list vl; va_start(vl, s); @@ -74,7 +74,7 @@ void errorfunc(HSQUIRRELVM SQ_UNUSED_ARG(v),const SQChar *s,...) void PrintVersionInfos() { - scfprintf(stdout,_SC("%s %s (%d bits)\n"),SQUIRREL_VERSION,SQUIRREL_COPYRIGHT,((int)(sizeof(SQInteger)*8))); + scfprintf(stdout,_SC("%s %s (%d bits)\n"),RABBIT_VERSION,RABBIT_COPYRIGHT,((int)(sizeof(SQInteger)*8))); } void PrintUsage() @@ -93,7 +93,7 @@ void PrintUsage() #define _DONE 2 #define _ERROR 3 //<> this func is a mess -int getargs(HSQUIRRELVM v,int argc, char* argv[],SQInteger *retval) +int getargs(HRABBITVM v,int argc, char* argv[],SQInteger *retval) { int i; int compiles_only = 0; @@ -231,7 +231,7 @@ int getargs(HSQUIRRELVM v,int argc, char* argv[],SQInteger *retval) return _INTERACTIVE; } -void Interactive(HSQUIRRELVM v) +void Interactive(HRABBITVM v) { #define MAXINPUT 1024 @@ -315,7 +315,7 @@ void Interactive(HSQUIRRELVM v) int main(int argc, char* argv[]) { - HSQUIRRELVM v; + HRABBITVM v; SQInteger retval = 0; #if defined(_MSC_VER) && defined(_DEBUG) _CrtSetAllocHook(MemAllocHook); diff --git a/rabbit-std/sqstdaux.cpp b/rabbit-std/sqstdaux.cpp index 3eac5ff..88adcf2 100644 --- a/rabbit-std/sqstdaux.cpp +++ b/rabbit-std/sqstdaux.cpp @@ -10,7 +10,7 @@ #include #include -void sqstd_printcallstack(HSQUIRRELVM v) +void sqstd_printcallstack(HRABBITVM v) { SQPRINTFUNCTION pf = sq_geterrorfunc(v); if(pf) { @@ -103,7 +103,7 @@ void sqstd_printcallstack(HSQUIRRELVM v) } } -static SQInteger _sqstd_aux_printerror(HSQUIRRELVM v) +static SQInteger _sqstd_aux_printerror(HRABBITVM v) { SQPRINTFUNCTION pf = sq_geterrorfunc(v); if(pf) { @@ -121,7 +121,7 @@ static SQInteger _sqstd_aux_printerror(HSQUIRRELVM v) return 0; } -void _sqstd_compiler_error(HSQUIRRELVM v,const SQChar *sErr,const SQChar *sSource,SQInteger line,SQInteger column) +void _sqstd_compiler_error(HRABBITVM v,const SQChar *sErr,const SQChar *sSource,SQInteger line,SQInteger column) { SQPRINTFUNCTION pf = sq_geterrorfunc(v); if(pf) { @@ -129,7 +129,7 @@ void _sqstd_compiler_error(HSQUIRRELVM v,const SQChar *sErr,const SQChar *sSourc } } -void sqstd_seterrorhandlers(HSQUIRRELVM v) +void sqstd_seterrorhandlers(HRABBITVM v) { sq_setcompilererrorhandler(v,_sqstd_compiler_error); sq_newclosure(v,_sqstd_aux_printerror,0); diff --git a/rabbit-std/sqstdaux.hpp b/rabbit-std/sqstdaux.hpp index 4887b7a..790c7d8 100644 --- a/rabbit-std/sqstdaux.hpp +++ b/rabbit-std/sqstdaux.hpp @@ -7,5 +7,5 @@ */ #pragma once -SQUIRREL_API void sqstd_seterrorhandlers(HSQUIRRELVM v); -SQUIRREL_API void sqstd_printcallstack(HSQUIRRELVM v); +RABBIT_API void sqstd_seterrorhandlers(HRABBITVM v); +RABBIT_API void sqstd_printcallstack(HRABBITVM v); diff --git a/rabbit-std/sqstdblob.cpp b/rabbit-std/sqstdblob.cpp index 7a9f89c..8ed9bb0 100644 --- a/rabbit-std/sqstdblob.cpp +++ b/rabbit-std/sqstdblob.cpp @@ -20,7 +20,7 @@ return sq_throwerror(v,_SC("the blob is invalid")); -static SQInteger _blob_resize(HSQUIRRELVM v) +static SQInteger _blob_resize(HRABBITVM v) { SETUP_BLOB(v); SQInteger size; @@ -43,7 +43,7 @@ static void __swap_word(unsigned short *n) *n=(unsigned short)((*n>>8)&0x00FF)| ((*n<<8)&0xFF00); } -static SQInteger _blob_swap4(HSQUIRRELVM v) +static SQInteger _blob_swap4(HRABBITVM v) { SETUP_BLOB(v); SQInteger num=(self->Len()-(self->Len()%4))>>2; @@ -54,7 +54,7 @@ static SQInteger _blob_swap4(HSQUIRRELVM v) return 0; } -static SQInteger _blob_swap2(HSQUIRRELVM v) +static SQInteger _blob_swap2(HRABBITVM v) { SETUP_BLOB(v); SQInteger num=(self->Len()-(self->Len()%2))>>1; @@ -65,7 +65,7 @@ static SQInteger _blob_swap2(HSQUIRRELVM v) return 0; } -static SQInteger _blob__set(HSQUIRRELVM v) +static SQInteger _blob__set(HRABBITVM v) { SETUP_BLOB(v); SQInteger idx,val; @@ -78,7 +78,7 @@ static SQInteger _blob__set(HSQUIRRELVM v) return 1; } -static SQInteger _blob__get(HSQUIRRELVM v) +static SQInteger _blob__get(HRABBITVM v) { SETUP_BLOB(v); SQInteger idx; @@ -95,7 +95,7 @@ static SQInteger _blob__get(HSQUIRRELVM v) return 1; } -static SQInteger _blob__nexti(HSQUIRRELVM v) +static SQInteger _blob__nexti(HRABBITVM v) { SETUP_BLOB(v); if(sq_gettype(v,2) == OT_NULL) { @@ -114,7 +114,7 @@ static SQInteger _blob__nexti(HSQUIRRELVM v) return sq_throwerror(v,_SC("internal error (_nexti) wrong argument type")); } -static SQInteger _blob__typeof(HSQUIRRELVM v) +static SQInteger _blob__typeof(HRABBITVM v) { sq_pushstring(v,_SC("blob"),-1); return 1; @@ -128,7 +128,7 @@ static SQInteger _blob_releasehook(SQUserPointer p, SQInteger SQ_UNUSED_ARG(size return 1; } -static SQInteger _blob_constructor(HSQUIRRELVM v) +static SQInteger _blob_constructor(HRABBITVM v) { SQInteger nparam = sq_gettop(v); SQInteger size = 0; @@ -148,7 +148,7 @@ static SQInteger _blob_constructor(HSQUIRRELVM v) return 0; } -static SQInteger _blob__cloned(HSQUIRRELVM v) +static SQInteger _blob__cloned(HRABBITVM v) { SQBlob *other = NULL; { @@ -185,7 +185,7 @@ static const SQRegFunction _blob_methods[] = { //GLOBAL FUNCTIONS -static SQInteger _g_blob_casti2f(HSQUIRRELVM v) +static SQInteger _g_blob_casti2f(HRABBITVM v) { SQInteger i; sq_getinteger(v,2,&i); @@ -193,7 +193,7 @@ static SQInteger _g_blob_casti2f(HSQUIRRELVM v) return 1; } -static SQInteger _g_blob_castf2i(HSQUIRRELVM v) +static SQInteger _g_blob_castf2i(HRABBITVM v) { SQFloat f; sq_getfloat(v,2,&f); @@ -201,7 +201,7 @@ static SQInteger _g_blob_castf2i(HSQUIRRELVM v) return 1; } -static SQInteger _g_blob_swap2(HSQUIRRELVM v) +static SQInteger _g_blob_swap2(HRABBITVM v) { SQInteger i; sq_getinteger(v,2,&i); @@ -210,7 +210,7 @@ static SQInteger _g_blob_swap2(HSQUIRRELVM v) return 1; } -static SQInteger _g_blob_swap4(HSQUIRRELVM v) +static SQInteger _g_blob_swap4(HRABBITVM v) { SQInteger i; sq_getinteger(v,2,&i); @@ -220,7 +220,7 @@ static SQInteger _g_blob_swap4(HSQUIRRELVM v) return 1; } -static SQInteger _g_blob_swapfloat(HSQUIRRELVM v) +static SQInteger _g_blob_swapfloat(HRABBITVM v) { SQFloat f; sq_getfloat(v,2,&f); @@ -239,7 +239,7 @@ static const SQRegFunction bloblib_funcs[]={ {NULL,(SQFUNCTION)0,0,NULL} }; -SQRESULT sqstd_getblob(HSQUIRRELVM v,SQInteger idx,SQUserPointer *ptr) +SQRESULT sqstd_getblob(HRABBITVM v,SQInteger idx,SQUserPointer *ptr) { SQBlob *blob; if(SQ_FAILED(sq_getinstanceup(v,idx,(SQUserPointer *)&blob,(SQUserPointer)SQSTD_BLOB_TYPE_TAG))) @@ -248,7 +248,7 @@ SQRESULT sqstd_getblob(HSQUIRRELVM v,SQInteger idx,SQUserPointer *ptr) return SQ_OK; } -SQInteger sqstd_getblobsize(HSQUIRRELVM v,SQInteger idx) +SQInteger sqstd_getblobsize(HRABBITVM v,SQInteger idx) { SQBlob *blob; if(SQ_FAILED(sq_getinstanceup(v,idx,(SQUserPointer *)&blob,(SQUserPointer)SQSTD_BLOB_TYPE_TAG))) @@ -256,7 +256,7 @@ SQInteger sqstd_getblobsize(HSQUIRRELVM v,SQInteger idx) return blob->Len(); } -SQUserPointer sqstd_createblob(HSQUIRRELVM v, SQInteger size) +SQUserPointer sqstd_createblob(HRABBITVM v, SQInteger size) { SQInteger top = sq_gettop(v); sq_pushregistrytable(v); @@ -276,7 +276,7 @@ SQUserPointer sqstd_createblob(HSQUIRRELVM v, SQInteger size) return NULL; } -SQRESULT sqstd_register_bloblib(HSQUIRRELVM v) +SQRESULT sqstd_register_bloblib(HRABBITVM v) { return declare_stream(v,_SC("blob"),(SQUserPointer)SQSTD_BLOB_TYPE_TAG,_SC("std_blob"),_blob_methods,bloblib_funcs); } diff --git a/rabbit-std/sqstdblob.hpp b/rabbit-std/sqstdblob.hpp index 83eef05..b802953 100644 --- a/rabbit-std/sqstdblob.hpp +++ b/rabbit-std/sqstdblob.hpp @@ -7,9 +7,9 @@ */ #pragma once -SQUIRREL_API SQUserPointer sqstd_createblob(HSQUIRRELVM v, SQInteger size); -SQUIRREL_API SQRESULT sqstd_getblob(HSQUIRRELVM v,SQInteger idx,SQUserPointer *ptr); -SQUIRREL_API SQInteger sqstd_getblobsize(HSQUIRRELVM v,SQInteger idx); +RABBIT_API SQUserPointer sqstd_createblob(HRABBITVM v, SQInteger size); +RABBIT_API SQRESULT sqstd_getblob(HRABBITVM v,SQInteger idx,SQUserPointer *ptr); +RABBIT_API SQInteger sqstd_getblobsize(HRABBITVM v,SQInteger idx); -SQUIRREL_API SQRESULT sqstd_register_bloblib(HSQUIRRELVM v); +RABBIT_API SQRESULT sqstd_register_bloblib(HRABBITVM v); diff --git a/rabbit-std/sqstdio.cpp b/rabbit-std/sqstdio.cpp index 7c992a0..90cc9ab 100644 --- a/rabbit-std/sqstdio.cpp +++ b/rabbit-std/sqstdio.cpp @@ -116,7 +116,7 @@ private: bool _owns; }; -static SQInteger _file__typeof(HSQUIRRELVM v) +static SQInteger _file__typeof(HRABBITVM v) { sq_pushstring(v,_SC("file"),-1); return 1; @@ -130,7 +130,7 @@ static SQInteger _file_releasehook(SQUserPointer p, SQInteger SQ_UNUSED_ARG(size return 1; } -static SQInteger _file_constructor(HSQUIRRELVM v) +static SQInteger _file_constructor(HRABBITVM v) { const SQChar *filename,*mode; bool owns = true; @@ -158,7 +158,7 @@ static SQInteger _file_constructor(HSQUIRRELVM v) return 0; } -static SQInteger _file_close(HSQUIRRELVM v) +static SQInteger _file_close(HRABBITVM v) { SQFile *self = NULL; if(SQ_SUCCEEDED(sq_getinstanceup(v,1,(SQUserPointer*)&self,(SQUserPointer)SQSTD_FILE_TYPE_TAG)) @@ -180,7 +180,7 @@ static const SQRegFunction _file_methods[] = { -SQRESULT sqstd_createfile(HSQUIRRELVM v, SQFILE file,SQBool own) +SQRESULT sqstd_createfile(HRABBITVM v, SQFILE file,SQBool own) { SQInteger top = sq_gettop(v); sq_pushregistrytable(v); @@ -204,7 +204,7 @@ SQRESULT sqstd_createfile(HSQUIRRELVM v, SQFILE file,SQBool own) return SQ_ERROR; } -SQRESULT sqstd_getfile(HSQUIRRELVM v, SQInteger idx, SQFILE *file) +SQRESULT sqstd_getfile(HRABBITVM v, SQInteger idx, SQFILE *file) { SQFile *fileobj = NULL; if(SQ_SUCCEEDED(sq_getinstanceup(v,idx,(SQUserPointer*)&fileobj,(SQUserPointer)SQSTD_FILE_TYPE_TAG))) { @@ -344,7 +344,7 @@ SQInteger file_write(SQUserPointer file,SQUserPointer p,SQInteger size) return sqstd_fwrite(p,1,size,(SQFILE)file); } -SQRESULT sqstd_loadfile(HSQUIRRELVM v,const SQChar *filename,SQBool printerror) +SQRESULT sqstd_loadfile(HRABBITVM v,const SQChar *filename,SQBool printerror) { SQFILE file = sqstd_fopen(filename,_SC("rb")); @@ -404,7 +404,7 @@ SQRESULT sqstd_loadfile(HSQUIRRELVM v,const SQChar *filename,SQBool printerror) return sq_throwerror(v,_SC("cannot open the file")); } -SQRESULT sqstd_dofile(HSQUIRRELVM v,const SQChar *filename,SQBool retval,SQBool printerror) +SQRESULT sqstd_dofile(HRABBITVM v,const SQChar *filename,SQBool retval,SQBool printerror) { //at least one entry must exist in order for us to push it as the environment if(sq_gettop(v) == 0) @@ -421,7 +421,7 @@ SQRESULT sqstd_dofile(HSQUIRRELVM v,const SQChar *filename,SQBool retval,SQBool return SQ_ERROR; } -SQRESULT sqstd_writeclosuretofile(HSQUIRRELVM v,const SQChar *filename) +SQRESULT sqstd_writeclosuretofile(HRABBITVM v,const SQChar *filename) { SQFILE file = sqstd_fopen(filename,_SC("wb+")); if(!file) return sq_throwerror(v,_SC("cannot open the file")); @@ -433,7 +433,7 @@ SQRESULT sqstd_writeclosuretofile(HSQUIRRELVM v,const SQChar *filename) return SQ_ERROR; //forward the error } -SQInteger _g_io_loadfile(HSQUIRRELVM v) +SQInteger _g_io_loadfile(HRABBITVM v) { const SQChar *filename; SQBool printerror = SQFalse; @@ -446,7 +446,7 @@ SQInteger _g_io_loadfile(HSQUIRRELVM v) return SQ_ERROR; //propagates the error } -SQInteger _g_io_writeclosuretofile(HSQUIRRELVM v) +SQInteger _g_io_writeclosuretofile(HRABBITVM v) { const SQChar *filename; sq_getstring(v,2,&filename); @@ -455,7 +455,7 @@ SQInteger _g_io_writeclosuretofile(HSQUIRRELVM v) return SQ_ERROR; //propagates the error } -SQInteger _g_io_dofile(HSQUIRRELVM v) +SQInteger _g_io_dofile(HRABBITVM v) { const SQChar *filename; SQBool printerror = SQFalse; @@ -477,7 +477,7 @@ static const SQRegFunction iolib_funcs[]={ {NULL,(SQFUNCTION)0,0,NULL} }; -SQRESULT sqstd_register_iolib(HSQUIRRELVM v) +SQRESULT sqstd_register_iolib(HRABBITVM v) { SQInteger top = sq_gettop(v); //create delegate diff --git a/rabbit-std/sqstdio.hpp b/rabbit-std/sqstdio.hpp index d76c5bb..bd80b47 100644 --- a/rabbit-std/sqstdio.hpp +++ b/rabbit-std/sqstdio.hpp @@ -27,22 +27,22 @@ struct SQStream { typedef void* SQFILE; -SQUIRREL_API SQFILE sqstd_fopen(const SQChar *,const SQChar *); -SQUIRREL_API SQInteger sqstd_fread(SQUserPointer, SQInteger, SQInteger, SQFILE); -SQUIRREL_API SQInteger sqstd_fwrite(const SQUserPointer, SQInteger, SQInteger, SQFILE); -SQUIRREL_API SQInteger sqstd_fseek(SQFILE , SQInteger , SQInteger); -SQUIRREL_API SQInteger sqstd_ftell(SQFILE); -SQUIRREL_API SQInteger sqstd_fflush(SQFILE); -SQUIRREL_API SQInteger sqstd_fclose(SQFILE); -SQUIRREL_API SQInteger sqstd_feof(SQFILE); +RABBIT_API SQFILE sqstd_fopen(const SQChar *,const SQChar *); +RABBIT_API SQInteger sqstd_fread(SQUserPointer, SQInteger, SQInteger, SQFILE); +RABBIT_API SQInteger sqstd_fwrite(const SQUserPointer, SQInteger, SQInteger, SQFILE); +RABBIT_API SQInteger sqstd_fseek(SQFILE , SQInteger , SQInteger); +RABBIT_API SQInteger sqstd_ftell(SQFILE); +RABBIT_API SQInteger sqstd_fflush(SQFILE); +RABBIT_API SQInteger sqstd_fclose(SQFILE); +RABBIT_API SQInteger sqstd_feof(SQFILE); -SQUIRREL_API SQRESULT sqstd_createfile(HSQUIRRELVM v, SQFILE file,SQBool own); -SQUIRREL_API SQRESULT sqstd_getfile(HSQUIRRELVM v, SQInteger idx, SQFILE *file); +RABBIT_API SQRESULT sqstd_createfile(HRABBITVM v, SQFILE file,SQBool own); +RABBIT_API SQRESULT sqstd_getfile(HRABBITVM v, SQInteger idx, SQFILE *file); //compiler helpers -SQUIRREL_API SQRESULT sqstd_loadfile(HSQUIRRELVM v,const SQChar *filename,SQBool printerror); -SQUIRREL_API SQRESULT sqstd_dofile(HSQUIRRELVM v,const SQChar *filename,SQBool retval,SQBool printerror); -SQUIRREL_API SQRESULT sqstd_writeclosuretofile(HSQUIRRELVM v,const SQChar *filename); +RABBIT_API SQRESULT sqstd_loadfile(HRABBITVM v,const SQChar *filename,SQBool printerror); +RABBIT_API SQRESULT sqstd_dofile(HRABBITVM v,const SQChar *filename,SQBool retval,SQBool printerror); +RABBIT_API SQRESULT sqstd_writeclosuretofile(HRABBITVM v,const SQChar *filename); -SQUIRREL_API SQRESULT sqstd_register_iolib(HSQUIRRELVM v); +RABBIT_API SQRESULT sqstd_register_iolib(HRABBITVM v); diff --git a/rabbit-std/sqstdmath.cpp b/rabbit-std/sqstdmath.cpp index 0076e26..7fe68d3 100644 --- a/rabbit-std/sqstdmath.cpp +++ b/rabbit-std/sqstdmath.cpp @@ -11,14 +11,14 @@ #include #include -#define SINGLE_ARG_FUNC(_funcname) static SQInteger math_##_funcname(HSQUIRRELVM v){ \ +#define SINGLE_ARG_FUNC(_funcname) static SQInteger math_##_funcname(HRABBITVM v){ \ SQFloat f; \ sq_getfloat(v,2,&f); \ sq_pushfloat(v,(SQFloat)_funcname(f)); \ return 1; \ } -#define TWO_ARGS_FUNC(_funcname) static SQInteger math_##_funcname(HSQUIRRELVM v){ \ +#define TWO_ARGS_FUNC(_funcname) static SQInteger math_##_funcname(HRABBITVM v){ \ SQFloat p1,p2; \ sq_getfloat(v,2,&p1); \ sq_getfloat(v,3,&p2); \ @@ -26,7 +26,7 @@ return 1; \ } -static SQInteger math_srand(HSQUIRRELVM v) +static SQInteger math_srand(HRABBITVM v) { SQInteger i; if(SQ_FAILED(sq_getinteger(v,2,&i))) @@ -35,13 +35,13 @@ static SQInteger math_srand(HSQUIRRELVM v) return 0; } -static SQInteger math_rand(HSQUIRRELVM v) +static SQInteger math_rand(HRABBITVM v) { sq_pushinteger(v,rand()); return 1; } -static SQInteger math_abs(HSQUIRRELVM v) +static SQInteger math_abs(HRABBITVM v) { SQInteger n; sq_getinteger(v,2,&n); @@ -93,7 +93,7 @@ static const SQRegFunction mathlib_funcs[] = { #define M_PI (3.14159265358979323846) #endif -SQRESULT sqstd_register_mathlib(HSQUIRRELVM v) +SQRESULT sqstd_register_mathlib(HRABBITVM v) { SQInteger i=0; while(mathlib_funcs[i].name!=0) { diff --git a/rabbit-std/sqstdmath.hpp b/rabbit-std/sqstdmath.hpp index c8bb04e..1122130 100644 --- a/rabbit-std/sqstdmath.hpp +++ b/rabbit-std/sqstdmath.hpp @@ -7,5 +7,7 @@ */ #pragma once -SQUIRREL_API SQRESULT sqstd_register_mathlib(HSQUIRRELVM v); +#include + +RABBIT_API SQRESULT sqstd_register_mathlib(HRABBITVM v); diff --git a/rabbit-std/sqstdstream.cpp b/rabbit-std/sqstdstream.cpp index a94a0e4..9f49265 100644 --- a/rabbit-std/sqstdstream.cpp +++ b/rabbit-std/sqstdstream.cpp @@ -23,7 +23,7 @@ if(!self || !self->IsValid()) \ return sq_throwerror(v,_SC("the stream is invalid")); -SQInteger _stream_readblob(HSQUIRRELVM v) +SQInteger _stream_readblob(HRABBITVM v) { SETUP_STREAM(v); SQUserPointer data,blobp; @@ -44,7 +44,7 @@ SQInteger _stream_readblob(HSQUIRRELVM v) #define SAFE_READN(ptr,len) { \ if(self->Read(ptr,len) != len) return sq_throwerror(v,_SC("io error")); \ } -SQInteger _stream_readn(HSQUIRRELVM v) +SQInteger _stream_readn(HRABBITVM v) { SETUP_STREAM(v); SQInteger format; @@ -104,7 +104,7 @@ SQInteger _stream_readn(HSQUIRRELVM v) return 1; } -SQInteger _stream_writeblob(HSQUIRRELVM v) +SQInteger _stream_writeblob(HRABBITVM v) { SQUserPointer data; SQInteger size; @@ -118,7 +118,7 @@ SQInteger _stream_writeblob(HSQUIRRELVM v) return 1; } -SQInteger _stream_writen(HSQUIRRELVM v) +SQInteger _stream_writen(HRABBITVM v) { SETUP_STREAM(v); SQInteger format, ti; @@ -187,7 +187,7 @@ SQInteger _stream_writen(HSQUIRRELVM v) return 0; } -SQInteger _stream_seek(HSQUIRRELVM v) +SQInteger _stream_seek(HRABBITVM v) { SETUP_STREAM(v); SQInteger offset, origin = SQ_SEEK_SET; @@ -206,21 +206,21 @@ SQInteger _stream_seek(HSQUIRRELVM v) return 1; } -SQInteger _stream_tell(HSQUIRRELVM v) +SQInteger _stream_tell(HRABBITVM v) { SETUP_STREAM(v); sq_pushinteger(v, self->Tell()); return 1; } -SQInteger _stream_len(HSQUIRRELVM v) +SQInteger _stream_len(HRABBITVM v) { SETUP_STREAM(v); sq_pushinteger(v, self->Len()); return 1; } -SQInteger _stream_flush(HSQUIRRELVM v) +SQInteger _stream_flush(HRABBITVM v) { SETUP_STREAM(v); if(!self->Flush()) @@ -230,7 +230,7 @@ SQInteger _stream_flush(HSQUIRRELVM v) return 1; } -SQInteger _stream_eos(HSQUIRRELVM v) +SQInteger _stream_eos(HRABBITVM v) { SETUP_STREAM(v); if(self->EOS()) @@ -240,7 +240,7 @@ SQInteger _stream_eos(HSQUIRRELVM v) return 1; } - SQInteger _stream__cloned(HSQUIRRELVM v) + SQInteger _stream__cloned(HRABBITVM v) { return sq_throwerror(v,_SC("this object cannot be cloned")); } @@ -259,7 +259,7 @@ static const SQRegFunction _stream_methods[] = { {NULL,(SQFUNCTION)0,0,NULL} }; -void init_streamclass(HSQUIRRELVM v) +void init_streamclass(HRABBITVM v) { sq_pushregistrytable(v); sq_pushstring(v,_SC("std_stream"),-1); @@ -290,7 +290,7 @@ void init_streamclass(HSQUIRRELVM v) sq_pop(v,1); } -SQRESULT declare_stream(HSQUIRRELVM v,const SQChar* name,SQUserPointer typetag,const SQChar* reg_name,const SQRegFunction *methods,const SQRegFunction *globals) +SQRESULT declare_stream(HRABBITVM v,const SQChar* name,SQUserPointer typetag,const SQChar* reg_name,const SQRegFunction *methods,const SQRegFunction *globals) { if(sq_gettype(v,-1) != OT_TABLE) return sq_throwerror(v,_SC("table expected")); diff --git a/rabbit-std/sqstdstream.hpp b/rabbit-std/sqstdstream.hpp index a7b5efd..85430fd 100644 --- a/rabbit-std/sqstdstream.hpp +++ b/rabbit-std/sqstdstream.hpp @@ -7,16 +7,16 @@ */ #pragma once -SQInteger _stream_readblob(HSQUIRRELVM v); -SQInteger _stream_readline(HSQUIRRELVM v); -SQInteger _stream_readn(HSQUIRRELVM v); -SQInteger _stream_writeblob(HSQUIRRELVM v); -SQInteger _stream_writen(HSQUIRRELVM v); -SQInteger _stream_seek(HSQUIRRELVM v); -SQInteger _stream_tell(HSQUIRRELVM v); -SQInteger _stream_len(HSQUIRRELVM v); -SQInteger _stream_eos(HSQUIRRELVM v); -SQInteger _stream_flush(HSQUIRRELVM v); +SQInteger _stream_readblob(HRABBITVM v); +SQInteger _stream_readline(HRABBITVM v); +SQInteger _stream_readn(HRABBITVM v); +SQInteger _stream_writeblob(HRABBITVM v); +SQInteger _stream_writen(HRABBITVM v); +SQInteger _stream_seek(HRABBITVM v); +SQInteger _stream_tell(HRABBITVM v); +SQInteger _stream_len(HRABBITVM v); +SQInteger _stream_eos(HRABBITVM v); +SQInteger _stream_flush(HRABBITVM v); #define _DECL_STREAM_FUNC(name,nparams,typecheck) {_SC(#name),_stream_##name,nparams,typecheck} -SQRESULT declare_stream(HSQUIRRELVM v,const SQChar* name,SQUserPointer typetag,const SQChar* reg_name,const SQRegFunction *methods,const SQRegFunction *globals); +SQRESULT declare_stream(HRABBITVM v,const SQChar* name,SQUserPointer typetag,const SQChar* reg_name,const SQRegFunction *methods,const SQRegFunction *globals); diff --git a/rabbit-std/sqstdstring.cpp b/rabbit-std/sqstdstring.cpp index 6ef1442..1cb703b 100644 --- a/rabbit-std/sqstdstring.cpp +++ b/rabbit-std/sqstdstring.cpp @@ -26,7 +26,7 @@ static SQBool isfmtchr(SQChar ch) return SQFalse; } -static SQInteger validate_format(HSQUIRRELVM v, SQChar *fmt, const SQChar *src, SQInteger n,SQInteger &width) +static SQInteger validate_format(HRABBITVM v, SQChar *fmt, const SQChar *src, SQInteger n,SQInteger &width) { SQChar *dummy; SQChar swidth[MAX_WFORMAT_LEN]; @@ -71,7 +71,7 @@ static SQInteger validate_format(HSQUIRRELVM v, SQChar *fmt, const SQChar *src, return n; } -SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output) +SQRESULT sqstd_format(HRABBITVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output) { const SQChar *format; SQChar *dest; @@ -160,7 +160,7 @@ SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen return SQ_OK; } -static SQInteger _string_printf(HSQUIRRELVM v) +static SQInteger _string_printf(HRABBITVM v) { SQChar *dest = NULL; SQInteger length = 0; @@ -173,7 +173,7 @@ static SQInteger _string_printf(HSQUIRRELVM v) return 0; } -static SQInteger _string_format(HSQUIRRELVM v) +static SQInteger _string_format(HRABBITVM v) { SQChar *dest = NULL; SQInteger length = 0; @@ -201,7 +201,7 @@ static void __strip_r(const SQChar *str,SQInteger len,const SQChar **end) *end = t + 1; } -static SQInteger _string_strip(HSQUIRRELVM v) +static SQInteger _string_strip(HRABBITVM v) { const SQChar *str,*start,*end; sq_getstring(v,2,&str); @@ -212,7 +212,7 @@ static SQInteger _string_strip(HSQUIRRELVM v) return 1; } -static SQInteger _string_lstrip(HSQUIRRELVM v) +static SQInteger _string_lstrip(HRABBITVM v) { const SQChar *str,*start; sq_getstring(v,2,&str); @@ -221,7 +221,7 @@ static SQInteger _string_lstrip(HSQUIRRELVM v) return 1; } -static SQInteger _string_rstrip(HSQUIRRELVM v) +static SQInteger _string_rstrip(HRABBITVM v) { const SQChar *str,*end; sq_getstring(v,2,&str); @@ -231,7 +231,7 @@ static SQInteger _string_rstrip(HSQUIRRELVM v) return 1; } -static SQInteger _string_split(HSQUIRRELVM v) +static SQInteger _string_split(HRABBITVM v) { const SQChar *str,*seps; SQChar *stemp; @@ -269,7 +269,7 @@ static SQInteger _string_split(HSQUIRRELVM v) return 1; } -static SQInteger _string_escape(HSQUIRRELVM v) +static SQInteger _string_escape(HRABBITVM v) { const SQChar *str; SQChar *dest,*resstr; @@ -339,7 +339,7 @@ static SQInteger _string_escape(HSQUIRRELVM v) return 1; } -static SQInteger _string_startswith(HSQUIRRELVM v) +static SQInteger _string_startswith(HRABBITVM v) { const SQChar *str,*cmp; sq_getstring(v,2,&str); @@ -354,7 +354,7 @@ static SQInteger _string_startswith(HSQUIRRELVM v) return 1; } -static SQInteger _string_endswith(HSQUIRRELVM v) +static SQInteger _string_endswith(HRABBITVM v) { const SQChar *str,*cmp; sq_getstring(v,2,&str); @@ -380,7 +380,7 @@ static SQInteger _rexobj_releasehook(SQUserPointer p, SQInteger SQ_UNUSED_ARG(si return 1; } -static SQInteger _regexp_match(HSQUIRRELVM v) +static SQInteger _regexp_match(HRABBITVM v) { SETUP_REX(v); const SQChar *str; @@ -394,7 +394,7 @@ static SQInteger _regexp_match(HSQUIRRELVM v) return 1; } -static void _addrexmatch(HSQUIRRELVM v,const SQChar *str,const SQChar *begin,const SQChar *end) +static void _addrexmatch(HRABBITVM v,const SQChar *str,const SQChar *begin,const SQChar *end) { sq_newtable(v); sq_pushstring(v,_SC("begin"),-1); @@ -405,7 +405,7 @@ static void _addrexmatch(HSQUIRRELVM v,const SQChar *str,const SQChar *begin,con sq_rawset(v,-3); } -static SQInteger _regexp_search(HSQUIRRELVM v) +static SQInteger _regexp_search(HRABBITVM v) { SETUP_REX(v); const SQChar *str,*begin,*end; @@ -419,7 +419,7 @@ static SQInteger _regexp_search(HSQUIRRELVM v) return 0; } -static SQInteger _regexp_capture(HSQUIRRELVM v) +static SQInteger _regexp_capture(HRABBITVM v) { SETUP_REX(v); const SQChar *str,*begin,*end; @@ -443,14 +443,14 @@ static SQInteger _regexp_capture(HSQUIRRELVM v) return 0; } -static SQInteger _regexp_subexpcount(HSQUIRRELVM v) +static SQInteger _regexp_subexpcount(HRABBITVM v) { SETUP_REX(v); sq_pushinteger(v,sqstd_rex_getsubexpcount(self)); return 1; } -static SQInteger _regexp_constructor(HSQUIRRELVM v) +static SQInteger _regexp_constructor(HRABBITVM v) { const SQChar *error,*pattern; sq_getstring(v,2,&pattern); @@ -461,7 +461,7 @@ static SQInteger _regexp_constructor(HSQUIRRELVM v) return 0; } -static SQInteger _regexp__typeof(HSQUIRRELVM v) +static SQInteger _regexp__typeof(HRABBITVM v) { sq_pushstring(v,_SC("regexp"),-1); return 1; @@ -495,7 +495,7 @@ static const SQRegFunction stringlib_funcs[]={ #undef _DECL_FUNC -SQInteger sqstd_register_stringlib(HSQUIRRELVM v) +SQInteger sqstd_register_stringlib(HRABBITVM v) { sq_pushstring(v,_SC("regexp"),-1); sq_newclass(v,SQFalse); diff --git a/rabbit-std/sqstdstring.hpp b/rabbit-std/sqstdstring.hpp index 7671e20..4a2fc38 100644 --- a/rabbit-std/sqstdstring.hpp +++ b/rabbit-std/sqstdstring.hpp @@ -15,15 +15,15 @@ typedef struct { SQInteger len; } SQRexMatch; -SQUIRREL_API SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error); -SQUIRREL_API void sqstd_rex_free(SQRex *exp); -SQUIRREL_API SQBool sqstd_rex_match(SQRex* exp,const SQChar* text); -SQUIRREL_API SQBool sqstd_rex_search(SQRex* exp,const SQChar* text, const SQChar** out_begin, const SQChar** out_end); -SQUIRREL_API SQBool sqstd_rex_searchrange(SQRex* exp,const SQChar* text_begin,const SQChar* text_end,const SQChar** out_begin, const SQChar** out_end); -SQUIRREL_API SQInteger sqstd_rex_getsubexpcount(SQRex* exp); -SQUIRREL_API SQBool sqstd_rex_getsubexp(SQRex* exp, SQInteger n, SQRexMatch *subexp); +RABBIT_API SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error); +RABBIT_API void sqstd_rex_free(SQRex *exp); +RABBIT_API SQBool sqstd_rex_match(SQRex* exp,const SQChar* text); +RABBIT_API SQBool sqstd_rex_search(SQRex* exp,const SQChar* text, const SQChar** out_begin, const SQChar** out_end); +RABBIT_API SQBool sqstd_rex_searchrange(SQRex* exp,const SQChar* text_begin,const SQChar* text_end,const SQChar** out_begin, const SQChar** out_end); +RABBIT_API SQInteger sqstd_rex_getsubexpcount(SQRex* exp); +RABBIT_API SQBool sqstd_rex_getsubexp(SQRex* exp, SQInteger n, SQRexMatch *subexp); -SQUIRREL_API SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output); +RABBIT_API SQRESULT sqstd_format(HRABBITVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output); -SQUIRREL_API SQRESULT sqstd_register_stringlib(HSQUIRRELVM v); +RABBIT_API SQRESULT sqstd_register_stringlib(HRABBITVM v); diff --git a/rabbit-std/sqstdsystem.cpp b/rabbit-std/sqstdsystem.cpp index e3fc67c..2a05195 100644 --- a/rabbit-std/sqstdsystem.cpp +++ b/rabbit-std/sqstdsystem.cpp @@ -27,7 +27,7 @@ #define screname rename #endif -static SQInteger _system_getenv(HSQUIRRELVM v) +static SQInteger _system_getenv(HRABBITVM v) { const SQChar *s; if(SQ_SUCCEEDED(sq_getstring(v,2,&s))){ @@ -38,7 +38,7 @@ static SQInteger _system_getenv(HSQUIRRELVM v) } -static SQInteger _system_system(HSQUIRRELVM v) +static SQInteger _system_system(HRABBITVM v) { const SQChar *s; if(SQ_SUCCEEDED(sq_getstring(v,2,&s))){ @@ -49,20 +49,20 @@ static SQInteger _system_system(HSQUIRRELVM v) } -static SQInteger _system_clock(HSQUIRRELVM v) +static SQInteger _system_clock(HRABBITVM v) { sq_pushfloat(v,((SQFloat)clock())/(SQFloat)CLOCKS_PER_SEC); return 1; } -static SQInteger _system_time(HSQUIRRELVM v) +static SQInteger _system_time(HRABBITVM v) { SQInteger t = (SQInteger)time(NULL); sq_pushinteger(v,t); return 1; } -static SQInteger _system_remove(HSQUIRRELVM v) +static SQInteger _system_remove(HRABBITVM v) { const SQChar *s; sq_getstring(v,2,&s); @@ -71,7 +71,7 @@ static SQInteger _system_remove(HSQUIRRELVM v) return 0; } -static SQInteger _system_rename(HSQUIRRELVM v) +static SQInteger _system_rename(HRABBITVM v) { const SQChar *oldn,*newn; sq_getstring(v,2,&oldn); @@ -81,14 +81,14 @@ static SQInteger _system_rename(HSQUIRRELVM v) return 0; } -static void _set_integer_slot(HSQUIRRELVM v,const SQChar *name,SQInteger val) +static void _set_integer_slot(HRABBITVM v,const SQChar *name,SQInteger val) { sq_pushstring(v,name,-1); sq_pushinteger(v,val); sq_rawset(v,-3); } -static SQInteger _system_date(HSQUIRRELVM v) +static SQInteger _system_date(HRABBITVM v) { time_t t; SQInteger it; @@ -137,7 +137,7 @@ static const SQRegFunction systemlib_funcs[]={ }; #undef _DECL_FUNC -SQInteger sqstd_register_systemlib(HSQUIRRELVM v) +SQInteger sqstd_register_systemlib(HRABBITVM v) { SQInteger i=0; while(systemlib_funcs[i].name!=0) diff --git a/rabbit-std/sqstdsystem.hpp b/rabbit-std/sqstdsystem.hpp index f04ae5f..0e00ca9 100644 --- a/rabbit-std/sqstdsystem.hpp +++ b/rabbit-std/sqstdsystem.hpp @@ -7,4 +7,4 @@ */ #pragma once -SQUIRREL_API SQInteger sqstd_register_systemlib(HSQUIRRELVM v); +RABBIT_API SQInteger sqstd_register_systemlib(HRABBITVM v); diff --git a/rabbit/rabbit.hpp b/rabbit/rabbit.hpp index 2d7340b..db025c5 100644 --- a/rabbit/rabbit.hpp +++ b/rabbit/rabbit.hpp @@ -15,8 +15,8 @@ extern "C" { #endif -#ifndef SQUIRREL_API -#define SQUIRREL_API extern +#ifndef RABBIT_API +#define RABBIT_API extern #endif #if (defined(_WIN64) || defined(_LP64)) @@ -50,16 +50,16 @@ struct SQOuter; #include "sqconfig.hpp" -#define SQUIRREL_VERSION _SC("Rabbit 0.1 un-stable") -#define SQUIRREL_COPYRIGHT _SC("Copyright (C) 2003-2017 Alberto Demichelis") -#define SQUIRREL_AUTHOR _SC("Edouard DUPIN") -#define SQUIRREL_VERSION_NUMBER 010 +#define RABBIT_VERSION _SC("Rabbit 0.1 un-stable") +#define RABBIT_COPYRIGHT _SC("Copyright (C) 2003-2017 Alberto Demichelis") +#define RABBIT_AUTHOR _SC("Edouard DUPIN") +#define RABBIT_VERSION_NUMBER 010 #define SQ_VMSTATE_IDLE 0 #define SQ_VMSTATE_RUNNING 1 #define SQ_VMSTATE_SUSPENDED 2 -#define SQUIRREL_EOB 0 +#define RABBIT_EOB 0 #define SQ_BYTECODE_STREAM_TAG 0xFAFA #define SQOBJECT_REF_COUNTED 0x08000000 @@ -156,14 +156,14 @@ typedef struct tagSQStackInfos{ SQInteger line; }SQStackInfos; -typedef struct SQVM* HSQUIRRELVM; +typedef struct SQVM* HRABBITVM; typedef SQObject HSQOBJECT; typedef SQMemberHandle HSQMEMBERHANDLE; -typedef SQInteger (*SQFUNCTION)(HSQUIRRELVM); +typedef SQInteger (*SQFUNCTION)(HRABBITVM); typedef SQInteger (*SQRELEASEHOOK)(SQUserPointer,SQInteger size); -typedef void (*SQCOMPILERERROR)(HSQUIRRELVM,const SQChar * /*desc*/,const SQChar * /*source*/,SQInteger /*line*/,SQInteger /*column*/); -typedef void (*SQPRINTFUNCTION)(HSQUIRRELVM,const SQChar * ,...); -typedef void (*SQDEBUGHOOK)(HSQUIRRELVM /*v*/, SQInteger /*type*/, const SQChar * /*sourcename*/, SQInteger /*line*/, const SQChar * /*funcname*/); +typedef void (*SQCOMPILERERROR)(HRABBITVM,const SQChar * /*desc*/,const SQChar * /*source*/,SQInteger /*line*/,SQInteger /*column*/); +typedef void (*SQPRINTFUNCTION)(HRABBITVM,const SQChar * ,...); +typedef void (*SQDEBUGHOOK)(HRABBITVM /*v*/, SQInteger /*type*/, const SQChar * /*sourcename*/, SQInteger /*line*/, const SQChar * /*funcname*/); typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger); typedef SQInteger (*SQREADFUNC)(SQUserPointer,SQUserPointer,SQInteger); @@ -184,174 +184,174 @@ typedef struct tagSQFunctionInfo { }SQFunctionInfo; /*vm*/ -SQUIRREL_API HSQUIRRELVM sq_open(SQInteger initialstacksize); -SQUIRREL_API HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize); -SQUIRREL_API void sq_seterrorhandler(HSQUIRRELVM v); -SQUIRREL_API void sq_close(HSQUIRRELVM v); -SQUIRREL_API void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p); -SQUIRREL_API SQUserPointer sq_getforeignptr(HSQUIRRELVM v); -SQUIRREL_API void sq_setsharedforeignptr(HSQUIRRELVM v,SQUserPointer p); -SQUIRREL_API SQUserPointer sq_getsharedforeignptr(HSQUIRRELVM v); -SQUIRREL_API void sq_setvmreleasehook(HSQUIRRELVM v,SQRELEASEHOOK hook); -SQUIRREL_API SQRELEASEHOOK sq_getvmreleasehook(HSQUIRRELVM v); -SQUIRREL_API void sq_setsharedreleasehook(HSQUIRRELVM v,SQRELEASEHOOK hook); -SQUIRREL_API SQRELEASEHOOK sq_getsharedreleasehook(HSQUIRRELVM v); -SQUIRREL_API void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc,SQPRINTFUNCTION errfunc); -SQUIRREL_API SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v); -SQUIRREL_API SQPRINTFUNCTION sq_geterrorfunc(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_suspendvm(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool resumedret,SQBool retval,SQBool raiseerror,SQBool throwerror); -SQUIRREL_API SQInteger sq_getvmstate(HSQUIRRELVM v); -SQUIRREL_API SQInteger sq_getversion(); +RABBIT_API HRABBITVM sq_open(SQInteger initialstacksize); +RABBIT_API HRABBITVM sq_newthread(HRABBITVM friendvm, SQInteger initialstacksize); +RABBIT_API void sq_seterrorhandler(HRABBITVM v); +RABBIT_API void sq_close(HRABBITVM v); +RABBIT_API void sq_setforeignptr(HRABBITVM v,SQUserPointer p); +RABBIT_API SQUserPointer sq_getforeignptr(HRABBITVM v); +RABBIT_API void sq_setsharedforeignptr(HRABBITVM v,SQUserPointer p); +RABBIT_API SQUserPointer sq_getsharedforeignptr(HRABBITVM v); +RABBIT_API void sq_setvmreleasehook(HRABBITVM v,SQRELEASEHOOK hook); +RABBIT_API SQRELEASEHOOK sq_getvmreleasehook(HRABBITVM v); +RABBIT_API void sq_setsharedreleasehook(HRABBITVM v,SQRELEASEHOOK hook); +RABBIT_API SQRELEASEHOOK sq_getsharedreleasehook(HRABBITVM v); +RABBIT_API void sq_setprintfunc(HRABBITVM v, SQPRINTFUNCTION printfunc,SQPRINTFUNCTION errfunc); +RABBIT_API SQPRINTFUNCTION sq_getprintfunc(HRABBITVM v); +RABBIT_API SQPRINTFUNCTION sq_geterrorfunc(HRABBITVM v); +RABBIT_API SQRESULT sq_suspendvm(HRABBITVM v); +RABBIT_API SQRESULT sq_wakeupvm(HRABBITVM v,SQBool resumedret,SQBool retval,SQBool raiseerror,SQBool throwerror); +RABBIT_API SQInteger sq_getvmstate(HRABBITVM v); +RABBIT_API SQInteger sq_getversion(); /*compiler*/ -SQUIRREL_API SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror); -SQUIRREL_API SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror); -SQUIRREL_API void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable); -SQUIRREL_API void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable); -SQUIRREL_API void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f); +RABBIT_API SQRESULT sq_compile(HRABBITVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror); +RABBIT_API SQRESULT sq_compilebuffer(HRABBITVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror); +RABBIT_API void sq_enabledebuginfo(HRABBITVM v, SQBool enable); +RABBIT_API void sq_notifyallexceptions(HRABBITVM v, SQBool enable); +RABBIT_API void sq_setcompilererrorhandler(HRABBITVM v,SQCOMPILERERROR f); /*stack operations*/ -SQUIRREL_API void sq_push(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API void sq_pop(HSQUIRRELVM v,SQInteger nelemstopop); -SQUIRREL_API void sq_poptop(HSQUIRRELVM v); -SQUIRREL_API void sq_remove(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQInteger sq_gettop(HSQUIRRELVM v); -SQUIRREL_API void sq_settop(HSQUIRRELVM v,SQInteger newtop); -SQUIRREL_API SQRESULT sq_reservestack(HSQUIRRELVM v,SQInteger nsize); -SQUIRREL_API SQInteger sq_cmp(HSQUIRRELVM v); -SQUIRREL_API void sq_move(HSQUIRRELVM dest,HSQUIRRELVM src,SQInteger idx); +RABBIT_API void sq_push(HRABBITVM v,SQInteger idx); +RABBIT_API void sq_pop(HRABBITVM v,SQInteger nelemstopop); +RABBIT_API void sq_poptop(HRABBITVM v); +RABBIT_API void sq_remove(HRABBITVM v,SQInteger idx); +RABBIT_API SQInteger sq_gettop(HRABBITVM v); +RABBIT_API void sq_settop(HRABBITVM v,SQInteger newtop); +RABBIT_API SQRESULT sq_reservestack(HRABBITVM v,SQInteger nsize); +RABBIT_API SQInteger sq_cmp(HRABBITVM v); +RABBIT_API void sq_move(HRABBITVM dest,HRABBITVM src,SQInteger idx); /*object creation handling*/ -SQUIRREL_API SQUserPointer sq_newuserdata(HSQUIRRELVM v,SQUnsignedInteger size); -SQUIRREL_API void sq_newtable(HSQUIRRELVM v); -SQUIRREL_API void sq_newtableex(HSQUIRRELVM v,SQInteger initialcapacity); -SQUIRREL_API void sq_newarray(HSQUIRRELVM v,SQInteger size); -SQUIRREL_API void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars); -SQUIRREL_API SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask); -SQUIRREL_API SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_setclosureroot(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_getclosureroot(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len); -SQUIRREL_API void sq_pushfloat(HSQUIRRELVM v,SQFloat f); -SQUIRREL_API void sq_pushinteger(HSQUIRRELVM v,SQInteger n); -SQUIRREL_API void sq_pushbool(HSQUIRRELVM v,SQBool b); -SQUIRREL_API void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p); -SQUIRREL_API void sq_pushnull(HSQUIRRELVM v); -SQUIRREL_API void sq_pushthread(HSQUIRRELVM v, HSQUIRRELVM thread); -SQUIRREL_API SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_typeof(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQInteger sq_getsize(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQHash sq_gethash(HSQUIRRELVM v, SQInteger idx); -SQUIRREL_API SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQBool sq_instanceof(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_tostring(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b); -SQUIRREL_API SQRESULT sq_getstringandsize(HSQUIRRELVM v,SQInteger idx,const SQChar **c,SQInteger *size); -SQUIRREL_API SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c); -SQUIRREL_API SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i); -SQUIRREL_API SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f); -SQUIRREL_API SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b); -SQUIRREL_API SQRESULT sq_getthread(HSQUIRRELVM v,SQInteger idx,HSQUIRRELVM *thread); -SQUIRREL_API SQRESULT sq_getuserpointer(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p); -SQUIRREL_API SQRESULT sq_getuserdata(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag); -SQUIRREL_API SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag); -SQUIRREL_API SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag); -SQUIRREL_API void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook); -SQUIRREL_API SQRELEASEHOOK sq_getreleasehook(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQChar *sq_getscratchpad(HSQUIRRELVM v,SQInteger minsize); -SQUIRREL_API SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger level,SQFunctionInfo *fi); -SQUIRREL_API SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars); -SQUIRREL_API SQRESULT sq_getclosurename(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name); -SQUIRREL_API SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p); -SQUIRREL_API SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag); -SQUIRREL_API SQRESULT sq_setclassudsize(HSQUIRRELVM v, SQInteger idx, SQInteger udsize); -SQUIRREL_API SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase); -SQUIRREL_API SQRESULT sq_createinstance(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API void sq_weakref(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t); -SQUIRREL_API SQRESULT sq_getmemberhandle(HSQUIRRELVM v,SQInteger idx,HSQMEMBERHANDLE *handle); -SQUIRREL_API SQRESULT sq_getbyhandle(HSQUIRRELVM v,SQInteger idx,const HSQMEMBERHANDLE *handle); -SQUIRREL_API SQRESULT sq_setbyhandle(HSQUIRRELVM v,SQInteger idx,const HSQMEMBERHANDLE *handle); +RABBIT_API SQUserPointer sq_newuserdata(HRABBITVM v,SQUnsignedInteger size); +RABBIT_API void sq_newtable(HRABBITVM v); +RABBIT_API void sq_newtableex(HRABBITVM v,SQInteger initialcapacity); +RABBIT_API void sq_newarray(HRABBITVM v,SQInteger size); +RABBIT_API void sq_newclosure(HRABBITVM v,SQFUNCTION func,SQUnsignedInteger nfreevars); +RABBIT_API SQRESULT sq_setparamscheck(HRABBITVM v,SQInteger nparamscheck,const SQChar *typemask); +RABBIT_API SQRESULT sq_bindenv(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_setclosureroot(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_getclosureroot(HRABBITVM v,SQInteger idx); +RABBIT_API void sq_pushstring(HRABBITVM v,const SQChar *s,SQInteger len); +RABBIT_API void sq_pushfloat(HRABBITVM v,SQFloat f); +RABBIT_API void sq_pushinteger(HRABBITVM v,SQInteger n); +RABBIT_API void sq_pushbool(HRABBITVM v,SQBool b); +RABBIT_API void sq_pushuserpointer(HRABBITVM v,SQUserPointer p); +RABBIT_API void sq_pushnull(HRABBITVM v); +RABBIT_API void sq_pushthread(HRABBITVM v, HRABBITVM thread); +RABBIT_API SQObjectType sq_gettype(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_typeof(HRABBITVM v,SQInteger idx); +RABBIT_API SQInteger sq_getsize(HRABBITVM v,SQInteger idx); +RABBIT_API SQHash sq_gethash(HRABBITVM v, SQInteger idx); +RABBIT_API SQRESULT sq_getbase(HRABBITVM v,SQInteger idx); +RABBIT_API SQBool sq_instanceof(HRABBITVM v); +RABBIT_API SQRESULT sq_tostring(HRABBITVM v,SQInteger idx); +RABBIT_API void sq_tobool(HRABBITVM v, SQInteger idx, SQBool *b); +RABBIT_API SQRESULT sq_getstringandsize(HRABBITVM v,SQInteger idx,const SQChar **c,SQInteger *size); +RABBIT_API SQRESULT sq_getstring(HRABBITVM v,SQInteger idx,const SQChar **c); +RABBIT_API SQRESULT sq_getinteger(HRABBITVM v,SQInteger idx,SQInteger *i); +RABBIT_API SQRESULT sq_getfloat(HRABBITVM v,SQInteger idx,SQFloat *f); +RABBIT_API SQRESULT sq_getbool(HRABBITVM v,SQInteger idx,SQBool *b); +RABBIT_API SQRESULT sq_getthread(HRABBITVM v,SQInteger idx,HRABBITVM *thread); +RABBIT_API SQRESULT sq_getuserpointer(HRABBITVM v,SQInteger idx,SQUserPointer *p); +RABBIT_API SQRESULT sq_getuserdata(HRABBITVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag); +RABBIT_API SQRESULT sq_settypetag(HRABBITVM v,SQInteger idx,SQUserPointer typetag); +RABBIT_API SQRESULT sq_gettypetag(HRABBITVM v,SQInteger idx,SQUserPointer *typetag); +RABBIT_API void sq_setreleasehook(HRABBITVM v,SQInteger idx,SQRELEASEHOOK hook); +RABBIT_API SQRELEASEHOOK sq_getreleasehook(HRABBITVM v,SQInteger idx); +RABBIT_API SQChar *sq_getscratchpad(HRABBITVM v,SQInteger minsize); +RABBIT_API SQRESULT sq_getfunctioninfo(HRABBITVM v,SQInteger level,SQFunctionInfo *fi); +RABBIT_API SQRESULT sq_getclosureinfo(HRABBITVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars); +RABBIT_API SQRESULT sq_getclosurename(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_setnativeclosurename(HRABBITVM v,SQInteger idx,const SQChar *name); +RABBIT_API SQRESULT sq_setinstanceup(HRABBITVM v, SQInteger idx, SQUserPointer p); +RABBIT_API SQRESULT sq_getinstanceup(HRABBITVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag); +RABBIT_API SQRESULT sq_setclassudsize(HRABBITVM v, SQInteger idx, SQInteger udsize); +RABBIT_API SQRESULT sq_newclass(HRABBITVM v,SQBool hasbase); +RABBIT_API SQRESULT sq_createinstance(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_setattributes(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_getattributes(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_getclass(HRABBITVM v,SQInteger idx); +RABBIT_API void sq_weakref(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_getdefaultdelegate(HRABBITVM v,SQObjectType t); +RABBIT_API SQRESULT sq_getmemberhandle(HRABBITVM v,SQInteger idx,HSQMEMBERHANDLE *handle); +RABBIT_API SQRESULT sq_getbyhandle(HRABBITVM v,SQInteger idx,const HSQMEMBERHANDLE *handle); +RABBIT_API SQRESULT sq_setbyhandle(HRABBITVM v,SQInteger idx,const HSQMEMBERHANDLE *handle); /*object manipulation*/ -SQUIRREL_API void sq_pushroottable(HSQUIRRELVM v); -SQUIRREL_API void sq_pushregistrytable(HSQUIRRELVM v); -SQUIRREL_API void sq_pushconsttable(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_setroottable(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_setconsttable(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic); -SQUIRREL_API SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval); -SQUIRREL_API SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval); -SQUIRREL_API SQRESULT sq_newmember(HSQUIRRELVM v,SQInteger idx,SQBool bstatic); -SQUIRREL_API SQRESULT sq_rawnewmember(HSQUIRRELVM v,SQInteger idx,SQBool bstatic); -SQUIRREL_API SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval); -SQUIRREL_API SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize); -SQUIRREL_API SQRESULT sq_arrayreverse(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_arrayremove(HSQUIRRELVM v,SQInteger idx,SQInteger itemidx); -SQUIRREL_API SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos); -SQUIRREL_API SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_clone(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval); -SQUIRREL_API SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx); -SQUIRREL_API SQRESULT sq_clear(HSQUIRRELVM v,SQInteger idx); +RABBIT_API void sq_pushroottable(HRABBITVM v); +RABBIT_API void sq_pushregistrytable(HRABBITVM v); +RABBIT_API void sq_pushconsttable(HRABBITVM v); +RABBIT_API SQRESULT sq_setroottable(HRABBITVM v); +RABBIT_API SQRESULT sq_setconsttable(HRABBITVM v); +RABBIT_API SQRESULT sq_newslot(HRABBITVM v, SQInteger idx, SQBool bstatic); +RABBIT_API SQRESULT sq_deleteslot(HRABBITVM v,SQInteger idx,SQBool pushval); +RABBIT_API SQRESULT sq_set(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_get(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_rawget(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_rawset(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_rawdeleteslot(HRABBITVM v,SQInteger idx,SQBool pushval); +RABBIT_API SQRESULT sq_newmember(HRABBITVM v,SQInteger idx,SQBool bstatic); +RABBIT_API SQRESULT sq_rawnewmember(HRABBITVM v,SQInteger idx,SQBool bstatic); +RABBIT_API SQRESULT sq_arrayappend(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_arraypop(HRABBITVM v,SQInteger idx,SQBool pushval); +RABBIT_API SQRESULT sq_arrayresize(HRABBITVM v,SQInteger idx,SQInteger newsize); +RABBIT_API SQRESULT sq_arrayreverse(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_arrayremove(HRABBITVM v,SQInteger idx,SQInteger itemidx); +RABBIT_API SQRESULT sq_arrayinsert(HRABBITVM v,SQInteger idx,SQInteger destpos); +RABBIT_API SQRESULT sq_setdelegate(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_getdelegate(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_clone(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_setfreevariable(HRABBITVM v,SQInteger idx,SQUnsignedInteger nval); +RABBIT_API SQRESULT sq_next(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_getweakrefval(HRABBITVM v,SQInteger idx); +RABBIT_API SQRESULT sq_clear(HRABBITVM v,SQInteger idx); /*calls*/ -SQUIRREL_API SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror); -SQUIRREL_API SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror); -SQUIRREL_API const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx); -SQUIRREL_API SQRESULT sq_getcallee(HSQUIRRELVM v); -SQUIRREL_API const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval); -SQUIRREL_API SQRESULT sq_throwerror(HSQUIRRELVM v,const SQChar *err); -SQUIRREL_API SQRESULT sq_throwobject(HSQUIRRELVM v); -SQUIRREL_API void sq_reseterror(HSQUIRRELVM v); -SQUIRREL_API void sq_getlasterror(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_tailcall(HSQUIRRELVM v, SQInteger nparams); +RABBIT_API SQRESULT sq_call(HRABBITVM v,SQInteger params,SQBool retval,SQBool raiseerror); +RABBIT_API SQRESULT sq_resume(HRABBITVM v,SQBool retval,SQBool raiseerror); +RABBIT_API const SQChar *sq_getlocal(HRABBITVM v,SQUnsignedInteger level,SQUnsignedInteger idx); +RABBIT_API SQRESULT sq_getcallee(HRABBITVM v); +RABBIT_API const SQChar *sq_getfreevariable(HRABBITVM v,SQInteger idx,SQUnsignedInteger nval); +RABBIT_API SQRESULT sq_throwerror(HRABBITVM v,const SQChar *err); +RABBIT_API SQRESULT sq_throwobject(HRABBITVM v); +RABBIT_API void sq_reseterror(HRABBITVM v); +RABBIT_API void sq_getlasterror(HRABBITVM v); +RABBIT_API SQRESULT sq_tailcall(HRABBITVM v, SQInteger nparams); /*raw object handling*/ -SQUIRREL_API SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po); -SQUIRREL_API void sq_pushobject(HSQUIRRELVM v,HSQOBJECT obj); -SQUIRREL_API void sq_addref(HSQUIRRELVM v,HSQOBJECT *po); -SQUIRREL_API SQBool sq_release(HSQUIRRELVM v,HSQOBJECT *po); -SQUIRREL_API SQUnsignedInteger sq_getrefcount(HSQUIRRELVM v,HSQOBJECT *po); -SQUIRREL_API void sq_resetobject(HSQOBJECT *po); -SQUIRREL_API const SQChar *sq_objtostring(const HSQOBJECT *o); -SQUIRREL_API SQBool sq_objtobool(const HSQOBJECT *o); -SQUIRREL_API SQInteger sq_objtointeger(const HSQOBJECT *o); -SQUIRREL_API SQFloat sq_objtofloat(const HSQOBJECT *o); -SQUIRREL_API SQUserPointer sq_objtouserpointer(const HSQOBJECT *o); -SQUIRREL_API SQRESULT sq_getobjtypetag(const HSQOBJECT *o,SQUserPointer * typetag); -SQUIRREL_API SQUnsignedInteger sq_getvmrefcount(HSQUIRRELVM v, const HSQOBJECT *po); +RABBIT_API SQRESULT sq_getstackobj(HRABBITVM v,SQInteger idx,HSQOBJECT *po); +RABBIT_API void sq_pushobject(HRABBITVM v,HSQOBJECT obj); +RABBIT_API void sq_addref(HRABBITVM v,HSQOBJECT *po); +RABBIT_API SQBool sq_release(HRABBITVM v,HSQOBJECT *po); +RABBIT_API SQUnsignedInteger sq_getrefcount(HRABBITVM v,HSQOBJECT *po); +RABBIT_API void sq_resetobject(HSQOBJECT *po); +RABBIT_API const SQChar *sq_objtostring(const HSQOBJECT *o); +RABBIT_API SQBool sq_objtobool(const HSQOBJECT *o); +RABBIT_API SQInteger sq_objtointeger(const HSQOBJECT *o); +RABBIT_API SQFloat sq_objtofloat(const HSQOBJECT *o); +RABBIT_API SQUserPointer sq_objtouserpointer(const HSQOBJECT *o); +RABBIT_API SQRESULT sq_getobjtypetag(const HSQOBJECT *o,SQUserPointer * typetag); +RABBIT_API SQUnsignedInteger sq_getvmrefcount(HRABBITVM v, const HSQOBJECT *po); /*GC*/ -SQUIRREL_API SQInteger sq_collectgarbage(HSQUIRRELVM v); -SQUIRREL_API SQRESULT sq_resurrectunreachable(HSQUIRRELVM v); +RABBIT_API SQInteger sq_collectgarbage(HRABBITVM v); +RABBIT_API SQRESULT sq_resurrectunreachable(HRABBITVM v); /*serialization*/ -SQUIRREL_API SQRESULT sq_writeclosure(HSQUIRRELVM vm,SQWRITEFUNC writef,SQUserPointer up); -SQUIRREL_API SQRESULT sq_readclosure(HSQUIRRELVM vm,SQREADFUNC readf,SQUserPointer up); +RABBIT_API SQRESULT sq_writeclosure(HRABBITVM vm,SQWRITEFUNC writef,SQUserPointer up); +RABBIT_API SQRESULT sq_readclosure(HRABBITVM vm,SQREADFUNC readf,SQUserPointer up); /*mem allocation*/ -SQUIRREL_API void *sq_malloc(SQUnsignedInteger size); -SQUIRREL_API void *sq_realloc(void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize); -SQUIRREL_API void sq_free(void *p,SQUnsignedInteger size); +RABBIT_API void *sq_malloc(SQUnsignedInteger size); +RABBIT_API void *sq_realloc(void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize); +RABBIT_API void sq_free(void *p,SQUnsignedInteger size); /*debug*/ -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); +RABBIT_API SQRESULT sq_stackinfos(HRABBITVM v,SQInteger level,SQStackInfos *si); +RABBIT_API void sq_setdebughook(HRABBITVM v); +RABBIT_API void sq_setnativedebughook(HRABBITVM v,SQDEBUGHOOK hook); /*UTILITY MACRO*/ #define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC) diff --git a/rabbit/sqapi.cpp b/rabbit/sqapi.cpp index 8d84927..9d79250 100644 --- a/rabbit/sqapi.cpp +++ b/rabbit/sqapi.cpp @@ -17,7 +17,7 @@ #include #include -static bool sq_aux_gettypedarg(HSQUIRRELVM v,SQInteger idx,SQObjectType type,SQObjectPtr **o) +static bool sq_aux_gettypedarg(HRABBITVM v,SQInteger idx,SQObjectType type,SQObjectPtr **o) { *o = &stack_get(v,idx); if(sq_type(**o) != type){ @@ -36,14 +36,14 @@ static bool sq_aux_gettypedarg(HSQUIRRELVM v,SQInteger idx,SQObjectType type,SQO } -SQInteger sq_aux_invalidtype(HSQUIRRELVM v,SQObjectType type) +SQInteger sq_aux_invalidtype(HRABBITVM v,SQObjectType type) { SQUnsignedInteger buf_size = 100 *sizeof(SQChar); scsprintf(_ss(v)->GetScratchPad(buf_size), buf_size, _SC("unexpected type %s"), IdType2Name(type)); return sq_throwerror(v, _ss(v)->GetScratchPad(-1)); } -HSQUIRRELVM sq_open(SQInteger initialstacksize) +HRABBITVM sq_open(SQInteger initialstacksize) { SQSharedState *ss; SQVM *v; @@ -61,7 +61,7 @@ HSQUIRRELVM sq_open(SQInteger initialstacksize) return v; } -HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize) +HRABBITVM sq_newthread(HRABBITVM friendvm, SQInteger initialstacksize) { SQSharedState *ss; SQVM *v; @@ -79,7 +79,7 @@ HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize) } } -SQInteger sq_getvmstate(HSQUIRRELVM v) +SQInteger sq_getvmstate(HRABBITVM v) { if(v->_suspended) return SQ_VMSTATE_SUSPENDED; @@ -89,7 +89,7 @@ SQInteger sq_getvmstate(HSQUIRRELVM v) } } -void sq_seterrorhandler(HSQUIRRELVM v) +void sq_seterrorhandler(HRABBITVM v) { SQObject o = stack_get(v, -1); if(sq_isclosure(o) || sq_isnativeclosure(o) || sq_isnull(o)) { @@ -98,14 +98,14 @@ void sq_seterrorhandler(HSQUIRRELVM v) } } -void sq_setnativedebughook(HSQUIRRELVM v,SQDEBUGHOOK hook) +void sq_setnativedebughook(HRABBITVM v,SQDEBUGHOOK hook) { v->_debughook_native = hook; v->_debughook_closure.Null(); v->_debughook = hook?true:false; } -void sq_setdebughook(HSQUIRRELVM v) +void sq_setdebughook(HRABBITVM v) { SQObject o = stack_get(v,-1); if(sq_isclosure(o) || sq_isnativeclosure(o) || sq_isnull(o)) { @@ -116,7 +116,7 @@ void sq_setdebughook(HSQUIRRELVM v) } } -void sq_close(HSQUIRRELVM v) +void sq_close(HRABBITVM v) { SQSharedState *ss = _ss(v); _thread(ss->_root_vm)->Finalize(); @@ -125,10 +125,10 @@ void sq_close(HSQUIRRELVM v) SQInteger sq_getversion() { - return SQUIRREL_VERSION_NUMBER; + return RABBIT_VERSION_NUMBER; } -SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror) +SQRESULT sq_compile(HRABBITVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror) { SQObjectPtr o; #ifndef NO_COMPILER @@ -142,49 +142,37 @@ SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQCha #endif } -void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable) +void sq_enabledebuginfo(HRABBITVM v, SQBool enable) { _ss(v)->_debuginfo = enable?true:false; } -void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable) +void sq_notifyallexceptions(HRABBITVM v, SQBool enable) { _ss(v)->_notifyallexceptions = enable?true:false; } -void sq_addref(HSQUIRRELVM v,HSQOBJECT *po) +void sq_addref(HRABBITVM v,HSQOBJECT *po) { if(!ISREFCOUNTED(sq_type(*po))) return; -#ifdef NO_GARBAGE_COLLECTOR __AddRef(po->_type,po->_unVal); -#else - _ss(v)->_refs_table.AddRef(*po); -#endif } -SQUnsignedInteger sq_getrefcount(HSQUIRRELVM v,HSQOBJECT *po) +SQUnsignedInteger sq_getrefcount(HRABBITVM v,HSQOBJECT *po) { if(!ISREFCOUNTED(sq_type(*po))) return 0; -#ifdef NO_GARBAGE_COLLECTOR return po->_unVal.pRefCounted->_uiRef; -#else - return _ss(v)->_refs_table.GetRefCount(*po); -#endif } -SQBool sq_release(HSQUIRRELVM v,HSQOBJECT *po) +SQBool sq_release(HRABBITVM v,HSQOBJECT *po) { if(!ISREFCOUNTED(sq_type(*po))) return SQTrue; -#ifdef NO_GARBAGE_COLLECTOR bool ret = (po->_unVal.pRefCounted->_uiRef <= 1) ? SQTrue : SQFalse; __Release(po->_type,po->_unVal); return ret; //the ret val doesn't work(and cannot be fixed) -#else - return _ss(v)->_refs_table.Release(*po); -#endif } -SQUnsignedInteger sq_getvmrefcount(HSQUIRRELVM SQ_UNUSED_ARG(v), const HSQOBJECT *po) +SQUnsignedInteger sq_getvmrefcount(HRABBITVM SQ_UNUSED_ARG(v), const HSQOBJECT *po) { if (!ISREFCOUNTED(sq_type(*po))) return 0; return po->_unVal.pRefCounted->_uiRef; @@ -230,66 +218,66 @@ SQUserPointer sq_objtouserpointer(const HSQOBJECT *o) return 0; } -void sq_pushnull(HSQUIRRELVM v) +void sq_pushnull(HRABBITVM v) { v->PushNull(); } -void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len) +void sq_pushstring(HRABBITVM v,const SQChar *s,SQInteger len) { if(s) v->Push(SQObjectPtr(SQString::Create(_ss(v), s, len))); else v->PushNull(); } -void sq_pushinteger(HSQUIRRELVM v,SQInteger n) +void sq_pushinteger(HRABBITVM v,SQInteger n) { v->Push(n); } -void sq_pushbool(HSQUIRRELVM v,SQBool b) +void sq_pushbool(HRABBITVM v,SQBool b) { v->Push(b?true:false); } -void sq_pushfloat(HSQUIRRELVM v,SQFloat n) +void sq_pushfloat(HRABBITVM v,SQFloat n) { v->Push(n); } -void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p) +void sq_pushuserpointer(HRABBITVM v,SQUserPointer p) { v->Push(p); } -void sq_pushthread(HSQUIRRELVM v, HSQUIRRELVM thread) +void sq_pushthread(HRABBITVM v, HRABBITVM thread) { v->Push(thread); } -SQUserPointer sq_newuserdata(HSQUIRRELVM v,SQUnsignedInteger size) +SQUserPointer sq_newuserdata(HRABBITVM v,SQUnsignedInteger size) { SQUserData *ud = SQUserData::Create(_ss(v), size + SQ_ALIGNMENT); v->Push(ud); return (SQUserPointer)sq_aligning(ud + 1); } -void sq_newtable(HSQUIRRELVM v) +void sq_newtable(HRABBITVM v) { v->Push(SQTable::Create(_ss(v), 0)); } -void sq_newtableex(HSQUIRRELVM v,SQInteger initialcapacity) +void sq_newtableex(HRABBITVM v,SQInteger initialcapacity) { v->Push(SQTable::Create(_ss(v), initialcapacity)); } -void sq_newarray(HSQUIRRELVM v,SQInteger size) +void sq_newarray(HRABBITVM v,SQInteger size) { v->Push(SQArray::Create(_ss(v), size)); } -SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase) +SQRESULT sq_newclass(HRABBITVM v,SQBool hasbase) { SQClass *baseclass = NULL; if(hasbase) { @@ -304,7 +292,7 @@ SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase) return SQ_OK; } -SQBool sq_instanceof(HSQUIRRELVM v) +SQBool sq_instanceof(HRABBITVM v) { SQObjectPtr &inst = stack_get(v,-1); SQObjectPtr &cl = stack_get(v,-2); @@ -313,7 +301,7 @@ SQBool sq_instanceof(HSQUIRRELVM v) return _instance(inst)->InstanceOf(_class(cl))?SQTrue:SQFalse; } -SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_arrayappend(HRABBITVM v,SQInteger idx) { sq_aux_paramscheck(v,2); SQObjectPtr *arr; @@ -323,7 +311,7 @@ SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval) +SQRESULT sq_arraypop(HRABBITVM v,SQInteger idx,SQBool pushval) { sq_aux_paramscheck(v, 1); SQObjectPtr *arr; @@ -336,7 +324,7 @@ SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval) return sq_throwerror(v, _SC("empty array")); } -SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize) +SQRESULT sq_arrayresize(HRABBITVM v,SQInteger idx,SQInteger newsize) { sq_aux_paramscheck(v,1); SQObjectPtr *arr; @@ -349,7 +337,7 @@ SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize) } -SQRESULT sq_arrayreverse(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_arrayreverse(HRABBITVM v,SQInteger idx) { sq_aux_paramscheck(v, 1); SQObjectPtr *o; @@ -369,7 +357,7 @@ SQRESULT sq_arrayreverse(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_arrayremove(HSQUIRRELVM v,SQInteger idx,SQInteger itemidx) +SQRESULT sq_arrayremove(HRABBITVM v,SQInteger idx,SQInteger itemidx) { sq_aux_paramscheck(v, 1); SQObjectPtr *arr; @@ -377,7 +365,7 @@ SQRESULT sq_arrayremove(HSQUIRRELVM v,SQInteger idx,SQInteger itemidx) return _array(*arr)->Remove(itemidx) ? SQ_OK : sq_throwerror(v,_SC("index out of range")); } -SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos) +SQRESULT sq_arrayinsert(HRABBITVM v,SQInteger idx,SQInteger destpos) { sq_aux_paramscheck(v, 1); SQObjectPtr *arr; @@ -387,7 +375,7 @@ SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos) return ret; } -void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars) +void sq_newclosure(HRABBITVM v,SQFUNCTION func,SQUnsignedInteger nfreevars) { SQNativeClosure *nc = SQNativeClosure::Create(_ss(v), func,nfreevars); nc->_nparamscheck = 0; @@ -398,7 +386,7 @@ void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars) v->Push(SQObjectPtr(nc)); } -SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars) +SQRESULT sq_getclosureinfo(HRABBITVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars) { SQObject o = stack_get(v, idx); if(sq_type(o) == OT_CLOSURE) { @@ -418,7 +406,7 @@ SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparam return sq_throwerror(v,_SC("the object is not a closure")); } -SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name) +SQRESULT sq_setnativeclosurename(HRABBITVM v,SQInteger idx,const SQChar *name) { SQObject o = stack_get(v, idx); if(sq_isnativeclosure(o)) { @@ -429,7 +417,7 @@ SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name) return sq_throwerror(v,_SC("the object is not a nativeclosure")); } -SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask) +SQRESULT sq_setparamscheck(HRABBITVM v,SQInteger nparamscheck,const SQChar *typemask) { SQObject o = stack_get(v, -1); if(!sq_isnativeclosure(o)) @@ -451,7 +439,7 @@ SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *ty return SQ_OK; } -SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_bindenv(HRABBITVM v,SQInteger idx) { SQObjectPtr &o = stack_get(v,idx); if(!sq_isnativeclosure(o) && @@ -488,7 +476,7 @@ SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_getclosurename(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_getclosurename(HRABBITVM v,SQInteger idx) { SQObjectPtr &o = stack_get(v,idx); if(!sq_isnativeclosure(o) && @@ -504,7 +492,7 @@ SQRESULT sq_getclosurename(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_setclosureroot(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_setclosureroot(HRABBITVM v,SQInteger idx) { SQObjectPtr &c = stack_get(v,idx); SQObject o = stack_get(v, -1); @@ -517,7 +505,7 @@ SQRESULT sq_setclosureroot(HSQUIRRELVM v,SQInteger idx) return sq_throwerror(v, _SC("invalid type")); } -SQRESULT sq_getclosureroot(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_getclosureroot(HRABBITVM v,SQInteger idx) { SQObjectPtr &c = stack_get(v,idx); if(!sq_isclosure(c)) return sq_throwerror(v, _SC("closure expected")); @@ -525,7 +513,7 @@ SQRESULT sq_getclosureroot(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_clear(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_clear(HRABBITVM v,SQInteger idx) { SQObject &o=stack_get(v,idx); switch(sq_type(o)) { @@ -539,22 +527,22 @@ SQRESULT sq_clear(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -void sq_pushroottable(HSQUIRRELVM v) +void sq_pushroottable(HRABBITVM v) { v->Push(v->_roottable); } -void sq_pushregistrytable(HSQUIRRELVM v) +void sq_pushregistrytable(HRABBITVM v) { v->Push(_ss(v)->_registry); } -void sq_pushconsttable(HSQUIRRELVM v) +void sq_pushconsttable(HRABBITVM v) { v->Push(_ss(v)->_consts); } -SQRESULT sq_setroottable(HSQUIRRELVM v) +SQRESULT sq_setroottable(HRABBITVM v) { SQObject o = stack_get(v, -1); if(sq_istable(o) || sq_isnull(o)) { @@ -565,7 +553,7 @@ SQRESULT sq_setroottable(HSQUIRRELVM v) return sq_throwerror(v, _SC("invalid type")); } -SQRESULT sq_setconsttable(HSQUIRRELVM v) +SQRESULT sq_setconsttable(HRABBITVM v) { SQObject o = stack_get(v, -1); if(sq_istable(o)) { @@ -576,57 +564,57 @@ SQRESULT sq_setconsttable(HSQUIRRELVM v) return sq_throwerror(v, _SC("invalid type, expected table")); } -void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p) +void sq_setforeignptr(HRABBITVM v,SQUserPointer p) { v->_foreignptr = p; } -SQUserPointer sq_getforeignptr(HSQUIRRELVM v) +SQUserPointer sq_getforeignptr(HRABBITVM v) { return v->_foreignptr; } -void sq_setsharedforeignptr(HSQUIRRELVM v,SQUserPointer p) +void sq_setsharedforeignptr(HRABBITVM v,SQUserPointer p) { _ss(v)->_foreignptr = p; } -SQUserPointer sq_getsharedforeignptr(HSQUIRRELVM v) +SQUserPointer sq_getsharedforeignptr(HRABBITVM v) { return _ss(v)->_foreignptr; } -void sq_setvmreleasehook(HSQUIRRELVM v,SQRELEASEHOOK hook) +void sq_setvmreleasehook(HRABBITVM v,SQRELEASEHOOK hook) { v->_releasehook = hook; } -SQRELEASEHOOK sq_getvmreleasehook(HSQUIRRELVM v) +SQRELEASEHOOK sq_getvmreleasehook(HRABBITVM v) { return v->_releasehook; } -void sq_setsharedreleasehook(HSQUIRRELVM v,SQRELEASEHOOK hook) +void sq_setsharedreleasehook(HRABBITVM v,SQRELEASEHOOK hook) { _ss(v)->_releasehook = hook; } -SQRELEASEHOOK sq_getsharedreleasehook(HSQUIRRELVM v) +SQRELEASEHOOK sq_getsharedreleasehook(HRABBITVM v) { return _ss(v)->_releasehook; } -void sq_push(HSQUIRRELVM v,SQInteger idx) +void sq_push(HRABBITVM v,SQInteger idx) { v->Push(stack_get(v, idx)); } -SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx) +SQObjectType sq_gettype(HRABBITVM v,SQInteger idx) { return sq_type(stack_get(v, idx)); } -SQRESULT sq_typeof(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_typeof(HRABBITVM v,SQInteger idx) { SQObjectPtr &o = stack_get(v, idx); SQObjectPtr res; @@ -637,7 +625,7 @@ SQRESULT sq_typeof(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_tostring(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_tostring(HRABBITVM v,SQInteger idx) { SQObjectPtr &o = stack_get(v, idx); SQObjectPtr res; @@ -648,13 +636,13 @@ SQRESULT sq_tostring(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b) +void sq_tobool(HRABBITVM v, SQInteger idx, SQBool *b) { SQObjectPtr &o = stack_get(v, idx); *b = SQVM::IsFalse(o)?SQFalse:SQTrue; } -SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i) +SQRESULT sq_getinteger(HRABBITVM v,SQInteger idx,SQInteger *i) { SQObjectPtr &o = stack_get(v, idx); if(sq_isnumeric(o)) { @@ -668,7 +656,7 @@ SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i) return SQ_ERROR; } -SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f) +SQRESULT sq_getfloat(HRABBITVM v,SQInteger idx,SQFloat *f) { SQObjectPtr &o = stack_get(v, idx); if(sq_isnumeric(o)) { @@ -678,7 +666,7 @@ SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f) return SQ_ERROR; } -SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b) +SQRESULT sq_getbool(HRABBITVM v,SQInteger idx,SQBool *b) { SQObjectPtr &o = stack_get(v, idx); if(sq_isbool(o)) { @@ -688,7 +676,7 @@ SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b) return SQ_ERROR; } -SQRESULT sq_getstringandsize(HSQUIRRELVM v,SQInteger idx,const SQChar **c,SQInteger *size) +SQRESULT sq_getstringandsize(HRABBITVM v,SQInteger idx,const SQChar **c,SQInteger *size) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_STRING,o); @@ -697,7 +685,7 @@ SQRESULT sq_getstringandsize(HSQUIRRELVM v,SQInteger idx,const SQChar **c,SQInte return SQ_OK; } -SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c) +SQRESULT sq_getstring(HRABBITVM v,SQInteger idx,const SQChar **c) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_STRING,o); @@ -705,7 +693,7 @@ SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c) return SQ_OK; } -SQRESULT sq_getthread(HSQUIRRELVM v,SQInteger idx,HSQUIRRELVM *thread) +SQRESULT sq_getthread(HRABBITVM v,SQInteger idx,HRABBITVM *thread) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_THREAD,o); @@ -713,7 +701,7 @@ SQRESULT sq_getthread(HSQUIRRELVM v,SQInteger idx,HSQUIRRELVM *thread) return SQ_OK; } -SQRESULT sq_clone(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_clone(HRABBITVM v,SQInteger idx) { SQObjectPtr &o = stack_get(v,idx); v->PushNull(); @@ -724,7 +712,7 @@ SQRESULT sq_clone(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -SQInteger sq_getsize(HSQUIRRELVM v, SQInteger idx) +SQInteger sq_getsize(HRABBITVM v, SQInteger idx) { SQObjectPtr &o = stack_get(v, idx); SQObjectType type = sq_type(o); @@ -740,13 +728,13 @@ SQInteger sq_getsize(HSQUIRRELVM v, SQInteger idx) } } -SQHash sq_gethash(HSQUIRRELVM v, SQInteger idx) +SQHash sq_gethash(HRABBITVM v, SQInteger idx) { SQObjectPtr &o = stack_get(v, idx); return HashObj(o); } -SQRESULT sq_getuserdata(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag) +SQRESULT sq_getuserdata(HRABBITVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_USERDATA,o); @@ -755,7 +743,7 @@ SQRESULT sq_getuserdata(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPoint return SQ_OK; } -SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag) +SQRESULT sq_settypetag(HRABBITVM v,SQInteger idx,SQUserPointer typetag) { SQObjectPtr &o = stack_get(v,idx); switch(sq_type(o)) { @@ -777,7 +765,7 @@ SQRESULT sq_getobjtypetag(const HSQOBJECT *o,SQUserPointer * typetag) return SQ_OK; } -SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag) +SQRESULT sq_gettypetag(HRABBITVM v,SQInteger idx,SQUserPointer *typetag) { SQObjectPtr &o = stack_get(v,idx); if (SQ_FAILED(sq_getobjtypetag(&o, typetag))) @@ -785,7 +773,7 @@ SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag) return SQ_OK; } -SQRESULT sq_getuserpointer(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p) +SQRESULT sq_getuserpointer(HRABBITVM v, SQInteger idx, SQUserPointer *p) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_USERPOINTER,o); @@ -793,7 +781,7 @@ SQRESULT sq_getuserpointer(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p) return SQ_OK; } -SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p) +SQRESULT sq_setinstanceup(HRABBITVM v, SQInteger idx, SQUserPointer p) { SQObjectPtr &o = stack_get(v,idx); if(sq_type(o) != OT_INSTANCE) return sq_throwerror(v,_SC("the object is not a class instance")); @@ -801,7 +789,7 @@ SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p) return SQ_OK; } -SQRESULT sq_setclassudsize(HSQUIRRELVM v, SQInteger idx, SQInteger udsize) +SQRESULT sq_setclassudsize(HRABBITVM v, SQInteger idx, SQInteger udsize) { SQObjectPtr &o = stack_get(v,idx); if(sq_type(o) != OT_CLASS) return sq_throwerror(v,_SC("the object is not a class")); @@ -811,7 +799,7 @@ SQRESULT sq_setclassudsize(HSQUIRRELVM v, SQInteger idx, SQInteger udsize) } -SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag) +SQRESULT sq_getinstanceup(HRABBITVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag) { SQObjectPtr &o = stack_get(v,idx); if(sq_type(o) != OT_INSTANCE) return sq_throwerror(v,_SC("the object is not a class instance")); @@ -828,12 +816,12 @@ SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserP return SQ_OK; } -SQInteger sq_gettop(HSQUIRRELVM v) +SQInteger sq_gettop(HRABBITVM v) { return (v->_top) - v->_stackbase; } -void sq_settop(HSQUIRRELVM v, SQInteger newtop) +void sq_settop(HRABBITVM v, SQInteger newtop) { SQInteger top = sq_gettop(v); if(top > newtop) @@ -842,32 +830,32 @@ void sq_settop(HSQUIRRELVM v, SQInteger newtop) while(top++ < newtop) sq_pushnull(v); } -void sq_pop(HSQUIRRELVM v, SQInteger nelemstopop) +void sq_pop(HRABBITVM v, SQInteger nelemstopop) { assert(v->_top >= nelemstopop); v->Pop(nelemstopop); } -void sq_poptop(HSQUIRRELVM v) +void sq_poptop(HRABBITVM v) { assert(v->_top >= 1); v->Pop(); } -void sq_remove(HSQUIRRELVM v, SQInteger idx) +void sq_remove(HRABBITVM v, SQInteger idx) { v->Remove(idx); } -SQInteger sq_cmp(HSQUIRRELVM v) +SQInteger sq_cmp(HRABBITVM v) { SQInteger res; v->ObjCmp(stack_get(v, -1), stack_get(v, -2),res); return res; } -SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic) +SQRESULT sq_newslot(HRABBITVM v, SQInteger idx, SQBool bstatic) { sq_aux_paramscheck(v, 3); SQObjectPtr &self = stack_get(v, idx); @@ -880,7 +868,7 @@ SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic) return SQ_OK; } -SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval) +SQRESULT sq_deleteslot(HRABBITVM v,SQInteger idx,SQBool pushval) { sq_aux_paramscheck(v, 2); SQObjectPtr *self; @@ -897,7 +885,7 @@ SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval) return SQ_OK; } -SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_set(HRABBITVM v,SQInteger idx) { SQObjectPtr &self = stack_get(v, idx); if(v->Set(self, v->GetUp(-2), v->GetUp(-1),DONT_FALL_BACK)) { @@ -907,7 +895,7 @@ SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx) return SQ_ERROR; } -SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_rawset(HRABBITVM v,SQInteger idx) { SQObjectPtr &self = stack_get(v, idx); SQObjectPtr &key = v->GetUp(-2); @@ -945,7 +933,7 @@ SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx) v->Raise_IdxError(v->GetUp(-2));return SQ_ERROR; } -SQRESULT sq_newmember(HSQUIRRELVM v,SQInteger idx,SQBool bstatic) +SQRESULT sq_newmember(HRABBITVM v,SQInteger idx,SQBool bstatic) { SQObjectPtr &self = stack_get(v, idx); if(sq_type(self) != OT_CLASS) return sq_throwerror(v, _SC("new member only works with classes")); @@ -959,7 +947,7 @@ SQRESULT sq_newmember(HSQUIRRELVM v,SQInteger idx,SQBool bstatic) return SQ_OK; } -SQRESULT sq_rawnewmember(HSQUIRRELVM v,SQInteger idx,SQBool bstatic) +SQRESULT sq_rawnewmember(HRABBITVM v,SQInteger idx,SQBool bstatic) { SQObjectPtr &self = stack_get(v, idx); if(sq_type(self) != OT_CLASS) return sq_throwerror(v, _SC("new member only works with classes")); @@ -973,7 +961,7 @@ SQRESULT sq_rawnewmember(HSQUIRRELVM v,SQInteger idx,SQBool bstatic) return SQ_OK; } -SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_setdelegate(HRABBITVM v,SQInteger idx) { SQObjectPtr &self = stack_get(v, idx); SQObjectPtr &mt = v->GetUp(-1); @@ -1004,7 +992,7 @@ SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval) +SQRESULT sq_rawdeleteslot(HRABBITVM v,SQInteger idx,SQBool pushval) { sq_aux_paramscheck(v, 2); SQObjectPtr *self; @@ -1021,7 +1009,7 @@ SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval) return SQ_OK; } -SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_getdelegate(HRABBITVM v,SQInteger idx) { SQObjectPtr &self=stack_get(v,idx); switch(sq_type(self)){ @@ -1039,7 +1027,7 @@ SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx) } -SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_get(HRABBITVM v,SQInteger idx) { SQObjectPtr &self=stack_get(v,idx); SQObjectPtr &obj = v->GetUp(-1); @@ -1049,7 +1037,7 @@ SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx) return SQ_ERROR; } -SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_rawget(HRABBITVM v,SQInteger idx) { SQObjectPtr &self=stack_get(v,idx); SQObjectPtr &obj = v->GetUp(-1); @@ -1086,13 +1074,13 @@ SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx) return sq_throwerror(v,_SC("the index doesn't exist")); } -SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po) +SQRESULT sq_getstackobj(HRABBITVM v,SQInteger idx,HSQOBJECT *po) { *po=stack_get(v,idx); return SQ_OK; } -const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx) +const SQChar *sq_getlocal(HRABBITVM v,SQUnsignedInteger level,SQUnsignedInteger idx) { SQUnsignedInteger cstksize=v->_callsstacksize; SQUnsignedInteger lvl=(cstksize-level)-1; @@ -1117,7 +1105,7 @@ const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedIntege return NULL; } -void sq_pushobject(HSQUIRRELVM v,HSQOBJECT obj) +void sq_pushobject(HRABBITVM v,HSQOBJECT obj) { v->Push(SQObjectPtr(obj)); } @@ -1127,13 +1115,13 @@ void sq_resetobject(HSQOBJECT *po) po->_unVal.pUserPointer=NULL;po->_type=OT_NULL; } -SQRESULT sq_throwerror(HSQUIRRELVM v,const SQChar *err) +SQRESULT sq_throwerror(HRABBITVM v,const SQChar *err) { v->_lasterror=SQString::Create(_ss(v),err); return SQ_ERROR; } -SQRESULT sq_throwobject(HSQUIRRELVM v) +SQRESULT sq_throwobject(HRABBITVM v) { v->_lasterror = v->GetUp(-1); v->Pop(); @@ -1141,17 +1129,17 @@ SQRESULT sq_throwobject(HSQUIRRELVM v) } -void sq_reseterror(HSQUIRRELVM v) +void sq_reseterror(HRABBITVM v) { v->_lasterror.Null(); } -void sq_getlasterror(HSQUIRRELVM v) +void sq_getlasterror(HRABBITVM v) { v->Push(v->_lasterror); } -SQRESULT sq_reservestack(HSQUIRRELVM v,SQInteger nsize) +SQRESULT sq_reservestack(HRABBITVM v,SQInteger nsize) { if (((SQUnsignedInteger)v->_top + nsize) > v->_stack.size()) { if(v->_nmetamethodscall) { @@ -1162,7 +1150,7 @@ SQRESULT sq_reservestack(HSQUIRRELVM v,SQInteger nsize) return SQ_OK; } -SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror) +SQRESULT sq_resume(HRABBITVM v,SQBool retval,SQBool raiseerror) { if (sq_type(v->GetUp(-1)) == OT_GENERATOR) { @@ -1176,7 +1164,7 @@ SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror) return sq_throwerror(v,_SC("only generators can be resumed")); } -SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror) +SQRESULT sq_call(HRABBITVM v,SQInteger params,SQBool retval,SQBool raiseerror) { SQObjectPtr res; if(v->Call(v->GetUp(-(params+1)),params,v->_top-params,res,raiseerror?true:false)){ @@ -1198,7 +1186,7 @@ SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror) return sq_throwerror(v,_SC("call failed")); } -SQRESULT sq_tailcall(HSQUIRRELVM v, SQInteger nparams) +SQRESULT sq_tailcall(HRABBITVM v, SQInteger nparams) { SQObjectPtr &res = v->GetUp(-(nparams + 1)); if (sq_type(res) != OT_CLOSURE) { @@ -1217,12 +1205,12 @@ SQRESULT sq_tailcall(HSQUIRRELVM v, SQInteger nparams) return SQ_TAILCALL_FLAG; } -SQRESULT sq_suspendvm(HSQUIRRELVM v) +SQRESULT sq_suspendvm(HRABBITVM v) { return v->Suspend(); } -SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool wakeupret,SQBool retval,SQBool raiseerror,SQBool throwerror) +SQRESULT sq_wakeupvm(HRABBITVM v,SQBool wakeupret,SQBool retval,SQBool raiseerror,SQBool throwerror) { SQObjectPtr ret; if(!v->_suspended) @@ -1243,7 +1231,7 @@ SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool wakeupret,SQBool retval,SQBool raiseer return SQ_OK; } -void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook) +void sq_setreleasehook(HRABBITVM v,SQInteger idx,SQRELEASEHOOK hook) { SQObjectPtr &ud=stack_get(v,idx); switch(sq_type(ud) ) { @@ -1254,7 +1242,7 @@ void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook) } } -SQRELEASEHOOK sq_getreleasehook(HSQUIRRELVM v,SQInteger idx) +SQRELEASEHOOK sq_getreleasehook(HRABBITVM v,SQInteger idx) { SQObjectPtr &ud=stack_get(v,idx); switch(sq_type(ud) ) { @@ -1265,12 +1253,12 @@ SQRELEASEHOOK sq_getreleasehook(HSQUIRRELVM v,SQInteger idx) } } -void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f) +void sq_setcompilererrorhandler(HRABBITVM v,SQCOMPILERERROR f) { _ss(v)->_compilererrorhandler = f; } -SQRESULT sq_writeclosure(HSQUIRRELVM v,SQWRITEFUNC w,SQUserPointer up) +SQRESULT sq_writeclosure(HRABBITVM v,SQWRITEFUNC w,SQUserPointer up) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, -1, OT_CLOSURE,o); @@ -1284,7 +1272,7 @@ SQRESULT sq_writeclosure(HSQUIRRELVM v,SQWRITEFUNC w,SQUserPointer up) return SQ_OK; } -SQRESULT sq_readclosure(HSQUIRRELVM v,SQREADFUNC r,SQUserPointer up) +SQRESULT sq_readclosure(HRABBITVM v,SQREADFUNC r,SQUserPointer up) { SQObjectPtr closure; @@ -1299,31 +1287,23 @@ SQRESULT sq_readclosure(HSQUIRRELVM v,SQREADFUNC r,SQUserPointer up) return SQ_OK; } -SQChar *sq_getscratchpad(HSQUIRRELVM v,SQInteger minsize) +SQChar *sq_getscratchpad(HRABBITVM v,SQInteger minsize) { return _ss(v)->GetScratchPad(minsize); } -SQRESULT sq_resurrectunreachable(HSQUIRRELVM v) +SQRESULT sq_resurrectunreachable(HRABBITVM v) { -#ifndef NO_GARBAGE_COLLECTOR - _ss(v)->ResurrectUnreachable(v); - return SQ_OK; -#else return sq_throwerror(v,_SC("sq_resurrectunreachable requires a garbage collector build")); -#endif } -SQInteger sq_collectgarbage(HSQUIRRELVM v) +// TODO: Remove this... +SQInteger sq_collectgarbage(HRABBITVM v) { -#ifndef NO_GARBAGE_COLLECTOR - return _ss(v)->CollectGarbage(v); -#else return -1; -#endif } -SQRESULT sq_getcallee(HSQUIRRELVM v) +SQRESULT sq_getcallee(HRABBITVM v) { if(v->_callsstacksize > 1) { @@ -1333,7 +1313,7 @@ SQRESULT sq_getcallee(HSQUIRRELVM v) return sq_throwerror(v,_SC("no closure in the calls stack")); } -const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval) +const SQChar *sq_getfreevariable(HRABBITVM v,SQInteger idx,SQUnsignedInteger nval) { SQObjectPtr &self=stack_get(v,idx); const SQChar *name = NULL; @@ -1362,7 +1342,7 @@ const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger n return name; } -SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval) +SQRESULT sq_setfreevariable(HRABBITVM v,SQInteger idx,SQUnsignedInteger nval) { SQObjectPtr &self=stack_get(v,idx); switch(sq_type(self)) @@ -1388,7 +1368,7 @@ SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval) return SQ_OK; } -SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_setattributes(HRABBITVM v,SQInteger idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); @@ -1410,7 +1390,7 @@ SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx) return sq_throwerror(v,_SC("wrong index")); } -SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_getattributes(HRABBITVM v,SQInteger idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); @@ -1430,7 +1410,7 @@ SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx) return sq_throwerror(v,_SC("wrong index")); } -SQRESULT sq_getmemberhandle(HSQUIRRELVM v,SQInteger idx,HSQMEMBERHANDLE *handle) +SQRESULT sq_getmemberhandle(HRABBITVM v,SQInteger idx,HSQMEMBERHANDLE *handle) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); @@ -1446,7 +1426,7 @@ SQRESULT sq_getmemberhandle(HSQUIRRELVM v,SQInteger idx,HSQMEMBERHANDLE *handle) return sq_throwerror(v,_SC("wrong index")); } -SQRESULT _getmemberbyhandle(HSQUIRRELVM v,SQObjectPtr &self,const HSQMEMBERHANDLE *handle,SQObjectPtr *&val) +SQRESULT _getmemberbyhandle(HRABBITVM v,SQObjectPtr &self,const HSQMEMBERHANDLE *handle,SQObjectPtr *&val) { switch(sq_type(self)) { case OT_INSTANCE: { @@ -1477,7 +1457,7 @@ SQRESULT _getmemberbyhandle(HSQUIRRELVM v,SQObjectPtr &self,const HSQMEMBERHANDL return SQ_OK; } -SQRESULT sq_getbyhandle(HSQUIRRELVM v,SQInteger idx,const HSQMEMBERHANDLE *handle) +SQRESULT sq_getbyhandle(HRABBITVM v,SQInteger idx,const HSQMEMBERHANDLE *handle) { SQObjectPtr &self = stack_get(v,idx); SQObjectPtr *val = NULL; @@ -1488,7 +1468,7 @@ SQRESULT sq_getbyhandle(HSQUIRRELVM v,SQInteger idx,const HSQMEMBERHANDLE *handl return SQ_OK; } -SQRESULT sq_setbyhandle(HSQUIRRELVM v,SQInteger idx,const HSQMEMBERHANDLE *handle) +SQRESULT sq_setbyhandle(HRABBITVM v,SQInteger idx,const HSQMEMBERHANDLE *handle) { SQObjectPtr &self = stack_get(v,idx); SQObjectPtr &newval = stack_get(v,-1); @@ -1501,7 +1481,7 @@ SQRESULT sq_setbyhandle(HSQUIRRELVM v,SQInteger idx,const HSQMEMBERHANDLE *handl return SQ_OK; } -SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_getbase(HRABBITVM v,SQInteger idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); @@ -1512,7 +1492,7 @@ SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_getclass(HRABBITVM v,SQInteger idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_INSTANCE,o); @@ -1520,7 +1500,7 @@ SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_createinstance(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_createinstance(HRABBITVM v,SQInteger idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); @@ -1528,7 +1508,7 @@ SQRESULT sq_createinstance(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -void sq_weakref(HSQUIRRELVM v,SQInteger idx) +void sq_weakref(HRABBITVM v,SQInteger idx) { SQObject &o=stack_get(v,idx); if(ISREFCOUNTED(sq_type(o))) { @@ -1538,7 +1518,7 @@ void sq_weakref(HSQUIRRELVM v,SQInteger idx) v->Push(o); } -SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_getweakrefval(HRABBITVM v,SQInteger idx) { SQObjectPtr &o = stack_get(v,idx); if(sq_type(o) != OT_WEAKREF) { @@ -1548,7 +1528,7 @@ SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t) +SQRESULT sq_getdefaultdelegate(HRABBITVM v,SQObjectType t) { SQSharedState *ss = _ss(v); switch(t) { @@ -1567,7 +1547,7 @@ SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t) return SQ_OK; } -SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx) +SQRESULT sq_next(HRABBITVM v,SQInteger idx) { SQObjectPtr o=stack_get(v,idx),&refpos = stack_get(v,-1),realkey,val; if(sq_type(o) == OT_GENERATOR) { @@ -1598,7 +1578,7 @@ SQInteger buf_lexfeed(SQUserPointer file) return buf->buf[buf->ptr++]; } -SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror) { +SQRESULT sq_compilebuffer(HRABBITVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror) { BufState buf; buf.buf = s; buf.size = size; @@ -1606,23 +1586,23 @@ SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQC return sq_compile(v, buf_lexfeed, &buf, sourcename, raiseerror); } -void sq_move(HSQUIRRELVM dest,HSQUIRRELVM src,SQInteger idx) +void sq_move(HRABBITVM dest,HRABBITVM src,SQInteger idx) { dest->Push(stack_get(src,idx)); } -void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc,SQPRINTFUNCTION errfunc) +void sq_setprintfunc(HRABBITVM v, SQPRINTFUNCTION printfunc,SQPRINTFUNCTION errfunc) { _ss(v)->_printfunc = printfunc; _ss(v)->_errorfunc = errfunc; } -SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v) +SQPRINTFUNCTION sq_getprintfunc(HRABBITVM v) { return _ss(v)->_printfunc; } -SQPRINTFUNCTION sq_geterrorfunc(HSQUIRRELVM v) +SQPRINTFUNCTION sq_geterrorfunc(HRABBITVM v) { return _ss(v)->_errorfunc; } diff --git a/rabbit/sqarray.hpp b/rabbit/sqarray.hpp index a6710a9..e4d0e11 100644 --- a/rabbit/sqarray.hpp +++ b/rabbit/sqarray.hpp @@ -21,10 +21,6 @@ public: new (newarray) SQArray(ss,nInitialSize); return newarray; } -#ifndef NO_GARBAGE_COLLECTOR - void Mark(SQCollectable **chain); - SQObjectType GetType() {return OT_ARRAY;} -#endif void Finalize(){ _values.resize(0); } @@ -59,7 +55,7 @@ public: //nothing to iterate anymore return -1; } - SQArray *Clone(){SQArray *anew=Create(_opt_ss(this),0); anew->_values.copy(_values); return anew; } + SQArray *Clone(){SQArray *anew=Create(NULL,0); anew->_values.copy(_values); return anew; } SQInteger Size() const {return _values.size();} void Resize(SQInteger size) { diff --git a/rabbit/sqbaselib.cpp b/rabbit/sqbaselib.cpp index f57a0a7..ad9feef 100644 --- a/rabbit/sqbaselib.cpp +++ b/rabbit/sqbaselib.cpp @@ -45,38 +45,25 @@ static bool str2num(const SQChar *s,SQObjectPtr &res,SQInteger base) return true; } -static SQInteger base_dummy(HSQUIRRELVM SQ_UNUSED_ARG(v)) +static SQInteger base_dummy(HRABBITVM SQ_UNUSED_ARG(v)) { return 0; } -#ifndef NO_GARBAGE_COLLECTOR -static SQInteger base_collectgarbage(HSQUIRRELVM v) -{ - sq_pushinteger(v, sq_collectgarbage(v)); - return 1; -} -static SQInteger base_resurectureachable(HSQUIRRELVM v) -{ - sq_resurrectunreachable(v); - return 1; -} -#endif - -static SQInteger base_getroottable(HSQUIRRELVM v) +static SQInteger base_getroottable(HRABBITVM v) { v->Push(v->_roottable); return 1; } -static SQInteger base_getconsttable(HSQUIRRELVM v) +static SQInteger base_getconsttable(HRABBITVM v) { v->Push(_ss(v)->_consts); return 1; } -static SQInteger base_setroottable(HSQUIRRELVM v) +static SQInteger base_setroottable(HRABBITVM v) { SQObjectPtr o = v->_roottable; if(SQ_FAILED(sq_setroottable(v))) return SQ_ERROR; @@ -84,7 +71,7 @@ static SQInteger base_setroottable(HSQUIRRELVM v) return 1; } -static SQInteger base_setconsttable(HSQUIRRELVM v) +static SQInteger base_setconsttable(HRABBITVM v) { SQObjectPtr o = _ss(v)->_consts; if(SQ_FAILED(sq_setconsttable(v))) return SQ_ERROR; @@ -92,19 +79,19 @@ static SQInteger base_setconsttable(HSQUIRRELVM v) return 1; } -static SQInteger base_seterrorhandler(HSQUIRRELVM v) +static SQInteger base_seterrorhandler(HRABBITVM v) { sq_seterrorhandler(v); return 0; } -static SQInteger base_setdebughook(HSQUIRRELVM v) +static SQInteger base_setdebughook(HRABBITVM v) { sq_setdebughook(v); return 0; } -static SQInteger base_enabledebuginfo(HSQUIRRELVM v) +static SQInteger base_enabledebuginfo(HRABBITVM v) { SQObjectPtr &o=stack_get(v,2); @@ -112,7 +99,7 @@ static SQInteger base_enabledebuginfo(HSQUIRRELVM v) return 0; } -static SQInteger __getcallstackinfos(HSQUIRRELVM v,SQInteger level) +static SQInteger __getcallstackinfos(HRABBITVM v,SQInteger level) { SQStackInfos si; SQInteger seq = 0; @@ -150,14 +137,14 @@ static SQInteger __getcallstackinfos(HSQUIRRELVM v,SQInteger level) return 0; } -static SQInteger base_getstackinfos(HSQUIRRELVM v) +static SQInteger base_getstackinfos(HRABBITVM v) { SQInteger level; sq_getinteger(v, -1, &level); return __getcallstackinfos(v,level); } -static SQInteger base_assert(HSQUIRRELVM v) +static SQInteger base_assert(HRABBITVM v) { if(SQVM::IsFalse(stack_get(v,2))){ SQInteger top = sq_gettop(v); @@ -172,7 +159,7 @@ static SQInteger base_assert(HSQUIRRELVM v) return 0; } -static SQInteger get_slice_params(HSQUIRRELVM v,SQInteger &sidx,SQInteger &eidx,SQObjectPtr &o) +static SQInteger get_slice_params(HRABBITVM v,SQInteger &sidx,SQInteger &eidx,SQObjectPtr &o) { SQInteger top = sq_gettop(v); sidx=0; @@ -196,7 +183,7 @@ static SQInteger get_slice_params(HSQUIRRELVM v,SQInteger &sidx,SQInteger &eidx, return 1; } -static SQInteger base_print(HSQUIRRELVM v) +static SQInteger base_print(HRABBITVM v) { const SQChar *str; if(SQ_SUCCEEDED(sq_tostring(v,2))) @@ -209,7 +196,7 @@ static SQInteger base_print(HSQUIRRELVM v) return SQ_ERROR; } -static SQInteger base_error(HSQUIRRELVM v) +static SQInteger base_error(HRABBITVM v) { const SQChar *str; if(SQ_SUCCEEDED(sq_tostring(v,2))) @@ -222,7 +209,7 @@ static SQInteger base_error(HSQUIRRELVM v) return SQ_ERROR; } -static SQInteger base_compilestring(HSQUIRRELVM v) +static SQInteger base_compilestring(HRABBITVM v) { SQInteger nargs=sq_gettop(v); const SQChar *src=NULL,*name=_SC("unnamedbuffer"); @@ -238,21 +225,21 @@ static SQInteger base_compilestring(HSQUIRRELVM v) return SQ_ERROR; } -static SQInteger base_newthread(HSQUIRRELVM v) +static SQInteger base_newthread(HRABBITVM v) { SQObjectPtr &func = stack_get(v,2); SQInteger stksize = (_closure(func)->_function->_stacksize << 1) +2; - HSQUIRRELVM newv = sq_newthread(v, (stksize < MIN_STACK_OVERHEAD + 2)? MIN_STACK_OVERHEAD + 2 : stksize); + HRABBITVM newv = sq_newthread(v, (stksize < MIN_STACK_OVERHEAD + 2)? MIN_STACK_OVERHEAD + 2 : stksize); sq_move(newv,v,-2); return 1; } -static SQInteger base_suspend(HSQUIRRELVM v) +static SQInteger base_suspend(HRABBITVM v) { return sq_suspendvm(v); } -static SQInteger base_array(HSQUIRRELVM v) +static SQInteger base_array(HRABBITVM v) { SQArray *a; SQObject &size = stack_get(v,2); @@ -267,14 +254,14 @@ static SQInteger base_array(HSQUIRRELVM v) return 1; } -static SQInteger base_type(HSQUIRRELVM v) +static SQInteger base_type(HRABBITVM v) { SQObjectPtr &o = stack_get(v,2); v->Push(SQString::Create(_ss(v),GetTypeName(o),-1)); return 1; } -static SQInteger base_callee(HSQUIRRELVM v) +static SQInteger base_callee(HRABBITVM v) { if(v->_callsstacksize > 1) { @@ -304,14 +291,10 @@ static const SQRegFunction base_funcs[]={ {_SC("type"),base_type,2, NULL}, {_SC("callee"),base_callee,0,NULL}, {_SC("dummy"),base_dummy,0,NULL}, -#ifndef NO_GARBAGE_COLLECTOR - {_SC("collectgarbage"),base_collectgarbage,0, NULL}, - {_SC("resurrectunreachable"),base_resurectureachable,0, NULL}, -#endif {NULL,(SQFUNCTION)0,0,NULL} }; -void sq_base_register(HSQUIRRELVM v) +void sq_base_register(HRABBITVM v) { SQInteger i=0; sq_pushroottable(v); @@ -325,10 +308,10 @@ void sq_base_register(HSQUIRRELVM v) } sq_pushstring(v,_SC("_versionnumber_"),-1); - sq_pushinteger(v,SQUIRREL_VERSION_NUMBER); + sq_pushinteger(v,RABBIT_VERSION_NUMBER); sq_newslot(v,-3, SQFalse); sq_pushstring(v,_SC("_version_"),-1); - sq_pushstring(v,SQUIRREL_VERSION,-1); + sq_pushstring(v,RABBIT_VERSION,-1); sq_newslot(v,-3, SQFalse); sq_pushstring(v,_SC("_charsize_"),-1); sq_pushinteger(v,sizeof(SQChar)); @@ -342,13 +325,13 @@ void sq_base_register(HSQUIRRELVM v) sq_pop(v,1); } -static SQInteger default_delegate_len(HSQUIRRELVM v) +static SQInteger default_delegate_len(HRABBITVM v) { v->Push(SQInteger(sq_getsize(v,1))); return 1; } -static SQInteger default_delegate_tofloat(HSQUIRRELVM v) +static SQInteger default_delegate_tofloat(HRABBITVM v) { SQObjectPtr &o=stack_get(v,1); switch(sq_type(o)){ @@ -373,7 +356,7 @@ static SQInteger default_delegate_tofloat(HSQUIRRELVM v) return 1; } -static SQInteger default_delegate_tointeger(HSQUIRRELVM v) +static SQInteger default_delegate_tointeger(HRABBITVM v) { SQObjectPtr &o=stack_get(v,1); SQInteger base = 10; @@ -402,26 +385,26 @@ static SQInteger default_delegate_tointeger(HSQUIRRELVM v) return 1; } -static SQInteger default_delegate_tostring(HSQUIRRELVM v) +static SQInteger default_delegate_tostring(HRABBITVM v) { if(SQ_FAILED(sq_tostring(v,1))) return SQ_ERROR; return 1; } -static SQInteger obj_delegate_weakref(HSQUIRRELVM v) +static SQInteger obj_delegate_weakref(HRABBITVM v) { sq_weakref(v,1); return 1; } -static SQInteger obj_clear(HSQUIRRELVM v) +static SQInteger obj_clear(HRABBITVM v) { return SQ_SUCCEEDED(sq_clear(v,-1)) ? 1 : SQ_ERROR; } -static SQInteger number_delegate_tochar(HSQUIRRELVM v) +static SQInteger number_delegate_tochar(HRABBITVM v) { SQObject &o=stack_get(v,1); SQChar c = (SQChar)tointeger(o); @@ -434,7 +417,7 @@ static SQInteger number_delegate_tochar(HSQUIRRELVM v) ///////////////////////////////////////////////////////////////// //TABLE DEFAULT DELEGATE -static SQInteger table_rawdelete(HSQUIRRELVM v) +static SQInteger table_rawdelete(HRABBITVM v) { if(SQ_FAILED(sq_rawdeleteslot(v,1,SQTrue))) return SQ_ERROR; @@ -442,7 +425,7 @@ static SQInteger table_rawdelete(HSQUIRRELVM v) } -static SQInteger container_rawexists(HSQUIRRELVM v) +static SQInteger container_rawexists(HRABBITVM v) { if(SQ_SUCCEEDED(sq_rawget(v,-2))) { sq_pushbool(v,SQTrue); @@ -452,18 +435,18 @@ static SQInteger container_rawexists(HSQUIRRELVM v) return 1; } -static SQInteger container_rawset(HSQUIRRELVM v) +static SQInteger container_rawset(HRABBITVM v) { return SQ_SUCCEEDED(sq_rawset(v,-3)) ? 1 : SQ_ERROR; } -static SQInteger container_rawget(HSQUIRRELVM v) +static SQInteger container_rawget(HRABBITVM v) { return SQ_SUCCEEDED(sq_rawget(v,-2))?1:SQ_ERROR; } -static SQInteger table_setdelegate(HSQUIRRELVM v) +static SQInteger table_setdelegate(HRABBITVM v) { if(SQ_FAILED(sq_setdelegate(v,-2))) return SQ_ERROR; @@ -471,12 +454,12 @@ static SQInteger table_setdelegate(HSQUIRRELVM v) return 1; } -static SQInteger table_getdelegate(HSQUIRRELVM v) +static SQInteger table_getdelegate(HRABBITVM v) { return SQ_SUCCEEDED(sq_getdelegate(v,-1))?1:SQ_ERROR; } -static SQInteger table_filter(HSQUIRRELVM v) +static SQInteger table_filter(HRABBITVM v) { SQObject &o = stack_get(v,1); SQTable *tbl = _table(o); @@ -521,29 +504,29 @@ const SQRegFunction SQSharedState::_table_default_delegate_funcz[]={ //ARRAY DEFAULT DELEGATE/////////////////////////////////////// -static SQInteger array_append(HSQUIRRELVM v) +static SQInteger array_append(HRABBITVM v) { return SQ_SUCCEEDED(sq_arrayappend(v,-2)) ? 1 : SQ_ERROR; } -static SQInteger array_extend(HSQUIRRELVM v) +static SQInteger array_extend(HRABBITVM v) { _array(stack_get(v,1))->Extend(_array(stack_get(v,2))); sq_pop(v,1); return 1; } -static SQInteger array_reverse(HSQUIRRELVM v) +static SQInteger array_reverse(HRABBITVM v) { return SQ_SUCCEEDED(sq_arrayreverse(v,-1)) ? 1 : SQ_ERROR; } -static SQInteger array_pop(HSQUIRRELVM v) +static SQInteger array_pop(HRABBITVM v) { return SQ_SUCCEEDED(sq_arraypop(v,1,SQTrue))?1:SQ_ERROR; } -static SQInteger array_top(HSQUIRRELVM v) +static SQInteger array_top(HRABBITVM v) { SQObject &o=stack_get(v,1); if(_array(o)->Size()>0){ @@ -553,7 +536,7 @@ static SQInteger array_top(HSQUIRRELVM v) else return sq_throwerror(v,_SC("top() on a empty array")); } -static SQInteger array_insert(HSQUIRRELVM v) +static SQInteger array_insert(HRABBITVM v) { SQObject &o=stack_get(v,1); SQObject &idx=stack_get(v,2); @@ -564,7 +547,7 @@ static SQInteger array_insert(HSQUIRRELVM v) return 1; } -static SQInteger array_remove(HSQUIRRELVM v) +static SQInteger array_remove(HRABBITVM v) { SQObject &o = stack_get(v, 1); SQObject &idx = stack_get(v, 2); @@ -578,7 +561,7 @@ static SQInteger array_remove(HSQUIRRELVM v) return sq_throwerror(v, _SC("idx out of range")); } -static SQInteger array_resize(HSQUIRRELVM v) +static SQInteger array_resize(HRABBITVM v) { SQObject &o = stack_get(v, 1); SQObject &nsize = stack_get(v, 2); @@ -597,7 +580,7 @@ static SQInteger array_resize(HSQUIRRELVM v) return sq_throwerror(v, _SC("size must be a number")); } -static SQInteger __map_array(SQArray *dest,SQArray *src,HSQUIRRELVM v) { +static SQInteger __map_array(SQArray *dest,SQArray *src,HRABBITVM v) { SQObjectPtr temp; SQInteger size = src->Size(); for(SQInteger n = 0; n < size; n++) { @@ -613,7 +596,7 @@ static SQInteger __map_array(SQArray *dest,SQArray *src,HSQUIRRELVM v) { return 0; } -static SQInteger array_map(HSQUIRRELVM v) +static SQInteger array_map(HRABBITVM v) { SQObject &o = stack_get(v,1); SQInteger size = _array(o)->Size(); @@ -624,7 +607,7 @@ static SQInteger array_map(HSQUIRRELVM v) return 1; } -static SQInteger array_apply(HSQUIRRELVM v) +static SQInteger array_apply(HRABBITVM v) { SQObject &o = stack_get(v,1); if(SQ_FAILED(__map_array(_array(o),_array(o),v))) @@ -633,7 +616,7 @@ static SQInteger array_apply(HSQUIRRELVM v) return 1; } -static SQInteger array_reduce(HSQUIRRELVM v) +static SQInteger array_reduce(HRABBITVM v) { SQObject &o = stack_get(v,1); SQArray *a = _array(o); @@ -661,7 +644,7 @@ static SQInteger array_reduce(HSQUIRRELVM v) return 1; } -static SQInteger array_filter(HSQUIRRELVM v) +static SQInteger array_filter(HRABBITVM v) { SQObject &o = stack_get(v,1); SQArray *a = _array(o); @@ -685,7 +668,7 @@ static SQInteger array_filter(HSQUIRRELVM v) return 1; } -static SQInteger array_find(HSQUIRRELVM v) +static SQInteger array_find(HRABBITVM v) { SQObject &o = stack_get(v,1); SQObjectPtr &val = stack_get(v,2); @@ -704,7 +687,7 @@ static SQInteger array_find(HSQUIRRELVM v) } -static bool _sort_compare(HSQUIRRELVM v,SQObjectPtr &a,SQObjectPtr &b,SQInteger func,SQInteger &ret) +static bool _sort_compare(HRABBITVM v,SQObjectPtr &a,SQObjectPtr &b,SQInteger func,SQInteger &ret) { if(func < 0) { if(!v->ObjCmp(a,b,ret)) return false; @@ -730,7 +713,7 @@ static bool _sort_compare(HSQUIRRELVM v,SQObjectPtr &a,SQObjectPtr &b,SQInteger return true; } -static bool _hsort_sift_down(HSQUIRRELVM v,SQArray *arr, SQInteger root, SQInteger bottom, SQInteger func) +static bool _hsort_sift_down(HRABBITVM v,SQArray *arr, SQInteger root, SQInteger bottom, SQInteger func) { SQInteger maxChild; SQInteger done = 0; @@ -770,7 +753,7 @@ static bool _hsort_sift_down(HSQUIRRELVM v,SQArray *arr, SQInteger root, SQInteg return true; } -static bool _hsort(HSQUIRRELVM v,SQObjectPtr &arr, SQInteger SQ_UNUSED_ARG(l), SQInteger SQ_UNUSED_ARG(r),SQInteger func) +static bool _hsort(HRABBITVM v,SQObjectPtr &arr, SQInteger SQ_UNUSED_ARG(l), SQInteger SQ_UNUSED_ARG(r),SQInteger func) { SQArray *a = _array(arr); SQInteger i; @@ -787,7 +770,7 @@ static bool _hsort(HSQUIRRELVM v,SQObjectPtr &arr, SQInteger SQ_UNUSED_ARG(l), S return true; } -static SQInteger array_sort(HSQUIRRELVM v) +static SQInteger array_sort(HRABBITVM v) { SQInteger func = -1; SQObjectPtr &o = stack_get(v,1); @@ -801,7 +784,7 @@ static SQInteger array_sort(HSQUIRRELVM v) return 1; } -static SQInteger array_slice(HSQUIRRELVM v) +static SQInteger array_slice(HRABBITVM v) { SQInteger sidx,eidx; SQObjectPtr o; @@ -848,7 +831,7 @@ const SQRegFunction SQSharedState::_array_default_delegate_funcz[]={ }; //STRING DEFAULT DELEGATE////////////////////////// -static SQInteger string_slice(HSQUIRRELVM v) +static SQInteger string_slice(HRABBITVM v) { SQInteger sidx,eidx; SQObjectPtr o; @@ -862,7 +845,7 @@ static SQInteger string_slice(HSQUIRRELVM v) return 1; } -static SQInteger string_find(HSQUIRRELVM v) +static SQInteger string_find(HRABBITVM v) { SQInteger top,start_idx=0; const SQChar *str,*substr,*ret; @@ -880,7 +863,7 @@ static SQInteger string_find(HSQUIRRELVM v) return sq_throwerror(v,_SC("invalid param")); } -#define STRING_TOFUNCZ(func) static SQInteger string_##func(HSQUIRRELVM v) \ +#define STRING_TOFUNCZ(func) static SQInteger string_##func(HRABBITVM v) \ {\ SQInteger sidx,eidx; \ SQObjectPtr str; \ @@ -927,12 +910,12 @@ const SQRegFunction SQSharedState::_number_default_delegate_funcz[]={ }; //CLOSURE DEFAULT DELEGATE////////////////////////// -static SQInteger closure_pcall(HSQUIRRELVM v) +static SQInteger closure_pcall(HRABBITVM v) { return SQ_SUCCEEDED(sq_call(v,sq_gettop(v)-1,SQTrue,SQFalse))?1:SQ_ERROR; } -static SQInteger closure_call(HSQUIRRELVM v) +static SQInteger closure_call(HRABBITVM v) { SQObjectPtr &c = stack_get(v, -1); if (sq_type(c) == OT_CLOSURE && (_closure(c)->_function->_bgenerator == false)) @@ -942,7 +925,7 @@ static SQInteger closure_call(HSQUIRRELVM v) return SQ_SUCCEEDED(sq_call(v, sq_gettop(v) - 1, SQTrue, SQTrue)) ? 1 : SQ_ERROR; } -static SQInteger _closure_acall(HSQUIRRELVM v,SQBool raiseerror) +static SQInteger _closure_acall(HRABBITVM v,SQBool raiseerror) { SQArray *aparams=_array(stack_get(v,2)); SQInteger nparams=aparams->Size(); @@ -951,38 +934,38 @@ static SQInteger _closure_acall(HSQUIRRELVM v,SQBool raiseerror) return SQ_SUCCEEDED(sq_call(v,nparams,SQTrue,raiseerror))?1:SQ_ERROR; } -static SQInteger closure_acall(HSQUIRRELVM v) +static SQInteger closure_acall(HRABBITVM v) { return _closure_acall(v,SQTrue); } -static SQInteger closure_pacall(HSQUIRRELVM v) +static SQInteger closure_pacall(HRABBITVM v) { return _closure_acall(v,SQFalse); } -static SQInteger closure_bindenv(HSQUIRRELVM v) +static SQInteger closure_bindenv(HRABBITVM v) { if(SQ_FAILED(sq_bindenv(v,1))) return SQ_ERROR; return 1; } -static SQInteger closure_getroot(HSQUIRRELVM v) +static SQInteger closure_getroot(HRABBITVM v) { if(SQ_FAILED(sq_getclosureroot(v,-1))) return SQ_ERROR; return 1; } -static SQInteger closure_setroot(HSQUIRRELVM v) +static SQInteger closure_setroot(HRABBITVM v) { if(SQ_FAILED(sq_setclosureroot(v,-2))) return SQ_ERROR; return 1; } -static SQInteger closure_getinfos(HSQUIRRELVM v) { +static SQInteger closure_getinfos(HRABBITVM v) { SQObject o = stack_get(v,1); SQTable *res = SQTable::Create(_ss(v),4); if(sq_type(o) == OT_CLOSURE) { @@ -1042,7 +1025,7 @@ const SQRegFunction SQSharedState::_closure_default_delegate_funcz[]={ }; //GENERATOR DEFAULT DELEGATE -static SQInteger generator_getstatus(HSQUIRRELVM v) +static SQInteger generator_getstatus(HRABBITVM v) { SQObject &o=stack_get(v,1); switch(_generator(o)->_state){ @@ -1061,7 +1044,7 @@ const SQRegFunction SQSharedState::_generator_default_delegate_funcz[]={ }; //THREAD DEFAULT DELEGATE -static SQInteger thread_call(HSQUIRRELVM v) +static SQInteger thread_call(HRABBITVM v) { SQObjectPtr o = stack_get(v,1); if(sq_type(o) == OT_THREAD) { @@ -1080,7 +1063,7 @@ static SQInteger thread_call(HSQUIRRELVM v) return sq_throwerror(v,_SC("wrong parameter")); } -static SQInteger thread_wakeup(HSQUIRRELVM v) +static SQInteger thread_wakeup(HRABBITVM v) { SQObjectPtr o = stack_get(v,1); if(sq_type(o) == OT_THREAD) { @@ -1116,7 +1099,7 @@ static SQInteger thread_wakeup(HSQUIRRELVM v) return sq_throwerror(v,_SC("wrong parameter")); } -static SQInteger thread_wakeupthrow(HSQUIRRELVM v) +static SQInteger thread_wakeupthrow(HRABBITVM v) { SQObjectPtr o = stack_get(v,1); if(sq_type(o) == OT_THREAD) { @@ -1157,7 +1140,7 @@ static SQInteger thread_wakeupthrow(HSQUIRRELVM v) return sq_throwerror(v,_SC("wrong parameter")); } -static SQInteger thread_getstatus(HSQUIRRELVM v) +static SQInteger thread_getstatus(HRABBITVM v) { SQObjectPtr &o = stack_get(v,1); switch(sq_getvmstate(_thread(o))) { @@ -1176,7 +1159,7 @@ static SQInteger thread_getstatus(HSQUIRRELVM v) return 1; } -static SQInteger thread_getstackinfos(HSQUIRRELVM v) +static SQInteger thread_getstackinfos(HRABBITVM v) { SQObjectPtr o = stack_get(v,1); if(sq_type(o) == OT_THREAD) { @@ -1220,27 +1203,27 @@ const SQRegFunction SQSharedState::_thread_default_delegate_funcz[] = { {NULL,(SQFUNCTION)0,0,NULL} }; -static SQInteger class_getattributes(HSQUIRRELVM v) +static SQInteger class_getattributes(HRABBITVM v) { return SQ_SUCCEEDED(sq_getattributes(v,-2))?1:SQ_ERROR; } -static SQInteger class_setattributes(HSQUIRRELVM v) +static SQInteger class_setattributes(HRABBITVM v) { return SQ_SUCCEEDED(sq_setattributes(v,-3))?1:SQ_ERROR; } -static SQInteger class_instance(HSQUIRRELVM v) +static SQInteger class_instance(HRABBITVM v) { return SQ_SUCCEEDED(sq_createinstance(v,-1))?1:SQ_ERROR; } -static SQInteger class_getbase(HSQUIRRELVM v) +static SQInteger class_getbase(HRABBITVM v) { return SQ_SUCCEEDED(sq_getbase(v,-1))?1:SQ_ERROR; } -static SQInteger class_newmember(HSQUIRRELVM v) +static SQInteger class_newmember(HRABBITVM v) { SQInteger top = sq_gettop(v); SQBool bstatic = SQFalse; @@ -1256,7 +1239,7 @@ static SQInteger class_newmember(HSQUIRRELVM v) return SQ_SUCCEEDED(sq_newmember(v,-4,bstatic))?1:SQ_ERROR; } -static SQInteger class_rawnewmember(HSQUIRRELVM v) +static SQInteger class_rawnewmember(HRABBITVM v) { SQInteger top = sq_gettop(v); SQBool bstatic = SQFalse; @@ -1288,7 +1271,7 @@ const SQRegFunction SQSharedState::_class_default_delegate_funcz[] = { }; -static SQInteger instance_getclass(HSQUIRRELVM v) +static SQInteger instance_getclass(HRABBITVM v) { if(SQ_SUCCEEDED(sq_getclass(v,1))) return 1; @@ -1305,7 +1288,7 @@ const SQRegFunction SQSharedState::_instance_default_delegate_funcz[] = { {NULL,(SQFUNCTION)0,0,NULL} }; -static SQInteger weakref_ref(HSQUIRRELVM v) +static SQInteger weakref_ref(HRABBITVM v) { if(SQ_FAILED(sq_getweakrefval(v,1))) return SQ_ERROR; diff --git a/rabbit/sqclass.cpp b/rabbit/sqclass.cpp index 17604fc..c61d5fa 100644 --- a/rabbit/sqclass.cpp +++ b/rabbit/sqclass.cpp @@ -105,7 +105,7 @@ bool SQClass::NewSlot(SQSharedState *ss,const SQObjectPtr &key,const SQObjectPtr SQInstance *SQClass::CreateInstance() { if(!_locked) Lock(); - return SQInstance::Create(_opt_ss(this),this); + return SQInstance::Create(NULL,this); } SQInteger SQClass::Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval) diff --git a/rabbit/sqclass.hpp b/rabbit/sqclass.hpp index 734d6a0..caf2148 100644 --- a/rabbit/sqclass.hpp +++ b/rabbit/sqclass.hpp @@ -70,10 +70,6 @@ public: sq_delete(this, SQClass); } void Finalize(); -#ifndef NO_GARBAGE_COLLECTOR - void Mark(SQCollectable ** ); - SQObjectType GetType() {return OT_CLASS;} -#endif SQInteger Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval); SQInstance *CreateInstance(); SQTable *_members; @@ -150,10 +146,6 @@ public: SQ_FREE(this, size); } void Finalize(); -#ifndef NO_GARBAGE_COLLECTOR - void Mark(SQCollectable ** ); - SQObjectType GetType() {return OT_INSTANCE;} -#endif bool InstanceOf(SQClass *trg); bool GetMetaMethod(SQVM *v,SQMetaMethod mm,SQObjectPtr &res); diff --git a/rabbit/sqclosure.hpp b/rabbit/sqclosure.hpp index b998291..dbc211b 100644 --- a/rabbit/sqclosure.hpp +++ b/rabbit/sqclosure.hpp @@ -46,7 +46,7 @@ public: SQClosure *Clone() { SQFunctionProto *f = _function; - SQClosure * ret = SQClosure::Create(_opt_ss(this),f,_root); + SQClosure * ret = SQClosure::Create(NULL,f,_root); ret->_env = _env; if(ret->_env) __ObjAddRef(ret->_env); _COPY_VECTOR(ret->_outervalues,_outervalues,f->_noutervalues); @@ -57,15 +57,6 @@ public: bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write); static bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &ret); -#ifndef NO_GARBAGE_COLLECTOR - void Mark(SQCollectable **chain); - void Finalize(){ - SQFunctionProto *f = _function; - _NULL_SQOBJECT_VECTOR(_outervalues,f->_noutervalues); - _NULL_SQOBJECT_VECTOR(_defaultparams,f->_ndefaultparams); - } - SQObjectType GetType() {return OT_CLOSURE;} -#endif SQWeakRef *_env; SQWeakRef *_root; SQClass *_base; @@ -96,12 +87,6 @@ public: sq_vm_free(this,sizeof(SQOuter)); } -#ifndef NO_GARBAGE_COLLECTOR - void Mark(SQCollectable **chain); - void Finalize() { _value.Null(); } - SQObjectType GetType() {return OT_OUTER;} -#endif - SQObjectPtr *_valptr; /* pointer to value on stack, or _value below */ SQInteger _idx; /* idx in stack array, for relocation */ SQObjectPtr _value; /* value of outer after stack frame is closed */ @@ -134,11 +119,6 @@ public: bool Yield(SQVM *v,SQInteger target); bool Resume(SQVM *v,SQObjectPtr &dest); -#ifndef NO_GARBAGE_COLLECTOR - void Mark(SQCollectable **chain); - void Finalize(){_stack.resize(0);_closure.Null();} - SQObjectType GetType() {return OT_GENERATOR;} -#endif SQObjectPtr _closure; SQObjectPtrVec _stack; SQVM::CallInfo _ci; @@ -165,7 +145,7 @@ public: } SQNativeClosure *Clone() { - SQNativeClosure * ret = SQNativeClosure::Create(_opt_ss(this),_function,_noutervalues); + SQNativeClosure * ret = SQNativeClosure::Create(NULL,_function,_noutervalues); ret->_env = _env; if(ret->_env) __ObjAddRef(ret->_env); ret->_name = _name; @@ -186,11 +166,6 @@ public: sq_free(this,size); } -#ifndef NO_GARBAGE_COLLECTOR - void Mark(SQCollectable **chain); - void Finalize() { _NULL_SQOBJECT_VECTOR(_outervalues,_noutervalues); } - SQObjectType GetType() {return OT_NATIVECLOSURE;} -#endif SQInteger _nparamscheck; SQIntVec _typecheck; SQObjectPtr *_outervalues; diff --git a/rabbit/sqcompiler.cpp b/rabbit/sqcompiler.cpp index a5b3d99..47a8442 100644 --- a/rabbit/sqcompiler.cpp +++ b/rabbit/sqcompiler.cpp @@ -150,7 +150,7 @@ public: Lex(); return ret; } - bool IsEndOfStatement() { return ((_lex._prevtoken == _SC('\n')) || (_token == SQUIRREL_EOB) || (_token == _SC('}')) || (_token == _SC(';'))); } + bool IsEndOfStatement() { return ((_lex._prevtoken == _SC('\n')) || (_token == RABBIT_EOB) || (_token == _SC('}')) || (_token == _SC(';'))); } void OptionalSemicolon() { if(_token == _SC(';')) { Lex(); return; } diff --git a/rabbit/sqdebug.cpp b/rabbit/sqdebug.cpp index bc10d2b..6b70387 100644 --- a/rabbit/sqdebug.cpp +++ b/rabbit/sqdebug.cpp @@ -13,7 +13,7 @@ #include #include -SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger level,SQFunctionInfo *fi) +SQRESULT sq_getfunctioninfo(HRABBITVM v,SQInteger level,SQFunctionInfo *fi) { SQInteger cssize = v->_callsstacksize; if (cssize > level) { @@ -31,7 +31,7 @@ SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger level,SQFunctionInfo *fi) return sq_throwerror(v,_SC("the object is not a closure")); } -SQRESULT sq_stackinfos(HSQUIRRELVM v, SQInteger level, SQStackInfos *si) +SQRESULT sq_stackinfos(HRABBITVM v, SQInteger level, SQStackInfos *si) { SQInteger cssize = v->_callsstacksize; if (cssize > level) { diff --git a/rabbit/sqfuncproto.hpp b/rabbit/sqfuncproto.hpp index 5000f7c..079d6ff 100644 --- a/rabbit/sqfuncproto.hpp +++ b/rabbit/sqfuncproto.hpp @@ -120,11 +120,6 @@ public: SQInteger GetLine(SQInstruction *curr); bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write); static bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &ret); -#ifndef NO_GARBAGE_COLLECTOR - void Mark(SQCollectable **chain); - void Finalize(){ _NULL_SQOBJECT_VECTOR(_literals,_nliterals); } - SQObjectType GetType() {return OT_FUNCPROTO;} -#endif SQObjectPtr _sourcename; SQObjectPtr _name; SQInteger _stacksize; diff --git a/rabbit/sqlexer.cpp b/rabbit/sqlexer.cpp index fc4e439..0c653af 100644 --- a/rabbit/sqlexer.cpp +++ b/rabbit/sqlexer.cpp @@ -16,7 +16,7 @@ #define CUR_CHAR (_currdata) #define RETURN_TOKEN(t) { _prevtoken = _curtoken; _curtoken = t; return t;} -#define IS_EOB() (CUR_CHAR <= SQUIRREL_EOB) +#define IS_EOB() (CUR_CHAR <= RABBIT_EOB) #define NEXT() {Next();_currentcolumn++;} #define INIT_TEMP_STRING() { _longstr.resize(0);} #define APPEND_CHAR(c) { _longstr.push_back(c);} @@ -97,7 +97,7 @@ void SQLexer::Next() _currdata = (LexChar)t; return; } - _currdata = SQUIRREL_EOB; + _currdata = RABBIT_EOB; _reached_eof = SQTrue; } @@ -120,7 +120,7 @@ void SQLexer::LexBlockComment() switch(CUR_CHAR) { case _SC('*'): { NEXT(); if(CUR_CHAR == _SC('/')) { done = true; NEXT(); }}; continue; case _SC('\n'): _currentline++; NEXT(); continue; - case SQUIRREL_EOB: Error(_SC("missing \"*/\" in comment")); + case RABBIT_EOB: Error(_SC("missing \"*/\" in comment")); default: NEXT(); } } @@ -133,7 +133,7 @@ void SQLexer::LexLineComment() SQInteger SQLexer::Lex() { _lasttokenline = _currentline; - while(CUR_CHAR != SQUIRREL_EOB) { + while(CUR_CHAR != RABBIT_EOB) { switch(CUR_CHAR){ case _SC('\t'): case _SC('\r'): case _SC(' '): NEXT(); continue; case _SC('\n'): @@ -261,7 +261,7 @@ SQInteger SQLexer::Lex() if (CUR_CHAR == _SC('=')){ NEXT(); RETURN_TOKEN(TK_PLUSEQ);} else if (CUR_CHAR == _SC('+')){ NEXT(); RETURN_TOKEN(TK_PLUSPLUS);} else RETURN_TOKEN('+'); - case SQUIRREL_EOB: + case RABBIT_EOB: return 0; default:{ if (scisdigit(CUR_CHAR)) { @@ -363,7 +363,7 @@ SQInteger SQLexer::ReadString(SQInteger ndelim,bool verbatim) while(CUR_CHAR != ndelim) { SQInteger x = CUR_CHAR; switch (x) { - case SQUIRREL_EOB: + case RABBIT_EOB: Error(_SC("unfinished string")); return -1; case _SC('\n'): diff --git a/rabbit/sqobject.cpp b/rabbit/sqobject.cpp index ce401fa..c6564ce 100644 --- a/rabbit/sqobject.cpp +++ b/rabbit/sqobject.cpp @@ -280,7 +280,7 @@ SQClosure::~SQClosure() } #define _CHECK_IO(exp) { if(!exp)return false; } -bool SafeWrite(HSQUIRRELVM v,SQWRITEFUNC write,SQUserPointer up,SQUserPointer dest,SQInteger size) +bool SafeWrite(HRABBITVM v,SQWRITEFUNC write,SQUserPointer up,SQUserPointer dest,SQInteger size) { if(write(up,dest,size) != size) { v->Raise_Error(_SC("io error (write function failure)")); @@ -289,7 +289,7 @@ bool SafeWrite(HSQUIRRELVM v,SQWRITEFUNC write,SQUserPointer up,SQUserPointer de return true; } -bool SafeRead(HSQUIRRELVM v,SQWRITEFUNC read,SQUserPointer up,SQUserPointer dest,SQInteger size) +bool SafeRead(HRABBITVM v,SQWRITEFUNC read,SQUserPointer up,SQUserPointer dest,SQInteger size) { if(size && read(up,dest,size) != size) { v->Raise_Error(_SC("io error, read function failure, the origin stream could be corrupted/trucated")); @@ -298,12 +298,12 @@ bool SafeRead(HSQUIRRELVM v,SQWRITEFUNC read,SQUserPointer up,SQUserPointer dest return true; } -bool WriteTag(HSQUIRRELVM v,SQWRITEFUNC write,SQUserPointer up,SQUnsignedInteger32 tag) +bool WriteTag(HRABBITVM v,SQWRITEFUNC write,SQUserPointer up,SQUnsignedInteger32 tag) { return SafeWrite(v,write,up,&tag,sizeof(tag)); } -bool CheckTag(HSQUIRRELVM v,SQWRITEFUNC read,SQUserPointer up,SQUnsignedInteger32 tag) +bool CheckTag(HRABBITVM v,SQWRITEFUNC read,SQUserPointer up,SQUnsignedInteger32 tag) { SQUnsignedInteger32 t; _CHECK_IO(SafeRead(v,read,up,&t,sizeof(t))); @@ -314,7 +314,7 @@ bool CheckTag(HSQUIRRELVM v,SQWRITEFUNC read,SQUserPointer up,SQUnsignedInteger3 return true; } -bool WriteObject(HSQUIRRELVM v,SQUserPointer up,SQWRITEFUNC write,SQObjectPtr &o) +bool WriteObject(HRABBITVM v,SQUserPointer up,SQWRITEFUNC write,SQObjectPtr &o) { SQUnsignedInteger32 _type = (SQUnsignedInteger32)sq_type(o); _CHECK_IO(SafeWrite(v,write,up,&_type,sizeof(_type))); @@ -337,7 +337,7 @@ bool WriteObject(HSQUIRRELVM v,SQUserPointer up,SQWRITEFUNC write,SQObjectPtr &o return true; } -bool ReadObject(HSQUIRRELVM v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &o) +bool ReadObject(HRABBITVM v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &o) { SQUnsignedInteger32 _type; _CHECK_IO(SafeRead(v,read,up,&_type,sizeof(_type))); @@ -494,7 +494,7 @@ bool SQFunctionProto::Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr _CHECK_IO(SafeRead(v,read,up, &nfunctions, sizeof(nfunctions))); - SQFunctionProto *f = SQFunctionProto::Create(_opt_ss(v),ninstructions,nliterals,nparameters, + SQFunctionProto *f = SQFunctionProto::Create(NULL,ninstructions,nliterals,nparameters, nfunctions,noutervalues,nlineinfos,nlocalvarinfos,ndefaultparams); SQObjectPtr proto = f; //gets a ref in case of failure f->_sourcename = sourcename; @@ -554,128 +554,3 @@ bool SQFunctionProto::Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr return true; } -#ifndef NO_GARBAGE_COLLECTOR - -#define START_MARK() if(!(_uiRef&MARK_FLAG)){ \ - _uiRef|=MARK_FLAG; - -#define END_MARK() RemoveFromChain(&_sharedstate->_gc_chain, this); \ - AddToChain(chain, this); } - -void SQVM::Mark(SQCollectable **chain) -{ - START_MARK() - SQSharedState::MarkObject(_lasterror,chain); - SQSharedState::MarkObject(_errorhandler,chain); - SQSharedState::MarkObject(_debughook_closure,chain); - SQSharedState::MarkObject(_roottable, chain); - SQSharedState::MarkObject(temp_reg, chain); - for(SQUnsignedInteger i = 0; i < _stack.size(); i++) SQSharedState::MarkObject(_stack[i], chain); - for(SQInteger k = 0; k < _callsstacksize; k++) SQSharedState::MarkObject(_callsstack[k]._closure, chain); - END_MARK() -} - -void SQArray::Mark(SQCollectable **chain) -{ - START_MARK() - SQInteger len = _values.size(); - for(SQInteger i = 0;i < len; i++) SQSharedState::MarkObject(_values[i], chain); - END_MARK() -} -void SQTable::Mark(SQCollectable **chain) -{ - START_MARK() - if(_delegate) _delegate->Mark(chain); - SQInteger len = _numofnodes; - for(SQInteger i = 0; i < len; i++){ - SQSharedState::MarkObject(_nodes[i].key, chain); - SQSharedState::MarkObject(_nodes[i].val, chain); - } - END_MARK() -} - -void SQClass::Mark(SQCollectable **chain) -{ - START_MARK() - _members->Mark(chain); - if(_base) _base->Mark(chain); - SQSharedState::MarkObject(_attributes, chain); - for(SQUnsignedInteger i =0; i< _defaultvalues.size(); i++) { - SQSharedState::MarkObject(_defaultvalues[i].val, chain); - SQSharedState::MarkObject(_defaultvalues[i].attrs, chain); - } - for(SQUnsignedInteger j =0; j< _methods.size(); j++) { - SQSharedState::MarkObject(_methods[j].val, chain); - SQSharedState::MarkObject(_methods[j].attrs, chain); - } - for(SQUnsignedInteger k =0; k< MT_LAST; k++) { - SQSharedState::MarkObject(_metamethods[k], chain); - } - END_MARK() -} - -void SQInstance::Mark(SQCollectable **chain) -{ - START_MARK() - _class->Mark(chain); - SQUnsignedInteger nvalues = _class->_defaultvalues.size(); - for(SQUnsignedInteger i =0; i< nvalues; i++) { - SQSharedState::MarkObject(_values[i], chain); - } - END_MARK() -} - -void SQGenerator::Mark(SQCollectable **chain) -{ - START_MARK() - for(SQUnsignedInteger i = 0; i < _stack.size(); i++) SQSharedState::MarkObject(_stack[i], chain); - SQSharedState::MarkObject(_closure, chain); - END_MARK() -} - -void SQFunctionProto::Mark(SQCollectable **chain) -{ - START_MARK() - for(SQInteger i = 0; i < _nliterals; i++) SQSharedState::MarkObject(_literals[i], chain); - for(SQInteger k = 0; k < _nfunctions; k++) SQSharedState::MarkObject(_functions[k], chain); - END_MARK() -} - -void SQClosure::Mark(SQCollectable **chain) -{ - START_MARK() - if(_base) _base->Mark(chain); - SQFunctionProto *fp = _function; - fp->Mark(chain); - for(SQInteger i = 0; i < fp->_noutervalues; i++) SQSharedState::MarkObject(_outervalues[i], chain); - for(SQInteger k = 0; k < fp->_ndefaultparams; k++) SQSharedState::MarkObject(_defaultparams[k], chain); - END_MARK() -} - -void SQNativeClosure::Mark(SQCollectable **chain) -{ - START_MARK() - for(SQUnsignedInteger i = 0; i < _noutervalues; i++) SQSharedState::MarkObject(_outervalues[i], chain); - END_MARK() -} - -void SQOuter::Mark(SQCollectable **chain) -{ - START_MARK() - /* If the valptr points to a closed value, that value is alive */ - if(_valptr == &_value) { - SQSharedState::MarkObject(_value, chain); - } - END_MARK() -} - -void SQUserData::Mark(SQCollectable **chain){ - START_MARK() - if(_delegate) _delegate->Mark(chain); - END_MARK() -} - -void SQCollectable::UnMark() { _uiRef&=~MARK_FLAG; } - -#endif - diff --git a/rabbit/sqobject.hpp b/rabbit/sqobject.hpp index 4d692a4..c4f160b 100644 --- a/rabbit/sqobject.hpp +++ b/rabbit/sqobject.hpp @@ -312,34 +312,10 @@ inline void _Swap(SQObject &a,SQObject &b) b._unVal = unOldVal; } -///////////////////////////////////////////////////////////////////////////////////// -#ifndef NO_GARBAGE_COLLECTOR -#define MARK_FLAG 0x80000000 -struct SQCollectable : public SQRefCounted { - SQCollectable *_next; - SQCollectable *_prev; - SQSharedState *_sharedstate; - virtual SQObjectType GetType()=0; - virtual void Release()=0; - virtual void Mark(SQCollectable **chain)=0; - void UnMark(); - virtual void Finalize()=0; - static void AddToChain(SQCollectable **chain,SQCollectable *c); - static void RemoveFromChain(SQCollectable **chain,SQCollectable *c); -}; - - -#define ADD_TO_CHAIN(chain,obj) AddToChain(chain,obj) -#define REMOVE_FROM_CHAIN(chain,obj) {if(!(_uiRef&MARK_FLAG))RemoveFromChain(chain,obj);} -#define CHAINABLE_OBJ SQCollectable -#define INIT_CHAIN() {_next=NULL;_prev=NULL;_sharedstate=ss;} -#else - #define ADD_TO_CHAIN(chain,obj) ((void)0) #define REMOVE_FROM_CHAIN(chain,obj) ((void)0) #define CHAINABLE_OBJ SQRefCounted #define INIT_CHAIN() ((void)0) -#endif struct SQDelegable : public CHAINABLE_OBJ { bool SetDelegate(SQTable *m); diff --git a/rabbit/sqstate.cpp b/rabbit/sqstate.cpp index 0ab1136..4e49326 100644 --- a/rabbit/sqstate.cpp +++ b/rabbit/sqstate.cpp @@ -97,9 +97,6 @@ void SQSharedState::Init() { _scratchpad=NULL; _scratchpadsize=0; -#ifndef NO_GARBAGE_COLLECTOR - _gc_chain=NULL; -#endif _stringtable = (SQStringTable*)SQ_MALLOC(sizeof(SQStringTable)); new (_stringtable) SQStringTable(this); sq_new(_metamethods,SQObjectPtrVec); @@ -185,26 +182,6 @@ SQSharedState::~SQSharedState() _instance_default_delegate.Null(); _weakref_default_delegate.Null(); _refs_table.Finalize(); -#ifndef NO_GARBAGE_COLLECTOR - SQCollectable *t = _gc_chain; - SQCollectable *nx = NULL; - if(t) { - t->_uiRef++; - while(t) { - t->Finalize(); - nx = t->_next; - if(nx) nx->_uiRef++; - if(--t->_uiRef == 0) - t->Release(); - t = nx; - } - } - assert(_gc_chain==NULL); //just to proove a theory - while(_gc_chain){ - _gc_chain->_uiRef++; - _gc_chain->Release(); - } -#endif sq_delete(_types,SQObjectPtrVec); sq_delete(_systemstrings,SQObjectPtrVec); @@ -225,155 +202,6 @@ SQInteger SQSharedState::GetMetaMethodIdxByName(const SQObjectPtr &name) return -1; } -#ifndef NO_GARBAGE_COLLECTOR - -void SQSharedState::MarkObject(SQObjectPtr &o,SQCollectable **chain) -{ - switch(sq_type(o)){ - case OT_TABLE:_table(o)->Mark(chain);break; - case OT_ARRAY:_array(o)->Mark(chain);break; - case OT_USERDATA:_userdata(o)->Mark(chain);break; - case OT_CLOSURE:_closure(o)->Mark(chain);break; - case OT_NATIVECLOSURE:_nativeclosure(o)->Mark(chain);break; - case OT_GENERATOR:_generator(o)->Mark(chain);break; - case OT_THREAD:_thread(o)->Mark(chain);break; - case OT_CLASS:_class(o)->Mark(chain);break; - case OT_INSTANCE:_instance(o)->Mark(chain);break; - case OT_OUTER:_outer(o)->Mark(chain);break; - case OT_FUNCPROTO:_funcproto(o)->Mark(chain);break; - default: break; //shutup compiler - } -} - -void SQSharedState::RunMark(SQVM* SQ_UNUSED_ARG(vm),SQCollectable **tchain) -{ - SQVM *vms = _thread(_root_vm); - - vms->Mark(tchain); - - _refs_table.Mark(tchain); - MarkObject(_registry,tchain); - MarkObject(_consts,tchain); - MarkObject(_metamethodsmap,tchain); - MarkObject(_table_default_delegate,tchain); - MarkObject(_array_default_delegate,tchain); - MarkObject(_string_default_delegate,tchain); - MarkObject(_number_default_delegate,tchain); - MarkObject(_generator_default_delegate,tchain); - MarkObject(_thread_default_delegate,tchain); - MarkObject(_closure_default_delegate,tchain); - MarkObject(_class_default_delegate,tchain); - MarkObject(_instance_default_delegate,tchain); - MarkObject(_weakref_default_delegate,tchain); - -} - -SQInteger SQSharedState::ResurrectUnreachable(SQVM *vm) -{ - SQInteger n=0; - SQCollectable *tchain=NULL; - - RunMark(vm,&tchain); - - SQCollectable *resurrected = _gc_chain; - SQCollectable *t = resurrected; - - _gc_chain = tchain; - - SQArray *ret = NULL; - if(resurrected) { - ret = SQArray::Create(this,0); - SQCollectable *rlast = NULL; - while(t) { - rlast = t; - SQObjectType type = t->GetType(); - if(type != OT_FUNCPROTO && type != OT_OUTER) { - SQObject sqo; - sqo._type = type; - sqo._unVal.pRefCounted = t; - ret->Append(sqo); - } - t = t->_next; - n++; - } - - assert(rlast->_next == NULL); - rlast->_next = _gc_chain; - if(_gc_chain) - { - _gc_chain->_prev = rlast; - } - _gc_chain = resurrected; - } - - t = _gc_chain; - while(t) { - t->UnMark(); - t = t->_next; - } - - if(ret) { - SQObjectPtr temp = ret; - vm->Push(temp); - } - else { - vm->PushNull(); - } - return n; -} - -SQInteger SQSharedState::CollectGarbage(SQVM *vm) -{ - SQInteger n = 0; - SQCollectable *tchain = NULL; - - RunMark(vm,&tchain); - - SQCollectable *t = _gc_chain; - SQCollectable *nx = NULL; - if(t) { - t->_uiRef++; - while(t) { - t->Finalize(); - nx = t->_next; - if(nx) nx->_uiRef++; - if(--t->_uiRef == 0) - t->Release(); - t = nx; - n++; - } - } - - t = tchain; - while(t) { - t->UnMark(); - t = t->_next; - } - _gc_chain = tchain; - - return n; -} -#endif - -#ifndef NO_GARBAGE_COLLECTOR -void SQCollectable::AddToChain(SQCollectable **chain,SQCollectable *c) -{ - c->_prev = NULL; - c->_next = *chain; - if(*chain) (*chain)->_prev = c; - *chain = c; -} - -void SQCollectable::RemoveFromChain(SQCollectable **chain,SQCollectable *c) -{ - if(c->_prev) c->_prev->_next = c->_next; - else *chain = c->_next; - if(c->_next) - c->_next->_prev = c->_prev; - c->_next = NULL; - c->_prev = NULL; -} -#endif SQChar* SQSharedState::GetScratchPad(SQInteger size) { @@ -412,18 +240,6 @@ RefTable::~RefTable() SQ_FREE(_buckets,(_numofslots * sizeof(RefNode *)) + (_numofslots * sizeof(RefNode))); } -#ifndef NO_GARBAGE_COLLECTOR -void RefTable::Mark(SQCollectable **chain) -{ - RefNode *nodes = (RefNode *)_nodes; - for(SQUnsignedInteger n = 0; n < _numofslots; n++) { - if(sq_type(nodes->obj) != OT_NULL) { - SQSharedState::MarkObject(nodes->obj,chain); - } - nodes++; - } -} -#endif void RefTable::AddRef(SQObject &obj) { diff --git a/rabbit/sqstate.hpp b/rabbit/sqstate.hpp index 787e5af..de9ff65 100644 --- a/rabbit/sqstate.hpp +++ b/rabbit/sqstate.hpp @@ -40,9 +40,6 @@ struct RefTable { void AddRef(SQObject &obj); SQBool Release(SQObject &obj); SQUnsignedInteger GetRefCount(SQObject &obj); -#ifndef NO_GARBAGE_COLLECTOR - void Mark(SQCollectable **chain); -#endif void Finalize(); private: RefNode *Get(SQObject &obj,SQHash &mainpos,RefNode **prev,bool add); @@ -69,12 +66,6 @@ struct SQSharedState public: SQChar* GetScratchPad(SQInteger size); SQInteger GetMetaMethodIdxByName(const SQObjectPtr &name); -#ifndef NO_GARBAGE_COLLECTOR - SQInteger CollectGarbage(SQVM *vm); - void RunMark(SQVM *vm,SQCollectable **tchain); - SQInteger ResurrectUnreachable(SQVM *vm); - static void MarkObject(SQObjectPtr &o,SQCollectable **chain); -#endif SQObjectPtrVec *_metamethods; SQObjectPtr _metamethodsmap; SQObjectPtrVec *_systemstrings; @@ -84,9 +75,6 @@ public: SQObjectPtr _registry; SQObjectPtr _consts; SQObjectPtr _constructoridx; -#ifndef NO_GARBAGE_COLLECTOR - SQCollectable *_gc_chain; -#endif SQObjectPtr _root_vm; SQObjectPtr _table_default_delegate; static const SQRegFunction _table_default_delegate_funcz[]; diff --git a/rabbit/sqtable.cpp b/rabbit/sqtable.cpp index ef3f1c1..8fba98f 100644 --- a/rabbit/sqtable.cpp +++ b/rabbit/sqtable.cpp @@ -77,7 +77,7 @@ void SQTable::Rehash(bool force) SQTable *SQTable::Clone() { - SQTable *nt=Create(_opt_ss(this),_numofnodes); + SQTable *nt=Create(NULL,_numofnodes); #ifdef _FAST_CLONE _HashNode *basesrc = _nodes; _HashNode *basedst = nt->_nodes; diff --git a/rabbit/sqtable.hpp b/rabbit/sqtable.hpp index 5fb0fa6..a6af102 100644 --- a/rabbit/sqtable.hpp +++ b/rabbit/sqtable.hpp @@ -65,10 +65,6 @@ public: for (SQInteger i = 0; i < _numofnodes; i++) _nodes[i].~_HashNode(); SQ_FREE(_nodes, _numofnodes * sizeof(_HashNode)); } -#ifndef NO_GARBAGE_COLLECTOR - void Mark(SQCollectable **chain); - SQObjectType GetType() {return OT_TABLE;} -#endif inline _HashNode *_Get(const SQObjectPtr &key,SQHash hash) { _HashNode *n = &_nodes[hash]; diff --git a/rabbit/squserdata.hpp b/rabbit/squserdata.hpp index ba41416..789ae75 100644 --- a/rabbit/squserdata.hpp +++ b/rabbit/squserdata.hpp @@ -23,11 +23,6 @@ struct SQUserData : SQDelegable ud->_typetag = 0; return ud; } -#ifndef NO_GARBAGE_COLLECTOR - void Mark(SQCollectable **chain); - void Finalize(){SetDelegate(NULL);} - SQObjectType GetType(){ return OT_USERDATA;} -#endif void Release() { if (_hook) _hook((SQUserPointer)sq_aligning(this + 1),_size); SQInteger tsize = _size; diff --git a/rabbit/sqvm.hpp b/rabbit/sqvm.hpp index a356e4b..c7c196f 100644 --- a/rabbit/sqvm.hpp +++ b/rabbit/sqvm.hpp @@ -21,7 +21,7 @@ #define GET_FLAG_RAW 0x00000001 #define GET_FLAG_DO_NOT_RAISE_ERROR 0x00000002 //base lib -void sq_base_register(HSQUIRRELVM v); +void sq_base_register(HRABBITVM v); struct SQExceptionTrap{ SQExceptionTrap() {} @@ -56,7 +56,7 @@ struct SQVM : public CHAINABLE_OBJ typedef sqvector CallInfoVec; public: void DebugHookProxy(SQInteger type, const SQChar * sourcename, SQInteger line, const SQChar * funcname); - static void _DebugHookProxy(HSQUIRRELVM v, SQInteger type, const SQChar * sourcename, SQInteger line, const SQChar * funcname); + static void _DebugHookProxy(HRABBITVM v, SQInteger type, const SQChar * sourcename, SQInteger line, const SQChar * funcname); enum ExecutionType { ET_CALL, ET_RESUME_GENERATOR, ET_RESUME_VM,ET_RESUME_THROW_VM }; SQVM(SQSharedState *ss); ~SQVM(); @@ -65,10 +65,10 @@ public: //starts a native call return when the NATIVE closure returns bool CallNative(SQNativeClosure *nclosure, SQInteger nargs, SQInteger newbase, SQObjectPtr &retval, SQInt32 target, bool &suspend,bool &tailcall); bool TailCall(SQClosure *closure, SQInteger firstparam, SQInteger nparams); - //starts a SQUIRREL call in the same "Execution loop" + //starts a RABBIT call in the same "Execution loop" bool StartCall(SQClosure *closure, SQInteger target, SQInteger nargs, SQInteger stackbase, bool tailcall); bool CreateClassInstance(SQClass *theclass, SQObjectPtr &inst, SQObjectPtr &constructor); - //call a generic closure pure SQUIRREL or NATIVE + //call a generic closure pure RABBIT or NATIVE bool Call(SQObjectPtr &closure, SQInteger nparams, SQInteger stackbase, SQObjectPtr &outres,SQBool raiseerror); SQRESULT Suspend(); @@ -120,10 +120,6 @@ public: void dumpstack(SQInteger stackbase=-1, bool dumpall = false); #endif -#ifndef NO_GARBAGE_COLLECTOR - void Mark(SQCollectable **chain); - SQObjectType GetType() {return OT_THREAD;} -#endif void Finalize(); void GrowCallStack() { SQInteger newsize = _alloccallsstacksize*2; @@ -191,16 +187,10 @@ struct AutoDec{ SQInteger *_n; }; -inline SQObjectPtr &stack_get(HSQUIRRELVM v,SQInteger idx){return ((idx>=0)?(v->GetAt(idx+v->_stackbase-1)):(v->GetUp(idx)));} +inline SQObjectPtr &stack_get(HRABBITVM v,SQInteger idx){return ((idx>=0)?(v->GetAt(idx+v->_stackbase-1)):(v->GetUp(idx)));} #define _ss(_vm_) (_vm_)->_sharedstate -#ifndef NO_GARBAGE_COLLECTOR -#define _opt_ss(_vm_) (_vm_)->_sharedstate -#else -#define _opt_ss(_vm_) NULL -#endif - #define PUSH_CALLINFO(v,nci){ \ SQInteger css = v->_callsstacksize; \ if(css == v->_alloccallsstacksize) { \