[DEV] remote _userdate()

This commit is contained in:
Edouard DUPIN 2018-07-03 22:07:14 +02:00
parent d80ea723cb
commit a374a839ce
3 changed files with 9 additions and 10 deletions

View File

@ -149,7 +149,6 @@ namespace rabbit {
#define is_delegable(t) (sq_type(t)&SQOBJECT_DELEGABLE) #define is_delegable(t) (sq_type(t)&SQOBJECT_DELEGABLE)
#define raw_type(obj) _RAW_TYPE((obj)._type) #define raw_type(obj) _RAW_TYPE((obj)._type)
#define _userdata(obj) ((obj)._unVal.pUserData)
#define _userpointer(obj) ((obj)._unVal.pUserPointer) #define _userpointer(obj) ((obj)._unVal.pUserPointer)
#define _thread(obj) ((obj)._unVal.pThread) #define _thread(obj) ((obj)._unVal.pThread)
#define _funcproto(obj) ((obj)._unVal.pFunctionProto) #define _funcproto(obj) ((obj)._unVal.pFunctionProto)

View File

@ -1793,7 +1793,7 @@ void rabbit::VirtualMachine::dumpstack(int64_t stackbase,bool dumpall)
case rabbit::OT_ARRAY: printf("ARRAY %p",obj.toArray());break; case rabbit::OT_ARRAY: printf("ARRAY %p",obj.toArray());break;
case rabbit::OT_CLOSURE: printf("CLOSURE [%p]",obj.toClosure());break; case rabbit::OT_CLOSURE: printf("CLOSURE [%p]",obj.toClosure());break;
case rabbit::OT_NATIVECLOSURE: printf("NATIVECLOSURE");break; case rabbit::OT_NATIVECLOSURE: printf("NATIVECLOSURE");break;
case rabbit::OT_USERDATA: printf("USERDATA %p[%p]",_userdataval(obj),_userdata(obj)->_delegate);break; case rabbit::OT_USERDATA: printf("USERDATA %p[%p]",_userdataval(obj),obj.toUserData()->_delegate);break;
case rabbit::OT_GENERATOR: printf("GENERATOR %p",obj.toGenerator());break; case rabbit::OT_GENERATOR: printf("GENERATOR %p",obj.toGenerator());break;
case rabbit::OT_THREAD: printf("THREAD [%p]",_thread(obj));break; case rabbit::OT_THREAD: printf("THREAD [%p]",_thread(obj));break;
case rabbit::OT_USERPOINTER: printf("USERPOINTER %p",_userpointer(obj));break; case rabbit::OT_USERPOINTER: printf("USERPOINTER %p",_userpointer(obj));break;

View File

@ -740,7 +740,7 @@ int64_t rabbit::sq_getsize(rabbit::VirtualMachine* v, int64_t idx)
case rabbit::OT_STRING: return o.toString()->_len; case rabbit::OT_STRING: return o.toString()->_len;
case rabbit::OT_TABLE: return o.toTable()->countUsed(); case rabbit::OT_TABLE: return o.toTable()->countUsed();
case rabbit::OT_ARRAY: return o.toArray()->size(); case rabbit::OT_ARRAY: return o.toArray()->size();
case rabbit::OT_USERDATA: return _userdata(o)->getsize(); case rabbit::OT_USERDATA: return o.toUserData()->getsize();
case rabbit::OT_INSTANCE: return _instance(o)->_class->_udsize; case rabbit::OT_INSTANCE: return _instance(o)->_class->_udsize;
case rabbit::OT_CLASS: return _class(o)->_udsize; case rabbit::OT_CLASS: return _class(o)->_udsize;
default: default:
@ -760,7 +760,7 @@ rabbit::Result rabbit::sq_getuserdata(rabbit::VirtualMachine* v,int64_t idx,rabb
_GETSAFE_OBJ(v, idx, rabbit::OT_USERDATA,o); _GETSAFE_OBJ(v, idx, rabbit::OT_USERDATA,o);
(*p) = _userdataval(*o); (*p) = _userdataval(*o);
if(typetag) { if(typetag) {
*typetag = _userdata(*o)->getTypeTag(); *typetag = o->toUserData()->getTypeTag();
} }
return SQ_OK; return SQ_OK;
} }
@ -770,7 +770,7 @@ rabbit::Result rabbit::sq_settypetag(rabbit::VirtualMachine* v,int64_t idx,rabbi
rabbit::ObjectPtr &o = stack_get(v,idx); rabbit::ObjectPtr &o = stack_get(v,idx);
switch(sq_type(o)) { switch(sq_type(o)) {
case rabbit::OT_USERDATA: case rabbit::OT_USERDATA:
_userdata(o)->setTypeTag(typetag); o.toUserData()->setTypeTag(typetag);
break; break;
case rabbit::OT_CLASS: case rabbit::OT_CLASS:
_class(o)->_typetag = typetag; _class(o)->_typetag = typetag;
@ -785,7 +785,7 @@ rabbit::Result rabbit::sq_getobjtypetag(const rabbit::Object *o,rabbit::UserPoin
{ {
switch(sq_type(*o)) { switch(sq_type(*o)) {
case rabbit::OT_INSTANCE: *typetag = _instance(*o)->_class->_typetag; break; case rabbit::OT_INSTANCE: *typetag = _instance(*o)->_class->_typetag; break;
case rabbit::OT_USERDATA: *typetag = _userdata(*o)->getTypeTag(); break; case rabbit::OT_USERDATA: *typetag = o->toUserData()->getTypeTag(); break;
case rabbit::OT_CLASS: *typetag = _class(*o)->_typetag; break; case rabbit::OT_CLASS: *typetag = _class(*o)->_typetag; break;
default: return SQ_ERROR; default: return SQ_ERROR;
} }
@ -1007,9 +1007,9 @@ rabbit::Result rabbit::sq_setdelegate(rabbit::VirtualMachine* v,int64_t idx)
break; break;
case rabbit::OT_USERDATA: case rabbit::OT_USERDATA:
if(sq_type(mt)==rabbit::OT_TABLE) { if(sq_type(mt)==rabbit::OT_TABLE) {
_userdata(self)->setDelegate(mt.toTable()); v->pop(); } self.toUserData()->setDelegate(mt.toTable()); v->pop(); }
else if(sq_type(mt)==rabbit::OT_NULL) { else if(sq_type(mt)==rabbit::OT_NULL) {
_userdata(self)->setDelegate(NULL); v->pop(); } self.toUserData()->setDelegate(NULL); v->pop(); }
else return sq_aux_invalidtype(v, type); else return sq_aux_invalidtype(v, type);
break; break;
default: default:
@ -1264,7 +1264,7 @@ void rabbit::sq_setreleasehook(rabbit::VirtualMachine* v,int64_t idx,SQRELEASEHO
rabbit::ObjectPtr &ud=stack_get(v,idx); rabbit::ObjectPtr &ud=stack_get(v,idx);
switch(sq_type(ud) ) { switch(sq_type(ud) ) {
case rabbit::OT_USERDATA: case rabbit::OT_USERDATA:
_userdata(ud)->setHook(hook); ud.toUserData()->setHook(hook);
break; break;
case rabbit::OT_INSTANCE: case rabbit::OT_INSTANCE:
_instance(ud)->_hook = hook; _instance(ud)->_hook = hook;
@ -1282,7 +1282,7 @@ SQRELEASEHOOK rabbit::sq_getreleasehook(rabbit::VirtualMachine* v,int64_t idx)
rabbit::ObjectPtr &ud=stack_get(v,idx); rabbit::ObjectPtr &ud=stack_get(v,idx);
switch(sq_type(ud) ) { switch(sq_type(ud) ) {
case rabbit::OT_USERDATA: case rabbit::OT_USERDATA:
return _userdata(ud)->getHook(); return ud.toUserData()->getHook();
break; break;
case rabbit::OT_INSTANCE: case rabbit::OT_INSTANCE:
return _instance(ud)->_hook; return _instance(ud)->_hook;