From db219fa8e6f06554888849d4da9d9997097862ee Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Wed, 27 Jun 2018 01:30:21 +0200 Subject: [PATCH] [DEV] simplify typing (too much) --- cmdLine/rabbit.cpp | 20 +-- etc/minimal.cpp | 2 +- lutin_rabbit-core.py | 3 +- rabbit-std/sqstdaux.cpp | 12 +- rabbit-std/sqstdblob.cpp | 76 ++++----- rabbit-std/sqstdblob.hpp | 6 +- rabbit-std/sqstdblobimpl.hpp | 28 ++-- rabbit-std/sqstdio.cpp | 104 ++++++------- rabbit-std/sqstdio.hpp | 28 ++-- rabbit-std/sqstdmath.cpp | 28 ++-- rabbit-std/sqstdrex.cpp | 110 ++++++------- rabbit-std/sqstdstream.cpp | 60 +++---- rabbit-std/sqstdstream.hpp | 20 +-- rabbit-std/sqstdstring.cpp | 104 ++++++------- rabbit-std/sqstdstring.hpp | 8 +- rabbit-std/sqstdsystem.cpp | 30 ++-- rabbit-std/sqstdsystem.hpp | 2 +- rabbit/UserData.hpp | 8 +- rabbit/rabbit.hpp | 224 +++++++++++++-------------- rabbit/sqapi.cpp | 238 ++++++++++++++-------------- rabbit/sqarray.hpp | 36 ++--- rabbit/sqbaselib.cpp | 292 +++++++++++++++++------------------ rabbit/sqclass.cpp | 22 +-- rabbit/sqclass.hpp | 22 +-- rabbit/sqclosure.hpp | 18 +-- rabbit/sqcompiler.cpp | 258 +++++++++++++++---------------- rabbit/sqconfig.hpp | 52 ++----- rabbit/sqdebug.cpp | 18 +-- rabbit/sqfuncproto.hpp | 48 +++--- rabbit/sqfuncstate.cpp | 142 ++++++++--------- rabbit/sqfuncstate.hpp | 68 ++++---- rabbit/sqlexer.cpp | 78 +++++----- rabbit/sqlexer.hpp | 32 ++-- rabbit/sqmem.cpp | 6 +- rabbit/sqobject.cpp | 140 ++++++++--------- rabbit/sqobject.hpp | 22 +-- rabbit/sqopcodes.hpp | 8 +- rabbit/sqstate.cpp | 44 +++--- rabbit/sqstate.hpp | 28 ++-- rabbit/sqstring.hpp | 6 +- rabbit/sqtable.cpp | 26 ++-- rabbit/sqtable.hpp | 24 +-- rabbit/squtils.hpp | 34 ++-- rabbit/sqvm.cpp | 228 +++++++++++++-------------- rabbit/sqvm.hpp | 108 ++++++------- 45 files changed, 1418 insertions(+), 1453 deletions(-) diff --git a/cmdLine/rabbit.cpp b/cmdLine/rabbit.cpp index 5bba939..2d6d952 100644 --- a/cmdLine/rabbit.cpp +++ b/cmdLine/rabbit.cpp @@ -48,7 +48,7 @@ int MemAllocHook(int allocType, #endif -SQInteger quit(HRABBITVM v) +int64_t quit(HRABBITVM v) { int *done; sq_getuserpointer(v,-1,(SQUserPointer*)&done); @@ -74,7 +74,7 @@ void errorfunc(HRABBITVM SQ_UNUSED_ARG(v),const SQChar *s,...) void PrintVersionInfos() { - scfprintf(stdout,_SC("%s %s (%d bits)\n"),RABBIT_VERSION,RABBIT_COPYRIGHT,((int)(sizeof(SQInteger)*8))); + scfprintf(stdout,_SC("%s %s (%d bits)\n"),RABBIT_VERSION,RABBIT_COPYRIGHT,((int)(sizeof(int64_t)*8))); } void PrintUsage() @@ -93,7 +93,7 @@ void PrintUsage() #define _DONE 2 #define _ERROR 3 //<> this func is a mess -int getargs(HRABBITVM v,int argc, char* argv[],SQInteger *retval) +int getargs(HRABBITVM v,int argc, char* argv[],int64_t *retval) { int i; int compiles_only = 0; @@ -236,10 +236,10 @@ void Interactive(HRABBITVM v) #define MAXINPUT 1024 SQChar buffer[MAXINPUT]; - SQInteger blocks =0; - SQInteger string=0; - SQInteger retval=0; - SQInteger done=0; + int64_t blocks =0; + int64_t string=0; + int64_t retval=0; + int64_t done=0; PrintVersionInfos(); sq_pushroottable(v); @@ -252,7 +252,7 @@ void Interactive(HRABBITVM v) while (!done) { - SQInteger i = 0; + int64_t i = 0; scprintf(_SC("\nrabbit> ")); for(;;) { int c; @@ -292,7 +292,7 @@ void Interactive(HRABBITVM v) } i=scstrlen(buffer); if(i>0){ - SQInteger oldtop=sq_gettop(v); + int64_t oldtop=sq_gettop(v); if(SQ_SUCCEEDED(sq_compilebuffer(v,buffer,i,_SC("interactive console"),SQTrue))){ sq_pushroottable(v); if(SQ_SUCCEEDED(sq_call(v,1,retval,SQTrue)) && retval){ @@ -316,7 +316,7 @@ void Interactive(HRABBITVM v) int main(int argc, char* argv[]) { HRABBITVM v; - SQInteger retval = 0; + int64_t retval = 0; #if defined(_MSC_VER) && defined(_DEBUG) _CrtSetAllocHook(MemAllocHook); #endif diff --git a/etc/minimal.cpp b/etc/minimal.cpp index 1a77adc..9569a24 100644 --- a/etc/minimal.cpp +++ b/etc/minimal.cpp @@ -36,7 +36,7 @@ void errorfunc(HSQUIRRELVM v,const SQChar *s,...) void call_foo(HSQUIRRELVM v, int n,float f,const SQChar *s) { - SQInteger top = sq_gettop(v); //saves the stack size before the call + int64_t top = sq_gettop(v); //saves the stack size before the call sq_pushroottable(v); //pushes the global table sq_pushstring(v,_SC("foo"),-1); if(SQ_SUCCEEDED(sq_get(v,-2))) { //gets the field 'foo' from the global table diff --git a/lutin_rabbit-core.py b/lutin_rabbit-core.py index 589cc0c..06164a1 100644 --- a/lutin_rabbit-core.py +++ b/lutin_rabbit-core.py @@ -44,7 +44,8 @@ def configure(target, my_module): my_module.add_depend([ 'z', 'm', - 'c' + 'c', + 'etk-base', ]) my_module.add_header_file([ 'rabbit/sqclass.hpp', diff --git a/rabbit-std/sqstdaux.cpp b/rabbit-std/sqstdaux.cpp index 9ffd92d..847a5af 100644 --- a/rabbit-std/sqstdaux.cpp +++ b/rabbit-std/sqstdaux.cpp @@ -15,12 +15,12 @@ void sqstd_printcallstack(HRABBITVM v) SQPRINTFUNCTION pf = sq_geterrorfunc(v); if(pf) { SQStackInfos si; - SQInteger i; - SQFloat f; + int64_t i; + float_t f; const SQChar *s; - SQInteger level=1; //1 is to skip this function that is level 0 + int64_t level=1; //1 is to skip this function that is level 0 const SQChar *name=0; - SQInteger seq=0; + int64_t seq=0; pf(v,_SC("\nCALLSTACK\n")); while(SQ_SUCCEEDED(sq_stackinfos(v,level,&si))) { @@ -103,7 +103,7 @@ void sqstd_printcallstack(HRABBITVM v) } } -static SQInteger _sqstd_aux_printerror(HRABBITVM v) +static int64_t _sqstd_aux_printerror(HRABBITVM v) { SQPRINTFUNCTION pf = sq_geterrorfunc(v); if(pf) { @@ -121,7 +121,7 @@ static SQInteger _sqstd_aux_printerror(HRABBITVM v) return 0; } -void _sqstd_compiler_error(HRABBITVM v,const SQChar *sErr,const SQChar *sSource,SQInteger line,SQInteger column) +void _sqstd_compiler_error(HRABBITVM v,const SQChar *sErr,const SQChar *sSource,int64_t line,int64_t column) { SQPRINTFUNCTION pf = sq_geterrorfunc(v); if(pf) { diff --git a/rabbit-std/sqstdblob.cpp b/rabbit-std/sqstdblob.cpp index 7b45660..c78f305 100644 --- a/rabbit-std/sqstdblob.cpp +++ b/rabbit-std/sqstdblob.cpp @@ -7,7 +7,7 @@ #include #include -#define SQSTD_BLOB_TYPE_TAG ((SQUnsignedInteger)(SQSTD_STREAM_TYPE_TAG | 0x00000002)) +#define SQSTD_BLOB_TYPE_TAG ((uint64_t)(SQSTD_STREAM_TYPE_TAG | 0x00000002)) //Blob @@ -20,10 +20,10 @@ return sq_throwerror(v,_SC("the blob is invalid")); -static SQInteger _blob_resize(HRABBITVM v) +static int64_t _blob_resize(HRABBITVM v) { SETUP_BLOB(v); - SQInteger size; + int64_t size; sq_getinteger(v,2,&size); if(!self->Resize(size)) return sq_throwerror(v,_SC("resize failed")); @@ -43,32 +43,32 @@ static void __swap_word(unsigned short *n) *n=(unsigned short)((*n>>8)&0x00FF)| ((*n<<8)&0xFF00); } -static SQInteger _blob_swap4(HRABBITVM v) +static int64_t _blob_swap4(HRABBITVM v) { SETUP_BLOB(v); - SQInteger num=(self->Len()-(self->Len()%4))>>2; + int64_t num=(self->Len()-(self->Len()%4))>>2; unsigned int *t=(unsigned int *)self->GetBuf(); - for(SQInteger i = 0; i < num; i++) { + for(int64_t i = 0; i < num; i++) { __swap_dword(&t[i]); } return 0; } -static SQInteger _blob_swap2(HRABBITVM v) +static int64_t _blob_swap2(HRABBITVM v) { SETUP_BLOB(v); - SQInteger num=(self->Len()-(self->Len()%2))>>1; + int64_t num=(self->Len()-(self->Len()%2))>>1; unsigned short *t = (unsigned short *)self->GetBuf(); - for(SQInteger i = 0; i < num; i++) { + for(int64_t i = 0; i < num; i++) { __swap_word(&t[i]); } return 0; } -static SQInteger _blob__set(HRABBITVM v) +static int64_t _blob__set(HRABBITVM v) { SETUP_BLOB(v); - SQInteger idx,val; + int64_t idx,val; sq_getinteger(v,2,&idx); sq_getinteger(v,3,&val); if(idx < 0 || idx >= self->Len()) @@ -78,10 +78,10 @@ static SQInteger _blob__set(HRABBITVM v) return 1; } -static SQInteger _blob__get(HRABBITVM v) +static int64_t _blob__get(HRABBITVM v) { SETUP_BLOB(v); - SQInteger idx; + int64_t idx; if ((sq_gettype(v, 2) & SQOBJECT_NUMERIC) == 0) { @@ -95,14 +95,14 @@ static SQInteger _blob__get(HRABBITVM v) return 1; } -static SQInteger _blob__nexti(HRABBITVM v) +static int64_t _blob__nexti(HRABBITVM v) { SETUP_BLOB(v); if(sq_gettype(v,2) == OT_NULL) { sq_pushinteger(v, 0); return 1; } - SQInteger idx; + int64_t idx; if(SQ_SUCCEEDED(sq_getinteger(v, 2, &idx))) { if(idx+1 < self->Len()) { sq_pushinteger(v, idx+1); @@ -114,13 +114,13 @@ static SQInteger _blob__nexti(HRABBITVM v) return sq_throwerror(v,_SC("internal error (_nexti) wrong argument type")); } -static SQInteger _blob__typeof(HRABBITVM v) +static int64_t _blob__typeof(HRABBITVM v) { sq_pushstring(v,_SC("blob"),-1); return 1; } -static SQInteger _blob_releasehook(SQUserPointer p, SQInteger SQ_UNUSED_ARG(size)) +static int64_t _blob_releasehook(SQUserPointer p, int64_t SQ_UNUSED_ARG(size)) { SQBlob *self = (SQBlob*)p; self->~SQBlob(); @@ -128,10 +128,10 @@ static SQInteger _blob_releasehook(SQUserPointer p, SQInteger SQ_UNUSED_ARG(size return 1; } -static SQInteger _blob_constructor(HRABBITVM v) +static int64_t _blob_constructor(HRABBITVM v) { - SQInteger nparam = sq_gettop(v); - SQInteger size = 0; + int64_t nparam = sq_gettop(v); + int64_t size = 0; if(nparam == 2) { sq_getinteger(v, 2, &size); } @@ -148,7 +148,7 @@ static SQInteger _blob_constructor(HRABBITVM v) return 0; } -static SQInteger _blob__cloned(HRABBITVM v) +static int64_t _blob__cloned(HRABBITVM v) { SQBlob *other = NULL; { @@ -185,44 +185,44 @@ static const SQRegFunction _blob_methods[] = { //GLOBAL FUNCTIONS -static SQInteger _g_blob_casti2f(HRABBITVM v) +static int64_t _g_blob_casti2f(HRABBITVM v) { - SQInteger i; + int64_t i; sq_getinteger(v,2,&i); - sq_pushfloat(v,*((const SQFloat *)&i)); + sq_pushfloat(v,*((const float_t *)&i)); return 1; } -static SQInteger _g_blob_castf2i(HRABBITVM v) +static int64_t _g_blob_castf2i(HRABBITVM v) { - SQFloat f; + float_t f; sq_getfloat(v,2,&f); - sq_pushinteger(v,*((const SQInteger *)&f)); + sq_pushinteger(v,*((const int64_t *)&f)); return 1; } -static SQInteger _g_blob_swap2(HRABBITVM v) +static int64_t _g_blob_swap2(HRABBITVM v) { - SQInteger i; + int64_t i; sq_getinteger(v,2,&i); short s=(short)i; sq_pushinteger(v,(s<<8)|((s>>8)&0x00FF)); return 1; } -static SQInteger _g_blob_swap4(HRABBITVM v) +static int64_t _g_blob_swap4(HRABBITVM v) { - SQInteger i; + int64_t i; sq_getinteger(v,2,&i); unsigned int t4 = (unsigned int)i; __swap_dword(&t4); - sq_pushinteger(v,(SQInteger)t4); + sq_pushinteger(v,(int64_t)t4); return 1; } -static SQInteger _g_blob_swapfloat(HRABBITVM v) +static int64_t _g_blob_swapfloat(HRABBITVM v) { - SQFloat f; + float_t f; sq_getfloat(v,2,&f); __swap_dword((unsigned int *)&f); sq_pushfloat(v,f); @@ -239,7 +239,7 @@ static const SQRegFunction bloblib_funcs[]={ {NULL,(SQFUNCTION)0,0,NULL} }; -SQRESULT sqstd_getblob(HRABBITVM v,SQInteger idx,SQUserPointer *ptr) +SQRESULT sqstd_getblob(HRABBITVM v,int64_t 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(HRABBITVM v,SQInteger idx,SQUserPointer *ptr) return SQ_OK; } -SQInteger sqstd_getblobsize(HRABBITVM v,SQInteger idx) +int64_t sqstd_getblobsize(HRABBITVM v,int64_t idx) { SQBlob *blob; if(SQ_FAILED(sq_getinstanceup(v,idx,(SQUserPointer *)&blob,(SQUserPointer)SQSTD_BLOB_TYPE_TAG))) @@ -256,9 +256,9 @@ SQInteger sqstd_getblobsize(HRABBITVM v,SQInteger idx) return blob->Len(); } -SQUserPointer sqstd_createblob(HRABBITVM v, SQInteger size) +SQUserPointer sqstd_createblob(HRABBITVM v, int64_t size) { - SQInteger top = sq_gettop(v); + int64_t top = sq_gettop(v); sq_pushregistrytable(v); sq_pushstring(v,_SC("std_blob"),-1); if(SQ_SUCCEEDED(sq_get(v,-2))) { diff --git a/rabbit-std/sqstdblob.hpp b/rabbit-std/sqstdblob.hpp index b802953..16c7e98 100644 --- a/rabbit-std/sqstdblob.hpp +++ b/rabbit-std/sqstdblob.hpp @@ -7,9 +7,9 @@ */ #pragma once -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); +RABBIT_API SQUserPointer sqstd_createblob(HRABBITVM v, int64_t size); +RABBIT_API SQRESULT sqstd_getblob(HRABBITVM v,int64_t idx,SQUserPointer *ptr); +RABBIT_API int64_t sqstd_getblobsize(HRABBITVM v,int64_t idx); RABBIT_API SQRESULT sqstd_register_bloblib(HRABBITVM v); diff --git a/rabbit-std/sqstdblobimpl.hpp b/rabbit-std/sqstdblobimpl.hpp index cb364e2..e82637a 100644 --- a/rabbit-std/sqstdblobimpl.hpp +++ b/rabbit-std/sqstdblobimpl.hpp @@ -9,7 +9,7 @@ struct SQBlob : public SQStream { - SQBlob(SQInteger size) { + SQBlob(int64_t size) { _size = size; _allocated = size; _buf = (unsigned char *)sq_malloc(size); @@ -20,7 +20,7 @@ struct SQBlob : public SQStream virtual ~SQBlob() { sq_free(_buf, _allocated); } - SQInteger Write(void *buffer, SQInteger size) { + int64_t Write(void *buffer, int64_t size) { if(!CanAdvance(size)) { GrowBufOf(_ptr + size - _size); } @@ -28,8 +28,8 @@ struct SQBlob : public SQStream _ptr += size; return size; } - SQInteger Read(void *buffer,SQInteger size) { - SQInteger n = size; + int64_t Read(void *buffer,int64_t size) { + int64_t n = size; if(!CanAdvance(size)) { if((_size - _ptr) > 0) n = _size - _ptr; @@ -39,7 +39,7 @@ struct SQBlob : public SQStream _ptr += n; return n; } - bool Resize(SQInteger n) { + bool Resize(int64_t n) { if(!_owns) return false; if(n != _allocated) { unsigned char *newbuf = (unsigned char *)sq_malloc(n); @@ -58,7 +58,7 @@ struct SQBlob : public SQStream } return true; } - bool GrowBufOf(SQInteger n) + bool GrowBufOf(int64_t n) { bool ret = true; if(_size + n > _allocated) { @@ -70,11 +70,11 @@ struct SQBlob : public SQStream _size = _size + n; return ret; } - bool CanAdvance(SQInteger n) { + bool CanAdvance(int64_t n) { if(_ptr+n>_size)return false; return true; } - SQInteger Seek(SQInteger offset, SQInteger origin) { + int64_t Seek(int64_t offset, int64_t origin) { switch(origin) { case SQ_SEEK_SET: if(offset > _size || offset < 0) return -1; @@ -98,14 +98,14 @@ struct SQBlob : public SQStream bool EOS() { return _ptr == _size; } - SQInteger Flush() { return 0; } - SQInteger Tell() { return _ptr; } - SQInteger Len() { return _size; } + int64_t Flush() { return 0; } + int64_t Tell() { return _ptr; } + int64_t Len() { return _size; } SQUserPointer GetBuf(){ return _buf; } private: - SQInteger _size; - SQInteger _allocated; - SQInteger _ptr; + int64_t _size; + int64_t _allocated; + int64_t _ptr; unsigned char *_buf; bool _owns; }; diff --git a/rabbit-std/sqstdio.cpp b/rabbit-std/sqstdio.cpp index 354634c..b2098c4 100644 --- a/rabbit-std/sqstdio.cpp +++ b/rabbit-std/sqstdio.cpp @@ -12,7 +12,7 @@ #include #include -#define SQSTD_FILE_TYPE_TAG ((SQUnsignedInteger)(SQSTD_STREAM_TYPE_TAG | 0x00000001)) +#define SQSTD_FILE_TYPE_TAG ((uint64_t)(SQSTD_STREAM_TYPE_TAG | 0x00000001)) //basic API SQFILE sqstd_fopen(const SQChar *filename ,const SQChar *mode) { @@ -23,20 +23,20 @@ SQFILE sqstd_fopen(const SQChar *filename ,const SQChar *mode) #endif } -SQInteger sqstd_fread(void* buffer, SQInteger size, SQInteger count, SQFILE file) +int64_t sqstd_fread(void* buffer, int64_t size, int64_t count, SQFILE file) { - SQInteger ret = (SQInteger)fread(buffer,size,count,(FILE *)file); + int64_t ret = (int64_t)fread(buffer,size,count,(FILE *)file); return ret; } -SQInteger sqstd_fwrite(const SQUserPointer buffer, SQInteger size, SQInteger count, SQFILE file) +int64_t sqstd_fwrite(const SQUserPointer buffer, int64_t size, int64_t count, SQFILE file) { - return (SQInteger)fwrite(buffer,size,count,(FILE *)file); + return (int64_t)fwrite(buffer,size,count,(FILE *)file); } -SQInteger sqstd_fseek(SQFILE file, SQInteger offset, SQInteger origin) +int64_t sqstd_fseek(SQFILE file, int64_t offset, int64_t origin) { - SQInteger realorigin; + int64_t realorigin; switch(origin) { case SQ_SEEK_CUR: realorigin = SEEK_CUR; break; case SQ_SEEK_END: realorigin = SEEK_END; break; @@ -46,22 +46,22 @@ SQInteger sqstd_fseek(SQFILE file, SQInteger offset, SQInteger origin) return fseek((FILE *)file,(long)offset,(int)realorigin); } -SQInteger sqstd_ftell(SQFILE file) +int64_t sqstd_ftell(SQFILE file) { return ftell((FILE *)file); } -SQInteger sqstd_fflush(SQFILE file) +int64_t sqstd_fflush(SQFILE file) { return fflush((FILE *)file); } -SQInteger sqstd_fclose(SQFILE file) +int64_t sqstd_fclose(SQFILE file) { return fclose((FILE *)file); } -SQInteger sqstd_feof(SQFILE file) +int64_t sqstd_feof(SQFILE file) { return feof((FILE *)file); } @@ -86,26 +86,26 @@ struct SQFile : public SQStream { _owns = false; } } - SQInteger Read(void *buffer,SQInteger size) { + int64_t Read(void *buffer,int64_t size) { return sqstd_fread(buffer,1,size,_handle); } - SQInteger Write(void *buffer,SQInteger size) { + int64_t Write(void *buffer,int64_t size) { return sqstd_fwrite(buffer,1,size,_handle); } - SQInteger Flush() { + int64_t Flush() { return sqstd_fflush(_handle); } - SQInteger Tell() { + int64_t Tell() { return sqstd_ftell(_handle); } - SQInteger Len() { - SQInteger prevpos=Tell(); + int64_t Len() { + int64_t prevpos=Tell(); Seek(0,SQ_SEEK_END); - SQInteger size=Tell(); + int64_t size=Tell(); Seek(prevpos,SQ_SEEK_SET); return size; } - SQInteger Seek(SQInteger offset, SQInteger origin) { + int64_t Seek(int64_t offset, int64_t origin) { return sqstd_fseek(_handle,offset,origin); } bool IsValid() { return _handle?true:false; } @@ -116,13 +116,13 @@ private: bool _owns; }; -static SQInteger _file__typeof(HRABBITVM v) +static int64_t _file__typeof(HRABBITVM v) { sq_pushstring(v,_SC("file"),-1); return 1; } -static SQInteger _file_releasehook(SQUserPointer p, SQInteger SQ_UNUSED_ARG(size)) +static int64_t _file_releasehook(SQUserPointer p, int64_t SQ_UNUSED_ARG(size)) { SQFile *self = (SQFile*)p; self->~SQFile(); @@ -130,7 +130,7 @@ static SQInteger _file_releasehook(SQUserPointer p, SQInteger SQ_UNUSED_ARG(size return 1; } -static SQInteger _file_constructor(HRABBITVM v) +static int64_t _file_constructor(HRABBITVM v) { const SQChar *filename,*mode; bool owns = true; @@ -158,7 +158,7 @@ static SQInteger _file_constructor(HRABBITVM v) return 0; } -static SQInteger _file_close(HRABBITVM v) +static int64_t _file_close(HRABBITVM v) { SQFile *self = NULL; if(SQ_SUCCEEDED(sq_getinstanceup(v,1,(SQUserPointer*)&self,(SQUserPointer)SQSTD_FILE_TYPE_TAG)) @@ -182,7 +182,7 @@ static const SQRegFunction _file_methods[] = { SQRESULT sqstd_createfile(HRABBITVM v, SQFILE file,SQBool own) { - SQInteger top = sq_gettop(v); + int64_t top = sq_gettop(v); sq_pushregistrytable(v); sq_pushstring(v,_SC("std_file"),-1); if(SQ_SUCCEEDED(sq_get(v,-2))) { @@ -204,7 +204,7 @@ SQRESULT sqstd_createfile(HRABBITVM v, SQFILE file,SQBool own) return SQ_ERROR; } -SQRESULT sqstd_getfile(HRABBITVM v, SQInteger idx, SQFILE *file) +SQRESULT sqstd_getfile(HRABBITVM v, int64_t idx, SQFILE *file) { SQFile *fileobj = NULL; if(SQ_SUCCEEDED(sq_getinstanceup(v,idx,(SQUserPointer*)&fileobj,(SQUserPointer)SQSTD_FILE_TYPE_TAG))) { @@ -219,23 +219,23 @@ SQRESULT sqstd_getfile(HRABBITVM v, SQInteger idx, SQFILE *file) #define IO_BUFFER_SIZE 2048 struct IOBuffer { unsigned char buffer[IO_BUFFER_SIZE]; - SQInteger size; - SQInteger ptr; + int64_t size; + int64_t ptr; SQFILE file; }; -SQInteger _read_byte(IOBuffer *iobuffer) +int64_t _read_byte(IOBuffer *iobuffer) { if(iobuffer->ptr < iobuffer->size) { - SQInteger ret = iobuffer->buffer[iobuffer->ptr]; + int64_t ret = iobuffer->buffer[iobuffer->ptr]; iobuffer->ptr++; return ret; } else { if( (iobuffer->size = sqstd_fread(iobuffer->buffer,1,IO_BUFFER_SIZE,iobuffer->file )) > 0 ) { - SQInteger ret = iobuffer->buffer[0]; + int64_t ret = iobuffer->buffer[0]; iobuffer->ptr = 1; return ret; } @@ -244,11 +244,11 @@ SQInteger _read_byte(IOBuffer *iobuffer) return 0; } -SQInteger _read_two_bytes(IOBuffer *iobuffer) +int64_t _read_two_bytes(IOBuffer *iobuffer) { if(iobuffer->ptr < iobuffer->size) { if(iobuffer->size < 2) return 0; - SQInteger ret = *((const wchar_t*)&iobuffer->buffer[iobuffer->ptr]); + int64_t ret = *((const wchar_t*)&iobuffer->buffer[iobuffer->ptr]); iobuffer->ptr += 2; return ret; } @@ -256,7 +256,7 @@ SQInteger _read_two_bytes(IOBuffer *iobuffer) if( (iobuffer->size = sqstd_fread(iobuffer->buffer,1,IO_BUFFER_SIZE,iobuffer->file )) > 0 ) { if(iobuffer->size < 2) return 0; - SQInteger ret = *((const wchar_t*)&iobuffer->buffer[0]); + int64_t ret = *((const wchar_t*)&iobuffer->buffer[0]); iobuffer->ptr = 2; return ret; } @@ -265,7 +265,7 @@ SQInteger _read_two_bytes(IOBuffer *iobuffer) return 0; } -static SQInteger _io_file_lexfeed_PLAIN(SQUserPointer iobuf) +static int64_t _io_file_lexfeed_PLAIN(SQUserPointer iobuf) { IOBuffer *iobuffer = (IOBuffer *)iobuf; return _read_byte(iobuffer); @@ -273,14 +273,14 @@ static SQInteger _io_file_lexfeed_PLAIN(SQUserPointer iobuf) } #ifdef SQUNICODE -static SQInteger _io_file_lexfeed_UTF8(SQUserPointer iobuf) +static int64_t _io_file_lexfeed_UTF8(SQUserPointer iobuf) { IOBuffer *iobuffer = (IOBuffer *)iobuf; #define READ(iobuf) \ if((inchar = (unsigned char)_read_byte(iobuf)) == 0) \ return 0; - static const SQInteger utf8_lengths[16] = + static const int64_t utf8_lengths[16] = { 1,1,1,1,1,1,1,1, /* 0000 to 0111 : 1 byte (plain ASCII) */ 0,0,0,0, /* 1000 to 1011 : not valid */ @@ -290,18 +290,18 @@ static SQInteger _io_file_lexfeed_UTF8(SQUserPointer iobuf) }; static const unsigned char byte_masks[5] = {0,0,0x1f,0x0f,0x07}; unsigned char inchar; - SQInteger c = 0; + int64_t c = 0; READ(iobuffer); c = inchar; // if(c >= 0x80) { - SQInteger tmp; - SQInteger codelen = utf8_lengths[c>>4]; + int64_t tmp; + int64_t codelen = utf8_lengths[c>>4]; if(codelen == 0) return 0; //"invalid UTF-8 stream"; tmp = c&byte_masks[codelen]; - for(SQInteger n = 0; n < codelen-1; n++) { + for(int64_t n = 0; n < codelen-1; n++) { tmp<<=6; READ(iobuffer); tmp |= inchar & 0x3F; @@ -312,18 +312,18 @@ static SQInteger _io_file_lexfeed_UTF8(SQUserPointer iobuf) } #endif -static SQInteger _io_file_lexfeed_UCS2_LE(SQUserPointer iobuf) +static int64_t _io_file_lexfeed_UCS2_LE(SQUserPointer iobuf) { - SQInteger ret; + int64_t ret; IOBuffer *iobuffer = (IOBuffer *)iobuf; if( (ret = _read_two_bytes(iobuffer)) > 0 ) return ret; return 0; } -static SQInteger _io_file_lexfeed_UCS2_BE(SQUserPointer iobuf) +static int64_t _io_file_lexfeed_UCS2_BE(SQUserPointer iobuf) { - SQInteger c; + int64_t c; IOBuffer *iobuffer = (IOBuffer *)iobuf; if( (c = _read_two_bytes(iobuffer)) > 0 ) { c = ((c>>8)&0x00FF)| ((c<<8)&0xFF00); @@ -332,14 +332,14 @@ static SQInteger _io_file_lexfeed_UCS2_BE(SQUserPointer iobuf) return 0; } -SQInteger file_read(SQUserPointer file,SQUserPointer buf,SQInteger size) +int64_t file_read(SQUserPointer file,SQUserPointer buf,int64_t size) { - SQInteger ret; + int64_t ret; if( ( ret = sqstd_fread(buf,1,size,(SQFILE)file ))!=0 )return ret; return -1; } -SQInteger file_write(SQUserPointer file,SQUserPointer p,SQInteger size) +int64_t file_write(SQUserPointer file,SQUserPointer p,int64_t size) { return sqstd_fwrite(p,1,size,(SQFILE)file); } @@ -348,7 +348,7 @@ SQRESULT sqstd_loadfile(HRABBITVM v,const SQChar *filename,SQBool printerror) { SQFILE file = sqstd_fopen(filename,_SC("rb")); - SQInteger ret; + int64_t ret; unsigned short us; unsigned char uc; SQLEXREADFUNC func = _io_file_lexfeed_PLAIN; @@ -433,7 +433,7 @@ SQRESULT sqstd_writeclosuretofile(HRABBITVM v,const SQChar *filename) return SQ_ERROR; //forward the error } -SQInteger _g_io_loadfile(HRABBITVM v) +int64_t _g_io_loadfile(HRABBITVM v) { const SQChar *filename; SQBool printerror = SQFalse; @@ -446,7 +446,7 @@ SQInteger _g_io_loadfile(HRABBITVM v) return SQ_ERROR; //propagates the error } -SQInteger _g_io_writeclosuretofile(HRABBITVM v) +int64_t _g_io_writeclosuretofile(HRABBITVM v) { const SQChar *filename; sq_getstring(v,2,&filename); @@ -455,7 +455,7 @@ SQInteger _g_io_writeclosuretofile(HRABBITVM v) return SQ_ERROR; //propagates the error } -SQInteger _g_io_dofile(HRABBITVM v) +int64_t _g_io_dofile(HRABBITVM v) { const SQChar *filename; SQBool printerror = SQFalse; @@ -479,7 +479,7 @@ static const SQRegFunction iolib_funcs[]={ SQRESULT sqstd_register_iolib(HRABBITVM v) { - SQInteger top = sq_gettop(v); + int64_t top = sq_gettop(v); //create delegate declare_stream(v,_SC("file"),(SQUserPointer)SQSTD_FILE_TYPE_TAG,_SC("std_file"),_file_methods,iolib_funcs); sq_pushstring(v,_SC("stdout"),-1); diff --git a/rabbit-std/sqstdio.hpp b/rabbit-std/sqstdio.hpp index 7d801a9..bca6b17 100644 --- a/rabbit-std/sqstdio.hpp +++ b/rabbit-std/sqstdio.hpp @@ -11,12 +11,12 @@ struct SQStream { virtual ~SQStream() {} - virtual SQInteger Read(void *buffer, SQInteger size) = 0; - virtual SQInteger Write(void *buffer, SQInteger size) = 0; - virtual SQInteger Flush() = 0; - virtual SQInteger Tell() = 0; - virtual SQInteger Len() = 0; - virtual SQInteger Seek(SQInteger offset, SQInteger origin) = 0; + virtual int64_t Read(void *buffer, int64_t size) = 0; + virtual int64_t Write(void *buffer, int64_t size) = 0; + virtual int64_t Flush() = 0; + virtual int64_t Tell() = 0; + virtual int64_t Len() = 0; + virtual int64_t Seek(int64_t offset, int64_t origin) = 0; virtual bool IsValid() = 0; virtual bool EOS() = 0; }; @@ -28,16 +28,16 @@ struct SQStream { typedef void* 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); +RABBIT_API int64_t sqstd_fread(SQUserPointer, int64_t, int64_t, SQFILE); +RABBIT_API int64_t sqstd_fwrite(const SQUserPointer, int64_t, int64_t, SQFILE); +RABBIT_API int64_t sqstd_fseek(SQFILE , int64_t , int64_t); +RABBIT_API int64_t sqstd_ftell(SQFILE); +RABBIT_API int64_t sqstd_fflush(SQFILE); +RABBIT_API int64_t sqstd_fclose(SQFILE); +RABBIT_API int64_t sqstd_feof(SQFILE); RABBIT_API SQRESULT sqstd_createfile(HRABBITVM v, SQFILE file,SQBool own); -RABBIT_API SQRESULT sqstd_getfile(HRABBITVM v, SQInteger idx, SQFILE *file); +RABBIT_API SQRESULT sqstd_getfile(HRABBITVM v, int64_t idx, SQFILE *file); //compiler helpers RABBIT_API SQRESULT sqstd_loadfile(HRABBITVM v,const SQChar *filename,SQBool printerror); diff --git a/rabbit-std/sqstdmath.cpp b/rabbit-std/sqstdmath.cpp index 68324e9..280bbd9 100644 --- a/rabbit-std/sqstdmath.cpp +++ b/rabbit-std/sqstdmath.cpp @@ -11,41 +11,41 @@ #include #include -#define SINGLE_ARG_FUNC(_funcname) static SQInteger math_##_funcname(HRABBITVM v){ \ - SQFloat f; \ +#define SINGLE_ARG_FUNC(_funcname) static int64_t math_##_funcname(HRABBITVM v){ \ + float_t f; \ sq_getfloat(v,2,&f); \ - sq_pushfloat(v,(SQFloat)_funcname(f)); \ + sq_pushfloat(v,(float_t)_funcname(f)); \ return 1; \ } -#define TWO_ARGS_FUNC(_funcname) static SQInteger math_##_funcname(HRABBITVM v){ \ - SQFloat p1,p2; \ +#define TWO_ARGS_FUNC(_funcname) static int64_t math_##_funcname(HRABBITVM v){ \ + float_t p1,p2; \ sq_getfloat(v,2,&p1); \ sq_getfloat(v,3,&p2); \ - sq_pushfloat(v,(SQFloat)_funcname(p1,p2)); \ + sq_pushfloat(v,(float_t)_funcname(p1,p2)); \ return 1; \ } -static SQInteger math_srand(HRABBITVM v) +static int64_t math_srand(HRABBITVM v) { - SQInteger i; + int64_t i; if(SQ_FAILED(sq_getinteger(v,2,&i))) return sq_throwerror(v,_SC("invalid param")); srand((unsigned int)i); return 0; } -static SQInteger math_rand(HRABBITVM v) +static int64_t math_rand(HRABBITVM v) { sq_pushinteger(v,rand()); return 1; } -static SQInteger math_abs(HRABBITVM v) +static int64_t math_abs(HRABBITVM v) { - SQInteger n; + int64_t n; sq_getinteger(v,2,&n); - sq_pushinteger(v,(SQInteger)abs((int)n)); + sq_pushinteger(v,(int64_t)abs((int)n)); return 1; } @@ -95,7 +95,7 @@ static const SQRegFunction mathlib_funcs[] = { SQRESULT sqstd_register_mathlib(HRABBITVM v) { - SQInteger i=0; + int64_t i=0; while(mathlib_funcs[i].name!=0) { sq_pushstring(v,mathlib_funcs[i].name,-1); sq_newclosure(v,mathlib_funcs[i].f,0); @@ -108,7 +108,7 @@ SQRESULT sqstd_register_mathlib(HRABBITVM v) sq_pushinteger(v,RAND_MAX); sq_newslot(v,-3,SQFalse); sq_pushstring(v,_SC("PI"),-1); - sq_pushfloat(v,(SQFloat)M_PI); + sq_pushfloat(v,(float_t)M_PI); sq_newslot(v,-3,SQFalse); return SQ_OK; } diff --git a/rabbit-std/sqstdrex.cpp b/rabbit-std/sqstdrex.cpp index 2c8e29e..e509f2c 100644 --- a/rabbit-std/sqstdrex.cpp +++ b/rabbit-std/sqstdrex.cpp @@ -54,30 +54,30 @@ typedef int SQRexNodeType; typedef struct tagSQRexNode{ SQRexNodeType type; - SQInteger left; - SQInteger right; - SQInteger next; + int64_t left; + int64_t right; + int64_t next; }SQRexNode; struct SQRex{ const SQChar *_eol; const SQChar *_bol; const SQChar *_p; - SQInteger _first; - SQInteger _op; + int64_t _first; + int64_t _op; SQRexNode *_nodes; - SQInteger _nallocated; - SQInteger _nsize; - SQInteger _nsubexpr; + int64_t _nallocated; + int64_t _nsize; + int64_t _nsubexpr; SQRexMatch *_matches; - SQInteger _currsubexp; + int64_t _currsubexp; void *_jmpbuf; const SQChar **_error; }; -static SQInteger sqstd_rex_list(SQRex *exp); +static int64_t sqstd_rex_list(SQRex *exp); -static SQInteger sqstd_rex_newnode(SQRex *exp, SQRexNodeType type) +static int64_t sqstd_rex_newnode(SQRex *exp, SQRexNodeType type) { SQRexNode n; n.type = type; @@ -85,13 +85,13 @@ static SQInteger sqstd_rex_newnode(SQRex *exp, SQRexNodeType type) if(type == OP_EXPR) n.right = exp->_nsubexpr++; if(exp->_nallocated < (exp->_nsize + 1)) { - SQInteger oldsize = exp->_nallocated; + int64_t oldsize = exp->_nallocated; exp->_nallocated *= 2; exp->_nodes = (SQRexNode *)sq_realloc(exp->_nodes, oldsize * sizeof(SQRexNode) ,exp->_nallocated * sizeof(SQRexNode)); } exp->_nodes[exp->_nsize++] = n; - SQInteger newid = exp->_nsize - 1; - return (SQInteger)newid; + int64_t newid = exp->_nsize - 1; + return (int64_t)newid; } static void sqstd_rex_error(SQRex *exp,const SQChar *error) @@ -100,7 +100,7 @@ static void sqstd_rex_error(SQRex *exp,const SQChar *error) longjmp(*((jmp_buf*)exp->_jmpbuf),-1); } -static void sqstd_rex_expect(SQRex *exp, SQInteger n){ +static void sqstd_rex_expect(SQRex *exp, int64_t n){ if((*exp->_p) != n) sqstd_rex_error(exp, _SC("expected paren")); exp->_p++; @@ -122,14 +122,14 @@ static SQChar sqstd_rex_escapechar(SQRex *exp) return (*exp->_p++); } -static SQInteger sqstd_rex_charclass(SQRex *exp,SQInteger classid) +static int64_t sqstd_rex_charclass(SQRex *exp,int64_t classid) { - SQInteger n = sqstd_rex_newnode(exp,OP_CCLASS); + int64_t n = sqstd_rex_newnode(exp,OP_CCLASS); exp->_nodes[n].left = classid; return n; } -static SQInteger sqstd_rex_charnode(SQRex *exp,SQBool isclass) +static int64_t sqstd_rex_charnode(SQRex *exp,SQBool isclass) { SQChar t; if(*exp->_p == SQREX_SYMBOL_ESCAPE_CHAR) { @@ -155,7 +155,7 @@ static SQInteger sqstd_rex_charnode(SQRex *exp,SQBool isclass) exp->_p++; //points to the next char to be parsed if ((!cb) || (!ce)) sqstd_rex_error(exp,_SC("balanced chars expected")); if ( cb == ce ) sqstd_rex_error(exp,_SC("open/close char can't be the same")); - SQInteger node = sqstd_rex_newnode(exp,OP_MB); + int64_t node = sqstd_rex_newnode(exp,OP_MB); exp->_nodes[node].left = cb; exp->_nodes[node].right = ce; return node; @@ -166,7 +166,7 @@ static SQInteger sqstd_rex_charnode(SQRex *exp,SQBool isclass) case 'b': case 'B': if(!isclass) { - SQInteger node = sqstd_rex_newnode(exp,OP_WB); + int64_t node = sqstd_rex_newnode(exp,OP_WB); exp->_nodes[node].left = *exp->_p; exp->_p++; return node; @@ -183,10 +183,10 @@ static SQInteger sqstd_rex_charnode(SQRex *exp,SQBool isclass) t = *exp->_p; exp->_p++; return sqstd_rex_newnode(exp,t); } -static SQInteger sqstd_rex_class(SQRex *exp) +static int64_t sqstd_rex_class(SQRex *exp) { - SQInteger ret = -1; - SQInteger first = -1,chain; + int64_t ret = -1; + int64_t first = -1,chain; if(*exp->_p == SQREX_SYMBOL_BEGINNING_OF_STRING){ ret = sqstd_rex_newnode(exp,OP_NCLASS); exp->_p++; @@ -196,13 +196,13 @@ static SQInteger sqstd_rex_class(SQRex *exp) chain = ret; while(*exp->_p != ']' && exp->_p != exp->_eol) { if(*exp->_p == '-' && first != -1){ - SQInteger r; + int64_t r; if(*exp->_p++ == ']') sqstd_rex_error(exp,_SC("unfinished range")); r = sqstd_rex_newnode(exp,OP_RANGE); if(exp->_nodes[first].type>*exp->_p) sqstd_rex_error(exp,_SC("invalid range")); if(exp->_nodes[first].type == OP_CCLASS) sqstd_rex_error(exp,_SC("cannot use character classes in ranges")); exp->_nodes[r].left = exp->_nodes[first].type; - SQInteger t = sqstd_rex_escapechar(exp); + int64_t t = sqstd_rex_escapechar(exp); exp->_nodes[r].right = t; exp->_nodes[chain].next = r; chain = r; @@ -210,7 +210,7 @@ static SQInteger sqstd_rex_class(SQRex *exp) } else{ if(first!=-1){ - SQInteger c = first; + int64_t c = first; exp->_nodes[chain].next = c; chain = c; first = sqstd_rex_charnode(exp,SQTrue); @@ -221,7 +221,7 @@ static SQInteger sqstd_rex_class(SQRex *exp) } } if(first!=-1){ - SQInteger c = first; + int64_t c = first; exp->_nodes[chain].next = c; } /* hack? */ @@ -230,10 +230,10 @@ static SQInteger sqstd_rex_class(SQRex *exp) return ret; } -static SQInteger sqstd_rex_parsenumber(SQRex *exp) +static int64_t sqstd_rex_parsenumber(SQRex *exp) { - SQInteger ret = *exp->_p-'0'; - SQInteger positions = 10; + int64_t ret = *exp->_p-'0'; + int64_t positions = 10; exp->_p++; while(isdigit(*exp->_p)) { ret = ret*10+(*exp->_p++-'0'); @@ -243,13 +243,13 @@ static SQInteger sqstd_rex_parsenumber(SQRex *exp) return ret; } -static SQInteger sqstd_rex_element(SQRex *exp) +static int64_t sqstd_rex_element(SQRex *exp) { - SQInteger ret = -1; + int64_t ret = -1; switch(*exp->_p) { case '(': { - SQInteger expr; + int64_t expr; exp->_p++; @@ -260,7 +260,7 @@ static SQInteger sqstd_rex_element(SQRex *exp) } else expr = sqstd_rex_newnode(exp,OP_EXPR); - SQInteger newn = sqstd_rex_list(exp); + int64_t newn = sqstd_rex_list(exp); exp->_nodes[expr].left = newn; ret = expr; sqstd_rex_expect(exp,')'); @@ -311,23 +311,23 @@ static SQInteger sqstd_rex_element(SQRex *exp) } if(isgreedy) { - SQInteger nnode = sqstd_rex_newnode(exp,OP_GREEDY); + int64_t nnode = sqstd_rex_newnode(exp,OP_GREEDY); exp->_nodes[nnode].left = ret; exp->_nodes[nnode].right = ((p0)<<16)|p1; ret = nnode; } if((*exp->_p != SQREX_SYMBOL_BRANCH) && (*exp->_p != ')') && (*exp->_p != SQREX_SYMBOL_GREEDY_ZERO_OR_MORE) && (*exp->_p != SQREX_SYMBOL_GREEDY_ONE_OR_MORE) && (*exp->_p != '\0')) { - SQInteger nnode = sqstd_rex_element(exp); + int64_t nnode = sqstd_rex_element(exp); exp->_nodes[ret].next = nnode; } return ret; } -static SQInteger sqstd_rex_list(SQRex *exp) +static int64_t sqstd_rex_list(SQRex *exp) { - SQInteger ret=-1,e; + int64_t ret=-1,e; if(*exp->_p == SQREX_SYMBOL_BEGINNING_OF_STRING) { exp->_p++; ret = sqstd_rex_newnode(exp,OP_BOL); @@ -339,7 +339,7 @@ static SQInteger sqstd_rex_list(SQRex *exp) else ret = e; if(*exp->_p == SQREX_SYMBOL_BRANCH) { - SQInteger temp,tright; + int64_t temp,tright; exp->_p++; temp = sqstd_rex_newnode(exp,OP_OR); exp->_nodes[temp].left = ret; @@ -350,7 +350,7 @@ static SQInteger sqstd_rex_list(SQRex *exp) return ret; } -static SQBool sqstd_rex_matchcclass(SQInteger cclass,SQChar c) +static SQBool sqstd_rex_matchcclass(int64_t cclass,SQChar c) { switch(cclass) { case 'a': return isalpha(c)?SQTrue:SQFalse; @@ -398,7 +398,7 @@ static const SQChar *sqstd_rex_matchnode(SQRex* exp,SQRexNode *node,const SQChar case OP_GREEDY: { //SQRexNode *greedystop = (node->next != -1) ? &exp->_nodes[node->next] : NULL; SQRexNode *greedystop = NULL; - SQInteger p0 = (node->right >> 16)&0x0000FFFF, p1 = node->right&0x0000FFFF, nmaches = 0; + int64_t p0 = (node->right >> 16)&0x0000FFFF, p1 = node->right&0x0000FFFF, nmaches = 0; const SQChar *s=str, *good = str; if(node->next != -1) { @@ -469,13 +469,13 @@ static const SQChar *sqstd_rex_matchnode(SQRex* exp,SQRexNode *node,const SQChar case OP_NOCAPEXPR:{ SQRexNode *n = &exp->_nodes[node->left]; const SQChar *cur = str; - SQInteger capture = -1; + int64_t capture = -1; if(node->type != OP_NOCAPEXPR && node->right == exp->_currsubexp) { capture = exp->_currsubexp; exp->_matches[capture].begin = cur; exp->_currsubexp++; } - SQInteger tempcap = exp->_currsubexp; + int64_t tempcap = exp->_currsubexp; do { SQRexNode *subnext = NULL; if(n->next != -1) { @@ -533,10 +533,10 @@ static const SQChar *sqstd_rex_matchnode(SQRex* exp,SQRexNode *node,const SQChar return NULL; case OP_MB: { - SQInteger cb = node->left; //char that opens a balanced expression + int64_t cb = node->left; //char that opens a balanced expression if(*str != cb) return NULL; // string doesnt start with open char - SQInteger ce = node->right; //char that closes a balanced expression - SQInteger cont = 1; + int64_t ce = node->right; //char that closes a balanced expression + int64_t cont = 1; const SQChar *streol = exp->_eol; while (++str < streol) { if (*str == ce) { @@ -563,7 +563,7 @@ SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error) SQRex * volatile exp = (SQRex *)sq_malloc(sizeof(SQRex)); // "volatile" is needed for setjmp() exp->_eol = exp->_bol = NULL; exp->_p = pattern; - exp->_nallocated = (SQInteger)scstrlen(pattern) * sizeof(SQChar); + exp->_nallocated = (int64_t)scstrlen(pattern) * sizeof(SQChar); exp->_nodes = (SQRexNode *)sq_malloc(exp->_nallocated * sizeof(SQRexNode)); exp->_nsize = 0; exp->_matches = 0; @@ -572,23 +572,23 @@ SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error) exp->_error = error; exp->_jmpbuf = sq_malloc(sizeof(jmp_buf)); if(setjmp(*((jmp_buf*)exp->_jmpbuf)) == 0) { - SQInteger res = sqstd_rex_list(exp); + int64_t res = sqstd_rex_list(exp); exp->_nodes[exp->_first].left = res; if(*exp->_p!='\0') sqstd_rex_error(exp,_SC("unexpected character")); #ifdef _DEBUG { - SQInteger nsize,i; + int64_t nsize,i; SQRexNode *t; nsize = exp->_nsize; t = &exp->_nodes[0]; scprintf(_SC("\n")); for(i = 0;i < nsize; i++) { if(exp->_nodes[i].type>MAX_CHAR) - scprintf(_SC("[%02d] %10s "), (SQInt32)i,g_nnames[exp->_nodes[i].type-MAX_CHAR]); + scprintf(_SC("[%02d] %10s "), (int32_t)i,g_nnames[exp->_nodes[i].type-MAX_CHAR]); else - scprintf(_SC("[%02d] %10c "), (SQInt32)i,exp->_nodes[i].type); - scprintf(_SC("left %02d right %02d next %02d\n"), (SQInt32)exp->_nodes[i].left, (SQInt32)exp->_nodes[i].right, (SQInt32)exp->_nodes[i].next); + scprintf(_SC("[%02d] %10c "), (int32_t)i,exp->_nodes[i].type); + scprintf(_SC("left %02d right %02d next %02d\n"), (int32_t)exp->_nodes[i].left, (int32_t)exp->_nodes[i].right, (int32_t)exp->_nodes[i].next); } scprintf(_SC("\n")); } @@ -628,7 +628,7 @@ SQBool sqstd_rex_match(SQRex* exp,const SQChar* text) SQBool sqstd_rex_searchrange(SQRex* exp,const SQChar* text_begin,const SQChar* text_end,const SQChar** out_begin, const SQChar** out_end) { const SQChar *cur = NULL; - SQInteger node = exp->_first; + int64_t node = exp->_first; if(text_begin >= text_end) return SQFalse; exp->_bol = text_begin; exp->_eol = text_end; @@ -659,12 +659,12 @@ SQBool sqstd_rex_search(SQRex* exp,const SQChar* text, const SQChar** out_begin, return sqstd_rex_searchrange(exp,text,text + scstrlen(text),out_begin,out_end); } -SQInteger sqstd_rex_getsubexpcount(SQRex* exp) +int64_t sqstd_rex_getsubexpcount(SQRex* exp) { return exp->_nsubexpr; } -SQBool sqstd_rex_getsubexp(SQRex* exp, SQInteger n, SQRexMatch *subexp) +SQBool sqstd_rex_getsubexp(SQRex* exp, int64_t n, SQRexMatch *subexp) { if( n<0 || n >= exp->_nsubexpr) return SQFalse; *subexp = exp->_matches[n]; diff --git a/rabbit-std/sqstdstream.cpp b/rabbit-std/sqstdstream.cpp index 880b625..1efc266 100644 --- a/rabbit-std/sqstdstream.cpp +++ b/rabbit-std/sqstdstream.cpp @@ -18,16 +18,16 @@ #define SETUP_STREAM(v) \ SQStream *self = NULL; \ - if(SQ_FAILED(sq_getinstanceup(v,1,(SQUserPointer*)&self,(SQUserPointer)((SQUnsignedInteger)SQSTD_STREAM_TYPE_TAG)))) \ + if(SQ_FAILED(sq_getinstanceup(v,1,(SQUserPointer*)&self,(SQUserPointer)((uint64_t)SQSTD_STREAM_TYPE_TAG)))) \ return sq_throwerror(v,_SC("invalid type tag")); \ if(!self || !self->IsValid()) \ return sq_throwerror(v,_SC("the stream is invalid")); -SQInteger _stream_readblob(HRABBITVM v) +int64_t _stream_readblob(HRABBITVM v) { SETUP_STREAM(v); SQUserPointer data,blobp; - SQInteger size,res; + int64_t size,res; sq_getinteger(v,2,&size); if(size > self->Len()) { size = self->Len(); @@ -44,20 +44,20 @@ SQInteger _stream_readblob(HRABBITVM v) #define SAFE_READN(ptr,len) { \ if(self->Read(ptr,len) != len) return sq_throwerror(v,_SC("io error")); \ } -SQInteger _stream_readn(HRABBITVM v) +int64_t _stream_readn(HRABBITVM v) { SETUP_STREAM(v); - SQInteger format; + int64_t format; sq_getinteger(v, 2, &format); switch(format) { case 'l': { - SQInteger i; + int64_t i; SAFE_READN(&i, sizeof(i)); sq_pushinteger(v, i); } break; case 'i': { - SQInt32 i; + int32_t i; SAFE_READN(&i, sizeof(i)); sq_pushinteger(v, i); } @@ -95,7 +95,7 @@ SQInteger _stream_readn(HRABBITVM v) case 'd': { double d; SAFE_READN(&d, sizeof(double)); - sq_pushfloat(v, (SQFloat)d); + sq_pushfloat(v, (float_t)d); } break; default: @@ -104,10 +104,10 @@ SQInteger _stream_readn(HRABBITVM v) return 1; } -SQInteger _stream_writeblob(HRABBITVM v) +int64_t _stream_writeblob(HRABBITVM v) { SQUserPointer data; - SQInteger size; + int64_t size; SETUP_STREAM(v); if(SQ_FAILED(sqstd_getblob(v,2,&data))) return sq_throwerror(v,_SC("invalid parameter")); @@ -118,25 +118,25 @@ SQInteger _stream_writeblob(HRABBITVM v) return 1; } -SQInteger _stream_writen(HRABBITVM v) +int64_t _stream_writen(HRABBITVM v) { SETUP_STREAM(v); - SQInteger format, ti; - SQFloat tf; + int64_t format, ti; + float_t tf; sq_getinteger(v, 3, &format); switch(format) { case 'l': { - SQInteger i; + int64_t i; sq_getinteger(v, 2, &ti); i = ti; - self->Write(&i, sizeof(SQInteger)); + self->Write(&i, sizeof(int64_t)); } break; case 'i': { - SQInt32 i; + int32_t i; sq_getinteger(v, 2, &ti); - i = (SQInt32)ti; - self->Write(&i, sizeof(SQInt32)); + i = (int32_t)ti; + self->Write(&i, sizeof(int32_t)); } break; case 's': { @@ -187,13 +187,13 @@ SQInteger _stream_writen(HRABBITVM v) return 0; } -SQInteger _stream_seek(HRABBITVM v) +int64_t _stream_seek(HRABBITVM v) { SETUP_STREAM(v); - SQInteger offset, origin = SQ_SEEK_SET; + int64_t offset, origin = SQ_SEEK_SET; sq_getinteger(v, 2, &offset); if(sq_gettop(v) > 2) { - SQInteger t; + int64_t t; sq_getinteger(v, 3, &t); switch(t) { case 'b': origin = SQ_SEEK_SET; break; @@ -206,21 +206,21 @@ SQInteger _stream_seek(HRABBITVM v) return 1; } -SQInteger _stream_tell(HRABBITVM v) +int64_t _stream_tell(HRABBITVM v) { SETUP_STREAM(v); sq_pushinteger(v, self->Tell()); return 1; } -SQInteger _stream_len(HRABBITVM v) +int64_t _stream_len(HRABBITVM v) { SETUP_STREAM(v); sq_pushinteger(v, self->Len()); return 1; } -SQInteger _stream_flush(HRABBITVM v) +int64_t _stream_flush(HRABBITVM v) { SETUP_STREAM(v); if(!self->Flush()) @@ -230,7 +230,7 @@ SQInteger _stream_flush(HRABBITVM v) return 1; } -SQInteger _stream_eos(HRABBITVM v) +int64_t _stream_eos(HRABBITVM v) { SETUP_STREAM(v); if(self->EOS()) @@ -240,7 +240,7 @@ SQInteger _stream_eos(HRABBITVM v) return 1; } - SQInteger _stream__cloned(HRABBITVM v) + int64_t _stream__cloned(HRABBITVM v) { return sq_throwerror(v,_SC("this object cannot be cloned")); } @@ -266,8 +266,8 @@ void init_streamclass(HRABBITVM v) if(SQ_FAILED(sq_get(v,-2))) { sq_pushstring(v,_SC("std_stream"),-1); sq_newclass(v,SQFalse); - sq_settypetag(v,-1,(SQUserPointer)((SQUnsignedInteger)SQSTD_STREAM_TYPE_TAG)); - SQInteger i = 0; + sq_settypetag(v,-1,(SQUserPointer)((uint64_t)SQSTD_STREAM_TYPE_TAG)); + int64_t i = 0; while(_stream_methods[i].name != 0) { const SQRegFunction &f = _stream_methods[i]; sq_pushstring(v,f.name,-1); @@ -294,7 +294,7 @@ SQRESULT declare_stream(HRABBITVM v,const SQChar* name,SQUserPointer typetag,con { if(sq_gettype(v,-1) != OT_TABLE) return sq_throwerror(v,_SC("table expected")); - SQInteger top = sq_gettop(v); + int64_t top = sq_gettop(v); //create delegate init_streamclass(v); sq_pushregistrytable(v); @@ -303,7 +303,7 @@ SQRESULT declare_stream(HRABBITVM v,const SQChar* name,SQUserPointer typetag,con if(SQ_SUCCEEDED(sq_get(v,-3))) { sq_newclass(v,SQTrue); sq_settypetag(v,-1,typetag); - SQInteger i = 0; + int64_t i = 0; while(methods[i].name != 0) { const SQRegFunction &f = methods[i]; sq_pushstring(v,f.name,-1); diff --git a/rabbit-std/sqstdstream.hpp b/rabbit-std/sqstdstream.hpp index 85430fd..52d6665 100644 --- a/rabbit-std/sqstdstream.hpp +++ b/rabbit-std/sqstdstream.hpp @@ -7,16 +7,16 @@ */ #pragma once -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); +int64_t _stream_readblob(HRABBITVM v); +int64_t _stream_readline(HRABBITVM v); +int64_t _stream_readn(HRABBITVM v); +int64_t _stream_writeblob(HRABBITVM v); +int64_t _stream_writen(HRABBITVM v); +int64_t _stream_seek(HRABBITVM v); +int64_t _stream_tell(HRABBITVM v); +int64_t _stream_len(HRABBITVM v); +int64_t _stream_eos(HRABBITVM v); +int64_t _stream_flush(HRABBITVM v); #define _DECL_STREAM_FUNC(name,nparams,typecheck) {_SC(#name),_stream_##name,nparams,typecheck} 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 1736c74..fac1dec 100644 --- a/rabbit-std/sqstdstring.cpp +++ b/rabbit-std/sqstdstring.cpp @@ -26,12 +26,12 @@ static SQBool isfmtchr(SQChar ch) return SQFalse; } -static SQInteger validate_format(HRABBITVM v, SQChar *fmt, const SQChar *src, SQInteger n,SQInteger &width) +static int64_t validate_format(HRABBITVM v, SQChar *fmt, const SQChar *src, int64_t n,int64_t &width) { SQChar *dummy; SQChar swidth[MAX_WFORMAT_LEN]; - SQInteger wc = 0; - SQInteger start = n; + int64_t wc = 0; + int64_t start = n; fmt[0] = '%'; while (isfmtchr(src[n])) n++; while (scisdigit(src[n])) { @@ -71,7 +71,7 @@ static SQInteger validate_format(HRABBITVM v, SQChar *fmt, const SQChar *src, SQ return n; } -SQRESULT sqstd_format(HRABBITVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output) +SQRESULT sqstd_format(HRABBITVM v,int64_t nformatstringidx,int64_t *outlen,SQChar **output) { const SQChar *format; SQChar *dest; @@ -80,10 +80,10 @@ SQRESULT sqstd_format(HRABBITVM v,SQInteger nformatstringidx,SQInteger *outlen,S if (SQ_FAILED(res)) { return res; // propagate the error } - SQInteger format_size = sq_getsize(v,nformatstringidx); - SQInteger allocated = (format_size+2)*sizeof(SQChar); + int64_t format_size = sq_getsize(v,nformatstringidx); + int64_t allocated = (format_size+2)*sizeof(SQChar); dest = sq_getscratchpad(v,allocated); - SQInteger n = 0,i = 0, nparam = nformatstringidx+1, w = 0; + int64_t n = 0,i = 0, nparam = nformatstringidx+1, w = 0; //while(format[n] != '\0') while(n < format_size) { @@ -102,11 +102,11 @@ SQRESULT sqstd_format(HRABBITVM v,SQInteger nformatstringidx,SQInteger *outlen,S return sq_throwerror(v,_SC("not enough parameters for the given format string")); n = validate_format(v,fmt,format,n,w); if(n < 0) return -1; - SQInteger addlen = 0; - SQInteger valtype = 0; + int64_t addlen = 0; + int64_t valtype = 0; const SQChar *ts = NULL; - SQInteger ti = 0; - SQFloat tf = 0; + int64_t ti = 0; + float_t tf = 0; switch(format[n]) { case 's': if(SQ_FAILED(sq_getstring(v,nparam,&ts))) @@ -118,7 +118,7 @@ SQRESULT sqstd_format(HRABBITVM v,SQInteger nformatstringidx,SQInteger *outlen,S #ifdef _SQ64 { size_t flen = scstrlen(fmt); - SQInteger fpos = flen - 1; + int64_t fpos = flen - 1; SQChar f = fmt[fpos]; const SQChar *prec = (const SQChar *)_PRINT_INT_PREC; while(*prec != _SC('\0')) { @@ -160,10 +160,10 @@ SQRESULT sqstd_format(HRABBITVM v,SQInteger nformatstringidx,SQInteger *outlen,S return SQ_OK; } -static SQInteger _string_printf(HRABBITVM v) +static int64_t _string_printf(HRABBITVM v) { SQChar *dest = NULL; - SQInteger length = 0; + int64_t length = 0; if(SQ_FAILED(sqstd_format(v,2,&length,&dest))) return -1; @@ -173,10 +173,10 @@ static SQInteger _string_printf(HRABBITVM v) return 0; } -static SQInteger _string_format(HRABBITVM v) +static int64_t _string_format(HRABBITVM v) { SQChar *dest = NULL; - SQInteger length = 0; + int64_t length = 0; if(SQ_FAILED(sqstd_format(v,2,&length,&dest))) return -1; sq_pushstring(v,dest,length); @@ -190,7 +190,7 @@ static void __strip_l(const SQChar *str,const SQChar **start) *start = t; } -static void __strip_r(const SQChar *str,SQInteger len,const SQChar **end) +static void __strip_r(const SQChar *str,int64_t len,const SQChar **end) { if(len == 0) { *end = str; @@ -201,18 +201,18 @@ static void __strip_r(const SQChar *str,SQInteger len,const SQChar **end) *end = t + 1; } -static SQInteger _string_strip(HRABBITVM v) +static int64_t _string_strip(HRABBITVM v) { const SQChar *str,*start,*end; sq_getstring(v,2,&str); - SQInteger len = sq_getsize(v,2); + int64_t len = sq_getsize(v,2); __strip_l(str,&start); __strip_r(str,len,&end); sq_pushstring(v,start,end - start); return 1; } -static SQInteger _string_lstrip(HRABBITVM v) +static int64_t _string_lstrip(HRABBITVM v) { const SQChar *str,*start; sq_getstring(v,2,&str); @@ -221,25 +221,25 @@ static SQInteger _string_lstrip(HRABBITVM v) return 1; } -static SQInteger _string_rstrip(HRABBITVM v) +static int64_t _string_rstrip(HRABBITVM v) { const SQChar *str,*end; sq_getstring(v,2,&str); - SQInteger len = sq_getsize(v,2); + int64_t len = sq_getsize(v,2); __strip_r(str,len,&end); sq_pushstring(v,str,end - str); return 1; } -static SQInteger _string_split(HRABBITVM v) +static int64_t _string_split(HRABBITVM v) { const SQChar *str,*seps; SQChar *stemp; sq_getstring(v,2,&str); sq_getstring(v,3,&seps); - SQInteger sepsize = sq_getsize(v,3); + int64_t sepsize = sq_getsize(v,3); if(sepsize == 0) return sq_throwerror(v,_SC("empty separators string")); - SQInteger memsize = (sq_getsize(v,2)+1)*sizeof(SQChar); + int64_t memsize = (sq_getsize(v,2)+1)*sizeof(SQChar); stemp = sq_getscratchpad(v,memsize); memcpy(stemp,str,memsize); SQChar *start = stemp; @@ -248,7 +248,7 @@ static SQInteger _string_split(HRABBITVM v) while(*end != '\0') { SQChar cur = *end; - for(SQInteger i = 0; i < sepsize; i++) + for(int64_t i = 0; i < sepsize; i++) { if(cur == seps[i]) { @@ -269,11 +269,11 @@ static SQInteger _string_split(HRABBITVM v) return 1; } -static SQInteger _string_escape(HRABBITVM v) +static int64_t _string_escape(HRABBITVM v) { const SQChar *str; SQChar *dest,*resstr; - SQInteger size; + int64_t size; sq_getstring(v,2,&str); size = sq_getsize(v,2); if(size == 0) { @@ -283,20 +283,20 @@ static SQInteger _string_escape(HRABBITVM v) #ifdef SQUNICODE #if WCHAR_SIZE == 2 const SQChar *escpat = _SC("\\x%04x"); - const SQInteger maxescsize = 6; + const int64_t maxescsize = 6; #else //WCHAR_SIZE == 4 const SQChar *escpat = _SC("\\x%08x"); - const SQInteger maxescsize = 10; + const int64_t maxescsize = 10; #endif #else const SQChar *escpat = _SC("\\x%02x"); - const SQInteger maxescsize = 4; + const int64_t maxescsize = 4; #endif - SQInteger destcharsize = (size * maxescsize); //assumes every char could be escaped + int64_t destcharsize = (size * maxescsize); //assumes every char could be escaped resstr = dest = (SQChar *)sq_getscratchpad(v,destcharsize * sizeof(SQChar)); SQChar c; SQChar escch; - SQInteger escaped = 0; + int64_t escaped = 0; for(int n = 0; n < size; n++){ c = *str++; escch = 0; @@ -339,13 +339,13 @@ static SQInteger _string_escape(HRABBITVM v) return 1; } -static SQInteger _string_startswith(HRABBITVM v) +static int64_t _string_startswith(HRABBITVM v) { const SQChar *str,*cmp; sq_getstring(v,2,&str); sq_getstring(v,3,&cmp); - SQInteger len = sq_getsize(v,2); - SQInteger cmplen = sq_getsize(v,3); + int64_t len = sq_getsize(v,2); + int64_t cmplen = sq_getsize(v,3); SQBool ret = SQFalse; if(cmplen <= len) { ret = memcmp(str,cmp,sq_rsl(cmplen)) == 0 ? SQTrue : SQFalse; @@ -354,13 +354,13 @@ static SQInteger _string_startswith(HRABBITVM v) return 1; } -static SQInteger _string_endswith(HRABBITVM v) +static int64_t _string_endswith(HRABBITVM v) { const SQChar *str,*cmp; sq_getstring(v,2,&str); sq_getstring(v,3,&cmp); - SQInteger len = sq_getsize(v,2); - SQInteger cmplen = sq_getsize(v,3); + int64_t len = sq_getsize(v,2); + int64_t cmplen = sq_getsize(v,3); SQBool ret = SQFalse; if(cmplen <= len) { ret = memcmp(&str[len - cmplen],cmp,sq_rsl(cmplen)) == 0 ? SQTrue : SQFalse; @@ -373,14 +373,14 @@ static SQInteger _string_endswith(HRABBITVM v) SQRex *self = NULL; \ sq_getinstanceup(v,1,(SQUserPointer *)&self,0); -static SQInteger _rexobj_releasehook(SQUserPointer p, SQInteger SQ_UNUSED_ARG(size)) +static int64_t _rexobj_releasehook(SQUserPointer p, int64_t SQ_UNUSED_ARG(size)) { SQRex *self = ((SQRex *)p); sqstd_rex_free(self); return 1; } -static SQInteger _regexp_match(HRABBITVM v) +static int64_t _regexp_match(HRABBITVM v) { SETUP_REX(v); const SQChar *str; @@ -405,11 +405,11 @@ static void _addrexmatch(HRABBITVM v,const SQChar *str,const SQChar *begin,const sq_rawset(v,-3); } -static SQInteger _regexp_search(HRABBITVM v) +static int64_t _regexp_search(HRABBITVM v) { SETUP_REX(v); const SQChar *str,*begin,*end; - SQInteger start = 0; + int64_t start = 0; sq_getstring(v,2,&str); if(sq_gettop(v) > 2) sq_getinteger(v,3,&start); if(sqstd_rex_search(self,str+start,&begin,&end) == SQTrue) { @@ -419,18 +419,18 @@ static SQInteger _regexp_search(HRABBITVM v) return 0; } -static SQInteger _regexp_capture(HRABBITVM v) +static int64_t _regexp_capture(HRABBITVM v) { SETUP_REX(v); const SQChar *str,*begin,*end; - SQInteger start = 0; + int64_t start = 0; sq_getstring(v,2,&str); if(sq_gettop(v) > 2) sq_getinteger(v,3,&start); if(sqstd_rex_search(self,str+start,&begin,&end) == SQTrue) { - SQInteger n = sqstd_rex_getsubexpcount(self); + int64_t n = sqstd_rex_getsubexpcount(self); SQRexMatch match; sq_newarray(v,0); - for(SQInteger i = 0;i < n; i++) { + for(int64_t i = 0;i < n; i++) { sqstd_rex_getsubexp(self,i,&match); if(match.len > 0) _addrexmatch(v,str,match.begin,match.begin+match.len); @@ -443,14 +443,14 @@ static SQInteger _regexp_capture(HRABBITVM v) return 0; } -static SQInteger _regexp_subexpcount(HRABBITVM v) +static int64_t _regexp_subexpcount(HRABBITVM v) { SETUP_REX(v); sq_pushinteger(v,sqstd_rex_getsubexpcount(self)); return 1; } -static SQInteger _regexp_constructor(HRABBITVM v) +static int64_t _regexp_constructor(HRABBITVM v) { const SQChar *error,*pattern; sq_getstring(v,2,&pattern); @@ -461,7 +461,7 @@ static SQInteger _regexp_constructor(HRABBITVM v) return 0; } -static SQInteger _regexp__typeof(HRABBITVM v) +static int64_t _regexp__typeof(HRABBITVM v) { sq_pushstring(v,_SC("regexp"),-1); return 1; @@ -495,11 +495,11 @@ static const SQRegFunction stringlib_funcs[]={ #undef _DECL_FUNC -SQInteger sqstd_register_stringlib(HRABBITVM v) +int64_t sqstd_register_stringlib(HRABBITVM v) { sq_pushstring(v,_SC("regexp"),-1); sq_newclass(v,SQFalse); - SQInteger i = 0; + int64_t i = 0; while(rexobj_funcs[i].name != 0) { const SQRegFunction &f = rexobj_funcs[i]; sq_pushstring(v,f.name,-1); diff --git a/rabbit-std/sqstdstring.hpp b/rabbit-std/sqstdstring.hpp index 0343ea8..1858586 100644 --- a/rabbit-std/sqstdstring.hpp +++ b/rabbit-std/sqstdstring.hpp @@ -12,7 +12,7 @@ typedef struct SQRex SQRex; typedef struct { const SQChar *begin; - SQInteger len; + int64_t len; } SQRexMatch; RABBIT_API SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error); @@ -20,10 +20,10 @@ 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); +RABBIT_API int64_t sqstd_rex_getsubexpcount(SQRex* exp); +RABBIT_API SQBool sqstd_rex_getsubexp(SQRex* exp, int64_t n, SQRexMatch *subexp); -RABBIT_API SQRESULT sqstd_format(HRABBITVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output); +RABBIT_API SQRESULT sqstd_format(HRABBITVM v,int64_t nformatstringidx,int64_t *outlen,SQChar **output); RABBIT_API SQRESULT sqstd_register_stringlib(HRABBITVM v); diff --git a/rabbit-std/sqstdsystem.cpp b/rabbit-std/sqstdsystem.cpp index d59c78f..131bc24 100644 --- a/rabbit-std/sqstdsystem.cpp +++ b/rabbit-std/sqstdsystem.cpp @@ -27,7 +27,7 @@ #define screname rename #endif -static SQInteger _system_getenv(HRABBITVM v) +static int64_t _system_getenv(HRABBITVM v) { const SQChar *s; if(SQ_SUCCEEDED(sq_getstring(v,2,&s))){ @@ -38,7 +38,7 @@ static SQInteger _system_getenv(HRABBITVM v) } -static SQInteger _system_system(HRABBITVM v) +static int64_t _system_system(HRABBITVM v) { const SQChar *s; if(SQ_SUCCEEDED(sq_getstring(v,2,&s))){ @@ -49,20 +49,20 @@ static SQInteger _system_system(HRABBITVM v) } -static SQInteger _system_clock(HRABBITVM v) +static int64_t _system_clock(HRABBITVM v) { - sq_pushfloat(v,((SQFloat)clock())/(SQFloat)CLOCKS_PER_SEC); + sq_pushfloat(v,((float_t)clock())/(float_t)CLOCKS_PER_SEC); return 1; } -static SQInteger _system_time(HRABBITVM v) +static int64_t _system_time(HRABBITVM v) { - SQInteger t = (SQInteger)time(NULL); + int64_t t = (int64_t)time(NULL); sq_pushinteger(v,t); return 1; } -static SQInteger _system_remove(HRABBITVM v) +static int64_t _system_remove(HRABBITVM v) { const SQChar *s; sq_getstring(v,2,&s); @@ -71,7 +71,7 @@ static SQInteger _system_remove(HRABBITVM v) return 0; } -static SQInteger _system_rename(HRABBITVM v) +static int64_t _system_rename(HRABBITVM v) { const SQChar *oldn,*newn; sq_getstring(v,2,&oldn); @@ -81,23 +81,23 @@ static SQInteger _system_rename(HRABBITVM v) return 0; } -static void _set_integer_slot(HRABBITVM v,const SQChar *name,SQInteger val) +static void _set_integer_slot(HRABBITVM v,const SQChar *name,int64_t val) { sq_pushstring(v,name,-1); sq_pushinteger(v,val); sq_rawset(v,-3); } -static SQInteger _system_date(HRABBITVM v) +static int64_t _system_date(HRABBITVM v) { time_t t; - SQInteger it; - SQInteger format = 'l'; + int64_t it; + int64_t format = 'l'; if(sq_gettop(v) > 1) { sq_getinteger(v,2,&it); t = it; if(sq_gettop(v) > 2) { - sq_getinteger(v,3,(SQInteger*)&format); + sq_getinteger(v,3,(int64_t*)&format); } } else { @@ -137,9 +137,9 @@ static const SQRegFunction systemlib_funcs[]={ }; #undef _DECL_FUNC -SQInteger sqstd_register_systemlib(HRABBITVM v) +int64_t sqstd_register_systemlib(HRABBITVM v) { - SQInteger i=0; + int64_t i=0; while(systemlib_funcs[i].name!=0) { sq_pushstring(v,systemlib_funcs[i].name,-1); diff --git a/rabbit-std/sqstdsystem.hpp b/rabbit-std/sqstdsystem.hpp index 0e00ca9..4f4649c 100644 --- a/rabbit-std/sqstdsystem.hpp +++ b/rabbit-std/sqstdsystem.hpp @@ -7,4 +7,4 @@ */ #pragma once -RABBIT_API SQInteger sqstd_register_systemlib(HRABBITVM v); +RABBIT_API int64_t sqstd_register_systemlib(HRABBITVM v); diff --git a/rabbit/UserData.hpp b/rabbit/UserData.hpp index 17f3e03..890d43e 100644 --- a/rabbit/UserData.hpp +++ b/rabbit/UserData.hpp @@ -17,7 +17,7 @@ namespace rabbit { ~UserData() { SetDelegate(NULL); } - static UserData* Create(SQSharedState *ss, SQInteger size) { + static UserData* Create(SQSharedState *ss, int64_t size) { UserData* ud = (UserData*)SQ_MALLOC(sq_aligning(sizeof(UserData))+size); new (ud) UserData(ss); ud->m_size = size; @@ -28,11 +28,11 @@ namespace rabbit { if (m_hook) { m_hook((SQUserPointer)sq_aligning(this + 1),m_size); } - SQInteger tsize = m_size; + int64_t tsize = m_size; this->~UserData(); SQ_FREE(this, sq_aligning(sizeof(UserData)) + tsize); } - const SQInteger& getSize() const { + const int64_t& getSize() const { return m_size; } const SQUserPointer& getTypeTag() const { @@ -48,7 +48,7 @@ namespace rabbit { m_hook = _value; } protected: - SQInteger m_size; + int64_t m_size; SQRELEASEHOOK m_hook; SQUserPointer m_typetag; }; diff --git a/rabbit/rabbit.hpp b/rabbit/rabbit.hpp index dd762d6..b264dcc 100644 --- a/rabbit/rabbit.hpp +++ b/rabbit/rabbit.hpp @@ -11,10 +11,6 @@ #include _SQ_CONFIG_INCLUDE #endif -#ifdef __cplusplus -extern "C" { -#endif - #ifndef RABBIT_API #define RABBIT_API extern #endif @@ -127,8 +123,8 @@ typedef union tagSQObjectValue struct SQNativeClosure *pNativeClosure; struct SQString *pString; struct rabbit::UserData *pUserData; - SQInteger nInteger; - SQFloat fFloat; + int64_t nInteger; + float_t fFloat; SQUserPointer pUserPointer; struct SQFunctionProto *pFunctionProto; struct SQRefCounted *pRefCounted; @@ -149,32 +145,32 @@ typedef struct tagSQObject typedef struct tagSQMemberHandle{ SQBool _static; - SQInteger _index; + int64_t _index; }SQMemberHandle; typedef struct tagSQStackInfos{ const SQChar* funcname; const SQChar* source; - SQInteger line; + int64_t line; }SQStackInfos; typedef struct SQVM* HRABBITVM; typedef SQObject HSQOBJECT; typedef SQMemberHandle HSQMEMBERHANDLE; -typedef SQInteger (*SQFUNCTION)(HRABBITVM); -typedef SQInteger (*SQRELEASEHOOK)(SQUserPointer,SQInteger size); -typedef void (*SQCOMPILERERROR)(HRABBITVM,const SQChar * /*desc*/,const SQChar * /*source*/,SQInteger /*line*/,SQInteger /*column*/); +typedef int64_t (*SQFUNCTION)(HRABBITVM); +typedef int64_t (*SQRELEASEHOOK)(SQUserPointer,int64_t size); +typedef void (*SQCOMPILERERROR)(HRABBITVM,const SQChar * /*desc*/,const SQChar * /*source*/,int64_t /*line*/,int64_t /*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); +typedef void (*SQDEBUGHOOK)(HRABBITVM /*v*/, int64_t /*type*/, const SQChar * /*sourcename*/, int64_t /*line*/, const SQChar * /*funcname*/); +typedef int64_t (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,int64_t); +typedef int64_t (*SQREADFUNC)(SQUserPointer,SQUserPointer,int64_t); -typedef SQInteger (*SQLEXREADFUNC)(SQUserPointer); +typedef int64_t (*SQLEXREADFUNC)(SQUserPointer); typedef struct tagSQRegFunction{ const SQChar *name; SQFUNCTION f; - SQInteger nparamscheck; + int64_t nparamscheck; const SQChar *typemask; }SQRegFunction; @@ -182,12 +178,12 @@ typedef struct tagSQFunctionInfo { SQUserPointer funcid; const SQChar *name; const SQChar *source; - SQInteger line; + int64_t line; }SQFunctionInfo; /*vm*/ -RABBIT_API HRABBITVM sq_open(SQInteger initialstacksize); -RABBIT_API HRABBITVM sq_newthread(HRABBITVM friendvm, SQInteger initialstacksize); +RABBIT_API HRABBITVM sq_open(int64_t initialstacksize); +RABBIT_API HRABBITVM sq_newthread(HRABBITVM friendvm, int64_t initialstacksize); RABBIT_API void sq_seterrorhandler(HRABBITVM v); RABBIT_API void sq_close(HRABBITVM v); RABBIT_API void sq_setforeignptr(HRABBITVM v,SQUserPointer p); @@ -203,82 +199,82 @@ 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(); +RABBIT_API int64_t sq_getvmstate(HRABBITVM v); +RABBIT_API int64_t sq_getversion(); /*compiler*/ 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 SQRESULT sq_compilebuffer(HRABBITVM v,const SQChar *s,int64_t 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*/ -RABBIT_API void sq_push(HRABBITVM v,SQInteger idx); -RABBIT_API void sq_pop(HRABBITVM v,SQInteger nelemstopop); +RABBIT_API void sq_push(HRABBITVM v,int64_t idx); +RABBIT_API void sq_pop(HRABBITVM v,int64_t 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); +RABBIT_API void sq_remove(HRABBITVM v,int64_t idx); +RABBIT_API int64_t sq_gettop(HRABBITVM v); +RABBIT_API void sq_settop(HRABBITVM v,int64_t newtop); +RABBIT_API SQRESULT sq_reservestack(HRABBITVM v,int64_t nsize); +RABBIT_API int64_t sq_cmp(HRABBITVM v); +RABBIT_API void sq_move(HRABBITVM dest,HRABBITVM src,int64_t idx); /*object creation handling*/ -RABBIT_API SQUserPointer sq_newuserdata(HRABBITVM v,SQUnsignedInteger size); +RABBIT_API SQUserPointer sq_newuserdata(HRABBITVM v,uint64_t 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_newtableex(HRABBITVM v,int64_t initialcapacity); +RABBIT_API void sq_newarray(HRABBITVM v,int64_t size); +RABBIT_API void sq_newclosure(HRABBITVM v,SQFUNCTION func,uint64_t nfreevars); +RABBIT_API SQRESULT sq_setparamscheck(HRABBITVM v,int64_t nparamscheck,const SQChar *typemask); +RABBIT_API SQRESULT sq_bindenv(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_setclosureroot(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_getclosureroot(HRABBITVM v,int64_t idx); +RABBIT_API void sq_pushstring(HRABBITVM v,const SQChar *s,int64_t len); +RABBIT_API void sq_pushfloat(HRABBITVM v,float_t f); +RABBIT_API void sq_pushinteger(HRABBITVM v,int64_t 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 SQObjectType sq_gettype(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_typeof(HRABBITVM v,int64_t idx); +RABBIT_API int64_t sq_getsize(HRABBITVM v,int64_t idx); +RABBIT_API SQHash sq_gethash(HRABBITVM v, int64_t idx); +RABBIT_API SQRESULT sq_getbase(HRABBITVM v,int64_t 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_tostring(HRABBITVM v,int64_t idx); +RABBIT_API void sq_tobool(HRABBITVM v, int64_t idx, SQBool *b); +RABBIT_API SQRESULT sq_getstringandsize(HRABBITVM v,int64_t idx,const SQChar **c,int64_t *size); +RABBIT_API SQRESULT sq_getstring(HRABBITVM v,int64_t idx,const SQChar **c); +RABBIT_API SQRESULT sq_getinteger(HRABBITVM v,int64_t idx,int64_t *i); +RABBIT_API SQRESULT sq_getfloat(HRABBITVM v,int64_t idx,float_t *f); +RABBIT_API SQRESULT sq_getbool(HRABBITVM v,int64_t idx,SQBool *b); +RABBIT_API SQRESULT sq_getthread(HRABBITVM v,int64_t idx,HRABBITVM *thread); +RABBIT_API SQRESULT sq_getuserpointer(HRABBITVM v,int64_t idx,SQUserPointer *p); +RABBIT_API SQRESULT sq_getuserdata(HRABBITVM v,int64_t idx,SQUserPointer *p,SQUserPointer *typetag); +RABBIT_API SQRESULT sq_settypetag(HRABBITVM v,int64_t idx,SQUserPointer typetag); +RABBIT_API SQRESULT sq_gettypetag(HRABBITVM v,int64_t idx,SQUserPointer *typetag); +RABBIT_API void sq_setreleasehook(HRABBITVM v,int64_t idx,SQRELEASEHOOK hook); +RABBIT_API SQRELEASEHOOK sq_getreleasehook(HRABBITVM v,int64_t idx); +RABBIT_API SQChar *sq_getscratchpad(HRABBITVM v,int64_t minsize); +RABBIT_API SQRESULT sq_getfunctioninfo(HRABBITVM v,int64_t level,SQFunctionInfo *fi); +RABBIT_API SQRESULT sq_getclosureinfo(HRABBITVM v,int64_t idx,uint64_t *nparams,uint64_t *nfreevars); +RABBIT_API SQRESULT sq_getclosurename(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_setnativeclosurename(HRABBITVM v,int64_t idx,const SQChar *name); +RABBIT_API SQRESULT sq_setinstanceup(HRABBITVM v, int64_t idx, SQUserPointer p); +RABBIT_API SQRESULT sq_getinstanceup(HRABBITVM v, int64_t idx, SQUserPointer *p,SQUserPointer typetag); +RABBIT_API SQRESULT sq_setclassudsize(HRABBITVM v, int64_t idx, int64_t 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_createinstance(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_setattributes(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_getattributes(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_getclass(HRABBITVM v,int64_t idx); +RABBIT_API void sq_weakref(HRABBITVM v,int64_t 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); +RABBIT_API SQRESULT sq_getmemberhandle(HRABBITVM v,int64_t idx,HSQMEMBERHANDLE *handle); +RABBIT_API SQRESULT sq_getbyhandle(HRABBITVM v,int64_t idx,const HSQMEMBERHANDLE *handle); +RABBIT_API SQRESULT sq_setbyhandle(HRABBITVM v,int64_t idx,const HSQMEMBERHANDLE *handle); /*object manipulation*/ RABBIT_API void sq_pushroottable(HRABBITVM v); @@ -286,59 +282,59 @@ 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); +RABBIT_API SQRESULT sq_newslot(HRABBITVM v, int64_t idx, SQBool bstatic); +RABBIT_API SQRESULT sq_deleteslot(HRABBITVM v,int64_t idx,SQBool pushval); +RABBIT_API SQRESULT sq_set(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_get(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_rawget(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_rawset(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_rawdeleteslot(HRABBITVM v,int64_t idx,SQBool pushval); +RABBIT_API SQRESULT sq_newmember(HRABBITVM v,int64_t idx,SQBool bstatic); +RABBIT_API SQRESULT sq_rawnewmember(HRABBITVM v,int64_t idx,SQBool bstatic); +RABBIT_API SQRESULT sq_arrayappend(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_arraypop(HRABBITVM v,int64_t idx,SQBool pushval); +RABBIT_API SQRESULT sq_arrayresize(HRABBITVM v,int64_t idx,int64_t newsize); +RABBIT_API SQRESULT sq_arrayreverse(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_arrayremove(HRABBITVM v,int64_t idx,int64_t itemidx); +RABBIT_API SQRESULT sq_arrayinsert(HRABBITVM v,int64_t idx,int64_t destpos); +RABBIT_API SQRESULT sq_setdelegate(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_getdelegate(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_clone(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_setfreevariable(HRABBITVM v,int64_t idx,uint64_t nval); +RABBIT_API SQRESULT sq_next(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_getweakrefval(HRABBITVM v,int64_t idx); +RABBIT_API SQRESULT sq_clear(HRABBITVM v,int64_t idx); /*calls*/ -RABBIT_API SQRESULT sq_call(HRABBITVM v,SQInteger params,SQBool retval,SQBool raiseerror); +RABBIT_API SQRESULT sq_call(HRABBITVM v,int64_t 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 const SQChar *sq_getlocal(HRABBITVM v,uint64_t level,uint64_t idx); RABBIT_API SQRESULT sq_getcallee(HRABBITVM v); -RABBIT_API const SQChar *sq_getfreevariable(HRABBITVM v,SQInteger idx,SQUnsignedInteger nval); +RABBIT_API const SQChar *sq_getfreevariable(HRABBITVM v,int64_t idx,uint64_t 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); +RABBIT_API SQRESULT sq_tailcall(HRABBITVM v, int64_t nparams); /*raw object handling*/ -RABBIT_API SQRESULT sq_getstackobj(HRABBITVM v,SQInteger idx,HSQOBJECT *po); +RABBIT_API SQRESULT sq_getstackobj(HRABBITVM v,int64_t 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 uint64_t 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 int64_t sq_objtointeger(const HSQOBJECT *o); +RABBIT_API float_t 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); +RABBIT_API uint64_t sq_getvmrefcount(HRABBITVM v, const HSQOBJECT *po); /*GC*/ -RABBIT_API SQInteger sq_collectgarbage(HRABBITVM v); +RABBIT_API int64_t sq_collectgarbage(HRABBITVM v); RABBIT_API SQRESULT sq_resurrectunreachable(HRABBITVM v); /*serialization*/ @@ -346,12 +342,12 @@ RABBIT_API SQRESULT sq_writeclosure(HRABBITVM vm,SQWRITEFUNC writef,SQUserPointe RABBIT_API SQRESULT sq_readclosure(HRABBITVM vm,SQREADFUNC readf,SQUserPointer up); /*mem allocation*/ -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); +RABBIT_API void *sq_malloc(uint64_t size); +RABBIT_API void *sq_realloc(void* p,uint64_t oldsize,uint64_t newsize); +RABBIT_API void sq_free(void *p,uint64_t size); /*debug*/ -RABBIT_API SQRESULT sq_stackinfos(HRABBITVM v,SQInteger level,SQStackInfos *si); +RABBIT_API SQRESULT sq_stackinfos(HRABBITVM v,int64_t level,SQStackInfos *si); RABBIT_API void sq_setdebughook(HRABBITVM v); RABBIT_API void sq_setnativedebughook(HRABBITVM v,SQDEBUGHOOK hook); @@ -391,7 +387,3 @@ RABBIT_API void sq_setnativedebughook(HRABBITVM v,SQDEBUGHOOK hook); # define SQ_UNUSED_ARG(x) x #endif -#ifdef __cplusplus -} /*extern "C"*/ -#endif - diff --git a/rabbit/sqapi.cpp b/rabbit/sqapi.cpp index 15020a5..8b9ee2e 100644 --- a/rabbit/sqapi.cpp +++ b/rabbit/sqapi.cpp @@ -17,7 +17,7 @@ #include #include -static bool sq_aux_gettypedarg(HRABBITVM v,SQInteger idx,SQObjectType type,SQObjectPtr **o) +static bool sq_aux_gettypedarg(HRABBITVM v,int64_t idx,SQObjectType type,SQObjectPtr **o) { *o = &stack_get(v,idx); if(sq_type(**o) != type){ @@ -36,14 +36,14 @@ static bool sq_aux_gettypedarg(HRABBITVM v,SQInteger idx,SQObjectType type,SQObj } -SQInteger sq_aux_invalidtype(HRABBITVM v,SQObjectType type) +int64_t sq_aux_invalidtype(HRABBITVM v,SQObjectType type) { - SQUnsignedInteger buf_size = 100 *sizeof(SQChar); + uint64_t 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)); } -HRABBITVM sq_open(SQInteger initialstacksize) +HRABBITVM sq_open(int64_t initialstacksize) { SQSharedState *ss; SQVM *v; @@ -61,7 +61,7 @@ HRABBITVM sq_open(SQInteger initialstacksize) return v; } -HRABBITVM sq_newthread(HRABBITVM friendvm, SQInteger initialstacksize) +HRABBITVM sq_newthread(HRABBITVM friendvm, int64_t initialstacksize) { SQSharedState *ss; SQVM *v; @@ -79,7 +79,7 @@ HRABBITVM sq_newthread(HRABBITVM friendvm, SQInteger initialstacksize) } } -SQInteger sq_getvmstate(HRABBITVM v) +int64_t sq_getvmstate(HRABBITVM v) { if(v->_suspended) return SQ_VMSTATE_SUSPENDED; @@ -123,7 +123,7 @@ void sq_close(HRABBITVM v) sq_delete(ss, SQSharedState); } -SQInteger sq_getversion() +int64_t sq_getversion() { return RABBIT_VERSION_NUMBER; } @@ -158,7 +158,7 @@ void sq_addref(HRABBITVM v,HSQOBJECT *po) __AddRef(po->_type,po->_unVal); } -SQUnsignedInteger sq_getrefcount(HRABBITVM v,HSQOBJECT *po) +uint64_t sq_getrefcount(HRABBITVM v,HSQOBJECT *po) { if(!ISREFCOUNTED(sq_type(*po))) return 0; return po->_unVal.pRefCounted->_uiRef; @@ -172,7 +172,7 @@ SQBool sq_release(HRABBITVM v,HSQOBJECT *po) return ret; //the ret val doesn't work(and cannot be fixed) } -SQUnsignedInteger sq_getvmrefcount(HRABBITVM SQ_UNUSED_ARG(v), const HSQOBJECT *po) +uint64_t sq_getvmrefcount(HRABBITVM SQ_UNUSED_ARG(v), const HSQOBJECT *po) { if (!ISREFCOUNTED(sq_type(*po))) return 0; return po->_unVal.pRefCounted->_uiRef; @@ -186,7 +186,7 @@ const SQChar *sq_objtostring(const HSQOBJECT *o) return NULL; } -SQInteger sq_objtointeger(const HSQOBJECT *o) +int64_t sq_objtointeger(const HSQOBJECT *o) { if(sq_isnumeric(*o)) { return tointeger(*o); @@ -194,7 +194,7 @@ SQInteger sq_objtointeger(const HSQOBJECT *o) return 0; } -SQFloat sq_objtofloat(const HSQOBJECT *o) +float_t sq_objtofloat(const HSQOBJECT *o) { if(sq_isnumeric(*o)) { return tofloat(*o); @@ -223,14 +223,14 @@ void sq_pushnull(HRABBITVM v) v->PushNull(); } -void sq_pushstring(HRABBITVM v,const SQChar *s,SQInteger len) +void sq_pushstring(HRABBITVM v,const SQChar *s,int64_t len) { if(s) v->Push(SQObjectPtr(SQString::Create(_ss(v), s, len))); else v->PushNull(); } -void sq_pushinteger(HRABBITVM v,SQInteger n) +void sq_pushinteger(HRABBITVM v,int64_t n) { v->Push(n); } @@ -240,7 +240,7 @@ void sq_pushbool(HRABBITVM v,SQBool b) v->Push(b?true:false); } -void sq_pushfloat(HRABBITVM v,SQFloat n) +void sq_pushfloat(HRABBITVM v,float_t n) { v->Push(n); } @@ -255,7 +255,7 @@ void sq_pushthread(HRABBITVM v, HRABBITVM thread) v->Push(thread); } -SQUserPointer sq_newuserdata(HRABBITVM v,SQUnsignedInteger size) +SQUserPointer sq_newuserdata(HRABBITVM v,uint64_t size) { rabbit::UserData *ud = rabbit::UserData::Create(_ss(v), size + SQ_ALIGNMENT); v->Push(ud); @@ -267,12 +267,12 @@ void sq_newtable(HRABBITVM v) v->Push(SQTable::Create(_ss(v), 0)); } -void sq_newtableex(HRABBITVM v,SQInteger initialcapacity) +void sq_newtableex(HRABBITVM v,int64_t initialcapacity) { v->Push(SQTable::Create(_ss(v), initialcapacity)); } -void sq_newarray(HRABBITVM v,SQInteger size) +void sq_newarray(HRABBITVM v,int64_t size) { v->Push(SQArray::Create(_ss(v), size)); } @@ -301,7 +301,7 @@ SQBool sq_instanceof(HRABBITVM v) return _instance(inst)->InstanceOf(_class(cl))?SQTrue:SQFalse; } -SQRESULT sq_arrayappend(HRABBITVM v,SQInteger idx) +SQRESULT sq_arrayappend(HRABBITVM v,int64_t idx) { sq_aux_paramscheck(v,2); SQObjectPtr *arr; @@ -311,7 +311,7 @@ SQRESULT sq_arrayappend(HRABBITVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_arraypop(HRABBITVM v,SQInteger idx,SQBool pushval) +SQRESULT sq_arraypop(HRABBITVM v,int64_t idx,SQBool pushval) { sq_aux_paramscheck(v, 1); SQObjectPtr *arr; @@ -324,7 +324,7 @@ SQRESULT sq_arraypop(HRABBITVM v,SQInteger idx,SQBool pushval) return sq_throwerror(v, _SC("empty array")); } -SQRESULT sq_arrayresize(HRABBITVM v,SQInteger idx,SQInteger newsize) +SQRESULT sq_arrayresize(HRABBITVM v,int64_t idx,int64_t newsize) { sq_aux_paramscheck(v,1); SQObjectPtr *arr; @@ -337,7 +337,7 @@ SQRESULT sq_arrayresize(HRABBITVM v,SQInteger idx,SQInteger newsize) } -SQRESULT sq_arrayreverse(HRABBITVM v,SQInteger idx) +SQRESULT sq_arrayreverse(HRABBITVM v,int64_t idx) { sq_aux_paramscheck(v, 1); SQObjectPtr *o; @@ -345,9 +345,9 @@ SQRESULT sq_arrayreverse(HRABBITVM v,SQInteger idx) SQArray *arr = _array(*o); if(arr->Size() > 0) { SQObjectPtr t; - SQInteger size = arr->Size(); - SQInteger n = size >> 1; size -= 1; - for(SQInteger i = 0; i < n; i++) { + int64_t size = arr->Size(); + int64_t n = size >> 1; size -= 1; + for(int64_t i = 0; i < n; i++) { t = arr->_values[i]; arr->_values[i] = arr->_values[size-i]; arr->_values[size-i] = t; @@ -357,7 +357,7 @@ SQRESULT sq_arrayreverse(HRABBITVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_arrayremove(HRABBITVM v,SQInteger idx,SQInteger itemidx) +SQRESULT sq_arrayremove(HRABBITVM v,int64_t idx,int64_t itemidx) { sq_aux_paramscheck(v, 1); SQObjectPtr *arr; @@ -365,7 +365,7 @@ SQRESULT sq_arrayremove(HRABBITVM v,SQInteger idx,SQInteger itemidx) return _array(*arr)->Remove(itemidx) ? SQ_OK : sq_throwerror(v,_SC("index out of range")); } -SQRESULT sq_arrayinsert(HRABBITVM v,SQInteger idx,SQInteger destpos) +SQRESULT sq_arrayinsert(HRABBITVM v,int64_t idx,int64_t destpos) { sq_aux_paramscheck(v, 1); SQObjectPtr *arr; @@ -375,38 +375,38 @@ SQRESULT sq_arrayinsert(HRABBITVM v,SQInteger idx,SQInteger destpos) return ret; } -void sq_newclosure(HRABBITVM v,SQFUNCTION func,SQUnsignedInteger nfreevars) +void sq_newclosure(HRABBITVM v,SQFUNCTION func,uint64_t nfreevars) { SQNativeClosure *nc = SQNativeClosure::Create(_ss(v), func,nfreevars); nc->_nparamscheck = 0; - for(SQUnsignedInteger i = 0; i < nfreevars; i++) { + for(uint64_t i = 0; i < nfreevars; i++) { nc->_outervalues[i] = v->Top(); v->Pop(); } v->Push(SQObjectPtr(nc)); } -SQRESULT sq_getclosureinfo(HRABBITVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars) +SQRESULT sq_getclosureinfo(HRABBITVM v,int64_t idx,uint64_t *nparams,uint64_t *nfreevars) { SQObject o = stack_get(v, idx); if(sq_type(o) == OT_CLOSURE) { SQClosure *c = _closure(o); SQFunctionProto *proto = c->_function; - *nparams = (SQUnsignedInteger)proto->_nparameters; - *nfreevars = (SQUnsignedInteger)proto->_noutervalues; + *nparams = (uint64_t)proto->_nparameters; + *nfreevars = (uint64_t)proto->_noutervalues; return SQ_OK; } else if(sq_type(o) == OT_NATIVECLOSURE) { SQNativeClosure *c = _nativeclosure(o); - *nparams = (SQUnsignedInteger)c->_nparamscheck; + *nparams = (uint64_t)c->_nparamscheck; *nfreevars = c->_noutervalues; return SQ_OK; } return sq_throwerror(v,_SC("the object is not a closure")); } -SQRESULT sq_setnativeclosurename(HRABBITVM v,SQInteger idx,const SQChar *name) +SQRESULT sq_setnativeclosurename(HRABBITVM v,int64_t idx,const SQChar *name) { SQObject o = stack_get(v, idx); if(sq_isnativeclosure(o)) { @@ -417,7 +417,7 @@ SQRESULT sq_setnativeclosurename(HRABBITVM v,SQInteger idx,const SQChar *name) return sq_throwerror(v,_SC("the object is not a nativeclosure")); } -SQRESULT sq_setparamscheck(HRABBITVM v,SQInteger nparamscheck,const SQChar *typemask) +SQRESULT sq_setparamscheck(HRABBITVM v,int64_t nparamscheck,const SQChar *typemask) { SQObject o = stack_get(v, -1); if(!sq_isnativeclosure(o)) @@ -439,7 +439,7 @@ SQRESULT sq_setparamscheck(HRABBITVM v,SQInteger nparamscheck,const SQChar *type return SQ_OK; } -SQRESULT sq_bindenv(HRABBITVM v,SQInteger idx) +SQRESULT sq_bindenv(HRABBITVM v,int64_t idx) { SQObjectPtr &o = stack_get(v,idx); if(!sq_isnativeclosure(o) && @@ -476,7 +476,7 @@ SQRESULT sq_bindenv(HRABBITVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_getclosurename(HRABBITVM v,SQInteger idx) +SQRESULT sq_getclosurename(HRABBITVM v,int64_t idx) { SQObjectPtr &o = stack_get(v,idx); if(!sq_isnativeclosure(o) && @@ -492,7 +492,7 @@ SQRESULT sq_getclosurename(HRABBITVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_setclosureroot(HRABBITVM v,SQInteger idx) +SQRESULT sq_setclosureroot(HRABBITVM v,int64_t idx) { SQObjectPtr &c = stack_get(v,idx); SQObject o = stack_get(v, -1); @@ -505,7 +505,7 @@ SQRESULT sq_setclosureroot(HRABBITVM v,SQInteger idx) return sq_throwerror(v, _SC("invalid type")); } -SQRESULT sq_getclosureroot(HRABBITVM v,SQInteger idx) +SQRESULT sq_getclosureroot(HRABBITVM v,int64_t idx) { SQObjectPtr &c = stack_get(v,idx); if(!sq_isclosure(c)) return sq_throwerror(v, _SC("closure expected")); @@ -513,7 +513,7 @@ SQRESULT sq_getclosureroot(HRABBITVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_clear(HRABBITVM v,SQInteger idx) +SQRESULT sq_clear(HRABBITVM v,int64_t idx) { SQObject &o=stack_get(v,idx); switch(sq_type(o)) { @@ -604,17 +604,17 @@ SQRELEASEHOOK sq_getsharedreleasehook(HRABBITVM v) return _ss(v)->_releasehook; } -void sq_push(HRABBITVM v,SQInteger idx) +void sq_push(HRABBITVM v,int64_t idx) { v->Push(stack_get(v, idx)); } -SQObjectType sq_gettype(HRABBITVM v,SQInteger idx) +SQObjectType sq_gettype(HRABBITVM v,int64_t idx) { return sq_type(stack_get(v, idx)); } -SQRESULT sq_typeof(HRABBITVM v,SQInteger idx) +SQRESULT sq_typeof(HRABBITVM v,int64_t idx) { SQObjectPtr &o = stack_get(v, idx); SQObjectPtr res; @@ -625,7 +625,7 @@ SQRESULT sq_typeof(HRABBITVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_tostring(HRABBITVM v,SQInteger idx) +SQRESULT sq_tostring(HRABBITVM v,int64_t idx) { SQObjectPtr &o = stack_get(v, idx); SQObjectPtr res; @@ -636,13 +636,13 @@ SQRESULT sq_tostring(HRABBITVM v,SQInteger idx) return SQ_OK; } -void sq_tobool(HRABBITVM v, SQInteger idx, SQBool *b) +void sq_tobool(HRABBITVM v, int64_t idx, SQBool *b) { SQObjectPtr &o = stack_get(v, idx); *b = SQVM::IsFalse(o)?SQFalse:SQTrue; } -SQRESULT sq_getinteger(HRABBITVM v,SQInteger idx,SQInteger *i) +SQRESULT sq_getinteger(HRABBITVM v,int64_t idx,int64_t *i) { SQObjectPtr &o = stack_get(v, idx); if(sq_isnumeric(o)) { @@ -656,7 +656,7 @@ SQRESULT sq_getinteger(HRABBITVM v,SQInteger idx,SQInteger *i) return SQ_ERROR; } -SQRESULT sq_getfloat(HRABBITVM v,SQInteger idx,SQFloat *f) +SQRESULT sq_getfloat(HRABBITVM v,int64_t idx,float_t *f) { SQObjectPtr &o = stack_get(v, idx); if(sq_isnumeric(o)) { @@ -666,7 +666,7 @@ SQRESULT sq_getfloat(HRABBITVM v,SQInteger idx,SQFloat *f) return SQ_ERROR; } -SQRESULT sq_getbool(HRABBITVM v,SQInteger idx,SQBool *b) +SQRESULT sq_getbool(HRABBITVM v,int64_t idx,SQBool *b) { SQObjectPtr &o = stack_get(v, idx); if(sq_isbool(o)) { @@ -676,7 +676,7 @@ SQRESULT sq_getbool(HRABBITVM v,SQInteger idx,SQBool *b) return SQ_ERROR; } -SQRESULT sq_getstringandsize(HRABBITVM v,SQInteger idx,const SQChar **c,SQInteger *size) +SQRESULT sq_getstringandsize(HRABBITVM v,int64_t idx,const SQChar **c,int64_t *size) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_STRING,o); @@ -685,7 +685,7 @@ SQRESULT sq_getstringandsize(HRABBITVM v,SQInteger idx,const SQChar **c,SQIntege return SQ_OK; } -SQRESULT sq_getstring(HRABBITVM v,SQInteger idx,const SQChar **c) +SQRESULT sq_getstring(HRABBITVM v,int64_t idx,const SQChar **c) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_STRING,o); @@ -693,7 +693,7 @@ SQRESULT sq_getstring(HRABBITVM v,SQInteger idx,const SQChar **c) return SQ_OK; } -SQRESULT sq_getthread(HRABBITVM v,SQInteger idx,HRABBITVM *thread) +SQRESULT sq_getthread(HRABBITVM v,int64_t idx,HRABBITVM *thread) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_THREAD,o); @@ -701,7 +701,7 @@ SQRESULT sq_getthread(HRABBITVM v,SQInteger idx,HRABBITVM *thread) return SQ_OK; } -SQRESULT sq_clone(HRABBITVM v,SQInteger idx) +SQRESULT sq_clone(HRABBITVM v,int64_t idx) { SQObjectPtr &o = stack_get(v,idx); v->PushNull(); @@ -712,7 +712,7 @@ SQRESULT sq_clone(HRABBITVM v,SQInteger idx) return SQ_OK; } -SQInteger sq_getsize(HRABBITVM v, SQInteger idx) +int64_t sq_getsize(HRABBITVM v, int64_t idx) { SQObjectPtr &o = stack_get(v, idx); SQObjectType type = sq_type(o); @@ -728,13 +728,13 @@ SQInteger sq_getsize(HRABBITVM v, SQInteger idx) } } -SQHash sq_gethash(HRABBITVM v, SQInteger idx) +SQHash sq_gethash(HRABBITVM v, int64_t idx) { SQObjectPtr &o = stack_get(v, idx); return HashObj(o); } -SQRESULT sq_getuserdata(HRABBITVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag) +SQRESULT sq_getuserdata(HRABBITVM v,int64_t idx,SQUserPointer *p,SQUserPointer *typetag) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_USERDATA,o); @@ -745,7 +745,7 @@ SQRESULT sq_getuserdata(HRABBITVM v,SQInteger idx,SQUserPointer *p,SQUserPointer return SQ_OK; } -SQRESULT sq_settypetag(HRABBITVM v,SQInteger idx,SQUserPointer typetag) +SQRESULT sq_settypetag(HRABBITVM v,int64_t idx,SQUserPointer typetag) { SQObjectPtr &o = stack_get(v,idx); switch(sq_type(o)) { @@ -772,7 +772,7 @@ SQRESULT sq_getobjtypetag(const HSQOBJECT *o,SQUserPointer * typetag) return SQ_OK; } -SQRESULT sq_gettypetag(HRABBITVM v,SQInteger idx,SQUserPointer *typetag) +SQRESULT sq_gettypetag(HRABBITVM v,int64_t idx,SQUserPointer *typetag) { SQObjectPtr &o = stack_get(v,idx); if (SQ_FAILED(sq_getobjtypetag(&o, typetag))) @@ -780,7 +780,7 @@ SQRESULT sq_gettypetag(HRABBITVM v,SQInteger idx,SQUserPointer *typetag) return SQ_OK; } -SQRESULT sq_getuserpointer(HRABBITVM v, SQInteger idx, SQUserPointer *p) +SQRESULT sq_getuserpointer(HRABBITVM v, int64_t idx, SQUserPointer *p) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_USERPOINTER,o); @@ -788,7 +788,7 @@ SQRESULT sq_getuserpointer(HRABBITVM v, SQInteger idx, SQUserPointer *p) return SQ_OK; } -SQRESULT sq_setinstanceup(HRABBITVM v, SQInteger idx, SQUserPointer p) +SQRESULT sq_setinstanceup(HRABBITVM v, int64_t 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")); @@ -796,7 +796,7 @@ SQRESULT sq_setinstanceup(HRABBITVM v, SQInteger idx, SQUserPointer p) return SQ_OK; } -SQRESULT sq_setclassudsize(HRABBITVM v, SQInteger idx, SQInteger udsize) +SQRESULT sq_setclassudsize(HRABBITVM v, int64_t idx, int64_t udsize) { SQObjectPtr &o = stack_get(v,idx); if(sq_type(o) != OT_CLASS) return sq_throwerror(v,_SC("the object is not a class")); @@ -806,7 +806,7 @@ SQRESULT sq_setclassudsize(HRABBITVM v, SQInteger idx, SQInteger udsize) } -SQRESULT sq_getinstanceup(HRABBITVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag) +SQRESULT sq_getinstanceup(HRABBITVM v, int64_t 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")); @@ -823,21 +823,21 @@ SQRESULT sq_getinstanceup(HRABBITVM v, SQInteger idx, SQUserPointer *p,SQUserPoi return SQ_OK; } -SQInteger sq_gettop(HRABBITVM v) +int64_t sq_gettop(HRABBITVM v) { return (v->_top) - v->_stackbase; } -void sq_settop(HRABBITVM v, SQInteger newtop) +void sq_settop(HRABBITVM v, int64_t newtop) { - SQInteger top = sq_gettop(v); + int64_t top = sq_gettop(v); if(top > newtop) sq_pop(v, top - newtop); else while(top++ < newtop) sq_pushnull(v); } -void sq_pop(HRABBITVM v, SQInteger nelemstopop) +void sq_pop(HRABBITVM v, int64_t nelemstopop) { assert(v->_top >= nelemstopop); v->Pop(nelemstopop); @@ -850,19 +850,19 @@ void sq_poptop(HRABBITVM v) } -void sq_remove(HRABBITVM v, SQInteger idx) +void sq_remove(HRABBITVM v, int64_t idx) { v->Remove(idx); } -SQInteger sq_cmp(HRABBITVM v) +int64_t sq_cmp(HRABBITVM v) { - SQInteger res; + int64_t res; v->ObjCmp(stack_get(v, -1), stack_get(v, -2),res); return res; } -SQRESULT sq_newslot(HRABBITVM v, SQInteger idx, SQBool bstatic) +SQRESULT sq_newslot(HRABBITVM v, int64_t idx, SQBool bstatic) { sq_aux_paramscheck(v, 3); SQObjectPtr &self = stack_get(v, idx); @@ -875,7 +875,7 @@ SQRESULT sq_newslot(HRABBITVM v, SQInteger idx, SQBool bstatic) return SQ_OK; } -SQRESULT sq_deleteslot(HRABBITVM v,SQInteger idx,SQBool pushval) +SQRESULT sq_deleteslot(HRABBITVM v,int64_t idx,SQBool pushval) { sq_aux_paramscheck(v, 2); SQObjectPtr *self; @@ -892,7 +892,7 @@ SQRESULT sq_deleteslot(HRABBITVM v,SQInteger idx,SQBool pushval) return SQ_OK; } -SQRESULT sq_set(HRABBITVM v,SQInteger idx) +SQRESULT sq_set(HRABBITVM v,int64_t idx) { SQObjectPtr &self = stack_get(v, idx); if(v->Set(self, v->GetUp(-2), v->GetUp(-1),DONT_FALL_BACK)) { @@ -902,7 +902,7 @@ SQRESULT sq_set(HRABBITVM v,SQInteger idx) return SQ_ERROR; } -SQRESULT sq_rawset(HRABBITVM v,SQInteger idx) +SQRESULT sq_rawset(HRABBITVM v,int64_t idx) { SQObjectPtr &self = stack_get(v, idx); SQObjectPtr &key = v->GetUp(-2); @@ -940,7 +940,7 @@ SQRESULT sq_rawset(HRABBITVM v,SQInteger idx) v->Raise_IdxError(v->GetUp(-2));return SQ_ERROR; } -SQRESULT sq_newmember(HRABBITVM v,SQInteger idx,SQBool bstatic) +SQRESULT sq_newmember(HRABBITVM v,int64_t 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")); @@ -954,7 +954,7 @@ SQRESULT sq_newmember(HRABBITVM v,SQInteger idx,SQBool bstatic) return SQ_OK; } -SQRESULT sq_rawnewmember(HRABBITVM v,SQInteger idx,SQBool bstatic) +SQRESULT sq_rawnewmember(HRABBITVM v,int64_t 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")); @@ -968,7 +968,7 @@ SQRESULT sq_rawnewmember(HRABBITVM v,SQInteger idx,SQBool bstatic) return SQ_OK; } -SQRESULT sq_setdelegate(HRABBITVM v,SQInteger idx) +SQRESULT sq_setdelegate(HRABBITVM v,int64_t idx) { SQObjectPtr &self = stack_get(v, idx); SQObjectPtr &mt = v->GetUp(-1); @@ -999,7 +999,7 @@ SQRESULT sq_setdelegate(HRABBITVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_rawdeleteslot(HRABBITVM v,SQInteger idx,SQBool pushval) +SQRESULT sq_rawdeleteslot(HRABBITVM v,int64_t idx,SQBool pushval) { sq_aux_paramscheck(v, 2); SQObjectPtr *self; @@ -1016,7 +1016,7 @@ SQRESULT sq_rawdeleteslot(HRABBITVM v,SQInteger idx,SQBool pushval) return SQ_OK; } -SQRESULT sq_getdelegate(HRABBITVM v,SQInteger idx) +SQRESULT sq_getdelegate(HRABBITVM v,int64_t idx) { SQObjectPtr &self=stack_get(v,idx); switch(sq_type(self)){ @@ -1034,7 +1034,7 @@ SQRESULT sq_getdelegate(HRABBITVM v,SQInteger idx) } -SQRESULT sq_get(HRABBITVM v,SQInteger idx) +SQRESULT sq_get(HRABBITVM v,int64_t idx) { SQObjectPtr &self=stack_get(v,idx); SQObjectPtr &obj = v->GetUp(-1); @@ -1044,7 +1044,7 @@ SQRESULT sq_get(HRABBITVM v,SQInteger idx) return SQ_ERROR; } -SQRESULT sq_rawget(HRABBITVM v,SQInteger idx) +SQRESULT sq_rawget(HRABBITVM v,int64_t idx) { SQObjectPtr &self=stack_get(v,idx); SQObjectPtr &obj = v->GetUp(-1); @@ -1081,19 +1081,19 @@ SQRESULT sq_rawget(HRABBITVM v,SQInteger idx) return sq_throwerror(v,_SC("the index doesn't exist")); } -SQRESULT sq_getstackobj(HRABBITVM v,SQInteger idx,HSQOBJECT *po) +SQRESULT sq_getstackobj(HRABBITVM v,int64_t idx,HSQOBJECT *po) { *po=stack_get(v,idx); return SQ_OK; } -const SQChar *sq_getlocal(HRABBITVM v,SQUnsignedInteger level,SQUnsignedInteger idx) +const SQChar *sq_getlocal(HRABBITVM v,uint64_t level,uint64_t idx) { - SQUnsignedInteger cstksize=v->_callsstacksize; - SQUnsignedInteger lvl=(cstksize-level)-1; - SQInteger stackbase=v->_stackbase; + uint64_t cstksize=v->_callsstacksize; + uint64_t lvl=(cstksize-level)-1; + int64_t stackbase=v->_stackbase; if(lvl_callsstack[(cstksize-i)-1]; stackbase-=ci._prevstkbase; } @@ -1102,12 +1102,12 @@ const SQChar *sq_getlocal(HRABBITVM v,SQUnsignedInteger level,SQUnsignedInteger return NULL; SQClosure *c=_closure(ci._closure); SQFunctionProto *func=c->_function; - if(func->_noutervalues > (SQInteger)idx) { + if(func->_noutervalues > (int64_t)idx) { v->Push(*_outer(c->_outervalues[idx])->_valptr); return _stringval(func->_outervalues[idx]._name); } idx -= func->_noutervalues; - return func->GetLocal(v,stackbase,idx,(SQInteger)(ci._ip-func->_instructions)-1); + return func->GetLocal(v,stackbase,idx,(int64_t)(ci._ip-func->_instructions)-1); } return NULL; } @@ -1146,9 +1146,9 @@ void sq_getlasterror(HRABBITVM v) v->Push(v->_lasterror); } -SQRESULT sq_reservestack(HRABBITVM v,SQInteger nsize) +SQRESULT sq_reservestack(HRABBITVM v,int64_t nsize) { - if (((SQUnsignedInteger)v->_top + nsize) > v->_stack.size()) { + if (((uint64_t)v->_top + nsize) > v->_stack.size()) { if(v->_nmetamethodscall) { return sq_throwerror(v,_SC("cannot resize stack while in a metamethod")); } @@ -1171,7 +1171,7 @@ SQRESULT sq_resume(HRABBITVM v,SQBool retval,SQBool raiseerror) return sq_throwerror(v,_SC("only generators can be resumed")); } -SQRESULT sq_call(HRABBITVM v,SQInteger params,SQBool retval,SQBool raiseerror) +SQRESULT sq_call(HRABBITVM v,int64_t params,SQBool retval,SQBool raiseerror) { SQObjectPtr res; if(v->Call(v->GetUp(-(params+1)),params,v->_top-params,res,raiseerror?true:false)){ @@ -1193,7 +1193,7 @@ SQRESULT sq_call(HRABBITVM v,SQInteger params,SQBool retval,SQBool raiseerror) return sq_throwerror(v,_SC("call failed")); } -SQRESULT sq_tailcall(HRABBITVM v, SQInteger nparams) +SQRESULT sq_tailcall(HRABBITVM v, int64_t nparams) { SQObjectPtr &res = v->GetUp(-(nparams + 1)); if (sq_type(res) != OT_CLOSURE) { @@ -1205,7 +1205,7 @@ SQRESULT sq_tailcall(HRABBITVM v, SQInteger nparams) return sq_throwerror(v, _SC("generators cannot be tail called")); } - SQInteger stackbase = (v->_top - nparams) - v->_stackbase; + int64_t stackbase = (v->_top - nparams) - v->_stackbase; if (!v->TailCall(clo, stackbase, nparams)) { return SQ_ERROR; } @@ -1222,7 +1222,7 @@ SQRESULT sq_wakeupvm(HRABBITVM v,SQBool wakeupret,SQBool retval,SQBool raiseerro SQObjectPtr ret; if(!v->_suspended) return sq_throwerror(v,_SC("cannot resume a vm that is not running any code")); - SQInteger target = v->_suspended_target; + int64_t target = v->_suspended_target; if(wakeupret) { if(target != -1) { v->GetAt(v->_stackbase+v->_suspended_target)=v->GetUp(-1); //retval @@ -1239,7 +1239,7 @@ SQRESULT sq_wakeupvm(HRABBITVM v,SQBool wakeupret,SQBool retval,SQBool raiseerro return SQ_OK; } -void sq_setreleasehook(HRABBITVM v,SQInteger idx,SQRELEASEHOOK hook) +void sq_setreleasehook(HRABBITVM v,int64_t idx,SQRELEASEHOOK hook) { SQObjectPtr &ud=stack_get(v,idx); switch(sq_type(ud) ) { @@ -1257,7 +1257,7 @@ void sq_setreleasehook(HRABBITVM v,SQInteger idx,SQRELEASEHOOK hook) } } -SQRELEASEHOOK sq_getreleasehook(HRABBITVM v,SQInteger idx) +SQRELEASEHOOK sq_getreleasehook(HRABBITVM v,int64_t idx) { SQObjectPtr &ud=stack_get(v,idx); switch(sq_type(ud) ) { @@ -1309,7 +1309,7 @@ SQRESULT sq_readclosure(HRABBITVM v,SQREADFUNC r,SQUserPointer up) return SQ_OK; } -SQChar *sq_getscratchpad(HRABBITVM v,SQInteger minsize) +SQChar *sq_getscratchpad(HRABBITVM v,int64_t minsize) { return _ss(v)->GetScratchPad(minsize); } @@ -1320,7 +1320,7 @@ SQRESULT sq_resurrectunreachable(HRABBITVM v) } // TODO: Remove this... -SQInteger sq_collectgarbage(HRABBITVM v) +int64_t sq_collectgarbage(HRABBITVM v) { return -1; } @@ -1335,7 +1335,7 @@ SQRESULT sq_getcallee(HRABBITVM v) return sq_throwerror(v,_SC("no closure in the calls stack")); } -const SQChar *sq_getfreevariable(HRABBITVM v,SQInteger idx,SQUnsignedInteger nval) +const SQChar *sq_getfreevariable(HRABBITVM v,int64_t idx,uint64_t nval) { SQObjectPtr &self=stack_get(v,idx); const SQChar *name = NULL; @@ -1344,7 +1344,7 @@ const SQChar *sq_getfreevariable(HRABBITVM v,SQInteger idx,SQUnsignedInteger nva case OT_CLOSURE:{ SQClosure *clo = _closure(self); SQFunctionProto *fp = clo->_function; - if(((SQUnsignedInteger)fp->_noutervalues) > nval) { + if(((uint64_t)fp->_noutervalues) > nval) { v->Push(*(_outer(clo->_outervalues[nval])->_valptr)); SQOuterVar &ov = fp->_outervalues[nval]; name = _stringval(ov._name); @@ -1364,14 +1364,14 @@ const SQChar *sq_getfreevariable(HRABBITVM v,SQInteger idx,SQUnsignedInteger nva return name; } -SQRESULT sq_setfreevariable(HRABBITVM v,SQInteger idx,SQUnsignedInteger nval) +SQRESULT sq_setfreevariable(HRABBITVM v,int64_t idx,uint64_t nval) { SQObjectPtr &self=stack_get(v,idx); switch(sq_type(self)) { case OT_CLOSURE:{ SQFunctionProto *fp = _closure(self)->_function; - if(((SQUnsignedInteger)fp->_noutervalues) > nval){ + if(((uint64_t)fp->_noutervalues) > nval){ *(_outer(_closure(self)->_outervalues[nval])->_valptr) = stack_get(v,-1); } else return sq_throwerror(v,_SC("invalid free var index")); @@ -1390,7 +1390,7 @@ SQRESULT sq_setfreevariable(HRABBITVM v,SQInteger idx,SQUnsignedInteger nval) return SQ_OK; } -SQRESULT sq_setattributes(HRABBITVM v,SQInteger idx) +SQRESULT sq_setattributes(HRABBITVM v,int64_t idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); @@ -1412,7 +1412,7 @@ SQRESULT sq_setattributes(HRABBITVM v,SQInteger idx) return sq_throwerror(v,_SC("wrong index")); } -SQRESULT sq_getattributes(HRABBITVM v,SQInteger idx) +SQRESULT sq_getattributes(HRABBITVM v,int64_t idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); @@ -1432,7 +1432,7 @@ SQRESULT sq_getattributes(HRABBITVM v,SQInteger idx) return sq_throwerror(v,_SC("wrong index")); } -SQRESULT sq_getmemberhandle(HRABBITVM v,SQInteger idx,HSQMEMBERHANDLE *handle) +SQRESULT sq_getmemberhandle(HRABBITVM v,int64_t idx,HSQMEMBERHANDLE *handle) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); @@ -1479,7 +1479,7 @@ SQRESULT _getmemberbyhandle(HRABBITVM v,SQObjectPtr &self,const HSQMEMBERHANDLE return SQ_OK; } -SQRESULT sq_getbyhandle(HRABBITVM v,SQInteger idx,const HSQMEMBERHANDLE *handle) +SQRESULT sq_getbyhandle(HRABBITVM v,int64_t idx,const HSQMEMBERHANDLE *handle) { SQObjectPtr &self = stack_get(v,idx); SQObjectPtr *val = NULL; @@ -1490,7 +1490,7 @@ SQRESULT sq_getbyhandle(HRABBITVM v,SQInteger idx,const HSQMEMBERHANDLE *handle) return SQ_OK; } -SQRESULT sq_setbyhandle(HRABBITVM v,SQInteger idx,const HSQMEMBERHANDLE *handle) +SQRESULT sq_setbyhandle(HRABBITVM v,int64_t idx,const HSQMEMBERHANDLE *handle) { SQObjectPtr &self = stack_get(v,idx); SQObjectPtr &newval = stack_get(v,-1); @@ -1503,7 +1503,7 @@ SQRESULT sq_setbyhandle(HRABBITVM v,SQInteger idx,const HSQMEMBERHANDLE *handle) return SQ_OK; } -SQRESULT sq_getbase(HRABBITVM v,SQInteger idx) +SQRESULT sq_getbase(HRABBITVM v,int64_t idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); @@ -1514,7 +1514,7 @@ SQRESULT sq_getbase(HRABBITVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_getclass(HRABBITVM v,SQInteger idx) +SQRESULT sq_getclass(HRABBITVM v,int64_t idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_INSTANCE,o); @@ -1522,7 +1522,7 @@ SQRESULT sq_getclass(HRABBITVM v,SQInteger idx) return SQ_OK; } -SQRESULT sq_createinstance(HRABBITVM v,SQInteger idx) +SQRESULT sq_createinstance(HRABBITVM v,int64_t idx) { SQObjectPtr *o = NULL; _GETSAFE_OBJ(v, idx, OT_CLASS,o); @@ -1530,7 +1530,7 @@ SQRESULT sq_createinstance(HRABBITVM v,SQInteger idx) return SQ_OK; } -void sq_weakref(HRABBITVM v,SQInteger idx) +void sq_weakref(HRABBITVM v,int64_t idx) { SQObject &o=stack_get(v,idx); if(ISREFCOUNTED(sq_type(o))) { @@ -1540,7 +1540,7 @@ void sq_weakref(HRABBITVM v,SQInteger idx) v->Push(o); } -SQRESULT sq_getweakrefval(HRABBITVM v,SQInteger idx) +SQRESULT sq_getweakrefval(HRABBITVM v,int64_t idx) { SQObjectPtr &o = stack_get(v,idx); if(sq_type(o) != OT_WEAKREF) { @@ -1569,7 +1569,7 @@ SQRESULT sq_getdefaultdelegate(HRABBITVM v,SQObjectType t) return SQ_OK; } -SQRESULT sq_next(HRABBITVM v,SQInteger idx) +SQRESULT sq_next(HRABBITVM v,int64_t idx) { SQObjectPtr o=stack_get(v,idx),&refpos = stack_get(v,-1),realkey,val; if(sq_type(o) == OT_GENERATOR) { @@ -1588,11 +1588,11 @@ SQRESULT sq_next(HRABBITVM v,SQInteger idx) struct BufState{ const SQChar *buf; - SQInteger ptr; - SQInteger size; + int64_t ptr; + int64_t size; }; -SQInteger buf_lexfeed(SQUserPointer file) +int64_t buf_lexfeed(SQUserPointer file) { BufState *buf=(BufState*)file; if(buf->size<(buf->ptr+1)) @@ -1600,7 +1600,7 @@ SQInteger buf_lexfeed(SQUserPointer file) return buf->buf[buf->ptr++]; } -SQRESULT sq_compilebuffer(HRABBITVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror) { +SQRESULT sq_compilebuffer(HRABBITVM v,const SQChar *s,int64_t size,const SQChar *sourcename,SQBool raiseerror) { BufState buf; buf.buf = s; buf.size = size; @@ -1608,7 +1608,7 @@ SQRESULT sq_compilebuffer(HRABBITVM v,const SQChar *s,SQInteger size,const SQCha return sq_compile(v, buf_lexfeed, &buf, sourcename, raiseerror); } -void sq_move(HRABBITVM dest,HRABBITVM src,SQInteger idx) +void sq_move(HRABBITVM dest,HRABBITVM src,int64_t idx) { dest->Push(stack_get(src,idx)); } @@ -1629,17 +1629,17 @@ SQPRINTFUNCTION sq_geterrorfunc(HRABBITVM v) return _ss(v)->_errorfunc; } -void *sq_malloc(SQUnsignedInteger size) +void *sq_malloc(uint64_t size) { return SQ_MALLOC(size); } -void *sq_realloc(void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize) +void *sq_realloc(void* p,uint64_t oldsize,uint64_t newsize) { return SQ_REALLOC(p,oldsize,newsize); } -void sq_free(void *p,SQUnsignedInteger size) +void sq_free(void *p,uint64_t size) { SQ_FREE(p,size); } diff --git a/rabbit/sqarray.hpp b/rabbit/sqarray.hpp index 7a7821e..3253d91 100644 --- a/rabbit/sqarray.hpp +++ b/rabbit/sqarray.hpp @@ -7,17 +7,17 @@ */ #pragma once -struct SQArray : public CHAINABLE_OBJ +struct SQArray : public SQRefCounted { private: - SQArray(SQSharedState *ss,SQInteger nsize) { + SQArray(SQSharedState *ss,int64_t nsize) { _values.resize(nsize); } ~SQArray() { } public: - static SQArray* Create(SQSharedState *ss,SQInteger nInitialSize){ + static SQArray* Create(SQSharedState *ss,int64_t nInitialSize){ SQArray *newarray=(SQArray*)SQ_MALLOC(sizeof(SQArray)); new (newarray) SQArray(ss,nInitialSize); return newarray; @@ -25,29 +25,29 @@ public: void Finalize(){ _values.resize(0); } - bool Get(const SQInteger nidx,SQObjectPtr &val) + bool Get(const int64_t nidx,SQObjectPtr &val) { - if(nidx>=0 && nidx<(SQInteger)_values.size()){ + if(nidx>=0 && nidx<(int64_t)_values.size()){ SQObjectPtr &o = _values[nidx]; val = _realval(o); return true; } else return false; } - bool Set(const SQInteger nidx,const SQObjectPtr &val) + bool Set(const int64_t nidx,const SQObjectPtr &val) { - if(nidx>=0 && nidx<(SQInteger)_values.size()){ + if(nidx>=0 && nidx<(int64_t)_values.size()){ _values[nidx]=val; return true; } else return false; } - SQInteger Next(const SQObjectPtr &refpos,SQObjectPtr &outkey,SQObjectPtr &outval) + int64_t Next(const SQObjectPtr &refpos,SQObjectPtr &outkey,SQObjectPtr &outval) { - SQUnsignedInteger idx=TranslateIndex(refpos); + uint64_t idx=TranslateIndex(refpos); while(idx<_values.size()){ //first found - outkey=(SQInteger)idx; + outkey=(int64_t)idx; SQObjectPtr &o = _values[idx]; outval = _realval(o); //return idx for the next iteration @@ -57,20 +57,20 @@ public: return -1; } SQArray *Clone(){SQArray *anew=Create(NULL,0); anew->_values.copy(_values); return anew; } - SQInteger Size() const {return _values.size();} - void Resize(SQInteger size) + int64_t Size() const {return _values.size();} + void Resize(int64_t size) { SQObjectPtr _null; Resize(size,_null); } - void Resize(SQInteger size,SQObjectPtr &fill) { _values.resize(size,fill); ShrinkIfNeeded(); } - void Reserve(SQInteger size) { _values.reserve(size); } + void Resize(int64_t size,SQObjectPtr &fill) { _values.resize(size,fill); ShrinkIfNeeded(); } + void Reserve(int64_t size) { _values.reserve(size); } void Append(const SQObject &o){_values.push_back(o);} void Extend(const SQArray *a); SQObjectPtr &Top(){return _values.top();} void Pop(){_values.pop_back(); ShrinkIfNeeded(); } - bool Insert(SQInteger idx,const SQObject &val){ - if(idx < 0 || idx > (SQInteger)_values.size()) + bool Insert(int64_t idx,const SQObject &val){ + if(idx < 0 || idx > (int64_t)_values.size()) return false; _values.insert(idx,val); return true; @@ -79,8 +79,8 @@ public: if(_values.size() <= _values.capacity()>>2) //shrink the array _values.shrinktofit(); } - bool Remove(SQInteger idx){ - if(idx < 0 || idx >= (SQInteger)_values.size()) + bool Remove(int64_t idx){ + if(idx < 0 || idx >= (int64_t)_values.size()) return false; _values.remove(idx); ShrinkIfNeeded(); diff --git a/rabbit/sqbaselib.cpp b/rabbit/sqbaselib.cpp index 955233f..f37d145 100644 --- a/rabbit/sqbaselib.cpp +++ b/rabbit/sqbaselib.cpp @@ -17,7 +17,7 @@ #include #include -static bool str2num(const SQChar *s,SQObjectPtr &res,SQInteger base) +static bool str2num(const SQChar *s,SQObjectPtr &res,int64_t base) { SQChar *end; const SQChar *e = s; @@ -33,37 +33,37 @@ static bool str2num(const SQChar *s,SQObjectPtr &res,SQInteger base) e++; } if(isfloat){ - SQFloat r = SQFloat(scstrtod(s,&end)); + float_t r = float_t(scstrtod(s,&end)); if(s == end) return false; res = r; } else{ - SQInteger r = SQInteger(scstrtol(s,&end,(int)base)); + int64_t r = int64_t(scstrtol(s,&end,(int)base)); if(s == end) return false; res = r; } return true; } -static SQInteger base_dummy(HRABBITVM SQ_UNUSED_ARG(v)) +static int64_t base_dummy(HRABBITVM SQ_UNUSED_ARG(v)) { return 0; } -static SQInteger base_getroottable(HRABBITVM v) +static int64_t base_getroottable(HRABBITVM v) { v->Push(v->_roottable); return 1; } -static SQInteger base_getconsttable(HRABBITVM v) +static int64_t base_getconsttable(HRABBITVM v) { v->Push(_ss(v)->_consts); return 1; } -static SQInteger base_setroottable(HRABBITVM v) +static int64_t base_setroottable(HRABBITVM v) { SQObjectPtr o = v->_roottable; if(SQ_FAILED(sq_setroottable(v))) return SQ_ERROR; @@ -71,7 +71,7 @@ static SQInteger base_setroottable(HRABBITVM v) return 1; } -static SQInteger base_setconsttable(HRABBITVM v) +static int64_t base_setconsttable(HRABBITVM v) { SQObjectPtr o = _ss(v)->_consts; if(SQ_FAILED(sq_setconsttable(v))) return SQ_ERROR; @@ -79,19 +79,19 @@ static SQInteger base_setconsttable(HRABBITVM v) return 1; } -static SQInteger base_seterrorhandler(HRABBITVM v) +static int64_t base_seterrorhandler(HRABBITVM v) { sq_seterrorhandler(v); return 0; } -static SQInteger base_setdebughook(HRABBITVM v) +static int64_t base_setdebughook(HRABBITVM v) { sq_setdebughook(v); return 0; } -static SQInteger base_enabledebuginfo(HRABBITVM v) +static int64_t base_enabledebuginfo(HRABBITVM v) { SQObjectPtr &o=stack_get(v,2); @@ -99,10 +99,10 @@ static SQInteger base_enabledebuginfo(HRABBITVM v) return 0; } -static SQInteger __getcallstackinfos(HRABBITVM v,SQInteger level) +static int64_t __getcallstackinfos(HRABBITVM v,int64_t level) { SQStackInfos si; - SQInteger seq = 0; + int64_t seq = 0; const SQChar *name = NULL; if (SQ_SUCCEEDED(sq_stackinfos(v, level, &si))) @@ -137,17 +137,17 @@ static SQInteger __getcallstackinfos(HRABBITVM v,SQInteger level) return 0; } -static SQInteger base_getstackinfos(HRABBITVM v) +static int64_t base_getstackinfos(HRABBITVM v) { - SQInteger level; + int64_t level; sq_getinteger(v, -1, &level); return __getcallstackinfos(v,level); } -static SQInteger base_assert(HRABBITVM v) +static int64_t base_assert(HRABBITVM v) { if(SQVM::IsFalse(stack_get(v,2))){ - SQInteger top = sq_gettop(v); + int64_t top = sq_gettop(v); if (top>2 && SQ_SUCCEEDED(sq_tostring(v,3))) { const SQChar *str = 0; if (SQ_SUCCEEDED(sq_getstring(v,-1,&str))) { @@ -159,9 +159,9 @@ static SQInteger base_assert(HRABBITVM v) return 0; } -static SQInteger get_slice_params(HRABBITVM v,SQInteger &sidx,SQInteger &eidx,SQObjectPtr &o) +static int64_t get_slice_params(HRABBITVM v,int64_t &sidx,int64_t &eidx,SQObjectPtr &o) { - SQInteger top = sq_gettop(v); + int64_t top = sq_gettop(v); sidx=0; eidx=0; o=stack_get(v,1); @@ -183,7 +183,7 @@ static SQInteger get_slice_params(HRABBITVM v,SQInteger &sidx,SQInteger &eidx,SQ return 1; } -static SQInteger base_print(HRABBITVM v) +static int64_t base_print(HRABBITVM v) { const SQChar *str; if(SQ_SUCCEEDED(sq_tostring(v,2))) @@ -196,7 +196,7 @@ static SQInteger base_print(HRABBITVM v) return SQ_ERROR; } -static SQInteger base_error(HRABBITVM v) +static int64_t base_error(HRABBITVM v) { const SQChar *str; if(SQ_SUCCEEDED(sq_tostring(v,2))) @@ -209,11 +209,11 @@ static SQInteger base_error(HRABBITVM v) return SQ_ERROR; } -static SQInteger base_compilestring(HRABBITVM v) +static int64_t base_compilestring(HRABBITVM v) { - SQInteger nargs=sq_gettop(v); + int64_t nargs=sq_gettop(v); const SQChar *src=NULL,*name=_SC("unnamedbuffer"); - SQInteger size; + int64_t size; sq_getstring(v,2,&src); size=sq_getsize(v,2); if(nargs>2){ @@ -225,21 +225,21 @@ static SQInteger base_compilestring(HRABBITVM v) return SQ_ERROR; } -static SQInteger base_newthread(HRABBITVM v) +static int64_t base_newthread(HRABBITVM v) { SQObjectPtr &func = stack_get(v,2); - SQInteger stksize = (_closure(func)->_function->_stacksize << 1) +2; + int64_t stksize = (_closure(func)->_function->_stacksize << 1) +2; 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(HRABBITVM v) +static int64_t base_suspend(HRABBITVM v) { return sq_suspendvm(v); } -static SQInteger base_array(HRABBITVM v) +static int64_t base_array(HRABBITVM v) { SQArray *a; SQObject &size = stack_get(v,2); @@ -254,14 +254,14 @@ static SQInteger base_array(HRABBITVM v) return 1; } -static SQInteger base_type(HRABBITVM v) +static int64_t 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(HRABBITVM v) +static int64_t base_callee(HRABBITVM v) { if(v->_callsstacksize > 1) { @@ -296,7 +296,7 @@ static const SQRegFunction base_funcs[]={ void sq_base_register(HRABBITVM v) { - SQInteger i=0; + int64_t i=0; sq_pushroottable(v); while(base_funcs[i].name!=0) { sq_pushstring(v,base_funcs[i].name,-1); @@ -317,21 +317,21 @@ void sq_base_register(HRABBITVM v) sq_pushinteger(v,sizeof(SQChar)); sq_newslot(v,-3, SQFalse); sq_pushstring(v,_SC("_intsize_"),-1); - sq_pushinteger(v,sizeof(SQInteger)); + sq_pushinteger(v,sizeof(int64_t)); sq_newslot(v,-3, SQFalse); sq_pushstring(v,_SC("_floatsize_"),-1); - sq_pushinteger(v,sizeof(SQFloat)); + sq_pushinteger(v,sizeof(float_t)); sq_newslot(v,-3, SQFalse); sq_pop(v,1); } -static SQInteger default_delegate_len(HRABBITVM v) +static int64_t default_delegate_len(HRABBITVM v) { - v->Push(SQInteger(sq_getsize(v,1))); + v->Push(int64_t(sq_getsize(v,1))); return 1; } -static SQInteger default_delegate_tofloat(HRABBITVM v) +static int64_t default_delegate_tofloat(HRABBITVM v) { SQObjectPtr &o=stack_get(v,1); switch(sq_type(o)){ @@ -347,7 +347,7 @@ static SQInteger default_delegate_tofloat(HRABBITVM v) v->Push(SQObjectPtr(tofloat(o))); break; case OT_BOOL: - v->Push(SQObjectPtr((SQFloat)(_integer(o)?1:0))); + v->Push(SQObjectPtr((float_t)(_integer(o)?1:0))); break; default: v->PushNull(); @@ -356,10 +356,10 @@ static SQInteger default_delegate_tofloat(HRABBITVM v) return 1; } -static SQInteger default_delegate_tointeger(HRABBITVM v) +static int64_t default_delegate_tointeger(HRABBITVM v) { SQObjectPtr &o=stack_get(v,1); - SQInteger base = 10; + int64_t base = 10; if(sq_gettop(v) > 1) { sq_getinteger(v,2,&base); } @@ -376,7 +376,7 @@ static SQInteger default_delegate_tointeger(HRABBITVM v) v->Push(SQObjectPtr(tointeger(o))); break; case OT_BOOL: - v->Push(SQObjectPtr(_integer(o)?(SQInteger)1:(SQInteger)0)); + v->Push(SQObjectPtr(_integer(o)?(int64_t)1:(int64_t)0)); break; default: v->PushNull(); @@ -385,26 +385,26 @@ static SQInteger default_delegate_tointeger(HRABBITVM v) return 1; } -static SQInteger default_delegate_tostring(HRABBITVM v) +static int64_t default_delegate_tostring(HRABBITVM v) { if(SQ_FAILED(sq_tostring(v,1))) return SQ_ERROR; return 1; } -static SQInteger obj_delegate_weakref(HRABBITVM v) +static int64_t obj_delegate_weakref(HRABBITVM v) { sq_weakref(v,1); return 1; } -static SQInteger obj_clear(HRABBITVM v) +static int64_t obj_clear(HRABBITVM v) { return SQ_SUCCEEDED(sq_clear(v,-1)) ? 1 : SQ_ERROR; } -static SQInteger number_delegate_tochar(HRABBITVM v) +static int64_t number_delegate_tochar(HRABBITVM v) { SQObject &o=stack_get(v,1); SQChar c = (SQChar)tointeger(o); @@ -417,7 +417,7 @@ static SQInteger number_delegate_tochar(HRABBITVM v) ///////////////////////////////////////////////////////////////// //TABLE DEFAULT DELEGATE -static SQInteger table_rawdelete(HRABBITVM v) +static int64_t table_rawdelete(HRABBITVM v) { if(SQ_FAILED(sq_rawdeleteslot(v,1,SQTrue))) return SQ_ERROR; @@ -425,7 +425,7 @@ static SQInteger table_rawdelete(HRABBITVM v) } -static SQInteger container_rawexists(HRABBITVM v) +static int64_t container_rawexists(HRABBITVM v) { if(SQ_SUCCEEDED(sq_rawget(v,-2))) { sq_pushbool(v,SQTrue); @@ -435,18 +435,18 @@ static SQInteger container_rawexists(HRABBITVM v) return 1; } -static SQInteger container_rawset(HRABBITVM v) +static int64_t container_rawset(HRABBITVM v) { return SQ_SUCCEEDED(sq_rawset(v,-3)) ? 1 : SQ_ERROR; } -static SQInteger container_rawget(HRABBITVM v) +static int64_t container_rawget(HRABBITVM v) { return SQ_SUCCEEDED(sq_rawget(v,-2))?1:SQ_ERROR; } -static SQInteger table_setdelegate(HRABBITVM v) +static int64_t table_setdelegate(HRABBITVM v) { if(SQ_FAILED(sq_setdelegate(v,-2))) return SQ_ERROR; @@ -454,21 +454,21 @@ static SQInteger table_setdelegate(HRABBITVM v) return 1; } -static SQInteger table_getdelegate(HRABBITVM v) +static int64_t table_getdelegate(HRABBITVM v) { return SQ_SUCCEEDED(sq_getdelegate(v,-1))?1:SQ_ERROR; } -static SQInteger table_filter(HRABBITVM v) +static int64_t table_filter(HRABBITVM v) { SQObject &o = stack_get(v,1); SQTable *tbl = _table(o); SQObjectPtr ret = SQTable::Create(_ss(v),0); SQObjectPtr itr, key, val; - SQInteger nitr; + int64_t nitr; while((nitr = tbl->Next(false, itr, key, val)) != -1) { - itr = (SQInteger)nitr; + itr = (int64_t)nitr; v->Push(o); v->Push(key); @@ -504,29 +504,29 @@ const SQRegFunction SQSharedState::_table_default_delegate_funcz[]={ //ARRAY DEFAULT DELEGATE/////////////////////////////////////// -static SQInteger array_append(HRABBITVM v) +static int64_t array_append(HRABBITVM v) { return SQ_SUCCEEDED(sq_arrayappend(v,-2)) ? 1 : SQ_ERROR; } -static SQInteger array_extend(HRABBITVM v) +static int64_t 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(HRABBITVM v) +static int64_t array_reverse(HRABBITVM v) { return SQ_SUCCEEDED(sq_arrayreverse(v,-1)) ? 1 : SQ_ERROR; } -static SQInteger array_pop(HRABBITVM v) +static int64_t array_pop(HRABBITVM v) { return SQ_SUCCEEDED(sq_arraypop(v,1,SQTrue))?1:SQ_ERROR; } -static SQInteger array_top(HRABBITVM v) +static int64_t array_top(HRABBITVM v) { SQObject &o=stack_get(v,1); if(_array(o)->Size()>0){ @@ -536,7 +536,7 @@ static SQInteger array_top(HRABBITVM v) else return sq_throwerror(v,_SC("top() on a empty array")); } -static SQInteger array_insert(HRABBITVM v) +static int64_t array_insert(HRABBITVM v) { SQObject &o=stack_get(v,1); SQObject &idx=stack_get(v,2); @@ -547,7 +547,7 @@ static SQInteger array_insert(HRABBITVM v) return 1; } -static SQInteger array_remove(HRABBITVM v) +static int64_t array_remove(HRABBITVM v) { SQObject &o = stack_get(v, 1); SQObject &idx = stack_get(v, 2); @@ -561,13 +561,13 @@ static SQInteger array_remove(HRABBITVM v) return sq_throwerror(v, _SC("idx out of range")); } -static SQInteger array_resize(HRABBITVM v) +static int64_t array_resize(HRABBITVM v) { SQObject &o = stack_get(v, 1); SQObject &nsize = stack_get(v, 2); SQObjectPtr fill; if(sq_isnumeric(nsize)) { - SQInteger sz = tointeger(nsize); + int64_t sz = tointeger(nsize); if (sz<0) return sq_throwerror(v, _SC("resizing to negative length")); @@ -580,10 +580,10 @@ static SQInteger array_resize(HRABBITVM v) return sq_throwerror(v, _SC("size must be a number")); } -static SQInteger __map_array(SQArray *dest,SQArray *src,HRABBITVM v) { +static int64_t __map_array(SQArray *dest,SQArray *src,HRABBITVM v) { SQObjectPtr temp; - SQInteger size = src->Size(); - for(SQInteger n = 0; n < size; n++) { + int64_t size = src->Size(); + for(int64_t n = 0; n < size; n++) { src->Get(n,temp); v->Push(src); v->Push(temp); @@ -596,10 +596,10 @@ static SQInteger __map_array(SQArray *dest,SQArray *src,HRABBITVM v) { return 0; } -static SQInteger array_map(HRABBITVM v) +static int64_t array_map(HRABBITVM v) { SQObject &o = stack_get(v,1); - SQInteger size = _array(o)->Size(); + int64_t size = _array(o)->Size(); SQObjectPtr ret = SQArray::Create(_ss(v),size); if(SQ_FAILED(__map_array(_array(ret),_array(o),v))) return SQ_ERROR; @@ -607,7 +607,7 @@ static SQInteger array_map(HRABBITVM v) return 1; } -static SQInteger array_apply(HRABBITVM v) +static int64_t array_apply(HRABBITVM v) { SQObject &o = stack_get(v,1); if(SQ_FAILED(__map_array(_array(o),_array(o),v))) @@ -616,11 +616,11 @@ static SQInteger array_apply(HRABBITVM v) return 1; } -static SQInteger array_reduce(HRABBITVM v) +static int64_t array_reduce(HRABBITVM v) { SQObject &o = stack_get(v,1); SQArray *a = _array(o); - SQInteger size = a->Size(); + int64_t size = a->Size(); if(size == 0) { return 0; } @@ -628,7 +628,7 @@ static SQInteger array_reduce(HRABBITVM v) a->Get(0,res); if(size > 1) { SQObjectPtr other; - for(SQInteger n = 1; n < size; n++) { + for(int64_t n = 1; n < size; n++) { a->Get(n,other); v->Push(o); v->Push(res); @@ -644,14 +644,14 @@ static SQInteger array_reduce(HRABBITVM v) return 1; } -static SQInteger array_filter(HRABBITVM v) +static int64_t array_filter(HRABBITVM v) { SQObject &o = stack_get(v,1); SQArray *a = _array(o); SQObjectPtr ret = SQArray::Create(_ss(v),0); - SQInteger size = a->Size(); + int64_t size = a->Size(); SQObjectPtr val; - for(SQInteger n = 0; n < size; n++) { + for(int64_t n = 0; n < size; n++) { a->Get(n,val); v->Push(o); v->Push(n); @@ -668,14 +668,14 @@ static SQInteger array_filter(HRABBITVM v) return 1; } -static SQInteger array_find(HRABBITVM v) +static int64_t array_find(HRABBITVM v) { SQObject &o = stack_get(v,1); SQObjectPtr &val = stack_get(v,2); SQArray *a = _array(o); - SQInteger size = a->Size(); + int64_t size = a->Size(); SQObjectPtr temp; - for(SQInteger n = 0; n < size; n++) { + for(int64_t n = 0; n < size; n++) { bool res = false; a->Get(n,temp); if(SQVM::IsEqual(temp,val,res) && res) { @@ -687,13 +687,13 @@ static SQInteger array_find(HRABBITVM v) } -static bool _sort_compare(HRABBITVM v,SQObjectPtr &a,SQObjectPtr &b,SQInteger func,SQInteger &ret) +static bool _sort_compare(HRABBITVM v,SQObjectPtr &a,SQObjectPtr &b,int64_t func,int64_t &ret) { if(func < 0) { if(!v->ObjCmp(a,b,ret)) return false; } else { - SQInteger top = sq_gettop(v); + int64_t top = sq_gettop(v); sq_push(v, func); sq_pushroottable(v); v->Push(a); @@ -713,12 +713,12 @@ static bool _sort_compare(HRABBITVM v,SQObjectPtr &a,SQObjectPtr &b,SQInteger fu return true; } -static bool _hsort_sift_down(HRABBITVM v,SQArray *arr, SQInteger root, SQInteger bottom, SQInteger func) +static bool _hsort_sift_down(HRABBITVM v,SQArray *arr, int64_t root, int64_t bottom, int64_t func) { - SQInteger maxChild; - SQInteger done = 0; - SQInteger ret; - SQInteger root2; + int64_t maxChild; + int64_t done = 0; + int64_t ret; + int64_t root2; while (((root2 = root * 2) <= bottom) && (!done)) { if (root2 == bottom) { @@ -753,11 +753,11 @@ static bool _hsort_sift_down(HRABBITVM v,SQArray *arr, SQInteger root, SQInteger return true; } -static bool _hsort(HRABBITVM v,SQObjectPtr &arr, SQInteger SQ_UNUSED_ARG(l), SQInteger SQ_UNUSED_ARG(r),SQInteger func) +static bool _hsort(HRABBITVM v,SQObjectPtr &arr, int64_t SQ_UNUSED_ARG(l), int64_t SQ_UNUSED_ARG(r),int64_t func) { SQArray *a = _array(arr); - SQInteger i; - SQInteger array_size = a->Size(); + int64_t i; + int64_t array_size = a->Size(); for (i = (array_size / 2); i >= 0; i--) { if(!_hsort_sift_down(v,a, i, array_size - 1,func)) return false; } @@ -770,9 +770,9 @@ static bool _hsort(HRABBITVM v,SQObjectPtr &arr, SQInteger SQ_UNUSED_ARG(l), SQI return true; } -static SQInteger array_sort(HRABBITVM v) +static int64_t array_sort(HRABBITVM v) { - SQInteger func = -1; + int64_t func = -1; SQObjectPtr &o = stack_get(v,1); if(_array(o)->Size() > 1) { if(sq_gettop(v) == 2) func = 2; @@ -784,20 +784,20 @@ static SQInteger array_sort(HRABBITVM v) return 1; } -static SQInteger array_slice(HRABBITVM v) +static int64_t array_slice(HRABBITVM v) { - SQInteger sidx,eidx; + int64_t sidx,eidx; SQObjectPtr o; if(get_slice_params(v,sidx,eidx,o)==-1)return -1; - SQInteger alen = _array(o)->Size(); + int64_t alen = _array(o)->Size(); if(sidx < 0)sidx = alen + sidx; if(eidx < 0)eidx = alen + eidx; if(eidx < sidx)return sq_throwerror(v,_SC("wrong indexes")); if(eidx > alen || sidx < 0)return sq_throwerror(v, _SC("slice out of range")); SQArray *arr=SQArray::Create(_ss(v),eidx-sidx); SQObjectPtr t; - SQInteger count=0; - for(SQInteger i=sidx;iGet(i,t); arr->Set(count++,t); } @@ -831,12 +831,12 @@ const SQRegFunction SQSharedState::_array_default_delegate_funcz[]={ }; //STRING DEFAULT DELEGATE////////////////////////// -static SQInteger string_slice(HRABBITVM v) +static int64_t string_slice(HRABBITVM v) { - SQInteger sidx,eidx; + int64_t sidx,eidx; SQObjectPtr o; if(SQ_FAILED(get_slice_params(v,sidx,eidx,o)))return -1; - SQInteger slen = _string(o)->_len; + int64_t slen = _string(o)->_len; if(sidx < 0)sidx = slen + sidx; if(eidx < 0)eidx = slen + eidx; if(eidx < sidx) return sq_throwerror(v,_SC("wrong indexes")); @@ -845,16 +845,16 @@ static SQInteger string_slice(HRABBITVM v) return 1; } -static SQInteger string_find(HRABBITVM v) +static int64_t string_find(HRABBITVM v) { - SQInteger top,start_idx=0; + int64_t top,start_idx=0; const SQChar *str,*substr,*ret; if(((top=sq_gettop(v))>1) && SQ_SUCCEEDED(sq_getstring(v,1,&str)) && SQ_SUCCEEDED(sq_getstring(v,2,&substr))){ if(top>2)sq_getinteger(v,3,&start_idx); if((sq_getsize(v,1)>start_idx) && (start_idx>=0)){ ret=scstrstr(&str[start_idx],substr); if(ret){ - sq_pushinteger(v,(SQInteger)(ret-str)); + sq_pushinteger(v,(int64_t)(ret-str)); return 1; } } @@ -863,21 +863,21 @@ static SQInteger string_find(HRABBITVM v) return sq_throwerror(v,_SC("invalid param")); } -#define STRING_TOFUNCZ(func) static SQInteger string_##func(HRABBITVM v) \ +#define STRING_TOFUNCZ(func) static int64_t string_##func(HRABBITVM v) \ {\ - SQInteger sidx,eidx; \ + int64_t sidx,eidx; \ SQObjectPtr str; \ if(SQ_FAILED(get_slice_params(v,sidx,eidx,str)))return -1; \ - SQInteger slen = _string(str)->_len; \ + int64_t slen = _string(str)->_len; \ if(sidx < 0)sidx = slen + sidx; \ if(eidx < 0)eidx = slen + eidx; \ if(eidx < sidx) return sq_throwerror(v,_SC("wrong indexes")); \ if(eidx > slen || sidx < 0) return sq_throwerror(v,_SC("slice out of range")); \ - SQInteger len=_string(str)->_len; \ + int64_t len=_string(str)->_len; \ const SQChar *sthis=_stringval(str); \ SQChar *snew=(_ss(v)->GetScratchPad(sq_rsl(len))); \ memcpy(snew,sthis,sq_rsl(len));\ - for(SQInteger i=sidx;iPush(SQString::Create(_ss(v),snew,len)); \ return 1; \ } @@ -910,12 +910,12 @@ const SQRegFunction SQSharedState::_number_default_delegate_funcz[]={ }; //CLOSURE DEFAULT DELEGATE////////////////////////// -static SQInteger closure_pcall(HRABBITVM v) +static int64_t closure_pcall(HRABBITVM v) { return SQ_SUCCEEDED(sq_call(v,sq_gettop(v)-1,SQTrue,SQFalse))?1:SQ_ERROR; } -static SQInteger closure_call(HRABBITVM v) +static int64_t closure_call(HRABBITVM v) { SQObjectPtr &c = stack_get(v, -1); if (sq_type(c) == OT_CLOSURE && (_closure(c)->_function->_bgenerator == false)) @@ -925,59 +925,59 @@ static SQInteger closure_call(HRABBITVM v) return SQ_SUCCEEDED(sq_call(v, sq_gettop(v) - 1, SQTrue, SQTrue)) ? 1 : SQ_ERROR; } -static SQInteger _closure_acall(HRABBITVM v,SQBool raiseerror) +static int64_t _closure_acall(HRABBITVM v,SQBool raiseerror) { SQArray *aparams=_array(stack_get(v,2)); - SQInteger nparams=aparams->Size(); + int64_t nparams=aparams->Size(); v->Push(stack_get(v,1)); - for(SQInteger i=0;iPush(aparams->_values[i]); + for(int64_t i=0;iPush(aparams->_values[i]); return SQ_SUCCEEDED(sq_call(v,nparams,SQTrue,raiseerror))?1:SQ_ERROR; } -static SQInteger closure_acall(HRABBITVM v) +static int64_t closure_acall(HRABBITVM v) { return _closure_acall(v,SQTrue); } -static SQInteger closure_pacall(HRABBITVM v) +static int64_t closure_pacall(HRABBITVM v) { return _closure_acall(v,SQFalse); } -static SQInteger closure_bindenv(HRABBITVM v) +static int64_t closure_bindenv(HRABBITVM v) { if(SQ_FAILED(sq_bindenv(v,1))) return SQ_ERROR; return 1; } -static SQInteger closure_getroot(HRABBITVM v) +static int64_t closure_getroot(HRABBITVM v) { if(SQ_FAILED(sq_getclosureroot(v,-1))) return SQ_ERROR; return 1; } -static SQInteger closure_setroot(HRABBITVM v) +static int64_t closure_setroot(HRABBITVM v) { if(SQ_FAILED(sq_setclosureroot(v,-2))) return SQ_ERROR; return 1; } -static SQInteger closure_getinfos(HRABBITVM v) { +static int64_t closure_getinfos(HRABBITVM v) { SQObject o = stack_get(v,1); SQTable *res = SQTable::Create(_ss(v),4); if(sq_type(o) == OT_CLOSURE) { SQFunctionProto *f = _closure(o)->_function; - SQInteger nparams = f->_nparameters + (f->_varparams?1:0); + int64_t nparams = f->_nparameters + (f->_varparams?1:0); SQObjectPtr params = SQArray::Create(_ss(v),nparams); SQObjectPtr defparams = SQArray::Create(_ss(v),f->_ndefaultparams); - for(SQInteger n = 0; n_nparameters; n++) { - _array(params)->Set((SQInteger)n,f->_parameters[n]); + for(int64_t n = 0; n_nparameters; n++) { + _array(params)->Set((int64_t)n,f->_parameters[n]); } - for(SQInteger j = 0; j_ndefaultparams; j++) { - _array(defparams)->Set((SQInteger)j,_closure(o)->_defaultparams[j]); + for(int64_t j = 0; j_ndefaultparams; j++) { + _array(defparams)->Set((int64_t)j,_closure(o)->_defaultparams[j]); } if(f->_varparams) { _array(params)->Set(nparams-1,SQString::Create(_ss(v),_SC("..."),-1)); @@ -998,8 +998,8 @@ static SQInteger closure_getinfos(HRABBITVM v) { if(nc->_typecheck.size() > 0) { typecheck = SQArray::Create(_ss(v), nc->_typecheck.size()); - for(SQUnsignedInteger n = 0; n_typecheck.size(); n++) { - _array(typecheck)->Set((SQInteger)n,nc->_typecheck[n]); + for(uint64_t n = 0; n_typecheck.size(); n++) { + _array(typecheck)->Set((int64_t)n,nc->_typecheck[n]); } } res->NewSlot(SQString::Create(_ss(v),_SC("typecheck"),-1),typecheck); @@ -1025,7 +1025,7 @@ const SQRegFunction SQSharedState::_closure_default_delegate_funcz[]={ }; //GENERATOR DEFAULT DELEGATE -static SQInteger generator_getstatus(HRABBITVM v) +static int64_t generator_getstatus(HRABBITVM v) { SQObject &o=stack_get(v,1); switch(_generator(o)->_state){ @@ -1044,13 +1044,13 @@ const SQRegFunction SQSharedState::_generator_default_delegate_funcz[]={ }; //THREAD DEFAULT DELEGATE -static SQInteger thread_call(HRABBITVM v) +static int64_t thread_call(HRABBITVM v) { SQObjectPtr o = stack_get(v,1); if(sq_type(o) == OT_THREAD) { - SQInteger nparams = sq_gettop(v); + int64_t nparams = sq_gettop(v); _thread(o)->Push(_thread(o)->_roottable); - for(SQInteger i = 2; i<(nparams+1); i++) + for(int64_t i = 2; i<(nparams+1); i++) sq_move(_thread(o),v,i); if(SQ_SUCCEEDED(sq_call(_thread(o),nparams,SQTrue,SQTrue))) { sq_move(v,_thread(o),-1); @@ -1063,12 +1063,12 @@ static SQInteger thread_call(HRABBITVM v) return sq_throwerror(v,_SC("wrong parameter")); } -static SQInteger thread_wakeup(HRABBITVM v) +static int64_t thread_wakeup(HRABBITVM v) { SQObjectPtr o = stack_get(v,1); if(sq_type(o) == OT_THREAD) { SQVM *thread = _thread(o); - SQInteger state = sq_getvmstate(thread); + int64_t state = sq_getvmstate(thread); if(state != SQ_VMSTATE_SUSPENDED) { switch(state) { case SQ_VMSTATE_IDLE: @@ -1080,7 +1080,7 @@ static SQInteger thread_wakeup(HRABBITVM v) } } - SQInteger wakeupret = sq_gettop(v)>1?SQTrue:SQFalse; + int64_t wakeupret = sq_gettop(v)>1?SQTrue:SQFalse; if(wakeupret) { sq_move(thread,v,2); } @@ -1099,12 +1099,12 @@ static SQInteger thread_wakeup(HRABBITVM v) return sq_throwerror(v,_SC("wrong parameter")); } -static SQInteger thread_wakeupthrow(HRABBITVM v) +static int64_t thread_wakeupthrow(HRABBITVM v) { SQObjectPtr o = stack_get(v,1); if(sq_type(o) == OT_THREAD) { SQVM *thread = _thread(o); - SQInteger state = sq_getvmstate(thread); + int64_t state = sq_getvmstate(thread); if(state != SQ_VMSTATE_SUSPENDED) { switch(state) { case SQ_VMSTATE_IDLE: @@ -1140,7 +1140,7 @@ static SQInteger thread_wakeupthrow(HRABBITVM v) return sq_throwerror(v,_SC("wrong parameter")); } -static SQInteger thread_getstatus(HRABBITVM v) +static int64_t thread_getstatus(HRABBITVM v) { SQObjectPtr &o = stack_get(v,1); switch(sq_getvmstate(_thread(o))) { @@ -1159,13 +1159,13 @@ static SQInteger thread_getstatus(HRABBITVM v) return 1; } -static SQInteger thread_getstackinfos(HRABBITVM v) +static int64_t thread_getstackinfos(HRABBITVM v) { SQObjectPtr o = stack_get(v,1); if(sq_type(o) == OT_THREAD) { SQVM *thread = _thread(o); - SQInteger threadtop = sq_gettop(thread); - SQInteger level; + int64_t threadtop = sq_gettop(thread); + int64_t level; sq_getinteger(v,-1,&level); SQRESULT res = __getcallstackinfos(thread,level); if(SQ_FAILED(res)) @@ -1203,29 +1203,29 @@ const SQRegFunction SQSharedState::_thread_default_delegate_funcz[] = { {NULL,(SQFUNCTION)0,0,NULL} }; -static SQInteger class_getattributes(HRABBITVM v) +static int64_t class_getattributes(HRABBITVM v) { return SQ_SUCCEEDED(sq_getattributes(v,-2))?1:SQ_ERROR; } -static SQInteger class_setattributes(HRABBITVM v) +static int64_t class_setattributes(HRABBITVM v) { return SQ_SUCCEEDED(sq_setattributes(v,-3))?1:SQ_ERROR; } -static SQInteger class_instance(HRABBITVM v) +static int64_t class_instance(HRABBITVM v) { return SQ_SUCCEEDED(sq_createinstance(v,-1))?1:SQ_ERROR; } -static SQInteger class_getbase(HRABBITVM v) +static int64_t class_getbase(HRABBITVM v) { return SQ_SUCCEEDED(sq_getbase(v,-1))?1:SQ_ERROR; } -static SQInteger class_newmember(HRABBITVM v) +static int64_t class_newmember(HRABBITVM v) { - SQInteger top = sq_gettop(v); + int64_t top = sq_gettop(v); SQBool bstatic = SQFalse; if(top == 5) { @@ -1239,9 +1239,9 @@ static SQInteger class_newmember(HRABBITVM v) return SQ_SUCCEEDED(sq_newmember(v,-4,bstatic))?1:SQ_ERROR; } -static SQInteger class_rawnewmember(HRABBITVM v) +static int64_t class_rawnewmember(HRABBITVM v) { - SQInteger top = sq_gettop(v); + int64_t top = sq_gettop(v); SQBool bstatic = SQFalse; if(top == 5) { @@ -1271,7 +1271,7 @@ const SQRegFunction SQSharedState::_class_default_delegate_funcz[] = { }; -static SQInteger instance_getclass(HRABBITVM v) +static int64_t instance_getclass(HRABBITVM v) { if(SQ_SUCCEEDED(sq_getclass(v,1))) return 1; @@ -1288,7 +1288,7 @@ const SQRegFunction SQSharedState::_instance_default_delegate_funcz[] = { {NULL,(SQFUNCTION)0,0,NULL} }; -static SQInteger weakref_ref(HRABBITVM v) +static int64_t 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 02c21a8..33e7948 100644 --- a/rabbit/sqclass.cpp +++ b/rabbit/sqclass.cpp @@ -62,7 +62,7 @@ bool SQClass::NewSlot(SQSharedState *ss,const SQObjectPtr &key,const SQObjectPtr return true; } if(belongs_to_static_table) { - SQInteger mmidx; + int64_t mmidx; if((sq_type(val) == OT_CLOSURE || sq_type(val) == OT_NATIVECLOSURE) && (mmidx = ss->GetMetaMethodIdxByName(key)) != -1) { _metamethods[mmidx] = val; @@ -78,7 +78,7 @@ bool SQClass::NewSlot(SQSharedState *ss,const SQObjectPtr &key,const SQObjectPtr bool isconstructor; SQVM::IsEqual(ss->_constructoridx, key, isconstructor); if(isconstructor) { - _constructoridx = (SQInteger)_methods.size(); + _constructoridx = (int64_t)_methods.size(); } SQClassMember m; m.val = theval; @@ -104,10 +104,10 @@ SQInstance *SQClass::CreateInstance() return SQInstance::Create(NULL,this); } -SQInteger SQClass::Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval) +int64_t SQClass::Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval) { SQObjectPtr oval; - SQInteger idx = _members->Next(false,refpos,outkey,oval); + int64_t idx = _members->Next(false,refpos,outkey,oval); if(idx != -1) { if(_ismethod(oval)) { outval = _methods[_member_idx(oval)].val; @@ -152,23 +152,23 @@ void SQInstance::Init(SQSharedState *ss) _delegate = _class->_members; } -SQInstance::SQInstance(SQSharedState *ss, SQClass *c, SQInteger memsize) +SQInstance::SQInstance(SQSharedState *ss, SQClass *c, int64_t memsize) { _memsize = memsize; _class = c; - SQUnsignedInteger nvalues = _class->_defaultvalues.size(); - for(SQUnsignedInteger n = 0; n < nvalues; n++) { + uint64_t nvalues = _class->_defaultvalues.size(); + for(uint64_t n = 0; n < nvalues; n++) { new (&_values[n]) SQObjectPtr(_class->_defaultvalues[n].val); } Init(ss); } -SQInstance::SQInstance(SQSharedState *ss, SQInstance *i, SQInteger memsize) +SQInstance::SQInstance(SQSharedState *ss, SQInstance *i, int64_t memsize) { _memsize = memsize; _class = i->_class; - SQUnsignedInteger nvalues = _class->_defaultvalues.size(); - for(SQUnsignedInteger n = 0; n < nvalues; n++) { + uint64_t nvalues = _class->_defaultvalues.size(); + for(uint64_t n = 0; n < nvalues; n++) { new (&_values[n]) SQObjectPtr(i->_values[n]); } Init(ss); @@ -176,7 +176,7 @@ SQInstance::SQInstance(SQSharedState *ss, SQInstance *i, SQInteger memsize) void SQInstance::Finalize() { - SQUnsignedInteger nvalues = _class->_defaultvalues.size(); + uint64_t nvalues = _class->_defaultvalues.size(); __ObjRelease(_class); _NULL_SQOBJECT_VECTOR(_values,nvalues); } diff --git a/rabbit/sqclass.hpp b/rabbit/sqclass.hpp index 8713140..25a8f9b 100644 --- a/rabbit/sqclass.hpp +++ b/rabbit/sqclass.hpp @@ -25,8 +25,8 @@ typedef sqvector SQClassMemberVec; #define _ismethod(o) (_integer(o)&MEMBER_TYPE_METHOD) #define _isfield(o) (_integer(o)&MEMBER_TYPE_FIELD) -#define _make_method_idx(i) ((SQInteger)(MEMBER_TYPE_METHOD|i)) -#define _make_field_idx(i) ((SQInteger)(MEMBER_TYPE_FIELD|i)) +#define _make_method_idx(i) ((int64_t)(MEMBER_TYPE_METHOD|i)) +#define _make_field_idx(i) ((int64_t)(MEMBER_TYPE_FIELD|i)) #define _member_type(o) (_integer(o)&0xFF000000) #define _member_idx(o) (_integer(o)&0x00FFFFFF) @@ -70,7 +70,7 @@ public: sq_delete(this, SQClass); } void Finalize(); - SQInteger Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval); + int64_t Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval); SQInstance *CreateInstance(); SQTable *_members; SQClass *_base; @@ -81,8 +81,8 @@ public: SQUserPointer _typetag; SQRELEASEHOOK _hook; bool _locked; - SQInteger _constructoridx; - SQInteger _udsize; + int64_t _constructoridx; + int64_t _udsize; }; #define calcinstancesize(_theclass_) \ @@ -91,12 +91,12 @@ public: struct SQInstance : public SQDelegable { void Init(SQSharedState *ss); - SQInstance(SQSharedState *ss, SQClass *c, SQInteger memsize); - SQInstance(SQSharedState *ss, SQInstance *c, SQInteger memsize); + SQInstance(SQSharedState *ss, SQClass *c, int64_t memsize); + SQInstance(SQSharedState *ss, SQInstance *c, int64_t memsize); public: static SQInstance* Create(SQSharedState *ss,SQClass *theclass) { - SQInteger size = calcinstancesize(theclass); + int64_t size = calcinstancesize(theclass); SQInstance *newinst = (SQInstance *)SQ_MALLOC(size); new (newinst) SQInstance(ss, theclass,size); if(theclass->_udsize) { @@ -106,7 +106,7 @@ public: } SQInstance *Clone(SQSharedState *ss) { - SQInteger size = calcinstancesize(_class); + int64_t size = calcinstancesize(_class); SQInstance *newinst = (SQInstance *)SQ_MALLOC(size); new (newinst) SQInstance(ss, this,size); if(_class->_udsize) { @@ -141,7 +141,7 @@ public: if (_hook) { _hook(_userpointer,0);} _uiRef--; if(_uiRef > 0) return; - SQInteger size = _memsize; + int64_t size = _memsize; this->~SQInstance(); SQ_FREE(this, size); } @@ -152,7 +152,7 @@ public: SQClass *_class; SQUserPointer _userpointer; SQRELEASEHOOK _hook; - SQInteger _memsize; + int64_t _memsize; SQObjectPtr _values[1]; }; diff --git a/rabbit/sqclosure.hpp b/rabbit/sqclosure.hpp index e920c98..a452e96 100644 --- a/rabbit/sqclosure.hpp +++ b/rabbit/sqclosure.hpp @@ -22,7 +22,7 @@ private: } public: static SQClosure *Create(SQSharedState *ss,SQFunctionProto *func,SQWeakRef *root){ - SQInteger size = _CALC_CLOSURE_SIZE(func); + int64_t size = _CALC_CLOSURE_SIZE(func); SQClosure *nc=(SQClosure*)SQ_MALLOC(size); new (nc) SQClosure(ss,func); nc->_outervalues = (SQObjectPtr *)(nc + 1); @@ -35,7 +35,7 @@ public: } void Release(){ SQFunctionProto *f = _function; - SQInteger size = _CALC_CLOSURE_SIZE(f); + int64_t size = _CALC_CLOSURE_SIZE(f); _DESTRUCT_VECTOR(SQObjectPtr,f->_noutervalues,_outervalues); _DESTRUCT_VECTOR(SQObjectPtr,f->_ndefaultparams,_defaultparams); __ObjRelease(_function); @@ -98,7 +98,7 @@ public: } SQObjectPtr *_valptr; /* pointer to value on stack, or _value below */ - SQInteger _idx; /* idx in stack array, for relocation */ + int64_t _idx; /* idx in stack array, for relocation */ SQObjectPtr _value; /* value of outer after stack frame is closed */ SQOuter *_next; /* pointer to next outer when frame is open */ }; @@ -131,7 +131,7 @@ public: sq_delete(this,SQGenerator); } - bool Yield(SQVM *v,SQInteger target); + bool Yield(SQVM *v,int64_t target); bool Resume(SQVM *v,SQObjectPtr &dest); SQObjectPtr _closure; SQObjectPtrVec _stack; @@ -150,9 +150,9 @@ private: _env = NULL; } public: - static SQNativeClosure *Create(SQSharedState *ss,SQFUNCTION func,SQInteger nouters) + static SQNativeClosure *Create(SQSharedState *ss,SQFUNCTION func,int64_t nouters) { - SQInteger size = _CALC_NATVIVECLOSURE_SIZE(nouters); + int64_t size = _CALC_NATVIVECLOSURE_SIZE(nouters); SQNativeClosure *nc=(SQNativeClosure*)SQ_MALLOC(size); new (nc) SQNativeClosure(ss,func); nc->_outervalues = (SQObjectPtr *)(nc + 1); @@ -176,16 +176,16 @@ public: __ObjRelease(_env); } void Release(){ - SQInteger size = _CALC_NATVIVECLOSURE_SIZE(_noutervalues); + int64_t size = _CALC_NATVIVECLOSURE_SIZE(_noutervalues); _DESTRUCT_VECTOR(SQObjectPtr,_noutervalues,_outervalues); this->~SQNativeClosure(); sq_free(this,size); } - SQInteger _nparamscheck; + int64_t _nparamscheck; SQIntVec _typecheck; SQObjectPtr *_outervalues; - SQUnsignedInteger _noutervalues; + uint64_t _noutervalues; SQWeakRef *_env; SQFUNCTION _function; SQObjectPtr _name; diff --git a/rabbit/sqcompiler.cpp b/rabbit/sqcompiler.cpp index 8c3aaba..39b67bf 100644 --- a/rabbit/sqcompiler.cpp +++ b/rabbit/sqcompiler.cpp @@ -25,16 +25,16 @@ #define OUTER 5 struct SQExpState { - SQInteger etype; /* expr. type; one of EXPR, OBJECT, BASE, OUTER or LOCAL */ - SQInteger epos; /* expr. location on stack; -1 for OBJECT and BASE */ + int64_t etype; /* expr. type; one of EXPR, OBJECT, BASE, OUTER or LOCAL */ + int64_t epos; /* expr. location on stack; -1 for OBJECT and BASE */ bool donot_get; /* signal not to deref the next value */ }; #define MAX_COMPILER_ERROR_LEN 256 struct SQScope { - SQInteger outers; - SQInteger stacksize; + int64_t outers; + int64_t stacksize; }; #define BEGIN_SCOPE() SQScope __oldscope__ = _scope; \ @@ -53,7 +53,7 @@ struct SQScope { _scope = __oldscope__; \ } -#define END_SCOPE() { SQInteger oldouters = _fs->_outers;\ +#define END_SCOPE() { int64_t oldouters = _fs->_outers;\ if(_fs->GetStackSize() != _scope.stacksize) { \ _fs->SetStackSize(_scope.stacksize); \ if(oldouters != _fs->_outers) { \ @@ -63,8 +63,8 @@ struct SQScope { _scope = __oldscope__; \ } -#define BEGIN_BREAKBLE_BLOCK() SQInteger __nbreaks__=_fs->_unresolvedbreaks.size(); \ - SQInteger __ncontinues__=_fs->_unresolvedcontinues.size(); \ +#define BEGIN_BREAKBLE_BLOCK() int64_t __nbreaks__=_fs->_unresolvedbreaks.size(); \ + int64_t __ncontinues__=_fs->_unresolvedcontinues.size(); \ _fs->_breaktargets.push_back(0);_fs->_continuetargets.push_back(0); #define END_BREAKBLE_BLOCK(continue_target) {__nbreaks__=_fs->_unresolvedbreaks.size()-__nbreaks__; \ @@ -99,7 +99,7 @@ public: longjmp(_errorjmp,1); } void Lex(){ _token = _lex.Lex();} - SQObject Expect(SQInteger tok) + SQObject Expect(int64_t tok) { if(_token != tok) { @@ -159,7 +159,7 @@ public: } } void MoveIfCurrentTargetIsLocal() { - SQInteger trg = _fs->TopTarget(); + int64_t trg = _fs->TopTarget(); if(_fs->IsLocal(trg)) { trg = _fs->PopTarget(); //pops the target and moves it _fs->AddInstruction(_OP_MOVE, _fs->PushTarget(), trg); @@ -177,7 +177,7 @@ public: _fs->AddParameter(_fs->CreateString(_SC("vargv"))); _fs->_varparams = true; _fs->_sourcename = _sourcename; - SQInteger stacksize = _fs->GetStackSize(); + int64_t stacksize = _fs->GetStackSize(); if(setjmp(_errorjmp) == 0) { Lex(); while(_token > 0){ @@ -234,7 +234,7 @@ public: } Lex(); if(!IsEndOfStatement()) { - SQInteger retexp = _fs->GetCurrentPos()+1; + int64_t retexp = _fs->GetCurrentPos()+1; CommaExpr(); if(op == _OP_RETURN && _fs->_traps > 0) _fs->AddInstruction(_OP_POPTRAP, _fs->_traps, 0); @@ -321,24 +321,24 @@ public: } void EmitDerefOp(SQOpcode op) { - SQInteger val = _fs->PopTarget(); - SQInteger key = _fs->PopTarget(); - SQInteger src = _fs->PopTarget(); + int64_t val = _fs->PopTarget(); + int64_t key = _fs->PopTarget(); + int64_t src = _fs->PopTarget(); _fs->AddInstruction(op,_fs->PushTarget(),src,key,val); } - void Emit2ArgsOP(SQOpcode op, SQInteger p3 = 0) + void Emit2ArgsOP(SQOpcode op, int64_t p3 = 0) { - SQInteger p2 = _fs->PopTarget(); //src in OP_GET - SQInteger p1 = _fs->PopTarget(); //key in OP_GET + int64_t p2 = _fs->PopTarget(); //src in OP_GET + int64_t p1 = _fs->PopTarget(); //key in OP_GET _fs->AddInstruction(op,_fs->PushTarget(), p1, p2, p3); } - void EmitCompoundArith(SQInteger tok, SQInteger etype, SQInteger pos) + void EmitCompoundArith(int64_t tok, int64_t etype, int64_t pos) { /* Generate code depending on the expression type */ switch(etype) { case LOCAL:{ - SQInteger p2 = _fs->PopTarget(); //src in OP_GET - SQInteger p1 = _fs->PopTarget(); //key in OP_GET + int64_t p2 = _fs->PopTarget(); //src in OP_GET + int64_t p1 = _fs->PopTarget(); //key in OP_GET _fs->PushTarget(p1); //EmitCompArithLocal(tok, p1, p1, p2); _fs->AddInstruction(ChooseArithOpByToken(tok),p1, p2, p1, 0); @@ -348,17 +348,17 @@ public: case OBJECT: case BASE: { - SQInteger val = _fs->PopTarget(); - SQInteger key = _fs->PopTarget(); - SQInteger src = _fs->PopTarget(); + int64_t val = _fs->PopTarget(); + int64_t key = _fs->PopTarget(); + int64_t src = _fs->PopTarget(); /* _OP_COMPARITH mixes dest obj and source val in the arg1 */ _fs->AddInstruction(_OP_COMPARITH, _fs->PushTarget(), (src<<16)|val, key, ChooseCompArithCharByToken(tok)); } break; case OUTER: { - SQInteger val = _fs->TopTarget(); - SQInteger tmp = _fs->PushTarget(); + int64_t val = _fs->TopTarget(); + int64_t tmp = _fs->PushTarget(); _fs->AddInstruction(_OP_GETOUTER, tmp, pos); _fs->AddInstruction(ChooseArithOpByToken(tok), tmp, val, tmp, 0); _fs->PopTarget(); @@ -387,9 +387,9 @@ public: case TK_MULEQ: case TK_DIVEQ: case TK_MODEQ:{ - SQInteger op = _token; - SQInteger ds = _es.etype; - SQInteger pos = _es.epos; + int64_t op = _token; + int64_t ds = _es.etype; + int64_t pos = _es.epos; if(ds == EXPR) Error(_SC("can't assign expression")); else if(ds == BASE) Error(_SC("'base' cannot be modified")); Lex(); Expression(); @@ -405,8 +405,8 @@ public: switch(ds) { case LOCAL: { - SQInteger src = _fs->PopTarget(); - SQInteger dst = _fs->TopTarget(); + int64_t src = _fs->PopTarget(); + int64_t dst = _fs->TopTarget(); _fs->AddInstruction(_OP_MOVE, dst, src); } break; @@ -416,8 +416,8 @@ public: break; case OUTER: { - SQInteger src = _fs->PopTarget(); - SQInteger dst = _fs->PushTarget(); + int64_t src = _fs->PopTarget(); + int64_t dst = _fs->PushTarget(); _fs->AddInstruction(_OP_SETOUTER, dst, pos, src); } } @@ -435,17 +435,17 @@ public: case _SC('?'): { Lex(); _fs->AddInstruction(_OP_JZ, _fs->PopTarget()); - SQInteger jzpos = _fs->GetCurrentPos(); - SQInteger trg = _fs->PushTarget(); + int64_t jzpos = _fs->GetCurrentPos(); + int64_t trg = _fs->PushTarget(); Expression(); - SQInteger first_exp = _fs->PopTarget(); + int64_t first_exp = _fs->PopTarget(); if(trg != first_exp) _fs->AddInstruction(_OP_MOVE, trg, first_exp); - SQInteger endfirstexp = _fs->GetCurrentPos(); + int64_t endfirstexp = _fs->GetCurrentPos(); _fs->AddInstruction(_OP_JMP, 0, 0); Expect(_SC(':')); - SQInteger jmppos = _fs->GetCurrentPos(); + int64_t jmppos = _fs->GetCurrentPos(); Expression(); - SQInteger second_exp = _fs->PopTarget(); + int64_t second_exp = _fs->PopTarget(); if(trg != second_exp) _fs->AddInstruction(_OP_MOVE, trg, second_exp); _fs->SetIntructionParam(jmppos, 1, _fs->GetCurrentPos() - jmppos); _fs->SetIntructionParam(jzpos, 1, endfirstexp - jzpos + 1); @@ -464,11 +464,11 @@ public: (this->*f)(); _es = es; } - template void BIN_EXP(SQOpcode op, T f,SQInteger op3 = 0) + template void BIN_EXP(SQOpcode op, T f,int64_t op3 = 0) { Lex(); INVOKE_EXP(f); - SQInteger op1 = _fs->PopTarget();SQInteger op2 = _fs->PopTarget(); + int64_t op1 = _fs->PopTarget();int64_t op2 = _fs->PopTarget(); _fs->AddInstruction(op, _fs->PushTarget(), op1, op2, op3); _es.etype = EXPR; } @@ -476,14 +476,14 @@ public: { LogicalAndExp(); for(;;) if(_token == TK_OR) { - SQInteger first_exp = _fs->PopTarget(); - SQInteger trg = _fs->PushTarget(); + int64_t first_exp = _fs->PopTarget(); + int64_t trg = _fs->PushTarget(); _fs->AddInstruction(_OP_OR, trg, 0, first_exp, 0); - SQInteger jpos = _fs->GetCurrentPos(); + int64_t jpos = _fs->GetCurrentPos(); if(trg != first_exp) _fs->AddInstruction(_OP_MOVE, trg, first_exp); Lex(); INVOKE_EXP(&SQCompiler::LogicalOrExp); _fs->SnoozeOpt(); - SQInteger second_exp = _fs->PopTarget(); + int64_t second_exp = _fs->PopTarget(); if(trg != second_exp) _fs->AddInstruction(_OP_MOVE, trg, second_exp); _fs->SnoozeOpt(); _fs->SetIntructionParam(jpos, 1, (_fs->GetCurrentPos() - jpos)); @@ -496,14 +496,14 @@ public: BitwiseOrExp(); for(;;) switch(_token) { case TK_AND: { - SQInteger first_exp = _fs->PopTarget(); - SQInteger trg = _fs->PushTarget(); + int64_t first_exp = _fs->PopTarget(); + int64_t trg = _fs->PushTarget(); _fs->AddInstruction(_OP_AND, trg, 0, first_exp, 0); - SQInteger jpos = _fs->GetCurrentPos(); + int64_t jpos = _fs->GetCurrentPos(); if(trg != first_exp) _fs->AddInstruction(_OP_MOVE, trg, first_exp); Lex(); INVOKE_EXP(&SQCompiler::LogicalAndExp); _fs->SnoozeOpt(); - SQInteger second_exp = _fs->PopTarget(); + int64_t second_exp = _fs->PopTarget(); if(trg != second_exp) _fs->AddInstruction(_OP_MOVE, trg, second_exp); _fs->SnoozeOpt(); _fs->SetIntructionParam(jpos, 1, (_fs->GetCurrentPos() - jpos)); @@ -569,7 +569,7 @@ public: default: return; } } - SQOpcode ChooseArithOpByToken(SQInteger tok) + SQOpcode ChooseArithOpByToken(int64_t tok) { switch(tok) { case TK_PLUSEQ: case '+': return _OP_ADD; @@ -581,9 +581,9 @@ public: } return _OP_ADD; } - SQInteger ChooseCompArithCharByToken(SQInteger tok) + int64_t ChooseCompArithCharByToken(int64_t tok) { - SQInteger oper; + int64_t oper; switch(tok){ case TK_MINUSEQ: oper = '-'; break; case TK_PLUSEQ: oper = '+'; break; @@ -617,7 +617,7 @@ public: //if 'pos' != -1 the previous variable is a local variable void PrefixedExpr() { - SQInteger pos = Factor(); + int64_t pos = Factor(); for(;;) { switch(_token) { case _SC('.'): @@ -659,7 +659,7 @@ public: case TK_PLUSPLUS: { if(IsEndOfStatement()) return; - SQInteger diff = (_token==TK_MINUSMINUS) ? -1 : 1; + int64_t diff = (_token==TK_MINUSMINUS) ? -1 : 1; Lex(); switch(_es.etype) { @@ -670,13 +670,13 @@ public: Emit2ArgsOP(_OP_PINC, diff); break; case LOCAL: { - SQInteger src = _fs->PopTarget(); + int64_t src = _fs->PopTarget(); _fs->AddInstruction(_OP_PINCL, _fs->PushTarget(), src, 0, diff); } break; case OUTER: { - SQInteger tmp1 = _fs->PushTarget(); - SQInteger tmp2 = _fs->PushTarget(); + int64_t tmp1 = _fs->PushTarget(); + int64_t tmp2 = _fs->PushTarget(); _fs->AddInstruction(_OP_GETOUTER, tmp2, _es.epos); _fs->AddInstruction(_OP_PINCL, tmp1, tmp2, 0, diff); _fs->AddInstruction(_OP_SETOUTER, tmp2, _es.epos, tmp2); @@ -689,10 +689,10 @@ public: case _SC('('): switch(_es.etype) { case OBJECT: { - SQInteger key = _fs->PopTarget(); /* location of the key */ - SQInteger table = _fs->PopTarget(); /* location of the object */ - SQInteger closure = _fs->PushTarget(); /* location for the closure */ - SQInteger ttarget = _fs->PushTarget(); /* location for 'this' pointer */ + int64_t key = _fs->PopTarget(); /* location of the key */ + int64_t table = _fs->PopTarget(); /* location of the object */ + int64_t closure = _fs->PushTarget(); /* location for the closure */ + int64_t ttarget = _fs->PushTarget(); /* location for 'this' pointer */ _fs->AddInstruction(_OP_PREPCALL, closure, key, table, ttarget); } break; @@ -715,7 +715,7 @@ public: } } } - SQInteger Factor() + int64_t Factor() { //_es.etype = EXPR; switch(_token) @@ -743,7 +743,7 @@ public: case TK_CONSTRUCTOR: id = _fs->CreateString(_SC("constructor"),11); break; } - SQInteger pos = -1; + int64_t pos = -1; Lex(); if((pos = _fs->GetLocalVariable(id)) != -1) { /* Handle a local variable (includes 'this') */ @@ -828,13 +828,13 @@ public: break; case _SC('['): { _fs->AddInstruction(_OP_NEWOBJ, _fs->PushTarget(),0,0,NOT_ARRAY); - SQInteger apos = _fs->GetCurrentPos(),key = 0; + int64_t apos = _fs->GetCurrentPos(),key = 0; Lex(); while(_token != _SC(']')) { Expression(); if(_token == _SC(',')) Lex(); - SQInteger val = _fs->PopTarget(); - SQInteger array = _fs->TopTarget(); + int64_t val = _fs->PopTarget(); + int64_t array = _fs->TopTarget(); _fs->AddInstruction(_OP_APPENDARRAY, array, val, AAT_STACK); key++; } @@ -879,7 +879,7 @@ public: _es.etype = EXPR; return -1; } - void EmitLoadConstInt(SQInteger value,SQInteger target) + void EmitLoadConstInt(int64_t value,int64_t target) { if(target < 0) { target = _fs->PushTarget(); @@ -891,13 +891,13 @@ public: _fs->AddInstruction(_OP_LOAD, target, _fs->GetNumericConstant(value)); } } - void EmitLoadConstFloat(SQFloat value,SQInteger target) + void EmitLoadConstFloat(float_t value,int64_t target) { if(target < 0) { target = _fs->PushTarget(); } - if(sizeof(SQFloat) == sizeof(SQInt32)) { - _fs->AddInstruction(_OP_LOADFLOAT, target,*((SQInt32 *)&value)); + if(sizeof(float_t) == sizeof(int32_t)) { + _fs->AddInstruction(_OP_LOADFLOAT, target,*((int32_t *)&value)); } else { _fs->AddInstruction(_OP_LOAD, target, _fs->GetNumericConstant(value)); @@ -906,7 +906,7 @@ public: void UnaryOP(SQOpcode op) { PrefixedExpr(); - SQInteger src = _fs->PopTarget(); + int64_t src = _fs->PopTarget(); _fs->AddInstruction(op, _fs->PushTarget(), src); } bool NeedGet() @@ -925,7 +925,7 @@ public: } void FunctionCallArgs(bool rawcall = false) { - SQInteger nargs = 1;//this + int64_t nargs = 1;//this while(_token != _SC(')')) { Expression(); MoveIfCurrentTargetIsLocal(); @@ -940,14 +940,14 @@ public: if (nargs < 3) Error(_SC("rawcall requires at least 2 parameters (callee and this)")); nargs -= 2; //removes callee and this from count } - for(SQInteger i = 0; i < (nargs - 1); i++) _fs->PopTarget(); - SQInteger stackbase = _fs->PopTarget(); - SQInteger closure = _fs->PopTarget(); + for(int64_t i = 0; i < (nargs - 1); i++) _fs->PopTarget(); + int64_t stackbase = _fs->PopTarget(); + int64_t closure = _fs->PopTarget(); _fs->AddInstruction(_OP_CALL, _fs->PushTarget(), closure, stackbase, nargs); } - void ParseTableOrClass(SQInteger separator,SQInteger terminator) + void ParseTableOrClass(int64_t separator,int64_t terminator) { - SQInteger tpos = _fs->GetCurrentPos(),nkeys = 0; + int64_t tpos = _fs->GetCurrentPos(),nkeys = 0; while(_token != terminator) { bool hasattrs = false; bool isstatic = false; @@ -966,7 +966,7 @@ public: switch(_token) { case TK_FUNCTION: case TK_CONSTRUCTOR:{ - SQInteger tk = _token; + int64_t tk = _token; Lex(); SQObject id = tk == TK_FUNCTION ? Expect(TK_IDENTIFIER) : _fs->CreateString(_SC("constructor")); Expect(_SC('(')); @@ -991,13 +991,13 @@ public: } if(_token == separator) Lex();//optional comma/semicolon nkeys++; - SQInteger val = _fs->PopTarget(); - SQInteger key = _fs->PopTarget(); - SQInteger attrs = hasattrs ? _fs->PopTarget():-1; + int64_t val = _fs->PopTarget(); + int64_t key = _fs->PopTarget(); + int64_t attrs = hasattrs ? _fs->PopTarget():-1; ((void)attrs); assert((hasattrs && (attrs == key-1)) || !hasattrs); unsigned char flags = (hasattrs?NEW_SLOT_ATTRIBUTES_FLAG:0)|(isstatic?NEW_SLOT_STATIC_FLAG:0); - SQInteger table = _fs->TopTarget(); //<TopTarget(); //<AddInstruction(_OP_NEWSLOT, 0xFF, table, key, val); } @@ -1028,8 +1028,8 @@ public: varname = Expect(TK_IDENTIFIER); if(_token == _SC('=')) { Lex(); Expression(); - SQInteger src = _fs->PopTarget(); - SQInteger dest = _fs->PushTarget(); + int64_t src = _fs->PopTarget(); + int64_t dest = _fs->PushTarget(); if(dest != src) _fs->AddInstruction(_OP_MOVE, dest, src); } else{ @@ -1064,11 +1064,11 @@ public: } void IfStatement() { - SQInteger jmppos; + int64_t jmppos; bool haselse = false; Lex(); Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); _fs->AddInstruction(_OP_JZ, _fs->PopTarget()); - SQInteger jnepos = _fs->GetCurrentPos(); + int64_t jnepos = _fs->GetCurrentPos(); @@ -1086,7 +1086,7 @@ public: }*/ - SQInteger endifblock = _fs->GetCurrentPos(); + int64_t endifblock = _fs->GetCurrentPos(); if(_token == TK_ELSE){ haselse = true; //BEGIN_SCOPE(); @@ -1102,7 +1102,7 @@ public: } void WhileStatement() { - SQInteger jzpos, jmppos; + int64_t jzpos, jmppos; jmppos = _fs->GetCurrentPos(); Lex(); Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); @@ -1122,13 +1122,13 @@ public: void DoWhileStatement() { Lex(); - SQInteger jmptrg = _fs->GetCurrentPos(); + int64_t jmptrg = _fs->GetCurrentPos(); BEGIN_BREAKBLE_BLOCK() BEGIN_SCOPE(); Statement(); END_SCOPE(); Expect(TK_WHILE); - SQInteger continuetrg = _fs->GetCurrentPos(); + int64_t continuetrg = _fs->GetCurrentPos(); Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); _fs->AddInstruction(_OP_JZ, _fs->PopTarget(), 1); _fs->AddInstruction(_OP_JMP, 0, jmptrg - _fs->GetCurrentPos() - 1); @@ -1146,31 +1146,31 @@ public: } Expect(_SC(';')); _fs->SnoozeOpt(); - SQInteger jmppos = _fs->GetCurrentPos(); - SQInteger jzpos = -1; + int64_t jmppos = _fs->GetCurrentPos(); + int64_t jzpos = -1; if(_token != _SC(';')) { CommaExpr(); _fs->AddInstruction(_OP_JZ, _fs->PopTarget()); jzpos = _fs->GetCurrentPos(); } Expect(_SC(';')); _fs->SnoozeOpt(); - SQInteger expstart = _fs->GetCurrentPos() + 1; + int64_t expstart = _fs->GetCurrentPos() + 1; if(_token != _SC(')')) { CommaExpr(); _fs->PopTarget(); } Expect(_SC(')')); _fs->SnoozeOpt(); - SQInteger expend = _fs->GetCurrentPos(); - SQInteger expsize = (expend - expstart) + 1; + int64_t expend = _fs->GetCurrentPos(); + int64_t expsize = (expend - expstart) + 1; SQInstructionVec exp; if(expsize > 0) { - for(SQInteger i = 0; i < expsize; i++) + for(int64_t i = 0; i < expsize; i++) exp.push_back(_fs->GetInstruction(expstart + i)); _fs->PopInstructions(expsize); } BEGIN_BREAKBLE_BLOCK() Statement(); - SQInteger continuetrg = _fs->GetCurrentPos(); + int64_t continuetrg = _fs->GetCurrentPos(); if(expsize > 0) { - for(SQInteger i = 0; i < expsize; i++) + for(int64_t i = 0; i < expsize; i++) _fs->AddInstruction(exp[i]); } _fs->AddInstruction(_OP_JMP, 0, jmppos - _fs->GetCurrentPos() - 1, 0); @@ -1197,19 +1197,19 @@ public: BEGIN_SCOPE(); //put the table in the stack(evaluate the table expression) Expression(); Expect(_SC(')')); - SQInteger container = _fs->TopTarget(); + int64_t container = _fs->TopTarget(); //push the index local var - SQInteger indexpos = _fs->PushLocalVariable(idxname); + int64_t indexpos = _fs->PushLocalVariable(idxname); _fs->AddInstruction(_OP_LOADNULLS, indexpos,1); //push the value local var - SQInteger valuepos = _fs->PushLocalVariable(valname); + int64_t valuepos = _fs->PushLocalVariable(valname); _fs->AddInstruction(_OP_LOADNULLS, valuepos,1); //push reference index - SQInteger itrpos = _fs->PushLocalVariable(_fs->CreateString(_SC("@ITERATOR@"))); //use invalid id to make it inaccessible + int64_t itrpos = _fs->PushLocalVariable(_fs->CreateString(_SC("@ITERATOR@"))); //use invalid id to make it inaccessible _fs->AddInstruction(_OP_LOADNULLS, itrpos,1); - SQInteger jmppos = _fs->GetCurrentPos(); + int64_t jmppos = _fs->GetCurrentPos(); _fs->AddInstruction(_OP_FOREACH, container, 0, indexpos); - SQInteger foreachpos = _fs->GetCurrentPos(); + int64_t foreachpos = _fs->GetCurrentPos(); _fs->AddInstruction(_OP_POSTFOREACH, container, 0, indexpos); //generate the statement code BEGIN_BREAKBLE_BLOCK() @@ -1226,11 +1226,11 @@ public: { Lex(); Expect(_SC('(')); CommaExpr(); Expect(_SC(')')); Expect(_SC('{')); - SQInteger expr = _fs->TopTarget(); + int64_t expr = _fs->TopTarget(); bool bfirst = true; - SQInteger tonextcondjmp = -1; - SQInteger skipcondjmp = -1; - SQInteger __nbreaks__ = _fs->_unresolvedbreaks.size(); + int64_t tonextcondjmp = -1; + int64_t skipcondjmp = -1; + int64_t __nbreaks__ = _fs->_unresolvedbreaks.size(); _fs->_breaktargets.push_back(0); while(_token == TK_CASE) { if(!bfirst) { @@ -1240,8 +1240,8 @@ public: } //condition Lex(); Expression(); Expect(_SC(':')); - SQInteger trg = _fs->PopTarget(); - SQInteger eqtarget = trg; + int64_t trg = _fs->PopTarget(); + int64_t eqtarget = trg; bool local = _fs->IsLocal(trg); if(local) { eqtarget = _fs->PushTarget(); //we need to allocate a extra reg @@ -1366,7 +1366,7 @@ public: Expect(_SC('{')); SQObject table = _fs->CreateTable(); - SQInteger nval = 0; + int64_t nval = 0; while(_token != _SC('}')) { SQObject key = Expect(TK_IDENTIFIER); SQObject val; @@ -1395,7 +1395,7 @@ public: _fs->_traps++; if(_fs->_breaktargets.size()) _fs->_breaktargets.top()++; if(_fs->_continuetargets.size()) _fs->_continuetargets.top()++; - SQInteger trappos = _fs->GetCurrentPos(); + int64_t trappos = _fs->GetCurrentPos(); { BEGIN_SCOPE(); Statement(); @@ -1406,19 +1406,19 @@ public: if(_fs->_breaktargets.size()) _fs->_breaktargets.top()--; if(_fs->_continuetargets.size()) _fs->_continuetargets.top()--; _fs->AddInstruction(_OP_JMP, 0, 0); - SQInteger jmppos = _fs->GetCurrentPos(); + int64_t jmppos = _fs->GetCurrentPos(); _fs->SetIntructionParam(trappos, 1, (_fs->GetCurrentPos() - trappos)); Expect(TK_CATCH); Expect(_SC('(')); exid = Expect(TK_IDENTIFIER); Expect(_SC(')')); { BEGIN_SCOPE(); - SQInteger ex_target = _fs->PushLocalVariable(exid); + int64_t ex_target = _fs->PushLocalVariable(exid); _fs->SetIntructionParam(trappos, 0, ex_target); Statement(); _fs->SetIntructionParams(jmppos, 0, (_fs->GetCurrentPos() - jmppos), 0); END_SCOPE(); } } - void FunctionExp(SQInteger ftype,bool lambda = false) + void FunctionExp(int64_t ftype,bool lambda = false) { Lex(); Expect(_SC('(')); SQObjectPtr dummy; @@ -1427,8 +1427,8 @@ public: } void ClassExp() { - SQInteger base = -1; - SQInteger attrs = -1; + int64_t base = -1; + int64_t attrs = -1; if(_token == TK_EXTENDS) { Lex(); Expression(); base = _fs->TopTarget(); @@ -1461,10 +1461,10 @@ public: } _es = es; } - void PrefixIncDec(SQInteger token) + void PrefixIncDec(int64_t token) { SQExpState es; - SQInteger diff = (token==TK_MINUSMINUS) ? -1 : 1; + int64_t diff = (token==TK_MINUSMINUS) ? -1 : 1; Lex(); es = _es; _es.donot_get = true; @@ -1476,12 +1476,12 @@ public: Emit2ArgsOP(_OP_INC, diff); } else if(_es.etype==LOCAL) { - SQInteger src = _fs->TopTarget(); + int64_t src = _fs->TopTarget(); _fs->AddInstruction(_OP_INCL, src, src, 0, diff); } else if(_es.etype==OUTER) { - SQInteger tmp = _fs->PushTarget(); + int64_t tmp = _fs->PushTarget(); _fs->AddInstruction(_OP_GETOUTER, tmp, _es.epos); _fs->AddInstruction(_OP_INCL, tmp, tmp, 0, diff); _fs->AddInstruction(_OP_SETOUTER, tmp, _es.epos, tmp); @@ -1495,7 +1495,7 @@ public: SQObject paramname; funcstate->AddParameter(_fs->CreateString(_SC("this"))); funcstate->_sourcename = _sourcename; - SQInteger defparams = 0; + int64_t defparams = 0; while(_token!=_SC(')')) { if(_token == TK_VARPARAMS) { if(defparams > 0) Error(_SC("function with default parameters cannot have variable number of parameters")); @@ -1522,7 +1522,7 @@ public: } } Expect(_SC(')')); - for(SQInteger n = 0; n < defparams; n++) { + for(int64_t n = 0; n < defparams; n++) { _fs->PopTarget(); } @@ -1546,20 +1546,20 @@ public: _fs->_functions.push_back(func); _fs->PopChildState(); } - void ResolveBreaks(SQFuncState *funcstate, SQInteger ntoresolve) + void ResolveBreaks(SQFuncState *funcstate, int64_t ntoresolve) { while(ntoresolve > 0) { - SQInteger pos = funcstate->_unresolvedbreaks.back(); + int64_t pos = funcstate->_unresolvedbreaks.back(); funcstate->_unresolvedbreaks.pop_back(); //set the jmp instruction funcstate->SetIntructionParams(pos, 0, funcstate->GetCurrentPos() - pos, 0); ntoresolve--; } } - void ResolveContinues(SQFuncState *funcstate, SQInteger ntoresolve, SQInteger targetpos) + void ResolveContinues(SQFuncState *funcstate, int64_t ntoresolve, int64_t targetpos) { while(ntoresolve > 0) { - SQInteger pos = funcstate->_unresolvedcontinues.back(); + int64_t pos = funcstate->_unresolvedcontinues.back(); funcstate->_unresolvedcontinues.pop_back(); //set the jmp instruction funcstate->SetIntructionParams(pos, 0, targetpos - pos, 0); @@ -1567,14 +1567,14 @@ public: } } private: - SQInteger _token; + int64_t _token; SQFuncState *_fs; SQObjectPtr _sourcename; SQLexer _lex; bool _lineinfo; bool _raiseerror; - SQInteger _debugline; - SQInteger _debugop; + int64_t _debugline; + int64_t _debugop; SQExpState _es; SQScope _scope; SQChar _compilererror[MAX_COMPILER_ERROR_LEN]; diff --git a/rabbit/sqconfig.hpp b/rabbit/sqconfig.hpp index 22b37d0..46b1a7d 100644 --- a/rabbit/sqconfig.hpp +++ b/rabbit/sqconfig.hpp @@ -7,57 +7,33 @@ */ #pragma once -#ifdef _SQ64 +#include -#ifdef _MSC_VER -typedef __int64 SQInteger; -typedef unsigned __int64 SQUnsignedInteger; -typedef unsigned __int64 SQHash; /*should be the same size of a pointer*/ -#else -typedef long long SQInteger; -typedef unsigned long long SQUnsignedInteger; -typedef unsigned long long SQHash; /*should be the same size of a pointer*/ -#endif -typedef int SQInt32; -typedef unsigned int SQUnsignedInteger32; -#else -typedef int SQInteger; -typedef int SQInt32; /*must be 32 bits(also on 64bits processors)*/ -typedef unsigned int SQUnsignedInteger32; /*must be 32 bits(also on 64bits processors)*/ -typedef unsigned int SQUnsignedInteger; -typedef unsigned int SQHash; /*should be the same size of a pointer*/ -#endif +// should be the same size of a pointer +using SQHash = size_t; #ifdef SQUSEDOUBLE -typedef double SQFloat; +typedef double float_t; #else -typedef float SQFloat; +typedef float float_t; #endif #if defined(SQUSEDOUBLE) && !defined(_SQ64) || !defined(SQUSEDOUBLE) && defined(_SQ64) -#ifdef _MSC_VER -typedef __int64 SQRawObjectVal; //must be 64bits -#else -typedef long long SQRawObjectVal; //must be 64bits -#endif +typedef uint64_t SQRawObjectVal; //must be 64bits #define SQ_OBJECT_RAWINIT() { _unVal.raw = 0; } #else -typedef SQUnsignedInteger SQRawObjectVal; //is 32 bits on 32 bits builds and 64 bits otherwise +typedef uint64_t SQRawObjectVal; //is 32 bits on 32 bits builds and 64 bits otherwise #define SQ_OBJECT_RAWINIT() #endif -#ifndef SQ_ALIGNMENT // SQ_ALIGNMENT shall be less than or equal to SQ_MALLOC alignments, and its value shall be power of 2. -#if defined(SQUSEDOUBLE) || defined(_SQ64) -#define SQ_ALIGNMENT 8 -#else -#define SQ_ALIGNMENT 4 -#endif +#ifndef SQ_ALIGNMENT + #define SQ_ALIGNMENT 8 #endif typedef void* SQUserPointer; -typedef SQUnsignedInteger SQBool; -typedef SQInteger SQRESULT; +typedef uint64_t SQBool; +typedef int64_t SQRESULT; #ifdef SQUNICODE #include @@ -146,9 +122,5 @@ typedef char SQChar; #endif -#ifdef _SQ64 #define _PRINT_INT_PREC _SC("ll") -#define _PRINT_INT_FMT _SC("%lld") -#else -#define _PRINT_INT_FMT _SC("%d") -#endif +#define _PRINT_INT_FMT _SC("%ld") diff --git a/rabbit/sqdebug.cpp b/rabbit/sqdebug.cpp index 25bfc28..c528379 100644 --- a/rabbit/sqdebug.cpp +++ b/rabbit/sqdebug.cpp @@ -13,9 +13,9 @@ #include #include -SQRESULT sq_getfunctioninfo(HRABBITVM v,SQInteger level,SQFunctionInfo *fi) +SQRESULT sq_getfunctioninfo(HRABBITVM v,int64_t level,SQFunctionInfo *fi) { - SQInteger cssize = v->_callsstacksize; + int64_t cssize = v->_callsstacksize; if (cssize > level) { SQVM::CallInfo &ci = v->_callsstack[cssize-level-1]; if(sq_isclosure(ci._closure)) { @@ -31,9 +31,9 @@ SQRESULT sq_getfunctioninfo(HRABBITVM v,SQInteger level,SQFunctionInfo *fi) return sq_throwerror(v,_SC("the object is not a closure")); } -SQRESULT sq_stackinfos(HRABBITVM v, SQInteger level, SQStackInfos *si) +SQRESULT sq_stackinfos(HRABBITVM v, int64_t level, SQStackInfos *si) { - SQInteger cssize = v->_callsstacksize; + int64_t cssize = v->_callsstacksize; if (cssize > level) { memset(si, 0, sizeof(SQStackInfos)); SQVM::CallInfo &ci = v->_callsstack[cssize-level-1]; @@ -65,7 +65,7 @@ void SQVM::Raise_Error(const SQChar *s, ...) { va_list vl; va_start(vl, s); - SQInteger buffersize = (SQInteger)scstrlen(s)+(NUMBER_MAX_CHAR*2); + int64_t buffersize = (int64_t)scstrlen(s)+(NUMBER_MAX_CHAR*2); scvsprintf(_sp(sq_rsl(buffersize)),buffersize, s, vl); va_end(vl); _lasterror = SQString::Create(_ss(this),_spval,-1); @@ -106,13 +106,13 @@ void SQVM::Raise_CompareError(const SQObject &o1, const SQObject &o2) } -void SQVM::Raise_ParamTypeError(SQInteger nparam,SQInteger typemask,SQInteger type) +void SQVM::Raise_ParamTypeError(int64_t nparam,int64_t typemask,int64_t type) { SQObjectPtr exptypes = SQString::Create(_ss(this), _SC(""), -1); - SQInteger found = 0; - for(SQInteger i=0; i<16; i++) + int64_t found = 0; + for(int64_t i=0; i<16; i++) { - SQInteger mask = ((SQInteger)1) << i; + int64_t mask = ((int64_t)1) << i; if(typemask & (mask)) { if(found>0) StringCat(exptypes,SQString::Create(_ss(this), _SC("|"), -1), exptypes); found ++; diff --git a/rabbit/sqfuncproto.hpp b/rabbit/sqfuncproto.hpp index 3f72df3..6051aef 100644 --- a/rabbit/sqfuncproto.hpp +++ b/rabbit/sqfuncproto.hpp @@ -46,12 +46,12 @@ struct SQLocalVarInfo _pos=lvi._pos; } SQObjectPtr _name; - SQUnsignedInteger _start_op; - SQUnsignedInteger _end_op; - SQUnsignedInteger _pos; + uint64_t _start_op; + uint64_t _end_op; + uint64_t _pos; }; -struct SQLineInfo { SQInteger _line;SQInteger _op; }; +struct SQLineInfo { int64_t _line;int64_t _op; }; typedef sqvector SQOuterVarVec; typedef sqvector SQLocalVarInfoVec; @@ -61,7 +61,7 @@ typedef sqvector SQLineInfoVec; +((ni-1)*sizeof(SQInstruction))+(nl*sizeof(SQObjectPtr)) \ +(nparams*sizeof(SQObjectPtr))+(nfuncs*sizeof(SQObjectPtr)) \ +(nouters*sizeof(SQOuterVar))+(nlineinf*sizeof(SQLineInfo)) \ - +(localinf*sizeof(SQLocalVarInfo))+(defparams*sizeof(SQInteger))) + +(localinf*sizeof(SQLocalVarInfo))+(defparams*sizeof(int64_t))) struct SQFunctionProto : public SQRefCounted @@ -71,10 +71,10 @@ private: ~SQFunctionProto(); public: - static SQFunctionProto *Create(SQSharedState *ss,SQInteger ninstructions, - SQInteger nliterals,SQInteger nparameters, - SQInteger nfunctions,SQInteger noutervalues, - SQInteger nlineinfos,SQInteger nlocalvarinfos,SQInteger ndefaultparams) + static SQFunctionProto *Create(SQSharedState *ss,int64_t ninstructions, + int64_t nliterals,int64_t nparameters, + int64_t nfunctions,int64_t noutervalues, + int64_t nlineinfos,int64_t nlocalvarinfos,int64_t ndefaultparams) { SQFunctionProto *f; //I compact the whole class and members in a single memory allocation @@ -93,7 +93,7 @@ public: f->_nlineinfos = nlineinfos; f->_localvarinfos = (SQLocalVarInfo *)&f->_lineinfos[nlineinfos]; f->_nlocalvarinfos = nlocalvarinfos; - f->_defaultparams = (SQInteger *)&f->_localvarinfos[nlocalvarinfos]; + f->_defaultparams = (int64_t *)&f->_localvarinfos[nlocalvarinfos]; f->_ndefaultparams = ndefaultparams; _CONSTRUCT_VECTOR(SQObjectPtr,f->_nliterals,f->_literals); @@ -111,42 +111,42 @@ public: _DESTRUCT_VECTOR(SQOuterVar,_noutervalues,_outervalues); //_DESTRUCT_VECTOR(SQLineInfo,_nlineinfos,_lineinfos); //not required are 2 integers _DESTRUCT_VECTOR(SQLocalVarInfo,_nlocalvarinfos,_localvarinfos); - SQInteger size = _FUNC_SIZE(_ninstructions,_nliterals,_nparameters,_nfunctions,_noutervalues,_nlineinfos,_nlocalvarinfos,_ndefaultparams); + int64_t size = _FUNC_SIZE(_ninstructions,_nliterals,_nparameters,_nfunctions,_noutervalues,_nlineinfos,_nlocalvarinfos,_ndefaultparams); this->~SQFunctionProto(); sq_vm_free(this,size); } - const SQChar* GetLocal(SQVM *v,SQUnsignedInteger stackbase,SQUnsignedInteger nseq,SQUnsignedInteger nop); - SQInteger GetLine(SQInstruction *curr); + const SQChar* GetLocal(SQVM *v,uint64_t stackbase,uint64_t nseq,uint64_t nop); + int64_t GetLine(SQInstruction *curr); bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write); static bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &ret); SQObjectPtr _sourcename; SQObjectPtr _name; - SQInteger _stacksize; + int64_t _stacksize; bool _bgenerator; - SQInteger _varparams; + int64_t _varparams; - SQInteger _nlocalvarinfos; + int64_t _nlocalvarinfos; SQLocalVarInfo *_localvarinfos; - SQInteger _nlineinfos; + int64_t _nlineinfos; SQLineInfo *_lineinfos; - SQInteger _nliterals; + int64_t _nliterals; SQObjectPtr *_literals; - SQInteger _nparameters; + int64_t _nparameters; SQObjectPtr *_parameters; - SQInteger _nfunctions; + int64_t _nfunctions; SQObjectPtr *_functions; - SQInteger _noutervalues; + int64_t _noutervalues; SQOuterVar *_outervalues; - SQInteger _ndefaultparams; - SQInteger *_defaultparams; + int64_t _ndefaultparams; + int64_t *_defaultparams; - SQInteger _ninstructions; + int64_t _ninstructions; SQInstruction _instructions[1]; }; diff --git a/rabbit/sqfuncstate.cpp b/rabbit/sqfuncstate.cpp index c1b3ff0..f7161c2 100644 --- a/rabbit/sqfuncstate.cpp +++ b/rabbit/sqfuncstate.cpp @@ -120,15 +120,15 @@ void SQFuncState::Error(const SQChar *err) #ifdef _DEBUG_DUMP void SQFuncState::Dump(SQFunctionProto *func) { - SQUnsignedInteger n=0,i; - SQInteger si; - scprintf(_SC("SQInstruction sizeof %d\n"),(SQInt32)sizeof(SQInstruction)); - scprintf(_SC("SQObject sizeof %d\n"), (SQInt32)sizeof(SQObject)); + uint64_t n=0,i; + int64_t si; + scprintf(_SC("SQInstruction sizeof %d\n"),(int32_t)sizeof(SQInstruction)); + scprintf(_SC("SQObject sizeof %d\n"), (int32_t)sizeof(SQObject)); scprintf(_SC("--------------------------------------------------------------------\n")); scprintf(_SC("*****FUNCTION [%s]\n"),sq_type(func->_name)==OT_STRING?_stringval(func->_name):_SC("unknown")); scprintf(_SC("-----LITERALS\n")); SQObjectPtr refidx,key,val; - SQInteger idx; + int64_t idx; SQObjectPtrVec templiterals; templiterals.resize(_nliterals); while((idx=_table(_literals)->Next(false,refidx,key,val))!=-1) { @@ -136,7 +136,7 @@ void SQFuncState::Dump(SQFunctionProto *func) templiterals[_integer(val)]=key; } for(i=0;i>\n")); n=0; for(i=0;i<_parameters.size();i++){ - scprintf(_SC("[%d] "), (SQInt32)n); + scprintf(_SC("[%d] "), (int32_t)n); DumpLiteral(_parameters[i]); scprintf(_SC("\n")); n++; @@ -154,13 +154,13 @@ void SQFuncState::Dump(SQFunctionProto *func) scprintf(_SC("-----LOCALS\n")); for(si=0;si_nlocalvarinfos;si++){ SQLocalVarInfo lvi=func->_localvarinfos[si]; - scprintf(_SC("[%d] %s \t%d %d\n"), (SQInt32)lvi._pos,_stringval(lvi._name), (SQInt32)lvi._start_op, (SQInt32)lvi._end_op); + scprintf(_SC("[%d] %s \t%d %d\n"), (int32_t)lvi._pos,_stringval(lvi._name), (int32_t)lvi._start_op, (int32_t)lvi._end_op); n++; } scprintf(_SC("-----LINE INFO\n")); for(i=0;i<_lineinfos.size();i++){ SQLineInfo li=_lineinfos[i]; - scprintf(_SC("op [%d] line [%d] \n"), (SQInt32)li._op, (SQInt32)li._line); + scprintf(_SC("op [%d] line [%d] \n"), (int32_t)li._op, (int32_t)li._line); n++; } scprintf(_SC("-----dump\n")); @@ -169,12 +169,12 @@ void SQFuncState::Dump(SQFunctionProto *func) SQInstruction &inst=_instructions[i]; if(inst.op==_OP_LOAD || inst.op==_OP_DLOAD || inst.op==_OP_PREPCALLK || inst.op==_OP_GETK ){ - SQInteger lidx = inst._arg1; - scprintf(_SC("[%03d] %15s %d "), (SQInt32)n,g_InstrDesc[inst.op].name,inst._arg0); + int64_t lidx = inst._arg1; + scprintf(_SC("[%03d] %15s %d "), (int32_t)n,g_InstrDesc[inst.op].name,inst._arg0); if(lidx >= 0xFFFFFFFF) scprintf(_SC("null")); else { - SQInteger refidx; + int64_t refidx; SQObjectPtr val,key,refo; while(((refidx=_table(_literals)->Next(false,refo,key,val))!= -1) && (_integer(val) != lidx)) { refo = refidx; @@ -190,7 +190,7 @@ void SQFuncState::Dump(SQFunctionProto *func) if(lidx >= 0xFFFFFFFF) scprintf(_SC("null")); else { - SQInteger refidx; + int64_t refidx; SQObjectPtr val,key,refo; while(((refidx=_table(_literals)->Next(false,refo,key,val))!= -1) && (_integer(val) != lidx)) { refo = refidx; @@ -201,33 +201,33 @@ void SQFuncState::Dump(SQFunctionProto *func) } } else if(inst.op==_OP_LOADFLOAT) { - scprintf(_SC("[%03d] %15s %d %f %d %d\n"), (SQInt32)n,g_InstrDesc[inst.op].name,inst._arg0,*((SQFloat*)&inst._arg1),inst._arg2,inst._arg3); + scprintf(_SC("[%03d] %15s %d %f %d %d\n"), (int32_t)n,g_InstrDesc[inst.op].name,inst._arg0,*((float_t*)&inst._arg1),inst._arg2,inst._arg3); } /* else if(inst.op==_OP_ARITH){ scprintf(_SC("[%03d] %15s %d %d %d %c\n"),n,g_InstrDesc[inst.op].name,inst._arg0,inst._arg1,inst._arg2,inst._arg3); }*/ else { - scprintf(_SC("[%03d] %15s %d %d %d %d\n"), (SQInt32)n,g_InstrDesc[inst.op].name,inst._arg0,inst._arg1,inst._arg2,inst._arg3); + scprintf(_SC("[%03d] %15s %d %d %d %d\n"), (int32_t)n,g_InstrDesc[inst.op].name,inst._arg0,inst._arg1,inst._arg2,inst._arg3); } n++; } scprintf(_SC("-----\n")); - scprintf(_SC("stack size[%d]\n"), (SQInt32)func->_stacksize); + scprintf(_SC("stack size[%d]\n"), (int32_t)func->_stacksize); scprintf(_SC("--------------------------------------------------------------------\n\n")); } #endif -SQInteger SQFuncState::GetNumericConstant(const SQInteger cons) +int64_t SQFuncState::GetNumericConstant(const int64_t cons) { return GetConstant(SQObjectPtr(cons)); } -SQInteger SQFuncState::GetNumericConstant(const SQFloat cons) +int64_t SQFuncState::GetNumericConstant(const float_t cons) { return GetConstant(SQObjectPtr(cons)); } -SQInteger SQFuncState::GetConstant(const SQObject &cons) +int64_t SQFuncState::GetConstant(const SQObject &cons) { SQObjectPtr val; if(!_table(_literals)->Get(cons,val)) @@ -243,36 +243,36 @@ SQInteger SQFuncState::GetConstant(const SQObject &cons) return _integer(val); } -void SQFuncState::SetIntructionParams(SQInteger pos,SQInteger arg0,SQInteger arg1,SQInteger arg2,SQInteger arg3) +void SQFuncState::SetIntructionParams(int64_t pos,int64_t arg0,int64_t arg1,int64_t arg2,int64_t arg3) { - _instructions[pos]._arg0=(unsigned char)*((SQUnsignedInteger *)&arg0); - _instructions[pos]._arg1=(SQInt32)*((SQUnsignedInteger *)&arg1); - _instructions[pos]._arg2=(unsigned char)*((SQUnsignedInteger *)&arg2); - _instructions[pos]._arg3=(unsigned char)*((SQUnsignedInteger *)&arg3); + _instructions[pos]._arg0=(unsigned char)*((uint64_t *)&arg0); + _instructions[pos]._arg1=(int32_t)*((uint64_t *)&arg1); + _instructions[pos]._arg2=(unsigned char)*((uint64_t *)&arg2); + _instructions[pos]._arg3=(unsigned char)*((uint64_t *)&arg3); } -void SQFuncState::SetIntructionParam(SQInteger pos,SQInteger arg,SQInteger val) +void SQFuncState::SetIntructionParam(int64_t pos,int64_t arg,int64_t val) { switch(arg){ - case 0:_instructions[pos]._arg0=(unsigned char)*((SQUnsignedInteger *)&val);break; - case 1:case 4:_instructions[pos]._arg1=(SQInt32)*((SQUnsignedInteger *)&val);break; - case 2:_instructions[pos]._arg2=(unsigned char)*((SQUnsignedInteger *)&val);break; - case 3:_instructions[pos]._arg3=(unsigned char)*((SQUnsignedInteger *)&val);break; + case 0:_instructions[pos]._arg0=(unsigned char)*((uint64_t *)&val);break; + case 1:case 4:_instructions[pos]._arg1=(int32_t)*((uint64_t *)&val);break; + case 2:_instructions[pos]._arg2=(unsigned char)*((uint64_t *)&val);break; + case 3:_instructions[pos]._arg3=(unsigned char)*((uint64_t *)&val);break; }; } -SQInteger SQFuncState::AllocStackPos() +int64_t SQFuncState::AllocStackPos() { - SQInteger npos=_vlocals.size(); + int64_t npos=_vlocals.size(); _vlocals.push_back(SQLocalVarInfo()); - if(_vlocals.size()>((SQUnsignedInteger)_stacksize)) { + if(_vlocals.size()>((uint64_t)_stacksize)) { if(_stacksize>MAX_FUNC_STACKSIZE) Error(_SC("internal compiler error: too many locals")); _stacksize=_vlocals.size(); } return npos; } -SQInteger SQFuncState::PushTarget(SQInteger n) +int64_t SQFuncState::PushTarget(int64_t n) { if(n!=-1){ _targetstack.push_back(n); @@ -283,16 +283,16 @@ SQInteger SQFuncState::PushTarget(SQInteger n) return n; } -SQInteger SQFuncState::GetUpTarget(SQInteger n){ +int64_t SQFuncState::GetUpTarget(int64_t n){ return _targetstack[((_targetstack.size()-1)-n)]; } -SQInteger SQFuncState::TopTarget(){ +int64_t SQFuncState::TopTarget(){ return _targetstack.back(); } -SQInteger SQFuncState::PopTarget() +int64_t SQFuncState::PopTarget() { - SQUnsignedInteger npos=_targetstack.back(); + uint64_t npos=_targetstack.back(); assert(npos < _vlocals.size()); SQLocalVarInfo &t = _vlocals[npos]; if(sq_type(t._name)==OT_NULL){ @@ -302,15 +302,15 @@ SQInteger SQFuncState::PopTarget() return npos; } -SQInteger SQFuncState::GetStackSize() +int64_t SQFuncState::GetStackSize() { return _vlocals.size(); } -SQInteger SQFuncState::CountOuters(SQInteger stacksize) +int64_t SQFuncState::CountOuters(int64_t stacksize) { - SQInteger outers = 0; - SQInteger k = _vlocals.size() - 1; + int64_t outers = 0; + int64_t k = _vlocals.size() - 1; while(k >= stacksize) { SQLocalVarInfo &lvi = _vlocals[k]; k--; @@ -321,9 +321,9 @@ SQInteger SQFuncState::CountOuters(SQInteger stacksize) return outers; } -void SQFuncState::SetStackSize(SQInteger n) +void SQFuncState::SetStackSize(int64_t n) { - SQInteger size=_vlocals.size(); + int64_t size=_vlocals.size(); while(size>n){ size--; SQLocalVarInfo lvi = _vlocals.back(); @@ -348,30 +348,30 @@ bool SQFuncState::IsConstant(const SQObject &name,SQObject &e) return false; } -bool SQFuncState::IsLocal(SQUnsignedInteger stkpos) +bool SQFuncState::IsLocal(uint64_t stkpos) { if(stkpos>=_vlocals.size())return false; else if(sq_type(_vlocals[stkpos]._name)!=OT_NULL)return true; return false; } -SQInteger SQFuncState::PushLocalVariable(const SQObject &name) +int64_t SQFuncState::PushLocalVariable(const SQObject &name) { - SQInteger pos=_vlocals.size(); + int64_t pos=_vlocals.size(); SQLocalVarInfo lvi; lvi._name=name; lvi._start_op=GetCurrentPos()+1; lvi._pos=_vlocals.size(); _vlocals.push_back(lvi); - if(_vlocals.size()>((SQUnsignedInteger)_stacksize))_stacksize=_vlocals.size(); + if(_vlocals.size()>((uint64_t)_stacksize))_stacksize=_vlocals.size(); return pos; } -SQInteger SQFuncState::GetLocalVariable(const SQObject &name) +int64_t SQFuncState::GetLocalVariable(const SQObject &name) { - SQInteger locals=_vlocals.size(); + int64_t locals=_vlocals.size(); while(locals>=1){ SQLocalVarInfo &lvi = _vlocals[locals-1]; if(sq_type(lvi._name)==OT_STRING && _string(lvi._name)==_string(name)){ @@ -382,33 +382,33 @@ SQInteger SQFuncState::GetLocalVariable(const SQObject &name) return -1; } -void SQFuncState::MarkLocalAsOuter(SQInteger pos) +void SQFuncState::MarkLocalAsOuter(int64_t pos) { SQLocalVarInfo &lvi = _vlocals[pos]; lvi._end_op = UINT_MINUS_ONE; _outers++; } -SQInteger SQFuncState::GetOuterVariable(const SQObject &name) +int64_t SQFuncState::GetOuterVariable(const SQObject &name) { - SQInteger outers = _outervalues.size(); - for(SQInteger i = 0; iGetLocalVariable(name); if(pos == -1) { pos = _parent->GetOuterVariable(name); if(pos != -1) { - _outervalues.push_back(SQOuterVar(name,SQObjectPtr(SQInteger(pos)),otOUTER)); //local + _outervalues.push_back(SQOuterVar(name,SQObjectPtr(int64_t(pos)),otOUTER)); //local return _outervalues.size() - 1; } } else { _parent->MarkLocalAsOuter(pos); - _outervalues.push_back(SQOuterVar(name,SQObjectPtr(SQInteger(pos)),otLOCAL)); //local + _outervalues.push_back(SQOuterVar(name,SQObjectPtr(int64_t(pos)),otLOCAL)); //local return _outervalues.size() - 1; @@ -423,7 +423,7 @@ void SQFuncState::AddParameter(const SQObject &name) _parameters.push_back(name); } -void SQFuncState::AddLineInfos(SQInteger line,bool lineop,bool force) +void SQFuncState::AddLineInfos(int64_t line,bool lineop,bool force) { if(_lastline!=line || force){ SQLineInfo li; @@ -438,8 +438,8 @@ void SQFuncState::AddLineInfos(SQInteger line,bool lineop,bool force) void SQFuncState::DiscardTarget() { - SQInteger discardedtarget = PopTarget(); - SQInteger size = _instructions.size(); + int64_t discardedtarget = PopTarget(); + int64_t size = _instructions.size(); if(size > 0 && _optimization){ SQInstruction &pi = _instructions[size-1];//previous instruction switch(pi.op) { @@ -453,7 +453,7 @@ void SQFuncState::DiscardTarget() void SQFuncState::AddInstruction(SQInstruction &i) { - SQInteger size = _instructions.size(); + int64_t size = _instructions.size(); if(size > 0 && _optimization){ //simple optimizer SQInstruction &pi = _instructions[size-1];//previous instruction switch(i.op) { @@ -505,7 +505,7 @@ void SQFuncState::AddInstruction(SQInstruction &i) } break; case _OP_APPENDARRAY: { - SQInteger aat = -1; + int64_t aat = -1; switch(pi.op) { case _OP_LOAD: aat = AAT_LITERAL; break; case _OP_LOADINT: aat = AAT_INT; break; @@ -584,17 +584,17 @@ void SQFuncState::AddInstruction(SQInstruction &i) _instructions.push_back(i); } -SQObject SQFuncState::CreateString(const SQChar *s,SQInteger len) +SQObject SQFuncState::CreateString(const SQChar *s,int64_t len) { SQObjectPtr ns(SQString::Create(_sharedstate,s,len)); - _table(_strings)->NewSlot(ns,(SQInteger)1); + _table(_strings)->NewSlot(ns,(int64_t)1); return ns; } SQObject SQFuncState::CreateTable() { SQObjectPtr nt(SQTable::Create(_sharedstate,0)); - _table(_strings)->NewSlot(nt,(SQInteger)1); + _table(_strings)->NewSlot(nt,(int64_t)1); return nt; } @@ -606,7 +606,7 @@ SQFunctionProto *SQFuncState::BuildProto() _lineinfos.size(),_localvarinfos.size(),_defaultparams.size()); SQObjectPtr refidx,key,val; - SQInteger idx; + int64_t idx; f->_stacksize = _stacksize; f->_sourcename = _sourcename; @@ -618,12 +618,12 @@ SQFunctionProto *SQFuncState::BuildProto() refidx=idx; } - for(SQUnsignedInteger nf = 0; nf < _functions.size(); nf++) f->_functions[nf] = _functions[nf]; - for(SQUnsignedInteger np = 0; np < _parameters.size(); np++) f->_parameters[np] = _parameters[np]; - for(SQUnsignedInteger no = 0; no < _outervalues.size(); no++) f->_outervalues[no] = _outervalues[no]; - for(SQUnsignedInteger nl = 0; nl < _localvarinfos.size(); nl++) f->_localvarinfos[nl] = _localvarinfos[nl]; - for(SQUnsignedInteger ni = 0; ni < _lineinfos.size(); ni++) f->_lineinfos[ni] = _lineinfos[ni]; - for(SQUnsignedInteger nd = 0; nd < _defaultparams.size(); nd++) f->_defaultparams[nd] = _defaultparams[nd]; + for(uint64_t nf = 0; nf < _functions.size(); nf++) f->_functions[nf] = _functions[nf]; + for(uint64_t np = 0; np < _parameters.size(); np++) f->_parameters[np] = _parameters[np]; + for(uint64_t no = 0; no < _outervalues.size(); no++) f->_outervalues[no] = _outervalues[no]; + for(uint64_t nl = 0; nl < _localvarinfos.size(); nl++) f->_localvarinfos[nl] = _localvarinfos[nl]; + for(uint64_t ni = 0; ni < _lineinfos.size(); ni++) f->_lineinfos[ni] = _lineinfos[ni]; + for(uint64_t nd = 0; nd < _defaultparams.size(); nd++) f->_defaultparams[nd] = _defaultparams[nd]; memcpy(f->_instructions,&_instructions[0],_instructions.size()*sizeof(SQInstruction)); diff --git a/rabbit/sqfuncstate.hpp b/rabbit/sqfuncstate.hpp index 513cfb1..23226e0 100644 --- a/rabbit/sqfuncstate.hpp +++ b/rabbit/sqfuncstate.hpp @@ -19,45 +19,45 @@ struct SQFuncState void Error(const SQChar *err); SQFuncState *PushChildState(SQSharedState *ss); void PopChildState(); - void AddInstruction(SQOpcode _op,SQInteger arg0=0,SQInteger arg1=0,SQInteger arg2=0,SQInteger arg3=0){SQInstruction i(_op,arg0,arg1,arg2,arg3);AddInstruction(i);} + void AddInstruction(SQOpcode _op,int64_t arg0=0,int64_t arg1=0,int64_t arg2=0,int64_t arg3=0){SQInstruction i(_op,arg0,arg1,arg2,arg3);AddInstruction(i);} void AddInstruction(SQInstruction &i); - void SetIntructionParams(SQInteger pos,SQInteger arg0,SQInteger arg1,SQInteger arg2=0,SQInteger arg3=0); - void SetIntructionParam(SQInteger pos,SQInteger arg,SQInteger val); - SQInstruction &GetInstruction(SQInteger pos){return _instructions[pos];} - void PopInstructions(SQInteger size){for(SQInteger i=0;i _childstates; - SQInteger GetConstant(const SQObject &cons); + int64_t GetConstant(const SQObject &cons); private: CompilerErrorFunc _errfunc; void *_errtarget; diff --git a/rabbit/sqlexer.cpp b/rabbit/sqlexer.cpp index b81da7d..487b94b 100644 --- a/rabbit/sqlexer.cpp +++ b/rabbit/sqlexer.cpp @@ -21,7 +21,7 @@ #define INIT_TEMP_STRING() { _longstr.resize(0);} #define APPEND_CHAR(c) { _longstr.push_back(c);} #define TERMINATE_BUFFER() {_longstr.push_back(_SC('\0'));} -#define ADD_KEYWORD(key,id) _keywords->NewSlot( SQString::Create(ss, _SC(#key)) ,SQInteger(id)) +#define ADD_KEYWORD(key,id) _keywords->NewSlot( SQString::Create(ss, _SC(#key)) ,int64_t(id)) SQLexer::SQLexer(){} SQLexer::~SQLexer() @@ -91,7 +91,7 @@ void SQLexer::Error(const SQChar *err) void SQLexer::Next() { - SQInteger t = _readf(_up); + int64_t t = _readf(_up); if(t > MAX_CHAR) Error(_SC("Invalid character")); if(t != 0) { _currdata = (LexChar)t; @@ -101,13 +101,13 @@ void SQLexer::Next() _reached_eof = SQTrue; } -const SQChar *SQLexer::Tok2Str(SQInteger tok) +const SQChar *SQLexer::Tok2Str(int64_t tok) { SQObjectPtr itr, key, val; - SQInteger nitr; + int64_t nitr; while((nitr = _keywords->Next(false,itr, key, val)) != -1) { - itr = (SQInteger)nitr; - if(((SQInteger)_integer(val)) == tok) + itr = (int64_t)nitr; + if(((int64_t)_integer(val)) == tok) return _stringval(key); } return NULL; @@ -130,7 +130,7 @@ void SQLexer::LexLineComment() do { NEXT(); } while (CUR_CHAR != _SC('\n') && (!IS_EOB())); } -SQInteger SQLexer::Lex() +int64_t SQLexer::Lex() { _lasttokenline = _currentline; while(CUR_CHAR != RABBIT_EOB) { @@ -202,7 +202,7 @@ SQInteger SQLexer::Lex() if (CUR_CHAR != _SC('=')){ RETURN_TOKEN('!')} else { NEXT(); RETURN_TOKEN(TK_NE); } case _SC('@'): { - SQInteger stype; + int64_t stype; NEXT(); if(CUR_CHAR != _SC('"')) { RETURN_TOKEN('@'); @@ -214,7 +214,7 @@ SQInteger SQLexer::Lex() } case _SC('"'): case _SC('\''): { - SQInteger stype; + int64_t stype; if((stype=ReadString(CUR_CHAR,false))!=-1){ RETURN_TOKEN(stype); } @@ -222,7 +222,7 @@ SQInteger SQLexer::Lex() } case _SC('{'): case _SC('}'): case _SC('('): case _SC(')'): case _SC('['): case _SC(']'): case _SC(';'): case _SC(','): case _SC('?'): case _SC('^'): case _SC('~'): - {SQInteger ret = CUR_CHAR; + {int64_t ret = CUR_CHAR; NEXT(); RETURN_TOKEN(ret); } case _SC('.'): NEXT(); @@ -265,15 +265,15 @@ SQInteger SQLexer::Lex() return 0; default:{ if (scisdigit(CUR_CHAR)) { - SQInteger ret = ReadNumber(); + int64_t ret = ReadNumber(); RETURN_TOKEN(ret); } else if (scisalpha(CUR_CHAR) || CUR_CHAR == _SC('_')) { - SQInteger t = ReadID(); + int64_t t = ReadID(); RETURN_TOKEN(t); } else { - SQInteger c = CUR_CHAR; + int64_t c = CUR_CHAR; if (sciscntrl((int)c)) Error(_SC("unexpected character(control)")); NEXT(); RETURN_TOKEN(c); @@ -285,22 +285,22 @@ SQInteger SQLexer::Lex() return 0; } -SQInteger SQLexer::GetIDType(const SQChar *s,SQInteger len) +int64_t SQLexer::GetIDType(const SQChar *s,int64_t len) { SQObjectPtr t; if(_keywords->GetStr(s,len, t)) { - return SQInteger(_integer(t)); + return int64_t(_integer(t)); } return TK_IDENTIFIER; } #ifdef SQUNICODE #if WCHAR_SIZE == 2 -SQInteger SQLexer::AddUTF16(SQUnsignedInteger ch) +int64_t SQLexer::AddUTF16(uint64_t ch) { if (ch >= 0x10000) { - SQUnsignedInteger code = (ch - 0x10000); + uint64_t code = (ch - 0x10000); APPEND_CHAR((SQChar)(0xD800 | (code >> 10))); APPEND_CHAR((SQChar)(0xDC00 | (code & 0x3FF))); return 2; @@ -312,7 +312,7 @@ SQInteger SQLexer::AddUTF16(SQUnsignedInteger ch) } #endif #else -SQInteger SQLexer::AddUTF8(SQUnsignedInteger ch) +int64_t SQLexer::AddUTF8(uint64_t ch) { if (ch < 0x80) { APPEND_CHAR((char)ch); @@ -340,11 +340,11 @@ SQInteger SQLexer::AddUTF8(SQUnsignedInteger ch) } #endif -SQInteger SQLexer::ProcessStringHexEscape(SQChar *dest, SQInteger maxdigits) +int64_t SQLexer::ProcessStringHexEscape(SQChar *dest, int64_t maxdigits) { NEXT(); if (!isxdigit(CUR_CHAR)) Error(_SC("hexadecimal number expected")); - SQInteger n = 0; + int64_t n = 0; while (isxdigit(CUR_CHAR) && n < maxdigits) { dest[n] = CUR_CHAR; n++; @@ -354,14 +354,14 @@ SQInteger SQLexer::ProcessStringHexEscape(SQChar *dest, SQInteger maxdigits) return n; } -SQInteger SQLexer::ReadString(SQInteger ndelim,bool verbatim) +int64_t SQLexer::ReadString(int64_t ndelim,bool verbatim) { INIT_TEMP_STRING(); NEXT(); if(IS_EOB()) return -1; for(;;) { while(CUR_CHAR != ndelim) { - SQInteger x = CUR_CHAR; + int64_t x = CUR_CHAR; switch (x) { case RABBIT_EOB: Error(_SC("unfinished string")); @@ -379,7 +379,7 @@ SQInteger SQLexer::ReadString(SQInteger ndelim,bool verbatim) NEXT(); switch(CUR_CHAR) { case _SC('x'): { - const SQInteger maxdigits = sizeof(SQChar) * 2; + const int64_t maxdigits = sizeof(SQChar) * 2; SQChar temp[maxdigits + 1]; ProcessStringHexEscape(temp, maxdigits); SQChar *stemp; @@ -388,7 +388,7 @@ SQInteger SQLexer::ReadString(SQInteger ndelim,bool verbatim) break; case _SC('U'): case _SC('u'): { - const SQInteger maxdigits = CUR_CHAR == 'u' ? 4 : 8; + const int64_t maxdigits = CUR_CHAR == 'u' ? 4 : 8; SQChar temp[8 + 1]; ProcessStringHexEscape(temp, maxdigits); SQChar *stemp; @@ -435,7 +435,7 @@ SQInteger SQLexer::ReadString(SQInteger ndelim,bool verbatim) } } TERMINATE_BUFFER(); - SQInteger len = _longstr.size()-1; + int64_t len = _longstr.size()-1; if(ndelim == _SC('\'')) { if(len == 0) Error(_SC("empty constant")); if(len > 1) Error(_SC("constant too long")); @@ -446,7 +446,7 @@ SQInteger SQLexer::ReadString(SQInteger ndelim,bool verbatim) return TK_STRING_LITERAL; } -void LexHexadecimal(const SQChar *s,SQUnsignedInteger *res) +void LexHexadecimal(const SQChar *s,uint64_t *res) { *res = 0; while(*s != 0) @@ -457,7 +457,7 @@ void LexHexadecimal(const SQChar *s,SQUnsignedInteger *res) } } -void LexInteger(const SQChar *s,SQUnsignedInteger *res) +void LexInteger(const SQChar *s,uint64_t *res) { *res = 0; while(*s != 0) @@ -466,9 +466,9 @@ void LexInteger(const SQChar *s,SQUnsignedInteger *res) } } -SQInteger scisodigit(SQInteger c) { return c >= _SC('0') && c <= _SC('7'); } +int64_t scisodigit(int64_t c) { return c >= _SC('0') && c <= _SC('7'); } -void LexOctal(const SQChar *s,SQUnsignedInteger *res) +void LexOctal(const SQChar *s,uint64_t *res) { *res = 0; while(*s != 0) @@ -478,18 +478,18 @@ void LexOctal(const SQChar *s,SQUnsignedInteger *res) } } -SQInteger isexponent(SQInteger c) { return c == 'e' || c=='E'; } +int64_t isexponent(int64_t c) { return c == 'e' || c=='E'; } -#define MAX_HEX_DIGITS (sizeof(SQInteger)*2) -SQInteger SQLexer::ReadNumber() +#define MAX_HEX_DIGITS (sizeof(int64_t)*2) +int64_t SQLexer::ReadNumber() { #define TINT 1 #define TFLOAT 2 #define THEX 3 #define TSCIENTIFIC 4 #define TOCTAL 5 - SQInteger type = TINT, firstchar = CUR_CHAR; + int64_t type = TINT, firstchar = CUR_CHAR; SQChar *sTemp; INIT_TEMP_STRING(); NEXT(); @@ -536,24 +536,24 @@ SQInteger SQLexer::ReadNumber() switch(type) { case TSCIENTIFIC: case TFLOAT: - _fvalue = (SQFloat)scstrtod(&_longstr[0],&sTemp); + _fvalue = (float_t)scstrtod(&_longstr[0],&sTemp); return TK_FLOAT; case TINT: - LexInteger(&_longstr[0],(SQUnsignedInteger *)&_nvalue); + LexInteger(&_longstr[0],(uint64_t *)&_nvalue); return TK_INTEGER; case THEX: - LexHexadecimal(&_longstr[0],(SQUnsignedInteger *)&_nvalue); + LexHexadecimal(&_longstr[0],(uint64_t *)&_nvalue); return TK_INTEGER; case TOCTAL: - LexOctal(&_longstr[0],(SQUnsignedInteger *)&_nvalue); + LexOctal(&_longstr[0],(uint64_t *)&_nvalue); return TK_INTEGER; } return 0; } -SQInteger SQLexer::ReadID() +int64_t SQLexer::ReadID() { - SQInteger res; + int64_t res; INIT_TEMP_STRING(); do { APPEND_CHAR(CUR_CHAR); diff --git a/rabbit/sqlexer.hpp b/rabbit/sqlexer.hpp index 722c932..5a8a782 100644 --- a/rabbit/sqlexer.hpp +++ b/rabbit/sqlexer.hpp @@ -19,35 +19,35 @@ struct SQLexer ~SQLexer(); void Init(SQSharedState *ss,SQLEXREADFUNC rg,SQUserPointer up,CompilerErrorFunc efunc,void *ed); void Error(const SQChar *err); - SQInteger Lex(); - const SQChar *Tok2Str(SQInteger tok); + int64_t Lex(); + const SQChar *Tok2Str(int64_t tok); private: - SQInteger GetIDType(const SQChar *s,SQInteger len); - SQInteger ReadString(SQInteger ndelim,bool verbatim); - SQInteger ReadNumber(); + int64_t GetIDType(const SQChar *s,int64_t len); + int64_t ReadString(int64_t ndelim,bool verbatim); + int64_t ReadNumber(); void LexBlockComment(); void LexLineComment(); - SQInteger ReadID(); + int64_t ReadID(); void Next(); #ifdef SQUNICODE #if WCHAR_SIZE == 2 - SQInteger AddUTF16(SQUnsignedInteger ch); + int64_t AddUTF16(uint64_t ch); #endif #else - SQInteger AddUTF8(SQUnsignedInteger ch); + int64_t AddUTF8(uint64_t ch); #endif - SQInteger ProcessStringHexEscape(SQChar *dest, SQInteger maxdigits); - SQInteger _curtoken; + int64_t ProcessStringHexEscape(SQChar *dest, int64_t maxdigits); + int64_t _curtoken; SQTable *_keywords; SQBool _reached_eof; public: - SQInteger _prevtoken; - SQInteger _currentline; - SQInteger _lasttokenline; - SQInteger _currentcolumn; + int64_t _prevtoken; + int64_t _currentline; + int64_t _lasttokenline; + int64_t _currentcolumn; const SQChar *_svalue; - SQInteger _nvalue; - SQFloat _fvalue; + int64_t _nvalue; + float_t _fvalue; SQLEXREADFUNC _readf; SQUserPointer _up; LexChar _currdata; diff --git a/rabbit/sqmem.cpp b/rabbit/sqmem.cpp index bf5b14f..814d50e 100644 --- a/rabbit/sqmem.cpp +++ b/rabbit/sqmem.cpp @@ -9,9 +9,9 @@ #include #ifndef SQ_EXCLUDE_DEFAULT_MEMFUNCTIONS -void *sq_vm_malloc(SQUnsignedInteger size){ return malloc(size); } +void *sq_vm_malloc(uint64_t size){ return malloc(size); } -void *sq_vm_realloc(void *p, SQUnsignedInteger SQ_UNUSED_ARG(oldsize), SQUnsignedInteger size){ return realloc(p, size); } +void *sq_vm_realloc(void *p, uint64_t SQ_UNUSED_ARG(oldsize), uint64_t size){ return realloc(p, size); } -void sq_vm_free(void *p, SQUnsignedInteger SQ_UNUSED_ARG(size)){ free(p); } +void sq_vm_free(void *p, uint64_t SQ_UNUSED_ARG(size)){ free(p); } #endif diff --git a/rabbit/sqobject.cpp b/rabbit/sqobject.cpp index 76065cc..fb74409 100644 --- a/rabbit/sqobject.cpp +++ b/rabbit/sqobject.cpp @@ -50,7 +50,7 @@ const SQChar *GetTypeName(const SQObjectPtr &obj1) return IdType2Name(sq_type(obj1)); } -SQString *SQString::Create(SQSharedState *ss,const SQChar *s,SQInteger len) +SQString *SQString::Create(SQSharedState *ss,const SQChar *s,int64_t len) { SQString *str=ADD_STRING(ss,s,len); return str; @@ -61,12 +61,12 @@ void SQString::Release() REMOVE_STRING(_sharedstate,this); } -SQInteger SQString::Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval) +int64_t SQString::Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval) { - SQInteger idx = (SQInteger)TranslateIndex(refpos); + int64_t idx = (int64_t)TranslateIndex(refpos); while(idx < _len){ - outkey = (SQInteger)idx; - outval = (SQInteger)((SQUnsignedInteger)_val[idx]); + outkey = (int64_t)idx; + outval = (int64_t)((uint64_t)_val[idx]); //return idx for the next iteration return ++idx; } @@ -74,13 +74,13 @@ SQInteger SQString::Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjec return -1; } -SQUnsignedInteger TranslateIndex(const SQObjectPtr &idx) +uint64_t TranslateIndex(const SQObjectPtr &idx) { switch(sq_type(idx)){ case OT_NULL: return 0; case OT_INTEGER: - return (SQUnsignedInteger)_integer(idx); + return (uint64_t)_integer(idx); default: assert(0); break; } return 0; @@ -135,26 +135,26 @@ bool SQDelegable::SetDelegate(SQTable *mt) return true; } -bool SQGenerator::Yield(SQVM *v,SQInteger target) +bool SQGenerator::Yield(SQVM *v,int64_t target) { if(_state==eSuspended) { v->Raise_Error(_SC("internal vm error, yielding dead generator")); return false;} if(_state==eDead) { v->Raise_Error(_SC("internal vm error, yielding a dead generator")); return false; } - SQInteger size = v->_top-v->_stackbase; + int64_t size = v->_top-v->_stackbase; _stack.resize(size); SQObject _this = v->_stack[v->_stackbase]; _stack._vals[0] = ISREFCOUNTED(sq_type(_this)) ? SQObjectPtr(_refcounted(_this)->GetWeakRef(sq_type(_this))) : _this; - for(SQInteger n =1; n_stack[v->_stackbase+n]; } - for(SQInteger j =0; j < size; j++) + for(int64_t j =0; j < size; j++) { v->_stack[v->_stackbase+j].Null(); } _ci = *v->ci; _ci._generator=NULL; - for(SQInteger i=0;i<_ci._etraps;i++) { + for(int64_t i=0;i<_ci._etraps;i++) { _etraps.push_back(v->_etraps.top()); v->_etraps.pop_back(); // store relative stack base and size in case of resume to other _top @@ -170,14 +170,14 @@ bool SQGenerator::Resume(SQVM *v,SQObjectPtr &dest) { if(_state==eDead){ v->Raise_Error(_SC("resuming dead generator")); return false; } if(_state==eRunning){ v->Raise_Error(_SC("resuming active generator")); return false; } - SQInteger size = _stack.size(); - SQInteger target = &dest - &(v->_stack._vals[v->_stackbase]); + int64_t size = _stack.size(); + int64_t target = &dest - &(v->_stack._vals[v->_stackbase]); assert(target>=0 && target<=255); - SQInteger newbase = v->_top; + int64_t newbase = v->_top; if(!v->EnterFrame(v->_top, v->_top + size, false)) return false; v->ci->_generator = this; - v->ci->_target = (SQInt32)target; + v->ci->_target = (int32_t)target; v->ci->_closure = _ci._closure; v->ci->_ip = _ci._ip; v->ci->_literals = _ci._literals; @@ -186,7 +186,7 @@ bool SQGenerator::Resume(SQVM *v,SQObjectPtr &dest) v->ci->_root = _ci._root; - for(SQInteger i=0;i<_ci._etraps;i++) { + for(int64_t i=0;i<_ci._etraps;i++) { v->_etraps.push_back(_etraps.top()); _etraps.pop_back(); SQExceptionTrap &et = v->_etraps.back(); @@ -197,7 +197,7 @@ bool SQGenerator::Resume(SQVM *v,SQObjectPtr &dest) SQObject _this = _stack._vals[0]; v->_stack[v->_stackbase] = sq_type(_this) == OT_WEAKREF ? _weakref(_this)->_obj : _this; - for(SQInteger n = 1; n_stack[v->_stackbase+n] = _stack._vals[n]; _stack._vals[n].Null(); } @@ -210,18 +210,18 @@ bool SQGenerator::Resume(SQVM *v,SQObjectPtr &dest) } void SQArray::Extend(const SQArray *a){ - SQInteger xlen; + int64_t xlen; if((xlen=a->Size())) - for(SQInteger i=0;i_values[i]); } -const SQChar* SQFunctionProto::GetLocal(SQVM *vm,SQUnsignedInteger stackbase,SQUnsignedInteger nseq,SQUnsignedInteger nop) +const SQChar* SQFunctionProto::GetLocal(SQVM *vm,uint64_t stackbase,uint64_t nseq,uint64_t nop) { - SQUnsignedInteger nvars=_nlocalvarinfos; + uint64_t nvars=_nlocalvarinfos; const SQChar *res=NULL; if(nvars>=nseq){ - for(SQUnsignedInteger i=0;i=nop) { if(nseq==0){ @@ -237,17 +237,17 @@ const SQChar* SQFunctionProto::GetLocal(SQVM *vm,SQUnsignedInteger stackbase,SQU } -SQInteger SQFunctionProto::GetLine(SQInstruction *curr) +int64_t SQFunctionProto::GetLine(SQInstruction *curr) { - SQInteger op = (SQInteger)(curr-_instructions); - SQInteger line=_lineinfos[0]._line; - SQInteger low = 0; - SQInteger high = _nlineinfos - 1; - SQInteger mid = 0; + int64_t op = (int64_t)(curr-_instructions); + int64_t line=_lineinfos[0]._line; + int64_t low = 0; + int64_t high = _nlineinfos - 1; + int64_t mid = 0; while(low <= high) { mid = low + ((high - low) >> 1); - SQInteger curop = _lineinfos[mid]._op; + int64_t curop = _lineinfos[mid]._op; if(curop > op) { high = mid - 1; @@ -279,7 +279,7 @@ SQClosure::~SQClosure() } #define _CHECK_IO(exp) { if(!exp)return false; } -bool SafeWrite(HRABBITVM v,SQWRITEFUNC write,SQUserPointer up,SQUserPointer dest,SQInteger size) +bool SafeWrite(HRABBITVM v,SQWRITEFUNC write,SQUserPointer up,SQUserPointer dest,int64_t size) { if(write(up,dest,size) != size) { v->Raise_Error(_SC("io error (write function failure)")); @@ -288,7 +288,7 @@ bool SafeWrite(HRABBITVM v,SQWRITEFUNC write,SQUserPointer up,SQUserPointer dest return true; } -bool SafeRead(HRABBITVM v,SQWRITEFUNC read,SQUserPointer up,SQUserPointer dest,SQInteger size) +bool SafeRead(HRABBITVM v,SQWRITEFUNC read,SQUserPointer up,SQUserPointer dest,int64_t size) { if(size && read(up,dest,size) != size) { v->Raise_Error(_SC("io error, read function failure, the origin stream could be corrupted/trucated")); @@ -297,14 +297,14 @@ bool SafeRead(HRABBITVM v,SQWRITEFUNC read,SQUserPointer up,SQUserPointer dest,S return true; } -bool WriteTag(HRABBITVM v,SQWRITEFUNC write,SQUserPointer up,SQUnsignedInteger32 tag) +bool WriteTag(HRABBITVM v,SQWRITEFUNC write,SQUserPointer up,uint32_t tag) { return SafeWrite(v,write,up,&tag,sizeof(tag)); } -bool CheckTag(HRABBITVM v,SQWRITEFUNC read,SQUserPointer up,SQUnsignedInteger32 tag) +bool CheckTag(HRABBITVM v,SQWRITEFUNC read,SQUserPointer up,uint32_t tag) { - SQUnsignedInteger32 t; + uint32_t t; _CHECK_IO(SafeRead(v,read,up,&t,sizeof(t))); if(t != tag){ v->Raise_Error(_SC("invalid or corrupted closure stream")); @@ -315,18 +315,18 @@ bool CheckTag(HRABBITVM v,SQWRITEFUNC read,SQUserPointer up,SQUnsignedInteger32 bool WriteObject(HRABBITVM v,SQUserPointer up,SQWRITEFUNC write,SQObjectPtr &o) { - SQUnsignedInteger32 _type = (SQUnsignedInteger32)sq_type(o); + uint32_t _type = (uint32_t)sq_type(o); _CHECK_IO(SafeWrite(v,write,up,&_type,sizeof(_type))); switch(sq_type(o)){ case OT_STRING: - _CHECK_IO(SafeWrite(v,write,up,&_string(o)->_len,sizeof(SQInteger))); + _CHECK_IO(SafeWrite(v,write,up,&_string(o)->_len,sizeof(int64_t))); _CHECK_IO(SafeWrite(v,write,up,_stringval(o),sq_rsl(_string(o)->_len))); break; case OT_BOOL: case OT_INTEGER: - _CHECK_IO(SafeWrite(v,write,up,&_integer(o),sizeof(SQInteger)));break; + _CHECK_IO(SafeWrite(v,write,up,&_integer(o),sizeof(int64_t)));break; case OT_FLOAT: - _CHECK_IO(SafeWrite(v,write,up,&_float(o),sizeof(SQFloat)));break; + _CHECK_IO(SafeWrite(v,write,up,&_float(o),sizeof(float_t)));break; case OT_NULL: break; default: @@ -338,28 +338,28 @@ bool WriteObject(HRABBITVM v,SQUserPointer up,SQWRITEFUNC write,SQObjectPtr &o) bool ReadObject(HRABBITVM v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &o) { - SQUnsignedInteger32 _type; + uint32_t _type; _CHECK_IO(SafeRead(v,read,up,&_type,sizeof(_type))); SQObjectType t = (SQObjectType)_type; switch(t){ case OT_STRING:{ - SQInteger len; - _CHECK_IO(SafeRead(v,read,up,&len,sizeof(SQInteger))); + int64_t len; + _CHECK_IO(SafeRead(v,read,up,&len,sizeof(int64_t))); _CHECK_IO(SafeRead(v,read,up,_ss(v)->GetScratchPad(sq_rsl(len)),sq_rsl(len))); o=SQString::Create(_ss(v),_ss(v)->GetScratchPad(-1),len); } break; case OT_INTEGER:{ - SQInteger i; - _CHECK_IO(SafeRead(v,read,up,&i,sizeof(SQInteger))); o = i; break; + int64_t i; + _CHECK_IO(SafeRead(v,read,up,&i,sizeof(int64_t))); o = i; break; } case OT_BOOL:{ - SQInteger i; - _CHECK_IO(SafeRead(v,read,up,&i,sizeof(SQInteger))); o._type = OT_BOOL; o._unVal.nInteger = i; break; + int64_t i; + _CHECK_IO(SafeRead(v,read,up,&i,sizeof(int64_t))); o._type = OT_BOOL; o._unVal.nInteger = i; break; } case OT_FLOAT:{ - SQFloat f; - _CHECK_IO(SafeRead(v,read,up,&f,sizeof(SQFloat))); o = f; break; + float_t f; + _CHECK_IO(SafeRead(v,read,up,&f,sizeof(float_t))); o = f; break; } case OT_NULL: o.Null(); @@ -375,8 +375,8 @@ bool SQClosure::Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write) { _CHECK_IO(WriteTag(v,write,up,SQ_CLOSURESTREAM_HEAD)); _CHECK_IO(WriteTag(v,write,up,sizeof(SQChar))); - _CHECK_IO(WriteTag(v,write,up,sizeof(SQInteger))); - _CHECK_IO(WriteTag(v,write,up,sizeof(SQFloat))); + _CHECK_IO(WriteTag(v,write,up,sizeof(int64_t))); + _CHECK_IO(WriteTag(v,write,up,sizeof(float_t))); _CHECK_IO(_function->Save(v,up,write)); _CHECK_IO(WriteTag(v,write,up,SQ_CLOSURESTREAM_TAIL)); return true; @@ -386,8 +386,8 @@ bool SQClosure::Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &ret) { _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_HEAD)); _CHECK_IO(CheckTag(v,read,up,sizeof(SQChar))); - _CHECK_IO(CheckTag(v,read,up,sizeof(SQInteger))); - _CHECK_IO(CheckTag(v,read,up,sizeof(SQFloat))); + _CHECK_IO(CheckTag(v,read,up,sizeof(int64_t))); + _CHECK_IO(CheckTag(v,read,up,sizeof(float_t))); SQObjectPtr func; _CHECK_IO(SQFunctionProto::Load(v,up,read,func)); _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_TAIL)); @@ -408,10 +408,10 @@ SQFunctionProto::~SQFunctionProto() bool SQFunctionProto::Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write) { - SQInteger i,nliterals = _nliterals,nparameters = _nparameters; - SQInteger noutervalues = _noutervalues,nlocalvarinfos = _nlocalvarinfos; - SQInteger nlineinfos=_nlineinfos,ninstructions = _ninstructions,nfunctions=_nfunctions; - SQInteger ndefaultparams = _ndefaultparams; + int64_t i,nliterals = _nliterals,nparameters = _nparameters; + int64_t noutervalues = _noutervalues,nlocalvarinfos = _nlocalvarinfos; + int64_t nlineinfos=_nlineinfos,ninstructions = _ninstructions,nfunctions=_nfunctions; + int64_t ndefaultparams = _ndefaultparams; _CHECK_IO(WriteTag(v,write,up,SQ_CLOSURESTREAM_PART)); _CHECK_IO(WriteObject(v,up,write,_sourcename)); _CHECK_IO(WriteObject(v,up,write,_name)); @@ -436,7 +436,7 @@ bool SQFunctionProto::Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write) _CHECK_IO(WriteTag(v,write,up,SQ_CLOSURESTREAM_PART)); for(i=0;i_outervalues[i] = SQOuterVar(name,o, (SQOuterType)type); @@ -524,16 +524,16 @@ bool SQFunctionProto::Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr for(i = 0; i < nlocalvarinfos; i++){ SQLocalVarInfo lvi; _CHECK_IO(ReadObject(v, up, read, lvi._name)); - _CHECK_IO(SafeRead(v,read,up, &lvi._pos, sizeof(SQUnsignedInteger))); - _CHECK_IO(SafeRead(v,read,up, &lvi._start_op, sizeof(SQUnsignedInteger))); - _CHECK_IO(SafeRead(v,read,up, &lvi._end_op, sizeof(SQUnsignedInteger))); + _CHECK_IO(SafeRead(v,read,up, &lvi._pos, sizeof(uint64_t))); + _CHECK_IO(SafeRead(v,read,up, &lvi._start_op, sizeof(uint64_t))); + _CHECK_IO(SafeRead(v,read,up, &lvi._end_op, sizeof(uint64_t))); f->_localvarinfos[i] = lvi; } _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); _CHECK_IO(SafeRead(v,read,up, f->_lineinfos, sizeof(SQLineInfo)*nlineinfos)); _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); - _CHECK_IO(SafeRead(v,read,up, f->_defaultparams, sizeof(SQInteger)*ndefaultparams)); + _CHECK_IO(SafeRead(v,read,up, f->_defaultparams, sizeof(int64_t)*ndefaultparams)); _CHECK_IO(CheckTag(v,read,up,SQ_CLOSURESTREAM_PART)); _CHECK_IO(SafeRead(v,read,up, f->_instructions, sizeof(SQInstruction)*ninstructions)); diff --git a/rabbit/sqobject.hpp b/rabbit/sqobject.hpp index d708d67..397d079 100644 --- a/rabbit/sqobject.hpp +++ b/rabbit/sqobject.hpp @@ -64,25 +64,25 @@ enum SQMetaMethod{ #define _CONSTRUCT_VECTOR(type,size,ptr) { \ - for(SQInteger n = 0; n < ((SQInteger)size); n++) { \ + for(int64_t n = 0; n < ((int64_t)size); n++) { \ new (&ptr[n]) type(); \ } \ } #define _DESTRUCT_VECTOR(type,size,ptr) { \ - for(SQInteger nl = 0; nl < ((SQInteger)size); nl++) { \ + for(int64_t nl = 0; nl < ((int64_t)size); nl++) { \ ptr[nl].~type(); \ } \ } #define _COPY_VECTOR(dest,src,size) { \ - for(SQInteger _n_ = 0; _n_ < ((SQInteger)size); _n_++) { \ + for(int64_t _n_ = 0; _n_ < ((int64_t)size); _n_++) { \ dest[_n_] = src[_n_]; \ } \ } #define _NULL_SQOBJECT_VECTOR(vec,size) { \ - for(SQInteger _n_ = 0; _n_ < ((SQInteger)size); _n_++) { \ + for(int64_t _n_ = 0; _n_ < ((int64_t)size); _n_++) { \ vec[_n_].Null(); \ } \ } @@ -91,7 +91,7 @@ enum SQMetaMethod{ struct SQRefCounted { - SQUnsignedInteger _uiRef; + uint64_t _uiRef; struct SQWeakRef *_weakref; SQRefCounted() { _uiRef = 0; _weakref = NULL; } virtual ~SQRefCounted(); @@ -159,8 +159,8 @@ struct SQObjectPtr; #define _stringval(obj) (obj)._unVal.pString->_val #define _userdataval(obj) ((SQUserPointer)sq_aligning((obj)._unVal.pUserData + 1)) -#define tofloat(num) ((sq_type(num)==OT_INTEGER)?(SQFloat)_integer(num):_float(num)) -#define tointeger(num) ((sq_type(num)==OT_FLOAT)?(SQInteger)_float(num):_integer(num)) +#define tofloat(num) ((sq_type(num)==OT_INTEGER)?(float_t)_integer(num):_float(num)) +#define tointeger(num) ((sq_type(num)==OT_FLOAT)?(int64_t)_float(num):_integer(num)) ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// #if defined(SQUSEDOUBLE) && !defined(_SQ64) || !defined(SQUSEDOUBLE) && defined(_SQ64) @@ -241,8 +241,8 @@ struct SQObjectPtr : public SQObject _REF_TYPE_DECL(OT_THREAD,SQVM,pThread) _REF_TYPE_DECL(OT_FUNCPROTO,SQFunctionProto,pFunctionProto) - _SCALAR_TYPE_DECL(OT_INTEGER,SQInteger,nInteger) - _SCALAR_TYPE_DECL(OT_FLOAT,SQFloat,fFloat) + _SCALAR_TYPE_DECL(OT_INTEGER,int64_t,nInteger) + _SCALAR_TYPE_DECL(OT_FLOAT,float_t,fFloat) _SCALAR_TYPE_DECL(OT_USERPOINTER,SQUserPointer,pUserPointer) SQObjectPtr(bool bBool) @@ -319,9 +319,9 @@ struct SQDelegable : public SQRefCounted { SQTable *_delegate; }; -SQUnsignedInteger TranslateIndex(const SQObjectPtr &idx); +uint64_t TranslateIndex(const SQObjectPtr &idx); typedef sqvector SQObjectPtrVec; -typedef sqvector SQIntVec; +typedef sqvector SQIntVec; const SQChar *GetTypeName(const SQObjectPtr &obj1); const SQChar *IdType2Name(SQObjectType type); diff --git a/rabbit/sqopcodes.hpp b/rabbit/sqopcodes.hpp index d4accdd..5ec5c52 100644 --- a/rabbit/sqopcodes.hpp +++ b/rabbit/sqopcodes.hpp @@ -8,7 +8,7 @@ #pragma once #define MAX_FUNC_STACKSIZE 0xFF -#define MAX_LITERALS ((SQInteger)0x7FFFFFFF) +#define MAX_LITERALS ((int64_t)0x7FFFFFFF) enum BitWiseOP { BW_AND = 0, @@ -114,14 +114,14 @@ struct SQInstructionDesc { struct SQInstruction { SQInstruction(){}; - SQInstruction(SQOpcode _op,SQInteger a0=0,SQInteger a1=0,SQInteger a2=0,SQInteger a3=0) + SQInstruction(SQOpcode _op,int64_t a0=0,int64_t a1=0,int64_t a2=0,int64_t a3=0) { op = (unsigned char)_op; - _arg0 = (unsigned char)a0;_arg1 = (SQInt32)a1; + _arg0 = (unsigned char)a0;_arg1 = (int32_t)a1; _arg2 = (unsigned char)a2;_arg3 = (unsigned char)a3; } - SQInt32 _arg1; + int32_t _arg1; unsigned char op; unsigned char _arg0; unsigned char _arg2; diff --git a/rabbit/sqstate.cpp b/rabbit/sqstate.cpp index 0267fc1..2557a4b 100644 --- a/rabbit/sqstate.cpp +++ b/rabbit/sqstate.cpp @@ -33,13 +33,13 @@ SQSharedState::SQSharedState() #define newmetamethod(s) { \ _metamethods->push_back(SQString::Create(this,s)); \ - _table(_metamethodsmap)->NewSlot(_metamethods->back(),(SQInteger)(_metamethods->size()-1)); \ + _table(_metamethodsmap)->NewSlot(_metamethods->back(),(int64_t)(_metamethods->size()-1)); \ } bool CompileTypemask(SQIntVec &res,const SQChar *typemask) { - SQInteger i = 0; - SQInteger mask = 0; + int64_t i = 0; + int64_t mask = 0; while(typemask[i] != 0) { switch(typemask[i]) { case 'o': mask |= _RT_NULL; break; @@ -79,7 +79,7 @@ bool CompileTypemask(SQIntVec &res,const SQChar *typemask) SQTable *CreateDefaultDelegate(SQSharedState *ss,const SQRegFunction *funcz) { - SQInteger i=0; + int64_t i=0; SQTable *t=SQTable::Create(ss,0); while(funcz[i].name!=0){ SQNativeClosure *nc = SQNativeClosure::Create(ss,funcz[i].f,0); @@ -191,7 +191,7 @@ SQSharedState::~SQSharedState() } -SQInteger SQSharedState::GetMetaMethodIdxByName(const SQObjectPtr &name) +int64_t SQSharedState::GetMetaMethodIdxByName(const SQObjectPtr &name) { if(sq_type(name) != OT_STRING) return -1; @@ -203,9 +203,9 @@ SQInteger SQSharedState::GetMetaMethodIdxByName(const SQObjectPtr &name) } -SQChar* SQSharedState::GetScratchPad(SQInteger size) +SQChar* SQSharedState::GetScratchPad(int64_t size) { - SQInteger newsize; + int64_t newsize; if(size>0) { if(_scratchpadsize < size) { newsize = size + (size>>1); @@ -229,7 +229,7 @@ RefTable::RefTable() void RefTable::Finalize() { RefNode *nodes = _nodes; - for(SQUnsignedInteger n = 0; n < _numofslots; n++) { + for(uint64_t n = 0; n < _numofslots; n++) { nodes->obj.Null(); nodes++; } @@ -249,7 +249,7 @@ void RefTable::AddRef(SQObject &obj) ref->refs++; } -SQUnsignedInteger RefTable::GetRefCount(SQObject &obj) +uint64_t RefTable::GetRefCount(SQObject &obj) { SQHash mainpos; RefNode *prev; @@ -286,15 +286,15 @@ SQBool RefTable::Release(SQObject &obj) return SQFalse; } -void RefTable::Resize(SQUnsignedInteger size) +void RefTable::Resize(uint64_t size) { RefNode **oldbucks = _buckets; RefNode *t = _nodes; - SQUnsignedInteger oldnumofslots = _numofslots; + uint64_t oldnumofslots = _numofslots; AllocNodes(size); //rehash - SQUnsignedInteger nfound = 0; - for(SQUnsignedInteger n = 0; n < oldnumofslots; n++) { + uint64_t nfound = 0; + for(uint64_t n = 0; n < oldnumofslots; n++) { if(sq_type(t->obj) != OT_NULL) { //add back; assert(t->refs != 0); @@ -344,14 +344,14 @@ RefTable::RefNode *RefTable::Get(SQObject &obj,SQHash &mainpos,RefNode **prev,bo return ref; } -void RefTable::AllocNodes(SQUnsignedInteger size) +void RefTable::AllocNodes(uint64_t size) { RefNode **bucks; RefNode *nodes; bucks = (RefNode **)SQ_MALLOC((size * sizeof(RefNode *)) + (size * sizeof(RefNode))); nodes = (RefNode *)&bucks[size]; RefNode *temp = nodes; - SQUnsignedInteger n; + uint64_t n; for(n = 0; n < size - 1; n++) { bucks[n] = NULL; temp->refs = 0; @@ -390,17 +390,17 @@ SQStringTable::~SQStringTable() _strings = NULL; } -void SQStringTable::AllocNodes(SQInteger size) +void SQStringTable::AllocNodes(int64_t size) { _numofslots = size; _strings = (SQString**)SQ_MALLOC(sizeof(SQString*)*_numofslots); memset(_strings,0,sizeof(SQString*)*_numofslots); } -SQString *SQStringTable::Add(const SQChar *news,SQInteger len) +SQString *SQStringTable::Add(const SQChar *news,int64_t len) { if(len<0) - len = (SQInteger)scstrlen(news); + len = (int64_t)scstrlen(news); SQHash newhash = ::_hashstr(news,len); SQHash h = newhash&(_numofslots-1); SQString *s; @@ -424,12 +424,12 @@ SQString *SQStringTable::Add(const SQChar *news,SQInteger len) return t; } -void SQStringTable::Resize(SQInteger size) +void SQStringTable::Resize(int64_t size) { - SQInteger oldsize=_numofslots; + int64_t oldsize=_numofslots; SQString **oldtable=_strings; AllocNodes(size); - for (SQInteger i=0; i_next; @@ -455,7 +455,7 @@ void SQStringTable::Remove(SQString *bs) else _strings[h] = s->_next; _slotused--; - SQInteger slen = s->_len; + int64_t slen = s->_len; s->~SQString(); SQ_FREE(s,sizeof(SQString) + sq_rsl(slen)); return; diff --git a/rabbit/sqstate.hpp b/rabbit/sqstate.hpp index 43f84b2..533c24c 100644 --- a/rabbit/sqstate.hpp +++ b/rabbit/sqstate.hpp @@ -18,36 +18,36 @@ struct SQStringTable { SQStringTable(SQSharedState*ss); ~SQStringTable(); - SQString *Add(const SQChar *,SQInteger len); + SQString *Add(const SQChar *,int64_t len); void Remove(SQString *); private: - void Resize(SQInteger size); - void AllocNodes(SQInteger size); + void Resize(int64_t size); + void AllocNodes(int64_t size); SQString **_strings; - SQUnsignedInteger _numofslots; - SQUnsignedInteger _slotused; + uint64_t _numofslots; + uint64_t _slotused; SQSharedState *_sharedstate; }; struct RefTable { struct RefNode { SQObjectPtr obj; - SQUnsignedInteger refs; + uint64_t refs; struct RefNode *next; }; RefTable(); ~RefTable(); void AddRef(SQObject &obj); SQBool Release(SQObject &obj); - SQUnsignedInteger GetRefCount(SQObject &obj); + uint64_t GetRefCount(SQObject &obj); void Finalize(); private: RefNode *Get(SQObject &obj,SQHash &mainpos,RefNode **prev,bool add); RefNode *Add(SQHash mainpos,SQObject &obj); - void Resize(SQUnsignedInteger size); - void AllocNodes(SQUnsignedInteger size); - SQUnsignedInteger _numofslots; - SQUnsignedInteger _slotused; + void Resize(uint64_t size); + void AllocNodes(uint64_t size); + uint64_t _numofslots; + uint64_t _slotused; RefNode *_nodes; RefNode *_freelist; RefNode **_buckets; @@ -64,8 +64,8 @@ struct SQSharedState ~SQSharedState(); void Init(); public: - SQChar* GetScratchPad(SQInteger size); - SQInteger GetMetaMethodIdxByName(const SQObjectPtr &name); + SQChar* GetScratchPad(int64_t size); + int64_t GetMetaMethodIdxByName(const SQObjectPtr &name); SQObjectPtrVec *_metamethods; SQObjectPtr _metamethodsmap; SQObjectPtrVec *_systemstrings; @@ -106,7 +106,7 @@ public: SQRELEASEHOOK _releasehook; private: SQChar *_scratchpad; - SQInteger _scratchpadsize; + int64_t _scratchpadsize; }; #define _sp(s) (_sharedstate->GetScratchPad(s)) diff --git a/rabbit/sqstring.hpp b/rabbit/sqstring.hpp index fc9bfa9..764a2b6 100644 --- a/rabbit/sqstring.hpp +++ b/rabbit/sqstring.hpp @@ -21,12 +21,12 @@ struct SQString : public SQRefCounted SQString(){} ~SQString(){} public: - static SQString *Create(SQSharedState *ss, const SQChar *, SQInteger len = -1 ); - SQInteger Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval); + static SQString *Create(SQSharedState *ss, const SQChar *, int64_t len = -1 ); + int64_t Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval); void Release(); SQSharedState *_sharedstate; SQString *_next; //chain for the string table - SQInteger _len; + int64_t _len; SQHash _hash; SQChar _val[1]; }; diff --git a/rabbit/sqtable.cpp b/rabbit/sqtable.cpp index cc9f1ee..ab77ac7 100644 --- a/rabbit/sqtable.cpp +++ b/rabbit/sqtable.cpp @@ -12,9 +12,9 @@ #include #include -SQTable::SQTable(SQSharedState *ss,SQInteger nInitialSize) +SQTable::SQTable(SQSharedState *ss,int64_t nInitialSize) { - SQInteger pow2size=MINPOWER2; + int64_t pow2size=MINPOWER2; while(nInitialSize>pow2size)pow2size=pow2size<<1; AllocNodes(pow2size); _usednodes = 0; @@ -33,10 +33,10 @@ void SQTable::Remove(const SQObjectPtr &key) } } -void SQTable::AllocNodes(SQInteger nSize) +void SQTable::AllocNodes(int64_t nSize) { _HashNode *nodes=(_HashNode *)SQ_MALLOC(sizeof(_HashNode)*nSize); - for(SQInteger i=0;i= oldsize-oldsize/4) /* using more than 3/4? */ AllocNodes(oldsize*2); else if (nelems <= oldsize/4 && /* less than 1/4? */ @@ -63,12 +63,12 @@ void SQTable::Rehash(bool force) else return; _usednodes = 0; - for (SQInteger i=0; ikey) != OT_NULL) NewSlot(old->key,old->val); } - for(SQInteger k=0;k_nodes; _HashNode *src = _nodes; _HashNode *dst = nt->_nodes; - SQInteger n = 0; + int64_t n = 0; for(n = 0; n < _numofnodes; n++) { dst->key = src->key; dst->val = src->val; @@ -98,7 +98,7 @@ SQTable *SQTable::Clone() nt->_firstfree = basedst + (_firstfree - basesrc); nt->_usednodes = _usednodes; #else - SQInteger ridx=0; + int64_t ridx=0; SQObjectPtr key,val; while((ridx=Next(true,ridx,key,val))!=-1){ nt->NewSlot(key,val); @@ -176,9 +176,9 @@ bool SQTable::NewSlot(const SQObjectPtr &key,const SQObjectPtr &val) return NewSlot(key, val); } -SQInteger SQTable::Next(bool getweakrefs,const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval) +int64_t SQTable::Next(bool getweakrefs,const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval) { - SQInteger idx = (SQInteger)TranslateIndex(refpos); + int64_t idx = (int64_t)TranslateIndex(refpos); while (idx < _numofnodes) { if(sq_type(_nodes[idx].key) != OT_NULL) { //first found @@ -207,7 +207,7 @@ bool SQTable::Set(const SQObjectPtr &key, const SQObjectPtr &val) void SQTable::_ClearNodes() { - for(SQInteger i = 0;i < _numofnodes; i++) { _HashNode &n = _nodes[i]; n.key.Null(); n.val.Null(); } + for(int64_t i = 0;i < _numofnodes; i++) { _HashNode &n = _nodes[i]; n.key.Null(); n.val.Null(); } } void SQTable::Finalize() diff --git a/rabbit/sqtable.hpp b/rabbit/sqtable.hpp index 0be3ddd..8fa7d3f 100644 --- a/rabbit/sqtable.hpp +++ b/rabbit/sqtable.hpp @@ -16,14 +16,14 @@ #include -#define hashptr(p) ((SQHash)(((SQInteger)p) >> 3)) +#define hashptr(p) ((SQHash)(((int64_t)p) >> 3)) inline SQHash HashObj(const SQObjectPtr &key) { switch(sq_type(key)) { case OT_STRING: return _string(key)->_hash; - case OT_FLOAT: return (SQHash)((SQInteger)_float(key)); - case OT_BOOL: case OT_INTEGER: return (SQHash)((SQInteger)_integer(key)); + case OT_FLOAT: return (SQHash)((int64_t)_float(key)); + case OT_BOOL: case OT_INTEGER: return (SQHash)((int64_t)_integer(key)); default: return hashptr(key._unVal.pRefCounted); } } @@ -40,16 +40,16 @@ private: }; _HashNode *_firstfree; _HashNode *_nodes; - SQInteger _numofnodes; - SQInteger _usednodes; + int64_t _numofnodes; + int64_t _usednodes; /////////////////////////// - void AllocNodes(SQInteger nSize); + void AllocNodes(int64_t nSize); void Rehash(bool force); - SQTable(SQSharedState *ss, SQInteger nInitialSize); + SQTable(SQSharedState *ss, int64_t nInitialSize); void _ClearNodes(); public: - static SQTable* Create(SQSharedState *ss,SQInteger nInitialSize) + static SQTable* Create(SQSharedState *ss,int64_t nInitialSize) { SQTable *newtable = (SQTable*)SQ_MALLOC(sizeof(SQTable)); new (newtable) SQTable(ss, nInitialSize); @@ -61,7 +61,7 @@ public: ~SQTable() { SetDelegate(NULL); - for (SQInteger i = 0; i < _numofnodes; i++) _nodes[i].~_HashNode(); + for (int64_t i = 0; i < _numofnodes; i++) _nodes[i].~_HashNode(); SQ_FREE(_nodes, _numofnodes * sizeof(_HashNode)); } inline _HashNode *_Get(const SQObjectPtr &key,SQHash hash) @@ -75,7 +75,7 @@ public: return NULL; } //for compiler use - inline bool GetStr(const SQChar* key,SQInteger keylen,SQObjectPtr &val) + inline bool GetStr(const SQChar* key,int64_t keylen,SQObjectPtr &val) { SQHash hash = _hashstr(key,keylen); _HashNode *n = &_nodes[hash & (_numofnodes - 1)]; @@ -97,9 +97,9 @@ public: bool Set(const SQObjectPtr &key, const SQObjectPtr &val); //returns true if a new slot has been created false if it was already present bool NewSlot(const SQObjectPtr &key,const SQObjectPtr &val); - SQInteger Next(bool getweakrefs,const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval); + int64_t Next(bool getweakrefs,const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval); - SQInteger CountUsed(){ return _usednodes;} + int64_t CountUsed(){ return _usednodes;} void Clear(); void Release() { diff --git a/rabbit/squtils.hpp b/rabbit/squtils.hpp index 0971674..67b4826 100644 --- a/rabbit/squtils.hpp +++ b/rabbit/squtils.hpp @@ -7,9 +7,9 @@ */ #pragma once -void *sq_vm_malloc(SQUnsignedInteger size); -void *sq_vm_realloc(void *p,SQUnsignedInteger oldsize,SQUnsignedInteger size); -void sq_vm_free(void *p,SQUnsignedInteger size); +void *sq_vm_malloc(uint64_t size); +void *sq_vm_realloc(void *p,uint64_t oldsize,uint64_t size); +void sq_vm_free(void *p,uint64_t size); #define sq_new(__ptr,__type) {__ptr=(__type *)sq_vm_malloc(sizeof(__type));new (__ptr) __type;} #define sq_delete(__ptr,__type) {__ptr->~__type();sq_vm_free(__ptr,sizeof(__type));} @@ -42,7 +42,7 @@ public: if(v._size > _allocated) { _realloc(v._size); } - for(SQUnsignedInteger i = 0; i < v._size; i++) { + for(uint64_t i = 0; i < v._size; i++) { new ((void *)&_vals[i]) T(v._vals[i]); } _size = v._size; @@ -50,13 +50,13 @@ public: ~sqvector() { if(_allocated) { - for(SQUnsignedInteger i = 0; i < _size; i++) + for(uint64_t i = 0; i < _size; i++) _vals[i].~T(); SQ_FREE(_vals, (_allocated * sizeof(T))); } } - void reserve(SQUnsignedInteger newsize) { _realloc(newsize); } - void resize(SQUnsignedInteger newsize, const T& fill = T()) + void reserve(uint64_t newsize) { _realloc(newsize); } + void resize(uint64_t newsize, const T& fill = T()) { if(newsize > _allocated) _realloc(newsize); @@ -67,7 +67,7 @@ public: } } else{ - for(SQUnsignedInteger i = newsize; i < _size; i++) { + for(uint64_t i = newsize; i < _size; i++) { _vals[i].~T(); } _size = newsize; @@ -75,7 +75,7 @@ public: } void shrinktofit() { if(_size > 4) { _realloc(_size); } } T& top() const { return _vals[_size - 1]; } - inline SQUnsignedInteger size() const { return _size; } + inline uint64_t size() const { return _size; } bool empty() const { return (_size <= 0); } inline T &push_back(const T& val = T()) { @@ -87,15 +87,15 @@ public: { _size--; _vals[_size].~T(); } - void insert(SQUnsignedInteger idx, const T& val) + void insert(uint64_t idx, const T& val) { resize(_size + 1); - for(SQUnsignedInteger i = _size - 1; i > idx; i--) { + for(uint64_t i = _size - 1; i > idx; i--) { _vals[i] = _vals[i - 1]; } _vals[idx] = val; } - void remove(SQUnsignedInteger idx) + void remove(uint64_t idx) { _vals[idx].~T(); if(idx < (_size - 1)) { @@ -103,18 +103,18 @@ public: } _size--; } - SQUnsignedInteger capacity() { return _allocated; } + uint64_t capacity() { return _allocated; } inline T &back() const { return _vals[_size - 1]; } - inline T& operator[](SQUnsignedInteger pos) const{ return _vals[pos]; } + inline T& operator[](uint64_t pos) const{ return _vals[pos]; } T* _vals; private: - void _realloc(SQUnsignedInteger newsize) + void _realloc(uint64_t newsize) { newsize = (newsize > 0)?newsize:4; _vals = (T*)SQ_REALLOC(_vals, _allocated * sizeof(T), newsize * sizeof(T)); _allocated = newsize; } - SQUnsignedInteger _size; - SQUnsignedInteger _allocated; + uint64_t _size; + uint64_t _allocated; }; diff --git a/rabbit/sqvm.cpp b/rabbit/sqvm.cpp index fc0aeea..7ab47b4 100644 --- a/rabbit/sqvm.cpp +++ b/rabbit/sqvm.cpp @@ -22,19 +22,19 @@ #define TARGET _stack._vals[_stackbase+arg0] #define STK(a) _stack._vals[_stackbase+(a)] -bool SQVM::BW_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,const SQObjectPtr &o2) +bool SQVM::BW_OP(uint64_t op,SQObjectPtr &trg,const SQObjectPtr &o1,const SQObjectPtr &o2) { - SQInteger res; + int64_t res; if((sq_type(o1)| sq_type(o2)) == OT_INTEGER) { - SQInteger i1 = _integer(o1), i2 = _integer(o2); + int64_t i1 = _integer(o1), i2 = _integer(o2); switch(op) { case BW_AND: res = i1 & i2; break; case BW_OR: res = i1 | i2; break; case BW_XOR: res = i1 ^ i2; break; case BW_SHIFTL: res = i1 << i2; break; case BW_SHIFTR: res = i1 >> i2; break; - case BW_USHIFTR:res = (SQInteger)(*((SQUnsignedInteger*)&i1) >> i2); break; + case BW_USHIFTR:res = (int64_t)(*((uint64_t*)&i1) >> i2); break; default: { Raise_Error(_SC("internal vm error bitwise op failed")); return false; } } } @@ -45,7 +45,7 @@ bool SQVM::BW_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,con #define _ARITH_(op,trg,o1,o2) \ { \ - SQInteger tmask = sq_type(o1)|sq_type(o2); \ + int64_t tmask = sq_type(o1)|sq_type(o2); \ switch(tmask) { \ case OT_INTEGER: trg = _integer(o1) op _integer(o2);break; \ case (OT_FLOAT|OT_INTEGER): \ @@ -56,21 +56,21 @@ bool SQVM::BW_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,con #define _ARITH_NOZERO(op,trg,o1,o2,err) \ { \ - SQInteger tmask = sq_type(o1)|sq_type(o2); \ + int64_t tmask = sq_type(o1)|sq_type(o2); \ switch(tmask) { \ - case OT_INTEGER: { SQInteger i2 = _integer(o2); if(i2 == 0) { Raise_Error(err); SQ_THROW(); } trg = _integer(o1) op i2; } break;\ + case OT_INTEGER: { int64_t i2 = _integer(o2); if(i2 == 0) { Raise_Error(err); SQ_THROW(); } trg = _integer(o1) op i2; } break;\ case (OT_FLOAT|OT_INTEGER): \ case (OT_FLOAT): trg = tofloat(o1) op tofloat(o2); break;\ default: _GUARD(ARITH_OP((#op)[0],trg,o1,o2)); break;\ } \ } -bool SQVM::ARITH_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,const SQObjectPtr &o2) +bool SQVM::ARITH_OP(uint64_t op,SQObjectPtr &trg,const SQObjectPtr &o1,const SQObjectPtr &o2) { - SQInteger tmask = sq_type(o1)| sq_type(o2); + int64_t tmask = sq_type(o1)| sq_type(o2); switch(tmask) { case OT_INTEGER:{ - SQInteger res, i1 = _integer(o1), i2 = _integer(o2); + int64_t res, i1 = _integer(o1), i2 = _integer(o2); switch(op) { case '+': res = i1 + i2; break; case '-': res = i1 - i2; break; @@ -89,13 +89,13 @@ bool SQVM::ARITH_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1, break; case (OT_FLOAT|OT_INTEGER): case (OT_FLOAT):{ - SQFloat res, f1 = tofloat(o1), f2 = tofloat(o2); + float_t res, f1 = tofloat(o1), f2 = tofloat(o2); switch(op) { case '+': res = f1 + f2; break; case '-': res = f1 - f2; break; case '/': res = f1 / f2; break; case '*': res = f1 * f2; break; - case '%': res = SQFloat(fmod((double)f1,(double)f2)); break; + case '%': res = float_t(fmod((double)f1,(double)f2)); break; default: res = 0x0f; } trg = res; } @@ -143,8 +143,8 @@ void SQVM::Finalize() _debughook_closure.Null(); temp_reg.Null(); _callstackdata.resize(0); - SQInteger size=_stack.size(); - for(SQInteger i=0;i 0); return true; @@ -327,7 +327,7 @@ bool SQVM::StringCat(const SQObjectPtr &str,const SQObjectPtr &obj,SQObjectPtr & SQObjectPtr a, b; if(!ToString(str, a)) return false; if(!ToString(obj, b)) return false; - SQInteger l = _string(a)->_len , ol = _string(b)->_len; + int64_t l = _string(a)->_len , ol = _string(b)->_len; SQChar *s = _sp(sq_rsl(l + ol + 1)); memcpy(s, _stringval(a), sq_rsl(l)); memcpy(s + l, _stringval(b), sq_rsl(ol)); @@ -348,7 +348,7 @@ bool SQVM::TypeOf(const SQObjectPtr &obj1,SQObjectPtr &dest) return true; } -bool SQVM::Init(SQVM *friendvm, SQInteger stacksize) +bool SQVM::Init(SQVM *friendvm, int64_t stacksize) { _stack.resize(stacksize); _alloccallsstacksize = 4; @@ -374,13 +374,13 @@ bool SQVM::Init(SQVM *friendvm, SQInteger stacksize) } -bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQInteger stackbase,bool tailcall) +bool SQVM::StartCall(SQClosure *closure,int64_t target,int64_t args,int64_t stackbase,bool tailcall) { SQFunctionProto *func = closure->_function; - SQInteger paramssize = func->_nparameters; - const SQInteger newtop = stackbase + func->_stacksize; - SQInteger nargs = args; + int64_t paramssize = func->_nparameters; + const int64_t newtop = stackbase + func->_stacksize; + int64_t nargs = args; if(func->_varparams) { paramssize--; @@ -390,10 +390,10 @@ bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQIntege } //dumpstack(stackbase); - SQInteger nvargs = nargs - paramssize; + int64_t nvargs = nargs - paramssize; SQArray *arr = SQArray::Create(_ss(this),nvargs); - SQInteger pbase = stackbase+paramssize; - for(SQInteger n = 0; n < nvargs; n++) { + int64_t pbase = stackbase+paramssize; + for(int64_t n = 0; n < nvargs; n++) { arr->_values[n] = _stack._vals[pbase]; _stack._vals[pbase].Null(); pbase++; @@ -403,10 +403,10 @@ bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQIntege //dumpstack(stackbase); } else if (paramssize != nargs) { - SQInteger ndef = func->_ndefaultparams; - SQInteger diff; + int64_t ndef = func->_ndefaultparams; + int64_t diff; if(ndef && nargs < paramssize && (diff = paramssize - nargs) <= ndef) { - for(SQInteger n = ndef - diff; n < ndef; n++) { + for(int64_t n = ndef - diff; n < ndef; n++) { _stack._vals[stackbase + (nargs++)] = closure->_defaultparams[n]; } } @@ -425,7 +425,7 @@ bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQIntege ci->_closure = closure; ci->_literals = func->_literals; ci->_ip = func->_instructions; - ci->_target = (SQInt32)target; + ci->_target = (int32_t)target; if (_debughook) { CallDebugHook(_SC('c')); @@ -445,13 +445,13 @@ bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQIntege return true; } -bool SQVM::Return(SQInteger _arg0, SQInteger _arg1, SQObjectPtr &retval) +bool SQVM::Return(int64_t _arg0, int64_t _arg1, SQObjectPtr &retval) { SQBool _isroot = ci->_root; - SQInteger callerbase = _stackbase - ci->_prevstkbase; + int64_t callerbase = _stackbase - ci->_prevstkbase; if (_debughook) { - for(SQInteger i=0; i_ncalls; i++) { + for(int64_t i=0; i_ncalls; i++) { CallDebugHook(_SC('r')); } } @@ -479,7 +479,7 @@ bool SQVM::Return(SQInteger _arg0, SQInteger _arg1, SQObjectPtr &retval) #define _RET_ON_FAIL(exp) { if(!exp) return false; } -bool SQVM::PLOCAL_INC(SQInteger op,SQObjectPtr &target, SQObjectPtr &a, SQObjectPtr &incr) +bool SQVM::PLOCAL_INC(int64_t op,SQObjectPtr &target, SQObjectPtr &a, SQObjectPtr &incr) { SQObjectPtr trg; _RET_ON_FAIL(ARITH_OP( op , trg, a, incr)); @@ -488,7 +488,7 @@ bool SQVM::PLOCAL_INC(SQInteger op,SQObjectPtr &target, SQObjectPtr &a, SQObject return true; } -bool SQVM::DerefInc(SQInteger op,SQObjectPtr &target, SQObjectPtr &self, SQObjectPtr &key, SQObjectPtr &incr, bool postfix,SQInteger selfidx) +bool SQVM::DerefInc(int64_t op,SQObjectPtr &target, SQObjectPtr &self, SQObjectPtr &key, SQObjectPtr &incr, bool postfix,int64_t selfidx) { SQObjectPtr tmp, tself = self, tkey = key; if (!Get(tself, tkey, tmp, 0, selfidx)) { return false; } @@ -499,12 +499,12 @@ bool SQVM::DerefInc(SQInteger op,SQObjectPtr &target, SQObjectPtr &self, SQObjec } #define arg0 (_i_._arg0) -#define sarg0 ((SQInteger)*((const signed char *)&_i_._arg0)) +#define sarg0 ((int64_t)*((const signed char *)&_i_._arg0)) #define arg1 (_i_._arg1) -#define sarg1 (*((const SQInt32 *)&_i_._arg1)) +#define sarg1 (*((const int32_t *)&_i_._arg1)) #define arg2 (_i_._arg2) #define arg3 (_i_._arg3) -#define sarg3 ((SQInteger)*((const signed char *)&_i_._arg3)) +#define sarg3 ((int64_t)*((const signed char *)&_i_._arg3)) SQRESULT SQVM::Suspend() { @@ -518,22 +518,22 @@ SQRESULT SQVM::Suspend() #define _FINISH(howmuchtojump) {jump = howmuchtojump; return true; } bool SQVM::FOREACH_OP(SQObjectPtr &o1,SQObjectPtr &o2,SQObjectPtr -&o3,SQObjectPtr &o4,SQInteger SQ_UNUSED_ARG(arg_2),int exitpos,int &jump) +&o3,SQObjectPtr &o4,int64_t SQ_UNUSED_ARG(arg_2),int exitpos,int &jump) { - SQInteger nrefidx; + int64_t nrefidx; switch(sq_type(o1)) { case OT_TABLE: if((nrefidx = _table(o1)->Next(false,o4, o2, o3)) == -1) _FINISH(exitpos); - o4 = (SQInteger)nrefidx; _FINISH(1); + o4 = (int64_t)nrefidx; _FINISH(1); case OT_ARRAY: if((nrefidx = _array(o1)->Next(o4, o2, o3)) == -1) _FINISH(exitpos); - o4 = (SQInteger) nrefidx; _FINISH(1); + o4 = (int64_t) nrefidx; _FINISH(1); case OT_STRING: if((nrefidx = _string(o1)->Next(o4, o2, o3)) == -1)_FINISH(exitpos); - o4 = (SQInteger)nrefidx; _FINISH(1); + o4 = (int64_t)nrefidx; _FINISH(1); case OT_CLASS: if((nrefidx = _class(o1)->Next(o4, o2, o3)) == -1)_FINISH(exitpos); - o4 = (SQInteger)nrefidx; _FINISH(1); + o4 = (int64_t)nrefidx; _FINISH(1); case OT_USERDATA: case OT_INSTANCE: if(_delegable(o1)->_delegate) { @@ -562,7 +562,7 @@ bool SQVM::FOREACH_OP(SQObjectPtr &o1,SQObjectPtr &o2,SQObjectPtr case OT_GENERATOR: if(_generator(o1)->_state == SQGenerator::eDead) _FINISH(exitpos); if(_generator(o1)->_state == SQGenerator::eSuspended) { - SQInteger idx = 0; + int64_t idx = 0; if(sq_type(o4) == OT_INTEGER) { idx = _integer(o4) + 1; } @@ -585,10 +585,10 @@ bool SQVM::FOREACH_OP(SQObjectPtr &o1,SQObjectPtr &o2,SQObjectPtr bool SQVM::CLOSURE_OP(SQObjectPtr &target, SQFunctionProto *func) { - SQInteger nouters; + int64_t nouters; SQClosure *closure = SQClosure::Create(_ss(this), func,_table(_roottable)->GetWeakRef(OT_TABLE)); if((nouters = func->_noutervalues)) { - for(SQInteger i = 0; i_outervalues[i]; switch(v._type){ case otLOCAL: @@ -600,10 +600,10 @@ bool SQVM::CLOSURE_OP(SQObjectPtr &target, SQFunctionProto *func) } } } - SQInteger ndefparams; + int64_t ndefparams; if((ndefparams = func->_ndefaultparams)) { - for(SQInteger i = 0; i < ndefparams; i++) { - SQInteger spos = func->_defaultparams[i]; + for(int64_t i = 0; i < ndefparams; i++) { + int64_t spos = func->_defaultparams[i]; closure->_defaultparams[i] = _stack._vals[_stackbase + spos]; } } @@ -613,7 +613,7 @@ bool SQVM::CLOSURE_OP(SQObjectPtr &target, SQFunctionProto *func) } -bool SQVM::CLASS_OP(SQObjectPtr &target,SQInteger baseclass,SQInteger attributes) +bool SQVM::CLASS_OP(SQObjectPtr &target,int64_t baseclass,int64_t attributes) { SQClass *base = NULL; SQObjectPtr attrs; @@ -658,7 +658,7 @@ bool SQVM::IsEqual(const SQObjectPtr &o1,const SQObjectPtr &o2,bool &res) bool SQVM::IsFalse(SQObjectPtr &o) { if(((sq_type(o) & SQOBJECT_CANBEFALSE) - && ( ((sq_type(o) == OT_FLOAT) && (_float(o) == SQFloat(0.0))) )) + && ( ((sq_type(o) == OT_FLOAT) && (_float(o) == float_t(0.0))) )) #if !defined(SQUSEDOUBLE) || (defined(SQUSEDOUBLE) && defined(_SQ64)) || (_integer(o) == 0) ) //OT_NULL|OT_INTEGER|OT_BOOL #else @@ -670,12 +670,12 @@ bool SQVM::IsFalse(SQObjectPtr &o) return false; } extern SQInstructionDesc g_InstrDesc[]; -bool SQVM::Execute(SQObjectPtr &closure, SQInteger nargs, SQInteger stackbase,SQObjectPtr &outres, SQBool raiseerror,ExecutionType et) +bool SQVM::Execute(SQObjectPtr &closure, int64_t nargs, int64_t stackbase,SQObjectPtr &outres, SQBool raiseerror,ExecutionType et) { if ((_nnativecalls + 1) > MAX_NATIVE_CALLS) { Raise_Error(_SC("Native stack overflow")); return false; } _nnativecalls++; AutoDec ad(&_nnativecalls); - SQInteger traps = 0; + int64_t traps = 0; CallInfo *prevci = ci; switch(et) { @@ -717,20 +717,20 @@ exception_restore: case _OP_LOAD: TARGET = ci->_literals[arg1]; continue; case _OP_LOADINT: #ifndef _SQ64 - TARGET = (SQInteger)arg1; continue; + TARGET = (int64_t)arg1; continue; #else - TARGET = (SQInteger)((SQInt32)arg1); continue; + TARGET = (int64_t)((int32_t)arg1); continue; #endif - case _OP_LOADFLOAT: TARGET = *((const SQFloat *)&arg1); continue; + case _OP_LOADFLOAT: TARGET = *((const float_t *)&arg1); continue; case _OP_DLOAD: TARGET = ci->_literals[arg1]; STK(arg2) = ci->_literals[arg3];continue; case _OP_TAILCALL:{ SQObjectPtr &t = STK(arg1); if (sq_type(t) == OT_CLOSURE && (!_closure(t)->_function->_bgenerator)){ SQObjectPtr clo = t; - SQInteger last_top = _top; + int64_t last_top = _top; if(_openouters) CloseOuters(&(_stack._vals[_stackbase])); - for (SQInteger i = 0; i < arg3; i++) STK(i) = STK(arg2 + i); + for (int64_t i = 0; i < arg3; i++) STK(i) = STK(arg2 + i); _GUARD(StartCall(_closure(clo), ci->_target, arg3, _stackbase, true)); if (last_top >= _top) { _top = last_top; @@ -747,7 +747,7 @@ exception_restore: case OT_NATIVECLOSURE: { bool suspend; bool tailcall; - _GUARD(CallNative(_nativeclosure(clo), arg3, _stackbase+arg2, clo, (SQInt32)sarg0, suspend, tailcall)); + _GUARD(CallNative(_nativeclosure(clo), arg3, _stackbase+arg2, clo, (int32_t)sarg0, suspend, tailcall)); if(suspend){ _suspended = SQTrue; _suspended_target = sarg0; @@ -767,7 +767,7 @@ exception_restore: if(sarg0 != -1) { STK(arg0) = inst; } - SQInteger stkbase; + int64_t stkbase; switch(sq_type(clo)) { case OT_CLOSURE: stkbase = _stackbase+arg2; @@ -790,7 +790,7 @@ exception_restore: SQObjectPtr closure; if(_delegable(clo)->_delegate && _delegable(clo)->GetMetaMethod(this,MT_CALL,closure)) { Push(clo); - for (SQInteger i = 0; i < arg3; i++) Push(STK(arg2 + i)); + for (int64_t i = 0; i < arg3; i++) Push(STK(arg2 + i)); if(!CallMetaMethod(closure, MT_CALL, arg3+1, clo)) SQ_THROW(); if(sarg0 != -1) { STK(arg0) = clo; @@ -863,7 +863,7 @@ exception_restore: return true; } continue; - case _OP_LOADNULLS:{ for(SQInt32 n=0; n < arg1; n++) STK(arg0+n).Null(); }continue; + case _OP_LOADNULLS:{ for(int32_t n=0; n < arg1; n++) STK(arg0+n).Null(); }continue; case _OP_LOADROOT: { SQWeakRef *w = _closure(ci->_closure)->_root; if(sq_type(w->_obj) != OT_NULL) { @@ -916,14 +916,14 @@ exception_restore: case AAT_INT: val._type = OT_INTEGER; #ifndef _SQ64 - val._unVal.nInteger = (SQInteger)arg1; + val._unVal.nInteger = (int64_t)arg1; #else - val._unVal.nInteger = (SQInteger)((SQInt32)arg1); + val._unVal.nInteger = (int64_t)((int32_t)arg1); #endif break; case AAT_FLOAT: val._type = OT_FLOAT; - val._unVal.fFloat = *((const SQFloat *)&arg1); + val._unVal.fFloat = *((const float_t *)&arg1); break; case AAT_BOOL: val._type = OT_BOOL; @@ -935,7 +935,7 @@ exception_restore: _array(STK(arg0))->Append(val); continue; } case _OP_COMPARITH: { - SQInteger selfidx = (((SQUnsignedInteger)arg1&0xFFFF0000)>>16); + int64_t selfidx = (((uint64_t)arg1&0xFFFF0000)>>16); _GUARD(DerefInc(arg3, TARGET, STK(selfidx), STK(arg2), STK(arg1&0x0000FFFF), false, selfidx)); } continue; @@ -985,8 +985,8 @@ exception_restore: case _OP_NOT: TARGET = IsFalse(STK(arg1)); continue; case _OP_BWNOT: if(sq_type(STK(arg1)) == OT_INTEGER) { - SQInteger t = _integer(STK(arg1)); - TARGET = SQInteger(~t); + int64_t t = _integer(STK(arg1)); + TARGET = int64_t(~t); continue; } Raise_Error(_SC("attempt to perform a bitwise op on a %s"), GetTypeName(STK(arg1))); @@ -1036,7 +1036,7 @@ exception_restore: } continue; case _OP_POPTRAP: { - for(SQInteger i = 0; i < arg0; i++) { + for(int64_t i = 0; i < arg0; i++) { _etraps.pop_back(); traps--; ci->_etraps--; } @@ -1067,8 +1067,8 @@ exception_trap: { SQObjectPtr currerror = _lasterror; // dumpstack(_stackbase); -// SQInteger n = 0; - SQInteger last_top = _top; +// int64_t n = 0; + int64_t last_top = _top; if(_ss(this)->_notifyallexceptions || (!traps && raiseerror)) CallErrorHandler(currerror); @@ -1086,7 +1086,7 @@ exception_trap: else if (_debughook) { //notify debugger of a "return" //even if it really an exception unwinding the stack - for(SQInteger i = 0; i < ci->_ncalls; i++) { + for(int64_t i = 0; i < ci->_ncalls; i++) { CallDebugHook(_SC('r')); } } @@ -1122,19 +1122,19 @@ void SQVM::CallErrorHandler(SQObjectPtr &error) } -void SQVM::CallDebugHook(SQInteger type,SQInteger forcedline) +void SQVM::CallDebugHook(int64_t type,int64_t forcedline) { _debughook = false; SQFunctionProto *func=_closure(ci->_closure)->_function; if(_debughook_native) { const SQChar *src = sq_type(func->_sourcename) == OT_STRING?_stringval(func->_sourcename):NULL; const SQChar *fname = sq_type(func->_name) == OT_STRING?_stringval(func->_name):NULL; - SQInteger line = forcedline?forcedline:func->GetLine(ci->_ip); + int64_t line = forcedline?forcedline:func->GetLine(ci->_ip); _debughook_native(this,type,src,line,fname); } else { SQObjectPtr temp_reg; - SQInteger nparams=5; + int64_t nparams=5; Push(_roottable); Push(type); Push(func->_sourcename); Push(forcedline?forcedline:func->GetLine(ci->_ip)); Push(func->_name); Call(_debughook_closure,nparams,_top-nparams,temp_reg,SQFalse); Pop(nparams); @@ -1142,10 +1142,10 @@ void SQVM::CallDebugHook(SQInteger type,SQInteger forcedline) _debughook = true; } -bool SQVM::CallNative(SQNativeClosure *nclosure, SQInteger nargs, SQInteger newbase, SQObjectPtr &retval, SQInt32 target,bool &suspend, bool &tailcall) +bool SQVM::CallNative(SQNativeClosure *nclosure, int64_t nargs, int64_t newbase, SQObjectPtr &retval, int32_t target,bool &suspend, bool &tailcall) { - SQInteger nparamscheck = nclosure->_nparamscheck; - SQInteger newtop = newbase + nargs + nclosure->_noutervalues; + int64_t nparamscheck = nclosure->_nparamscheck; + int64_t newtop = newbase + nargs + nclosure->_noutervalues; if (_nnativecalls + 1 > MAX_NATIVE_CALLS) { Raise_Error(_SC("Native stack overflow")); @@ -1159,10 +1159,10 @@ bool SQVM::CallNative(SQNativeClosure *nclosure, SQInteger nargs, SQInteger newb return false; } - SQInteger tcs; + int64_t tcs; SQIntVec &tc = nclosure->_typecheck; if((tcs = tc.size())) { - for(SQInteger i = 0; i < nargs && i < tcs; i++) { + for(int64_t i = 0; i < nargs && i < tcs; i++) { if((tc._vals[i] != -1) && !(sq_type(_stack._vals[newbase+i]) & tc._vals[i])) { Raise_ParamTypeError(i,tc._vals[i], sq_type(_stack._vals[newbase+i])); return false; @@ -1174,8 +1174,8 @@ bool SQVM::CallNative(SQNativeClosure *nclosure, SQInteger nargs, SQInteger newb ci->_closure = nclosure; ci->_target = target; - SQInteger outers = nclosure->_noutervalues; - for (SQInteger i = 0; i < outers; i++) { + int64_t outers = nclosure->_noutervalues; + for (int64_t i = 0; i < outers; i++) { _stack._vals[newbase+nargs+i] = nclosure->_outervalues[i]; } if(nclosure->_env) { @@ -1183,7 +1183,7 @@ bool SQVM::CallNative(SQNativeClosure *nclosure, SQInteger nargs, SQInteger newb } _nnativecalls++; - SQInteger ret = (nclosure->_function)(this); + int64_t ret = (nclosure->_function)(this); _nnativecalls--; suspend = false; @@ -1211,16 +1211,16 @@ bool SQVM::CallNative(SQNativeClosure *nclosure, SQInteger nargs, SQInteger newb return true; } -bool SQVM::TailCall(SQClosure *closure, SQInteger parambase,SQInteger nparams) +bool SQVM::TailCall(SQClosure *closure, int64_t parambase,int64_t nparams) { - SQInteger last_top = _top; + int64_t last_top = _top; SQObjectPtr clo = closure; if (ci->_root) { Raise_Error("root calls cannot invoke tailcalls"); return false; } - for (SQInteger i = 0; i < nparams; i++) STK(i) = STK(parambase + i); + for (int64_t i = 0; i < nparams; i++) STK(i) = STK(parambase + i); bool ret = StartCall(closure, ci->_target, nparams, _stackbase, true); if (last_top >= _top) { _top = last_top; @@ -1232,7 +1232,7 @@ bool SQVM::TailCall(SQClosure *closure, SQInteger parambase,SQInteger nparams) #define FALLBACK_NO_MATCH 1 #define FALLBACK_ERROR 2 -bool SQVM::Get(const SQObjectPtr &self, const SQObjectPtr &key, SQObjectPtr &dest, SQUnsignedInteger getflags, SQInteger selfidx) +bool SQVM::Get(const SQObjectPtr &self, const SQObjectPtr &key, SQObjectPtr &dest, uint64_t getflags, int64_t selfidx) { switch(sq_type(self)){ case OT_TABLE: @@ -1249,11 +1249,11 @@ bool SQVM::Get(const SQObjectPtr &self, const SQObjectPtr &key, SQObjectPtr &des break; case OT_STRING: if(sq_isnumeric(key)){ - SQInteger n = tointeger(key); - SQInteger len = _string(self)->_len; + int64_t n = tointeger(key); + int64_t len = _string(self)->_len; if (n < 0) { n += len; } if (n >= 0 && n < len) { - dest = SQInteger(_stringval(self)[n]); + dest = int64_t(_stringval(self)[n]); return true; } if ((getflags & GET_FLAG_DO_NOT_RAISE_ERROR) == 0) Raise_IdxError(key); @@ -1306,7 +1306,7 @@ bool SQVM::InvokeDefaultDelegate(const SQObjectPtr &self,const SQObjectPtr &key, } -SQInteger SQVM::FallBackGet(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr &dest) +int64_t SQVM::FallBackGet(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr &dest) { switch(sq_type(self)){ case OT_TABLE: @@ -1344,7 +1344,7 @@ SQInteger SQVM::FallBackGet(const SQObjectPtr &self,const SQObjectPtr &key,SQObj return FALLBACK_NO_MATCH; } -bool SQVM::Set(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr &val,SQInteger selfidx) +bool SQVM::Set(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr &val,int64_t selfidx) { switch(sq_type(self)){ case OT_TABLE: @@ -1379,7 +1379,7 @@ bool SQVM::Set(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr return false; } -SQInteger SQVM::FallBackSet(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr &val) +int64_t SQVM::FallBackSet(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr &val) { switch(sq_type(self)) { case OT_TABLE: @@ -1567,10 +1567,10 @@ bool SQVM::DeleteSlot(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr return true; } -bool SQVM::Call(SQObjectPtr &closure,SQInteger nparams,SQInteger stackbase,SQObjectPtr &outres,SQBool raiseerror) +bool SQVM::Call(SQObjectPtr &closure,int64_t nparams,int64_t stackbase,SQObjectPtr &outres,SQBool raiseerror) { #ifdef _DEBUG -SQInteger prevstackbase = _stackbase; +int64_t prevstackbase = _stackbase; #endif switch(sq_type(closure)) { case OT_CLOSURE: @@ -1605,7 +1605,7 @@ SQInteger prevstackbase = _stackbase; return true; } -bool SQVM::CallMetaMethod(SQObjectPtr &closure,SQMetaMethod SQ_UNUSED_ARG(mm),SQInteger nparams,SQObjectPtr &outres) +bool SQVM::CallMetaMethod(SQObjectPtr &closure,SQMetaMethod SQ_UNUSED_ARG(mm),int64_t nparams,SQObjectPtr &outres) { //SQObjectPtr closure; @@ -1642,15 +1642,15 @@ void SQVM::FindOuter(SQObjectPtr &target, SQObjectPtr *stackindex) target = SQObjectPtr(otr); } -bool SQVM::EnterFrame(SQInteger newbase, SQInteger newtop, bool tailcall) +bool SQVM::EnterFrame(int64_t newbase, int64_t newtop, bool tailcall) { if( !tailcall ) { if( _callsstacksize == _alloccallsstacksize ) { GrowCallStack(); } ci = &_callsstack[_callsstacksize++]; - ci->_prevstkbase = (SQInt32)(newbase - _stackbase); - ci->_prevtop = (SQInt32)(_top - _stackbase); + ci->_prevstkbase = (int32_t)(newbase - _stackbase); + ci->_prevtop = (int32_t)(_top - _stackbase); ci->_etraps = 0; ci->_ncalls = 1; ci->_generator = NULL; @@ -1662,7 +1662,7 @@ bool SQVM::EnterFrame(SQInteger newbase, SQInteger newtop, bool tailcall) _stackbase = newbase; _top = newtop; - if(newtop + MIN_STACK_OVERHEAD > (SQInteger)_stack.size()) { + if(newtop + MIN_STACK_OVERHEAD > (int64_t)_stack.size()) { if(_nmetamethodscall) { Raise_Error(_SC("stack overflow, cannot resize stack while in a metamethod")); return false; @@ -1674,9 +1674,9 @@ bool SQVM::EnterFrame(SQInteger newbase, SQInteger newtop, bool tailcall) } void SQVM::LeaveFrame() { - SQInteger last_top = _top; - SQInteger last_stackbase = _stackbase; - SQInteger css = --_callsstacksize; + int64_t last_top = _top; + int64_t last_stackbase = _stackbase; + int64_t css = --_callsstacksize; /* First clean out the call stack frame */ ci->_closure.Null(); @@ -1709,9 +1709,9 @@ void SQVM::CloseOuters(SQObjectPtr *stackindex) { } } -void SQVM::Remove(SQInteger n) { +void SQVM::Remove(int64_t n) { n = (n >= 0)?n + _stackbase - 1:_top + n; - for(SQInteger i = n; i < _top; i++){ + for(int64_t i = n; i < _top; i++){ _stack[i] = _stack[i+1]; } _stack[_top].Null(); @@ -1722,8 +1722,8 @@ void SQVM::Pop() { _stack[--_top].Null(); } -void SQVM::Pop(SQInteger n) { - for(SQInteger i = 0; i < n; i++){ +void SQVM::Pop(int64_t n) { + for(int64_t i = 0; i < n; i++){ _stack[--_top].Null(); } } @@ -1732,20 +1732,20 @@ void SQVM::PushNull() { _stack[_top++].Null(); } void SQVM::Push(const SQObjectPtr &o) { _stack[_top++] = o; } SQObjectPtr &SQVM::Top() { return _stack[_top-1]; } SQObjectPtr &SQVM::PopGet() { return _stack[--_top]; } -SQObjectPtr &SQVM::GetUp(SQInteger n) { return _stack[_top+n]; } -SQObjectPtr &SQVM::GetAt(SQInteger n) { return _stack[n]; } +SQObjectPtr &SQVM::GetUp(int64_t n) { return _stack[_top+n]; } +SQObjectPtr &SQVM::GetAt(int64_t n) { return _stack[n]; } #ifdef _DEBUG_DUMP -void SQVM::dumpstack(SQInteger stackbase,bool dumpall) +void SQVM::dumpstack(int64_t stackbase,bool dumpall) { - SQInteger size=dumpall?_stack.size():_top; - SQInteger n=0; + int64_t size=dumpall?_stack.size():_top; + int64_t n=0; scprintf(_SC("\n>>>>stack dump<<<<\n")); CallInfo &ci=_callsstack[_callsstacksize-1]; scprintf(_SC("IP: %p\n"),ci._ip); scprintf(_SC("prev stack base: %d\n"),ci._prevstkbase); scprintf(_SC("prev top: %d\n"),ci._prevtop); - for(SQInteger i=0;i"));else scprintf(_SC(" ")); scprintf(_SC("[" _PRINT_INT_FMT "]:"),n); diff --git a/rabbit/sqvm.hpp b/rabbit/sqvm.hpp index 328c34e..2fca32f 100644 --- a/rabbit/sqvm.hpp +++ b/rabbit/sqvm.hpp @@ -25,12 +25,12 @@ void sq_base_register(HRABBITVM v); struct SQExceptionTrap{ SQExceptionTrap() {} - SQExceptionTrap(SQInteger ss, SQInteger stackbase,SQInstruction *ip, SQInteger ex_target){ _stacksize = ss; _stackbase = stackbase; _ip = ip; _extarget = ex_target;} + SQExceptionTrap(int64_t ss, int64_t stackbase,SQInstruction *ip, int64_t ex_target){ _stacksize = ss; _stackbase = stackbase; _ip = ip; _extarget = ex_target;} SQExceptionTrap(const SQExceptionTrap &et) { (*this) = et; } - SQInteger _stackbase; - SQInteger _stacksize; + int64_t _stackbase; + int64_t _stacksize; SQInstruction *_ip; - SQInteger _extarget; + int64_t _extarget; }; #define _INLINE @@ -45,45 +45,45 @@ struct SQVM : public SQRefCounted SQObjectPtr *_literals; SQObjectPtr _closure; SQGenerator *_generator; - SQInt32 _etraps; - SQInt32 _prevstkbase; - SQInt32 _prevtop; - SQInt32 _target; - SQInt32 _ncalls; + int32_t _etraps; + int32_t _prevstkbase; + int32_t _prevtop; + int32_t _target; + int32_t _ncalls; SQBool _root; }; typedef sqvector CallInfoVec; public: - void DebugHookProxy(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); + void DebugHookProxy(int64_t type, const SQChar * sourcename, int64_t line, const SQChar * funcname); + static void _DebugHookProxy(HRABBITVM v, int64_t type, const SQChar * sourcename, int64_t line, const SQChar * funcname); enum ExecutionType { ET_CALL, ET_RESUME_GENERATOR, ET_RESUME_VM,ET_RESUME_THROW_VM }; SQVM(SQSharedState *ss); ~SQVM(); - bool Init(SQVM *friendvm, SQInteger stacksize); - bool Execute(SQObjectPtr &func, SQInteger nargs, SQInteger stackbase, SQObjectPtr &outres, SQBool raiseerror, ExecutionType et = ET_CALL); + bool Init(SQVM *friendvm, int64_t stacksize); + bool Execute(SQObjectPtr &func, int64_t nargs, int64_t stackbase, SQObjectPtr &outres, SQBool raiseerror, ExecutionType et = ET_CALL); //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); + bool CallNative(SQNativeClosure *nclosure, int64_t nargs, int64_t newbase, SQObjectPtr &retval, int32_t target, bool &suspend,bool &tailcall); + bool TailCall(SQClosure *closure, int64_t firstparam, int64_t nparams); //starts a RABBIT call in the same "Execution loop" - bool StartCall(SQClosure *closure, SQInteger target, SQInteger nargs, SQInteger stackbase, bool tailcall); + bool StartCall(SQClosure *closure, int64_t target, int64_t nargs, int64_t stackbase, bool tailcall); bool CreateClassInstance(SQClass *theclass, SQObjectPtr &inst, SQObjectPtr &constructor); //call a generic closure pure RABBIT or NATIVE - bool Call(SQObjectPtr &closure, SQInteger nparams, SQInteger stackbase, SQObjectPtr &outres,SQBool raiseerror); + bool Call(SQObjectPtr &closure, int64_t nparams, int64_t stackbase, SQObjectPtr &outres,SQBool raiseerror); SQRESULT Suspend(); - void CallDebugHook(SQInteger type,SQInteger forcedline=0); + void CallDebugHook(int64_t type,int64_t forcedline=0); void CallErrorHandler(SQObjectPtr &e); - bool Get(const SQObjectPtr &self, const SQObjectPtr &key, SQObjectPtr &dest, SQUnsignedInteger getflags, SQInteger selfidx); - SQInteger FallBackGet(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr &dest); + bool Get(const SQObjectPtr &self, const SQObjectPtr &key, SQObjectPtr &dest, uint64_t getflags, int64_t selfidx); + int64_t FallBackGet(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr &dest); bool InvokeDefaultDelegate(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr &dest); - bool Set(const SQObjectPtr &self, const SQObjectPtr &key, const SQObjectPtr &val, SQInteger selfidx); - SQInteger FallBackSet(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr &val); + bool Set(const SQObjectPtr &self, const SQObjectPtr &key, const SQObjectPtr &val, int64_t selfidx); + int64_t FallBackSet(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr &val); bool NewSlot(const SQObjectPtr &self, const SQObjectPtr &key, const SQObjectPtr &val,bool bstatic); bool NewSlotA(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr &val,const SQObjectPtr &attrs,bool bstatic,bool raw); bool DeleteSlot(const SQObjectPtr &self, const SQObjectPtr &key, SQObjectPtr &res); bool Clone(const SQObjectPtr &self, SQObjectPtr &target); - bool ObjCmp(const SQObjectPtr &o1, const SQObjectPtr &o2,SQInteger &res); + bool ObjCmp(const SQObjectPtr &o1, const SQObjectPtr &o2,int64_t &res); bool StringCat(const SQObjectPtr &str, const SQObjectPtr &obj, SQObjectPtr &dest); static bool IsEqual(const SQObjectPtr &o1,const SQObjectPtr &o2,bool &res); bool ToString(const SQObjectPtr &o,SQObjectPtr &res); @@ -94,61 +94,61 @@ public: void Raise_Error(const SQObjectPtr &desc); void Raise_IdxError(const SQObjectPtr &o); void Raise_CompareError(const SQObject &o1, const SQObject &o2); - void Raise_ParamTypeError(SQInteger nparam,SQInteger typemask,SQInteger type); + void Raise_ParamTypeError(int64_t nparam,int64_t typemask,int64_t type); void FindOuter(SQObjectPtr &target, SQObjectPtr *stackindex); void RelocateOuters(); void CloseOuters(SQObjectPtr *stackindex); bool TypeOf(const SQObjectPtr &obj1, SQObjectPtr &dest); - bool CallMetaMethod(SQObjectPtr &closure, SQMetaMethod mm, SQInteger nparams, SQObjectPtr &outres); - bool ArithMetaMethod(SQInteger op, const SQObjectPtr &o1, const SQObjectPtr &o2, SQObjectPtr &dest); - bool Return(SQInteger _arg0, SQInteger _arg1, SQObjectPtr &retval); + bool CallMetaMethod(SQObjectPtr &closure, SQMetaMethod mm, int64_t nparams, SQObjectPtr &outres); + bool ArithMetaMethod(int64_t op, const SQObjectPtr &o1, const SQObjectPtr &o2, SQObjectPtr &dest); + bool Return(int64_t _arg0, int64_t _arg1, SQObjectPtr &retval); //new stuff - bool ARITH_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,const SQObjectPtr &o2); - bool BW_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,const SQObjectPtr &o2); + bool ARITH_OP(uint64_t op,SQObjectPtr &trg,const SQObjectPtr &o1,const SQObjectPtr &o2); + bool BW_OP(uint64_t op,SQObjectPtr &trg,const SQObjectPtr &o1,const SQObjectPtr &o2); bool NEG_OP(SQObjectPtr &trg,const SQObjectPtr &o1); bool CMP_OP(CmpOP op, const SQObjectPtr &o1,const SQObjectPtr &o2,SQObjectPtr &res); bool CLOSURE_OP(SQObjectPtr &target, SQFunctionProto *func); - bool CLASS_OP(SQObjectPtr &target,SQInteger base,SQInteger attrs); + bool CLASS_OP(SQObjectPtr &target,int64_t base,int64_t attrs); //return true if the loop is finished - bool FOREACH_OP(SQObjectPtr &o1,SQObjectPtr &o2,SQObjectPtr &o3,SQObjectPtr &o4,SQInteger arg_2,int exitpos,int &jump); - //bool LOCAL_INC(SQInteger op,SQObjectPtr &target, SQObjectPtr &a, SQObjectPtr &incr); - bool PLOCAL_INC(SQInteger op,SQObjectPtr &target, SQObjectPtr &a, SQObjectPtr &incr); - bool DerefInc(SQInteger op,SQObjectPtr &target, SQObjectPtr &self, SQObjectPtr &key, SQObjectPtr &incr, bool postfix,SQInteger arg0); + bool FOREACH_OP(SQObjectPtr &o1,SQObjectPtr &o2,SQObjectPtr &o3,SQObjectPtr &o4,int64_t arg_2,int exitpos,int &jump); + //bool LOCAL_INC(int64_t op,SQObjectPtr &target, SQObjectPtr &a, SQObjectPtr &incr); + bool PLOCAL_INC(int64_t op,SQObjectPtr &target, SQObjectPtr &a, SQObjectPtr &incr); + bool DerefInc(int64_t op,SQObjectPtr &target, SQObjectPtr &self, SQObjectPtr &key, SQObjectPtr &incr, bool postfix,int64_t arg0); #ifdef _DEBUG_DUMP - void dumpstack(SQInteger stackbase=-1, bool dumpall = false); + void dumpstack(int64_t stackbase=-1, bool dumpall = false); #endif void Finalize(); void GrowCallStack() { - SQInteger newsize = _alloccallsstacksize*2; + int64_t newsize = _alloccallsstacksize*2; _callstackdata.resize(newsize); _callsstack = &_callstackdata[0]; _alloccallsstacksize = newsize; } - bool EnterFrame(SQInteger newbase, SQInteger newtop, bool tailcall); + bool EnterFrame(int64_t newbase, int64_t newtop, bool tailcall); void LeaveFrame(); void Release(){ sq_delete(this,SQVM); } //////////////////////////////////////////////////////////////////////////// //stack functions for the api - void Remove(SQInteger n); + void Remove(int64_t n); static bool IsFalse(SQObjectPtr &o); void Pop(); - void Pop(SQInteger n); + void Pop(int64_t n); void Push(const SQObjectPtr &o); void PushNull(); SQObjectPtr &Top(); SQObjectPtr &PopGet(); - SQObjectPtr &GetUp(SQInteger n); - SQObjectPtr &GetAt(SQInteger n); + SQObjectPtr &GetUp(int64_t n); + SQObjectPtr &GetAt(int64_t n); SQObjectPtrVec _stack; - SQInteger _top; - SQInteger _stackbase; + int64_t _top; + int64_t _stackbase; SQOuter *_openouters; SQObjectPtr _roottable; SQObjectPtr _lasterror; @@ -162,8 +162,8 @@ public: CallInfo* _callsstack; - SQInteger _callsstacksize; - SQInteger _alloccallsstacksize; + int64_t _callsstacksize; + int64_t _alloccallsstacksize; sqvector _callstackdata; ExceptionsTraps _etraps; @@ -171,28 +171,28 @@ public: SQUserPointer _foreignptr; //VMs sharing the same state SQSharedState *_sharedstate; - SQInteger _nnativecalls; - SQInteger _nmetamethodscall; + int64_t _nnativecalls; + int64_t _nmetamethodscall; SQRELEASEHOOK _releasehook; //suspend infos SQBool _suspended; SQBool _suspended_root; - SQInteger _suspended_target; - SQInteger _suspended_traps; + int64_t _suspended_target; + int64_t _suspended_traps; }; struct AutoDec{ - AutoDec(SQInteger *n) { _n = n; } + AutoDec(int64_t *n) { _n = n; } ~AutoDec() { (*_n)--; } - SQInteger *_n; + int64_t *_n; }; -inline SQObjectPtr &stack_get(HRABBITVM v,SQInteger idx){return ((idx>=0)?(v->GetAt(idx+v->_stackbase-1)):(v->GetUp(idx)));} +inline SQObjectPtr &stack_get(HRABBITVM v,int64_t idx){return ((idx>=0)?(v->GetAt(idx+v->_stackbase-1)):(v->GetUp(idx)));} #define _ss(_vm_) (_vm_)->_sharedstate #define PUSH_CALLINFO(v,nci){ \ - SQInteger css = v->_callsstacksize; \ + int64_t css = v->_callsstacksize; \ if(css == v->_alloccallsstacksize) { \ v->GrowCallStack(); \ } \ @@ -202,7 +202,7 @@ inline SQObjectPtr &stack_get(HRABBITVM v,SQInteger idx){return ((idx>=0)?(v->Ge } #define POP_CALLINFO(v){ \ - SQInteger css = --v->_callsstacksize; \ + int64_t css = --v->_callsstacksize; \ v->ci->_closure.Null(); \ v->ci = css?&v->_callsstack[css-1]:NULL; \ }