[DEV] remote _rawval()
This commit is contained in:
parent
51b24cad24
commit
fa206b5e49
@ -104,7 +104,7 @@ static void dumpLiteral(rabbit::ObjectPtr &o) {
|
|||||||
case rabbit::OT_FLOAT: printf("{%f}",o.toFloat());break;
|
case rabbit::OT_FLOAT: printf("{%f}",o.toFloat());break;
|
||||||
case rabbit::OT_INTEGER: printf("{" _PRINT_INT_FMT "}",o.toInteger());break;
|
case rabbit::OT_INTEGER: printf("{" _PRINT_INT_FMT "}",o.toInteger());break;
|
||||||
case rabbit::OT_BOOL: printf("%s",o.toInteger()?"true":"false");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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,15 +149,12 @@ 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 _rawval(obj) ((obj)._unVal.raw)
|
|
||||||
|
|
||||||
#define _stringval(obj) (obj)._unVal.pString->_val
|
#define _stringval(obj) (obj)._unVal.pString->_val
|
||||||
#define _userdataval(obj) ((rabbit::UserPointer)sq_aligning((obj)._unVal.pUserData + 1))
|
#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 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 tointeger(num) ((sq_type(num)==rabbit::OT_FLOAT)?(int64_t)(num).toFloat():(num).toInteger())
|
||||||
|
|
||||||
|
|
||||||
#define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC)
|
#define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC)
|
||||||
#define sq_istable(o) ((o)._type==rabbit::OT_TABLE)
|
#define sq_istable(o) ((o)._type==rabbit::OT_TABLE)
|
||||||
#define sq_isarray(o) ((o)._type==rabbit::OT_ARRAY)
|
#define sq_isarray(o) ((o)._type==rabbit::OT_ARRAY)
|
||||||
|
@ -118,7 +118,7 @@ rabbit::RefTable::RefNode* rabbit::RefTable::get(rabbit::Object &obj,rabbit::Has
|
|||||||
mainpos = rabbit::HashObj(obj)&(_numofslots-1);
|
mainpos = rabbit::HashObj(obj)&(_numofslots-1);
|
||||||
*prev = NULL;
|
*prev = NULL;
|
||||||
for (ref = _buckets[mainpos]; ref; ) {
|
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;
|
break;
|
||||||
*prev = ref;
|
*prev = ref;
|
||||||
ref = ref->next;
|
ref = ref->next;
|
||||||
|
@ -253,7 +253,7 @@ rabbit::Table::~Table() {
|
|||||||
rabbit::Table::_HashNode* rabbit::Table::_get(const rabbit::ObjectPtr &key,rabbit::Hash hash) const{
|
rabbit::Table::_HashNode* rabbit::Table::_get(const rabbit::ObjectPtr &key,rabbit::Hash hash) const{
|
||||||
_HashNode *n = &_nodes[hash];
|
_HashNode *n = &_nodes[hash];
|
||||||
do {
|
do {
|
||||||
if( _rawval(n->key) == _rawval(key)
|
if( n->key.toRaw() == key.toRaw()
|
||||||
&& sq_type(n->key) == sq_type(key)){
|
&& sq_type(n->key) == sq_type(key)){
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
rabbit::ObjectType t1 = sq_type(o1), t2 = sq_type(o2);
|
||||||
if(t1 == t2) {
|
if(t1 == t2) {
|
||||||
if(_rawval(o1) == _rawval(o2))_RET_SUCCEED(0);
|
if(o1.toRaw() == o2.toRaw())_RET_SUCCEED(0);
|
||||||
rabbit::ObjectPtr res;
|
rabbit::ObjectPtr res;
|
||||||
switch(t1){
|
switch(t1){
|
||||||
case rabbit::OT_STRING:
|
case rabbit::OT_STRING:
|
||||||
@ -332,7 +332,7 @@ bool rabbit::VirtualMachine::toString(const rabbit::ObjectPtr &o,rabbit::ObjectP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
default:
|
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);
|
res = rabbit::String::create(_get_shared_state(this),_spval);
|
||||||
return true;
|
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)
|
bool rabbit::VirtualMachine::isEqual(const rabbit::ObjectPtr &o1,const rabbit::ObjectPtr &o2,bool &res)
|
||||||
{
|
{
|
||||||
if(sq_type(o1) == sq_type(o2)) {
|
if(sq_type(o1) == sq_type(o2)) {
|
||||||
res = (_rawval(o1) == _rawval(o2));
|
res = (o1.toRaw() == o2.toRaw());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(sq_isnumeric(o1) && sq_isnumeric(o2)) {
|
if(sq_isnumeric(o1) && sq_isnumeric(o2)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user