[DEV] remote _rawval()

This commit is contained in:
Edouard DUPIN 2018-07-03 22:39:21 +02:00
parent 51b24cad24
commit fa206b5e49
5 changed files with 6 additions and 9 deletions

View File

@ -104,7 +104,7 @@ static void dumpLiteral(rabbit::ObjectPtr &o) {
case rabbit::OT_FLOAT: printf("{%f}",o.toFloat());break;
case rabbit::OT_INTEGER: printf("{" _PRINT_INT_FMT "}",o.toInteger());break;
case rabbit::OT_BOOL: printf("%s",o.toInteger()?"true":"false");break;
default: printf("(%s %p)",getTypeName(o),(void*)_rawval(o));break; break; //shut up compiler
default: printf("(%s %p)",getTypeName(o),(void*)o.toRaw());break; break; //shut up compiler
}
}

View File

@ -149,15 +149,12 @@ namespace rabbit {
#define is_delegable(t) (sq_type(t)&SQOBJECT_DELEGABLE)
#define raw_type(obj) _RAW_TYPE((obj)._type)
#define _rawval(obj) ((obj)._unVal.raw)
#define _stringval(obj) (obj)._unVal.pString->_val
#define _userdataval(obj) ((rabbit::UserPointer)sq_aligning((obj)._unVal.pUserData + 1))
#define tofloat(num) ((sq_type(num)==rabbit::OT_INTEGER)?(float_t)(num).toInteger():(num).toFloat())
#define tointeger(num) ((sq_type(num)==rabbit::OT_FLOAT)?(int64_t)(num).toFloat():(num).toInteger())
#define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC)
#define sq_istable(o) ((o)._type==rabbit::OT_TABLE)
#define sq_isarray(o) ((o)._type==rabbit::OT_ARRAY)

View File

@ -118,7 +118,7 @@ rabbit::RefTable::RefNode* rabbit::RefTable::get(rabbit::Object &obj,rabbit::Has
mainpos = rabbit::HashObj(obj)&(_numofslots-1);
*prev = NULL;
for (ref = _buckets[mainpos]; ref; ) {
if(_rawval(ref->obj) == _rawval(obj) && sq_type(ref->obj) == sq_type(obj))
if(ref->obj.toRaw() == obj.toRaw() && sq_type(ref->obj) == sq_type(obj))
break;
*prev = ref;
ref = ref->next;

View File

@ -253,7 +253,7 @@ rabbit::Table::~Table() {
rabbit::Table::_HashNode* rabbit::Table::_get(const rabbit::ObjectPtr &key,rabbit::Hash hash) const{
_HashNode *n = &_nodes[hash];
do {
if( _rawval(n->key) == _rawval(key)
if( n->key.toRaw() == key.toRaw()
&& sq_type(n->key) == sq_type(key)){
return n;
}

View File

@ -227,7 +227,7 @@ bool rabbit::VirtualMachine::objCmp(const rabbit::ObjectPtr &o1,const rabbit::Ob
{
rabbit::ObjectType t1 = sq_type(o1), t2 = sq_type(o2);
if(t1 == t2) {
if(_rawval(o1) == _rawval(o2))_RET_SUCCEED(0);
if(o1.toRaw() == o2.toRaw())_RET_SUCCEED(0);
rabbit::ObjectPtr res;
switch(t1){
case rabbit::OT_STRING:
@ -332,7 +332,7 @@ bool rabbit::VirtualMachine::toString(const rabbit::ObjectPtr &o,rabbit::ObjectP
}
}
default:
snprintf(_sp(sq_rsl((sizeof(void*)*2)+NUMBER_UINT8_MAX)),sq_rsl((sizeof(void*)*2)+NUMBER_UINT8_MAX),"(%s : 0x%p)",getTypeName(o),(void*)_rawval(o));
snprintf(_sp(sq_rsl((sizeof(void*)*2)+NUMBER_UINT8_MAX)),sq_rsl((sizeof(void*)*2)+NUMBER_UINT8_MAX),"(%s : 0x%p)",getTypeName(o),(void*)o.toRaw());
}
res = rabbit::String::create(_get_shared_state(this),_spval);
return true;
@ -659,7 +659,7 @@ bool rabbit::VirtualMachine::CLASS_OP(rabbit::ObjectPtr &target,int64_t baseclas
bool rabbit::VirtualMachine::isEqual(const rabbit::ObjectPtr &o1,const rabbit::ObjectPtr &o2,bool &res)
{
if(sq_type(o1) == sq_type(o2)) {
res = (_rawval(o1) == _rawval(o2));
res = (o1.toRaw() == o2.toRaw());
}
else {
if(sq_isnumeric(o1) && sq_isnumeric(o2)) {