[DEV] remove _realval()
This commit is contained in:
parent
48c38c1797
commit
2704e12018
@ -41,7 +41,7 @@ bool rabbit::Array::get(const int64_t _nidx, rabbit::ObjectPtr& _val) const {
|
|||||||
if( _nidx >= 0
|
if( _nidx >= 0
|
||||||
&& _nidx < (int64_t)m_data.size()){
|
&& _nidx < (int64_t)m_data.size()){
|
||||||
rabbit::ObjectPtr &o = m_data[_nidx];
|
rabbit::ObjectPtr &o = m_data[_nidx];
|
||||||
_val = _realval(o);
|
_val = o.getRealObject();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -61,7 +61,7 @@ int64_t rabbit::Array::next(const rabbit::ObjectPtr& _refpos,
|
|||||||
//first found
|
//first found
|
||||||
_outkey=(int64_t)idx;
|
_outkey=(int64_t)idx;
|
||||||
rabbit::ObjectPtr& o = m_data[idx];
|
rabbit::ObjectPtr& o = m_data[idx];
|
||||||
_outval = _realval(o);
|
_outval = o.getRealObject();
|
||||||
//return idx for the next iteration
|
//return idx for the next iteration
|
||||||
return ++idx;
|
return ++idx;
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ bool rabbit::Class::get(const rabbit::ObjectPtr &key,rabbit::ObjectPtr &val) {
|
|||||||
if(_members->get(key,val)) {
|
if(_members->get(key,val)) {
|
||||||
if(_isfield(val)) {
|
if(_isfield(val)) {
|
||||||
rabbit::ObjectPtr &o = _defaultvalues[_member_idx(val)].val;
|
rabbit::ObjectPtr &o = _defaultvalues[_member_idx(val)].val;
|
||||||
val = _realval(o);
|
val = o.getRealObject();
|
||||||
} else {
|
} else {
|
||||||
val = _methods[_member_idx(val)].val;
|
val = _methods[_member_idx(val)].val;
|
||||||
}
|
}
|
||||||
@ -155,7 +155,7 @@ int64_t rabbit::Class::next(const rabbit::ObjectPtr &refpos, rabbit::ObjectPtr &
|
|||||||
outval = _methods[_member_idx(oval)].val;
|
outval = _methods[_member_idx(oval)].val;
|
||||||
} else {
|
} else {
|
||||||
rabbit::ObjectPtr &o = _defaultvalues[_member_idx(oval)].val;
|
rabbit::ObjectPtr &o = _defaultvalues[_member_idx(oval)].val;
|
||||||
outval = _realval(o);
|
outval = o.getRealObject();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return idx;
|
return idx;
|
||||||
|
@ -102,7 +102,7 @@ bool rabbit::Instance::get(const rabbit::ObjectPtr &key,rabbit::ObjectPtr &val)
|
|||||||
if(_class->_members->get(key,val)) {
|
if(_class->_members->get(key,val)) {
|
||||||
if(_isfield(val)) {
|
if(_isfield(val)) {
|
||||||
rabbit::ObjectPtr &o = _values[_member_idx(val)];
|
rabbit::ObjectPtr &o = _values[_member_idx(val)];
|
||||||
val = _realval(o);
|
val = o.getRealObject();
|
||||||
} else {
|
} else {
|
||||||
val = _class->_methods[_member_idx(val)].val;
|
val = _class->_methods[_member_idx(val)].val;
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include <rabbit/Object.hpp>
|
#include <rabbit/Object.hpp>
|
||||||
#include <rabbit/String.hpp>
|
#include <rabbit/String.hpp>
|
||||||
|
#include <rabbit/WeakRef.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];
|
||||||
@ -16,3 +17,11 @@ const char* rabbit::Object::getStringValue() const {
|
|||||||
char* rabbit::Object::getStringValue() {
|
char* rabbit::Object::getStringValue() {
|
||||||
return (char*)&_unVal.pString->_val[0];
|
return (char*)&_unVal.pString->_val[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
rabbit::Object rabbit::Object::getRealObject() const {
|
||||||
|
if (isWeakRef() == false) {
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
return toWeakRef()->_obj;
|
||||||
|
}
|
@ -221,6 +221,7 @@ namespace rabbit {
|
|||||||
rabbit::ObjectType getTypeRaw() const {
|
rabbit::ObjectType getTypeRaw() const {
|
||||||
return rabbit::ObjectType(_type&_RT_MASK);
|
return rabbit::ObjectType(_type&_RT_MASK);
|
||||||
}
|
}
|
||||||
|
rabbit::Object getRealObject() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED)
|
#define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED)
|
||||||
@ -235,8 +236,6 @@ namespace rabbit {
|
|||||||
unval.pRefCounted->release(); \
|
unval.pRefCounted->release(); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define _realval(o) ((o).isWeakRef() == false?(rabbit::Object)o:(o).toWeakRef()->_obj)
|
|
||||||
|
|
||||||
#define _userdataval(obj) ((rabbit::UserPointer)sq_aligning((obj)._unVal.pUserData + 1))
|
#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)
|
||||||
|
@ -131,7 +131,7 @@ bool rabbit::Table::get(const rabbit::ObjectPtr &key,rabbit::ObjectPtr &val) con
|
|||||||
return false;
|
return false;
|
||||||
_HashNode *n = _get(key, HashObj(key) & (_numofnodes - 1));
|
_HashNode *n = _get(key, HashObj(key) & (_numofnodes - 1));
|
||||||
if (n) {
|
if (n) {
|
||||||
val = _realval(n->val);
|
val = n->val.getRealObject();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -204,7 +204,7 @@ int64_t rabbit::Table::next(bool getweakrefs,const rabbit::ObjectPtr &refpos, ra
|
|||||||
//first found
|
//first found
|
||||||
_HashNode &n = _nodes[idx];
|
_HashNode &n = _nodes[idx];
|
||||||
outkey = n.key;
|
outkey = n.key;
|
||||||
outval = getweakrefs?(rabbit::Object)n.val:_realval(n.val);
|
outval = getweakrefs?(rabbit::Object)n.val:n.val.getRealObject();
|
||||||
//return idx for the next iteration
|
//return idx for the next iteration
|
||||||
return ++idx;
|
return ++idx;
|
||||||
}
|
}
|
||||||
@ -282,7 +282,7 @@ bool rabbit::Table::getStr(const char* key,int64_t keylen,rabbit::ObjectPtr &val
|
|||||||
}
|
}
|
||||||
} while((n = n->next));
|
} while((n = n->next));
|
||||||
if (res) {
|
if (res) {
|
||||||
val = _realval(res->val);
|
val = res->val.getRealObject();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -1559,7 +1559,7 @@ rabbit::Result rabbit::sq_getbyhandle(rabbit::VirtualMachine* v,int64_t idx,cons
|
|||||||
if(SQ_FAILED(_getmemberbyhandle(v,self,handle,val))) {
|
if(SQ_FAILED(_getmemberbyhandle(v,self,handle,val))) {
|
||||||
return SQ_ERROR;
|
return SQ_ERROR;
|
||||||
}
|
}
|
||||||
v->push(_realval(*val));
|
v->push(val->getRealObject());
|
||||||
return SQ_OK;
|
return SQ_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user