[DEV] build and execute again
This commit is contained in:
parent
1b59eb8c8e
commit
f882c9fedc
@ -9,6 +9,7 @@
|
||||
#include <rabbit/rabbit.hpp>
|
||||
#include <rabbit-std/sqstdaux.hpp>
|
||||
#include <assert.h>
|
||||
#include <rabbit/StackInfos.hpp>
|
||||
|
||||
void sqstd_printcallstack(rabbit::VirtualMachine* v)
|
||||
{
|
||||
|
@ -136,7 +136,7 @@ static int64_t _file_constructor(rabbit::VirtualMachine* v)
|
||||
bool owns = true;
|
||||
SQFile *f;
|
||||
SQFILE newf;
|
||||
if(sq_gettype(v,2) == rabbit::OT_STRING && sq_gettype(v,3) == OT_STRING) {
|
||||
if(sq_gettype(v,2) == rabbit::OT_STRING && sq_gettype(v,3) == rabbit::OT_STRING) {
|
||||
sq_getstring(v, 2, &filename);
|
||||
sq_getstring(v, 3, &mode);
|
||||
newf = sqstd_fopen(filename, mode);
|
||||
|
@ -8,6 +8,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <rabbit/rabbit.hpp>
|
||||
#include <rabbit/RegFunction.hpp>
|
||||
|
||||
RABBIT_API rabbit::Result sqstd_register_mathlib(rabbit::VirtualMachine* v);
|
||||
|
||||
|
@ -7,6 +7,8 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <rabbit/RegFunction.hpp>
|
||||
|
||||
int64_t _stream_readblob(rabbit::VirtualMachine* v);
|
||||
int64_t _stream_readline(rabbit::VirtualMachine* v);
|
||||
int64_t _stream_readn(rabbit::VirtualMachine* v);
|
||||
|
@ -7,6 +7,8 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <rabbit/RegFunction.hpp>
|
||||
|
||||
typedef unsigned int SQRexBool;
|
||||
typedef struct SQRex SQRex;
|
||||
|
||||
|
@ -27,6 +27,8 @@
|
||||
#define screname rename
|
||||
#endif
|
||||
|
||||
#include <rabbit/RegFunction.hpp>
|
||||
|
||||
static int64_t _system_getenv(rabbit::VirtualMachine* v)
|
||||
{
|
||||
const rabbit::Char *s;
|
||||
|
@ -10,8 +10,8 @@
|
||||
#include <etk/types.hpp>
|
||||
#include <rabbit/sqconfig.hpp>
|
||||
|
||||
namespace rabbit {
|
||||
struct SQInstruction;
|
||||
namespace rabbit {
|
||||
class ExceptionTrap {
|
||||
public:
|
||||
ExceptionTrap() {
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include <rabbit/AutoDec.hpp>
|
||||
#include <rabbit/sqconfig.hpp>
|
||||
#include <rabbit/ExceptionTrap.hpp>
|
||||
#include <rabbit/MetaMethod.hpp>
|
||||
|
||||
|
||||
#define MAX_NATIVE_CALLS 100
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include <rabbit/sqcompiler.hpp>
|
||||
#include <rabbit/sqfuncstate.hpp>
|
||||
#include <rabbit/sqclass.hpp>
|
||||
#include <rabbit/MemberHandle.hpp>
|
||||
|
||||
static bool sq_aux_gettypedarg(rabbit::VirtualMachine* v,int64_t idx,rabbit::ObjectType type,rabbit::ObjectPtr **o)
|
||||
{
|
||||
@ -299,7 +300,8 @@ rabbit::Bool sq_instanceof(rabbit::VirtualMachine* v)
|
||||
{
|
||||
rabbit::ObjectPtr &inst = stack_get(v,-1);
|
||||
rabbit::ObjectPtr &cl = stack_get(v,-2);
|
||||
if(sq_type(inst) != rabbit::OT_INSTANCE || sq_type(cl) != OT_CLASS)
|
||||
if( sq_type(inst) != rabbit::OT_INSTANCE
|
||||
|| sq_type(cl) != rabbit::OT_CLASS)
|
||||
return sq_throwerror(v,_SC("invalid param type"));
|
||||
return _instance(inst)->instanceOf(_class(cl))?SQTrue:SQFalse;
|
||||
}
|
||||
@ -872,7 +874,7 @@ rabbit::Result sq_newslot(rabbit::VirtualMachine* v, int64_t idx, rabbit::Bool b
|
||||
{
|
||||
sq_aux_paramscheck(v, 3);
|
||||
rabbit::ObjectPtr &self = stack_get(v, idx);
|
||||
if(sq_type(self) == rabbit::OT_TABLE || sq_type(self) == OT_CLASS) {
|
||||
if(sq_type(self) == rabbit::OT_TABLE || sq_type(self) == rabbit::OT_CLASS) {
|
||||
rabbit::ObjectPtr &key = v->getUp(-2);
|
||||
if(sq_type(key) == rabbit::OT_NULL) return sq_throwerror(v, _SC("null is not a valid key"));
|
||||
v->newSlot(self, key, v->getUp(-1),bstatic?true:false);
|
||||
@ -1563,9 +1565,9 @@ rabbit::Result sq_getdefaultdelegate(rabbit::VirtualMachine* v,rabbit::ObjectTyp
|
||||
case rabbit::OT_TABLE: v->push(ss->_table_default_delegate); break;
|
||||
case rabbit::OT_ARRAY: v->push(ss->_array_default_delegate); break;
|
||||
case rabbit::OT_STRING: v->push(ss->_string_default_delegate); break;
|
||||
case rabbit::OT_INTEGER: case OT_FLOAT: v->push(ss->_number_default_delegate); break;
|
||||
case rabbit::OT_INTEGER: case rabbit::OT_FLOAT: v->push(ss->_number_default_delegate); break;
|
||||
case rabbit::OT_GENERATOR: v->push(ss->_generator_default_delegate); break;
|
||||
case rabbit::OT_CLOSURE: case OT_NATIVECLOSURE: v->push(ss->_closure_default_delegate); break;
|
||||
case rabbit::OT_CLOSURE: case rabbit::OT_NATIVECLOSURE: v->push(ss->_closure_default_delegate); break;
|
||||
case rabbit::OT_THREAD: v->push(ss->_thread_default_delegate); break;
|
||||
case rabbit::OT_CLASS: v->push(ss->_class_default_delegate); break;
|
||||
case rabbit::OT_INSTANCE: v->push(ss->_instance_default_delegate); break;
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <ctype.h>
|
||||
#include <rabbit/StackInfos.hpp>
|
||||
|
||||
static bool str2num(const rabbit::Char *s,rabbit::ObjectPtr &res,int64_t base)
|
||||
{
|
||||
@ -189,7 +190,7 @@ static int64_t base_print(rabbit::VirtualMachine* v)
|
||||
if(SQ_SUCCEEDED(sq_tostring(v,2)))
|
||||
{
|
||||
if(SQ_SUCCEEDED(sq_getstring(v,-1,&str))) {
|
||||
if(_get_shared_state(v)->_printfunc) _ss(v)->_printfunc(v,_SC("%s"),str);
|
||||
if(_get_shared_state(v)->_printfunc) _get_shared_state(v)->_printfunc(v,_SC("%s"),str);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -202,7 +203,7 @@ static int64_t base_error(rabbit::VirtualMachine* v)
|
||||
if(SQ_SUCCEEDED(sq_tostring(v,2)))
|
||||
{
|
||||
if(SQ_SUCCEEDED(sq_getstring(v,-1,&str))) {
|
||||
if(_get_shared_state(v)->_errorfunc) _ss(v)->_errorfunc(v,_SC("%s"),str);
|
||||
if(_get_shared_state(v)->_errorfunc) _get_shared_state(v)->_errorfunc(v,_SC("%s"),str);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -343,7 +344,8 @@ static int64_t default_delegate_tofloat(rabbit::VirtualMachine* v)
|
||||
}}
|
||||
return sq_throwerror(v, _SC("cannot convert the string"));
|
||||
break;
|
||||
case rabbit::OT_INTEGER:case OT_FLOAT:
|
||||
case rabbit::OT_INTEGER:
|
||||
case rabbit::OT_FLOAT:
|
||||
v->push(rabbit::ObjectPtr(tofloat(o)));
|
||||
break;
|
||||
case rabbit::OT_BOOL:
|
||||
@ -372,7 +374,8 @@ static int64_t default_delegate_tointeger(rabbit::VirtualMachine* v)
|
||||
}}
|
||||
return sq_throwerror(v, _SC("cannot convert the string"));
|
||||
break;
|
||||
case rabbit::OT_INTEGER:case OT_FLOAT:
|
||||
case rabbit::OT_INTEGER:
|
||||
case rabbit::OT_FLOAT:
|
||||
v->push(rabbit::ObjectPtr(tointeger(o)));
|
||||
break;
|
||||
case rabbit::OT_BOOL:
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include <rabbit/sqclass.hpp>
|
||||
#include <rabbit/sqfuncproto.hpp>
|
||||
#include <rabbit/sqclosure.hpp>
|
||||
|
||||
#include <rabbit/MetaMethod.hpp>
|
||||
|
||||
|
||||
SQClass::SQClass(SQSharedState *ss,SQClass *base)
|
||||
@ -27,7 +27,7 @@ SQClass::SQClass(SQSharedState *ss,SQClass *base)
|
||||
_udsize = _base->_udsize;
|
||||
_defaultvalues = base->_defaultvalues;
|
||||
_methods = base->_methods;
|
||||
_COPY_VECTOR(_metamethods,base->_metamethods,MT_LAST);
|
||||
_COPY_VECTOR(_metamethods,base->_metamethods, rabbit::MT_LAST);
|
||||
__ObjaddRef(_base);
|
||||
}
|
||||
_members = base?base->_members->clone() : SQTable::create(ss,0);
|
||||
@ -38,7 +38,7 @@ void SQClass::finalize() {
|
||||
_attributes.Null();
|
||||
_NULL_SQOBJECT_VECTOR(_defaultvalues,_defaultvalues.size());
|
||||
_methods.resize(0);
|
||||
_NULL_SQOBJECT_VECTOR(_metamethods,MT_LAST);
|
||||
_NULL_SQOBJECT_VECTOR(_metamethods, rabbit::MT_LAST);
|
||||
__Objrelease(_members);
|
||||
if(_base) {
|
||||
__Objrelease(_base);
|
||||
@ -53,7 +53,9 @@ SQClass::~SQClass()
|
||||
bool SQClass::newSlot(SQSharedState *ss,const rabbit::ObjectPtr &key,const rabbit::ObjectPtr &val,bool bstatic)
|
||||
{
|
||||
rabbit::ObjectPtr temp;
|
||||
bool belongs_to_static_table = sq_type(val) == rabbit::OT_CLOSURE || sq_type(val) == OT_NATIVECLOSURE || bstatic;
|
||||
bool belongs_to_static_table = sq_type(val) == rabbit::OT_CLOSURE
|
||||
|| sq_type(val) == rabbit::OT_NATIVECLOSURE
|
||||
|| bstatic;
|
||||
if(_locked && !belongs_to_static_table)
|
||||
return false; //the class already has an instance so cannot be modified
|
||||
if(_members->get(key,temp) && _isfield(temp)) //overrides the default value
|
||||
@ -63,8 +65,9 @@ bool SQClass::newSlot(SQSharedState *ss,const rabbit::ObjectPtr &key,const rabbi
|
||||
}
|
||||
if(belongs_to_static_table) {
|
||||
int64_t mmidx;
|
||||
if((sq_type(val) == rabbit::OT_CLOSURE || sq_type(val) == OT_NATIVECLOSURE) &&
|
||||
(mmidx = ss->getMetaMethodIdxByName(key)) != -1) {
|
||||
if( ( sq_type(val) == rabbit::OT_CLOSURE
|
||||
|| sq_type(val) == rabbit::OT_NATIVECLOSURE )
|
||||
&& (mmidx = ss->getMetaMethodIdxByName(key)) != -1) {
|
||||
_metamethods[mmidx] = val;
|
||||
}
|
||||
else {
|
||||
|
@ -76,7 +76,7 @@ public:
|
||||
SQClass *_base;
|
||||
SQClassMemberVec _defaultvalues;
|
||||
SQClassMemberVec _methods;
|
||||
rabbit::ObjectPtr _metamethods[MT_LAST];
|
||||
rabbit::ObjectPtr _metamethods[rabbit::MT_LAST];
|
||||
rabbit::ObjectPtr _attributes;
|
||||
rabbit::UserPointer _typetag;
|
||||
SQRELEASEHOOK _hook;
|
||||
|
@ -36,8 +36,8 @@ public:
|
||||
void release(){
|
||||
SQFunctionProto *f = _function;
|
||||
int64_t size = _CALC_CLOSURE_SIZE(f);
|
||||
_DESTRUCT_VECTOR(rabbit::ObjectPtr,f->_noutervalues,_outervalues);
|
||||
_DESTRUCT_VECTOR(rabbit::ObjectPtr,f->_ndefaultparams,_defaultparams);
|
||||
_DESTRUCT_VECTOR(ObjectPtr,f->_noutervalues,_outervalues);
|
||||
_DESTRUCT_VECTOR(ObjectPtr,f->_ndefaultparams,_defaultparams);
|
||||
__Objrelease(_function);
|
||||
this->~SQClosure();
|
||||
sq_vm_free(this,size);
|
||||
@ -177,7 +177,7 @@ public:
|
||||
}
|
||||
void release(){
|
||||
int64_t size = _CALC_NATVIVECLOSURE_SIZE(_noutervalues);
|
||||
_DESTRUCT_VECTOR(rabbit::ObjectPtr,_noutervalues,_outervalues);
|
||||
_DESTRUCT_VECTOR(ObjectPtr,_noutervalues,_outervalues);
|
||||
this->~SQNativeClosure();
|
||||
sq_free(this,size);
|
||||
}
|
||||
|
@ -12,6 +12,8 @@
|
||||
#include <rabbit/sqfuncproto.hpp>
|
||||
#include <rabbit/sqclosure.hpp>
|
||||
#include <rabbit/sqstring.hpp>
|
||||
#include <rabbit/FunctionInfo.hpp>
|
||||
#include <rabbit/StackInfos.hpp>
|
||||
|
||||
rabbit::Result sq_getfunctioninfo(rabbit::VirtualMachine* v,int64_t level,rabbit::FunctionInfo *fi)
|
||||
{
|
||||
|
@ -105,9 +105,9 @@ public:
|
||||
return f;
|
||||
}
|
||||
void release(){
|
||||
_DESTRUCT_VECTOR(rabbit::ObjectPtr,_nliterals,_literals);
|
||||
_DESTRUCT_VECTOR(rabbit::ObjectPtr,_nparameters,_parameters);
|
||||
_DESTRUCT_VECTOR(rabbit::ObjectPtr,_nfunctions,_functions);
|
||||
_DESTRUCT_VECTOR(ObjectPtr,_nliterals,_literals);
|
||||
_DESTRUCT_VECTOR(ObjectPtr,_nparameters,_parameters);
|
||||
_DESTRUCT_VECTOR(ObjectPtr,_nfunctions,_functions);
|
||||
_DESTRUCT_VECTOR(SQOuterVar,_noutervalues,_outervalues);
|
||||
//_DESTRUCT_VECTOR(SQLineInfo,_nlineinfos,_lineinfos); //not required are 2 integers
|
||||
_DESTRUCT_VECTOR(SQLocalVarInfo,_nlocalvarinfos,_localvarinfos);
|
||||
|
@ -251,7 +251,7 @@ bool ReadObject(rabbit::VirtualMachine* v,rabbit::UserPointer up,SQREADFUNC read
|
||||
int64_t len;
|
||||
_CHECK_IO(SafeRead(v,read,up,&len,sizeof(int64_t)));
|
||||
_CHECK_IO(SafeRead(v,read,up,_get_shared_state(v)->getScratchPad(sq_rsl(len)),sq_rsl(len)));
|
||||
o=SQString::create(_get_shared_state(v),_ss(v)->getScratchPad(-1),len);
|
||||
o=SQString::create(_get_shared_state(v),_get_shared_state(v)->getScratchPad(-1),len);
|
||||
}
|
||||
break;
|
||||
case rabbit::OT_INTEGER:{
|
||||
|
@ -102,7 +102,7 @@ void SQSharedState::init()
|
||||
sq_new(_metamethods,etk::Vector<rabbit::ObjectPtr>);
|
||||
sq_new(_systemstrings,etk::Vector<rabbit::ObjectPtr>);
|
||||
sq_new(_types,etk::Vector<rabbit::ObjectPtr>);
|
||||
_metamethodsmap = SQTable::create(this,MT_LAST-1);
|
||||
_metamethodsmap = SQTable::create(this,rabbit::MT_LAST-1);
|
||||
//adding type strings to avoid memory trashing
|
||||
//types names
|
||||
newsysstring(_SC("null"));
|
||||
@ -183,9 +183,10 @@ SQSharedState::~SQSharedState()
|
||||
_weakref_default_delegate.Null();
|
||||
_refs_table.finalize();
|
||||
|
||||
sq_delete(_types,etk::Vector<rabbit::ObjectPtr>);
|
||||
sq_delete(_systemstrings,etk::Vector<rabbit::ObjectPtr>);
|
||||
sq_delete(_metamethods,etk::Vector<rabbit::ObjectPtr>);
|
||||
using tmpType = etk::Vector<rabbit::ObjectPtr>;
|
||||
sq_delete(_types, tmpType);
|
||||
sq_delete(_systemstrings, tmpType);
|
||||
sq_delete(_metamethods, tmpType);
|
||||
sq_delete(_stringtable, SQStringTable);
|
||||
if(_scratchpad)SQ_FREE(_scratchpad,_scratchpadsize);
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include <rabbit/squtils.hpp>
|
||||
#include <rabbit/sqobject.hpp>
|
||||
#include <rabbit/RegFunction.hpp>
|
||||
#include <rabbit/ObjectPtr.hpp>
|
||||
|
||||
struct SQString;
|
||||
struct SQTable;
|
||||
|
@ -12,6 +12,8 @@
|
||||
#include <rabbit/sqfuncproto.hpp>
|
||||
#include <rabbit/sqclosure.hpp>
|
||||
|
||||
#define MINPOWER2 4
|
||||
|
||||
SQTable::SQTable(SQSharedState *ss,int64_t ninitialsize)
|
||||
{
|
||||
int64_t pow2size=MINPOWER2;
|
||||
|
Loading…
x
Reference in New Issue
Block a user