[DEV] remove _userdataval()

This commit is contained in:
Edouard DUPIN 2018-07-04 21:56:29 +02:00
parent 2704e12018
commit ac1bd10654
4 changed files with 10 additions and 5 deletions

View File

@ -9,6 +9,8 @@
#include <rabbit/Object.hpp> #include <rabbit/Object.hpp>
#include <rabbit/String.hpp> #include <rabbit/String.hpp>
#include <rabbit/WeakRef.hpp> #include <rabbit/WeakRef.hpp>
#include <rabbit/squtils.hpp>
#include <rabbit/UserData.hpp>
const char* rabbit::Object::getStringValue() const { const char* rabbit::Object::getStringValue() const {
return (const char*)&_unVal.pString->_val[0]; return (const char*)&_unVal.pString->_val[0];
@ -25,3 +27,7 @@ rabbit::Object rabbit::Object::getRealObject() const {
} }
return toWeakRef()->_obj; return toWeakRef()->_obj;
} }
rabbit::UserPointer rabbit::Object::getUserDataValue() const {
return (rabbit::UserPointer)sq_aligning(_unVal.pUserData + 1);
}

View File

@ -222,6 +222,7 @@ namespace rabbit {
return rabbit::ObjectType(_type&_RT_MASK); return rabbit::ObjectType(_type&_RT_MASK);
} }
rabbit::Object getRealObject() const; rabbit::Object getRealObject() const;
rabbit::UserPointer getUserDataValue() const;
}; };
#define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED) #define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED)
@ -236,8 +237,6 @@ namespace rabbit {
unval.pRefCounted->release(); \ unval.pRefCounted->release(); \
} }
#define _userdataval(obj) ((rabbit::UserPointer)sq_aligning((obj)._unVal.pUserData + 1))
inline void _Swap(rabbit::Object &a,rabbit::Object &b) inline void _Swap(rabbit::Object &a,rabbit::Object &b)
{ {
rabbit::ObjectType tOldType = a._type; rabbit::ObjectType tOldType = a._type;

View File

@ -1855,7 +1855,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),obj.toUserData()->_delegate);break; case rabbit::OT_USERDATA: printf("USERDATA %p[%p]", obj.getUserDataValue(), 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]",obj.toVirtualMachine());break; case rabbit::OT_THREAD: printf("THREAD [%p]",obj.toVirtualMachine());break;
case rabbit::OT_USERPOINTER: printf("USERPOINTER %p",obj.toUserPointer());break; case rabbit::OT_USERPOINTER: printf("USERPOINTER %p",obj.toUserPointer());break;

View File

@ -776,7 +776,7 @@ rabbit::Result rabbit::sq_getuserdata(rabbit::VirtualMachine* v,int64_t idx,rabb
{ {
rabbit::ObjectPtr *o = NULL; rabbit::ObjectPtr *o = NULL;
_GETSAFE_OBJ(v, idx, rabbit::OT_USERDATA,o); _GETSAFE_OBJ(v, idx, rabbit::OT_USERDATA,o);
(*p) = _userdataval(*o); (*p) = o->getUserDataValue();
if(typetag) { if(typetag) {
*typetag = o->toUserData()->getTypeTag(); *typetag = o->toUserData()->getTypeTag();
} }