mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-05-02 09:07:12 +02:00
Updated the Squirrel library to include the latest changes straight from the repository.
This commit is contained in:
parent
c5192399e2
commit
e0cd48e639
14
external/Squirrel/sqapi.cpp
vendored
14
external/Squirrel/sqapi.cpp
vendored
@ -510,7 +510,7 @@ SQRESULT sq_setclosureroot(HSQUIRRELVM v,SQInteger idx)
|
|||||||
v->Pop();
|
v->Pop();
|
||||||
return SQ_OK;
|
return SQ_OK;
|
||||||
}
|
}
|
||||||
return sq_throwerror(v, _SC("ivalid type"));
|
return sq_throwerror(v, _SC("invalid type"));
|
||||||
}
|
}
|
||||||
|
|
||||||
SQRESULT sq_getclosureroot(HSQUIRRELVM v,SQInteger idx)
|
SQRESULT sq_getclosureroot(HSQUIRRELVM v,SQInteger idx)
|
||||||
@ -558,7 +558,7 @@ SQRESULT sq_setroottable(HSQUIRRELVM v)
|
|||||||
v->Pop();
|
v->Pop();
|
||||||
return SQ_OK;
|
return SQ_OK;
|
||||||
}
|
}
|
||||||
return sq_throwerror(v, _SC("ivalid type"));
|
return sq_throwerror(v, _SC("invalid type"));
|
||||||
}
|
}
|
||||||
|
|
||||||
SQRESULT sq_setconsttable(HSQUIRRELVM v)
|
SQRESULT sq_setconsttable(HSQUIRRELVM v)
|
||||||
@ -569,7 +569,7 @@ SQRESULT sq_setconsttable(HSQUIRRELVM v)
|
|||||||
v->Pop();
|
v->Pop();
|
||||||
return SQ_OK;
|
return SQ_OK;
|
||||||
}
|
}
|
||||||
return sq_throwerror(v, _SC("ivalid type, expected table"));
|
return sq_throwerror(v, _SC("invalid type, expected table"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p)
|
void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p)
|
||||||
@ -657,6 +657,10 @@ SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i)
|
|||||||
*i = tointeger(o);
|
*i = tointeger(o);
|
||||||
return SQ_OK;
|
return SQ_OK;
|
||||||
}
|
}
|
||||||
|
if(sq_isbool(o)) {
|
||||||
|
*i = SQVM::IsFalse(o)?SQFalse:SQTrue;
|
||||||
|
return SQ_OK;
|
||||||
|
}
|
||||||
return SQ_ERROR;
|
return SQ_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1164,7 +1168,7 @@ SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror)
|
|||||||
if(v->Call(v->GetUp(-(params+1)),params,v->_top-params,res,raiseerror?true:false)){
|
if(v->Call(v->GetUp(-(params+1)),params,v->_top-params,res,raiseerror?true:false)){
|
||||||
|
|
||||||
if(!v->_suspended) {
|
if(!v->_suspended) {
|
||||||
v->Pop(params);//pop closure and args
|
v->Pop(params);//pop args
|
||||||
}
|
}
|
||||||
if(retval){
|
if(retval){
|
||||||
v->Push(res); return SQ_OK;
|
v->Push(res); return SQ_OK;
|
||||||
@ -1239,7 +1243,7 @@ SQRESULT sq_writeclosure(HSQUIRRELVM v,SQWRITEFUNC w,SQUserPointer up)
|
|||||||
_GETSAFE_OBJ(v, -1, OT_CLOSURE,o);
|
_GETSAFE_OBJ(v, -1, OT_CLOSURE,o);
|
||||||
unsigned short tag = SQ_BYTECODE_STREAM_TAG;
|
unsigned short tag = SQ_BYTECODE_STREAM_TAG;
|
||||||
if(_closure(*o)->_function->_noutervalues)
|
if(_closure(*o)->_function->_noutervalues)
|
||||||
return sq_throwerror(v,_SC("a closure with free valiables bound it cannot be serialized"));
|
return sq_throwerror(v,_SC("a closure with free variables bound cannot be serialized"));
|
||||||
if(w(up,&tag,2) != 2)
|
if(w(up,&tag,2) != 2)
|
||||||
return sq_throwerror(v,_SC("io error"));
|
return sq_throwerror(v,_SC("io error"));
|
||||||
if(!_closure(*o)->Save(v,up,w))
|
if(!_closure(*o)->Save(v,up,w))
|
||||||
|
2
external/Squirrel/sqclass.cpp
vendored
2
external/Squirrel/sqclass.cpp
vendored
@ -189,7 +189,7 @@ SQInstance::~SQInstance()
|
|||||||
if(_class){ Finalize(); } //if _class is null it was already finalized by the GC
|
if(_class){ Finalize(); } //if _class is null it was already finalized by the GC
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SQInstance::GetMetaMethod(SQVM SQ_UNUSED_ARG(*v),SQMetaMethod mm,SQObjectPtr &res)
|
bool SQInstance::GetMetaMethod(SQVM* SQ_UNUSED_ARG(v),SQMetaMethod mm,SQObjectPtr &res)
|
||||||
{
|
{
|
||||||
if(type(_class->_metamethods[mm]) != OT_NULL) {
|
if(type(_class->_metamethods[mm]) != OT_NULL) {
|
||||||
res = _class->_metamethods[mm];
|
res = _class->_metamethods[mm];
|
||||||
|
11
external/Squirrel/sqcompiler.cpp
vendored
11
external/Squirrel/sqcompiler.cpp
vendored
@ -859,6 +859,7 @@ public:
|
|||||||
case TK_TYPEOF : Lex() ;UnaryOP(_OP_TYPEOF); break;
|
case TK_TYPEOF : Lex() ;UnaryOP(_OP_TYPEOF); break;
|
||||||
case TK_RESUME : Lex(); UnaryOP(_OP_RESUME); break;
|
case TK_RESUME : Lex(); UnaryOP(_OP_RESUME); break;
|
||||||
case TK_CLONE : Lex(); UnaryOP(_OP_CLONE); break;
|
case TK_CLONE : Lex(); UnaryOP(_OP_CLONE); break;
|
||||||
|
case TK_RAWCALL: Lex(); Expect('('); FunctionCallArgs(true); break;
|
||||||
case TK_MINUSMINUS :
|
case TK_MINUSMINUS :
|
||||||
case TK_PLUSPLUS :PrefixIncDec(_token); break;
|
case TK_PLUSPLUS :PrefixIncDec(_token); break;
|
||||||
case TK_DELETE : DeleteExpr(); break;
|
case TK_DELETE : DeleteExpr(); break;
|
||||||
@ -915,7 +916,7 @@ public:
|
|||||||
}
|
}
|
||||||
return (!_es.donot_get || ( _es.donot_get && (_token == _SC('.') || _token == _SC('['))));
|
return (!_es.donot_get || ( _es.donot_get && (_token == _SC('.') || _token == _SC('['))));
|
||||||
}
|
}
|
||||||
void FunctionCallArgs()
|
void FunctionCallArgs(bool rawcall = false)
|
||||||
{
|
{
|
||||||
SQInteger nargs = 1;//this
|
SQInteger nargs = 1;//this
|
||||||
while(_token != _SC(')')) {
|
while(_token != _SC(')')) {
|
||||||
@ -928,6 +929,10 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Lex();
|
Lex();
|
||||||
|
if (rawcall) {
|
||||||
|
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();
|
for(SQInteger i = 0; i < (nargs - 1); i++) _fs->PopTarget();
|
||||||
SQInteger stackbase = _fs->PopTarget();
|
SQInteger stackbase = _fs->PopTarget();
|
||||||
SQInteger closure = _fs->PopTarget();
|
SQInteger closure = _fs->PopTarget();
|
||||||
@ -1337,11 +1342,11 @@ public:
|
|||||||
val._unVal.fFloat = -_lex._fvalue;
|
val._unVal.fFloat = -_lex._fvalue;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Error(_SC("scalar expected : integer,float"));
|
Error(_SC("scalar expected : integer, float"));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Error(_SC("scalar expected : integer,float or string"));
|
Error(_SC("scalar expected : integer, float, or string"));
|
||||||
}
|
}
|
||||||
Lex();
|
Lex();
|
||||||
return val;
|
return val;
|
||||||
|
1
external/Squirrel/sqcompiler.h
vendored
1
external/Squirrel/sqcompiler.h
vendored
@ -70,6 +70,7 @@ struct SQVM;
|
|||||||
#define TK_STATIC 322
|
#define TK_STATIC 322
|
||||||
#define TK_ENUM 323
|
#define TK_ENUM 323
|
||||||
#define TK_CONST 324
|
#define TK_CONST 324
|
||||||
|
#define TK_RAWCALL 325
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2
external/Squirrel/sqlexer.cpp
vendored
2
external/Squirrel/sqlexer.cpp
vendored
@ -67,6 +67,8 @@ void SQLexer::Init(SQSharedState *ss, SQLEXREADFUNC rg, SQUserPointer up,Compile
|
|||||||
ADD_KEYWORD(const,TK_CONST);
|
ADD_KEYWORD(const,TK_CONST);
|
||||||
ADD_KEYWORD(__LINE__,TK___LINE__);
|
ADD_KEYWORD(__LINE__,TK___LINE__);
|
||||||
ADD_KEYWORD(__FILE__,TK___FILE__);
|
ADD_KEYWORD(__FILE__,TK___FILE__);
|
||||||
|
ADD_KEYWORD(rawcall, TK_RAWCALL);
|
||||||
|
|
||||||
|
|
||||||
_readf = rg;
|
_readf = rg;
|
||||||
_up = up;
|
_up = up;
|
||||||
|
2
external/Squirrel/sqstate.cpp
vendored
2
external/Squirrel/sqstate.cpp
vendored
@ -241,7 +241,7 @@ void SQSharedState::MarkObject(SQObjectPtr &o,SQCollectable **chain)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SQSharedState::RunMark(SQVM SQ_UNUSED_ARG(*vm),SQCollectable **tchain)
|
void SQSharedState::RunMark(SQVM* SQ_UNUSED_ARG(vm),SQCollectable **tchain)
|
||||||
{
|
{
|
||||||
SQVM *vms = _thread(_root_vm);
|
SQVM *vms = _thread(_root_vm);
|
||||||
|
|
||||||
|
@ -22,6 +22,10 @@ THE SOFTWARE.
|
|||||||
#ifndef _SQUIRREL_H_
|
#ifndef _SQUIRREL_H_
|
||||||
#define _SQUIRREL_H_
|
#define _SQUIRREL_H_
|
||||||
|
|
||||||
|
#ifdef _SQ_CONFIG_INCLUDE
|
||||||
|
#include _SQ_CONFIG_INCLUDE
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user