diff --git a/rabbit/FuncState.cpp b/rabbit/FuncState.cpp index 6eaa755..d8669bb 100644 --- a/rabbit/FuncState.cpp +++ b/rabbit/FuncState.cpp @@ -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 } } diff --git a/rabbit/Object.hpp b/rabbit/Object.hpp index 9677166..e6328fa 100644 --- a/rabbit/Object.hpp +++ b/rabbit/Object.hpp @@ -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) diff --git a/rabbit/RefTable.cpp b/rabbit/RefTable.cpp index 0164d79..7c9c14d 100644 --- a/rabbit/RefTable.cpp +++ b/rabbit/RefTable.cpp @@ -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; diff --git a/rabbit/Table.cpp b/rabbit/Table.cpp index 78ad1b0..09a9997 100644 --- a/rabbit/Table.cpp +++ b/rabbit/Table.cpp @@ -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; } diff --git a/rabbit/VirtualMachine.cpp b/rabbit/VirtualMachine.cpp index 8c4399e..a24c0fc 100644 --- a/rabbit/VirtualMachine.cpp +++ b/rabbit/VirtualMachine.cpp @@ -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)) {