[DEV] remote _string()
This commit is contained in:
parent
0f930d76f7
commit
7a589d9a98
@ -65,8 +65,8 @@ bool rabbit::WriteObject(rabbit::VirtualMachine* v,rabbit::UserPointer up,SQWRIT
|
||||
_CHECK_IO(SafeWrite(v,write,up,&_type,sizeof(_type)));
|
||||
switch(sq_type(o)){
|
||||
case rabbit::OT_STRING:
|
||||
_CHECK_IO(SafeWrite(v,write,up,&_string(o)->_len,sizeof(int64_t)));
|
||||
_CHECK_IO(SafeWrite(v,write,up,_stringval(o),sq_rsl(_string(o)->_len)));
|
||||
_CHECK_IO(SafeWrite(v,write,up,&o.toString()->_len,sizeof(int64_t)));
|
||||
_CHECK_IO(SafeWrite(v,write,up,_stringval(o),sq_rsl(o.toString()->_len)));
|
||||
break;
|
||||
case rabbit::OT_BOOL:
|
||||
case rabbit::OT_INTEGER:
|
||||
|
@ -391,7 +391,7 @@ int64_t rabbit::FuncState::getLocalVariable(const rabbit::Object &name)
|
||||
int64_t locals=_vlocals.size();
|
||||
while(locals>=1){
|
||||
rabbit::LocalVarInfo &lvi = _vlocals[locals-1];
|
||||
if(sq_type(lvi._name)==rabbit::OT_STRING && _string(lvi._name)==_string(name)){
|
||||
if(sq_type(lvi._name)==rabbit::OT_STRING && lvi._name.toString()==name.toString()){
|
||||
return locals-1;
|
||||
}
|
||||
locals--;
|
||||
@ -410,7 +410,7 @@ int64_t rabbit::FuncState::getOuterVariable(const rabbit::Object &name)
|
||||
{
|
||||
int64_t outers = _outervalues.size();
|
||||
for(int64_t i = 0; i<outers; i++) {
|
||||
if(_string(_outervalues[i]._name) == _string(name))
|
||||
if(_outervalues[i]._name.toString() == name.toString())
|
||||
return i;
|
||||
}
|
||||
int64_t pos=-1;
|
||||
|
@ -149,7 +149,6 @@ namespace rabbit {
|
||||
#define is_delegable(t) (sq_type(t)&SQOBJECT_DELEGABLE)
|
||||
#define raw_type(obj) _RAW_TYPE((obj)._type)
|
||||
|
||||
#define _string(obj) ((obj)._unVal.pString)
|
||||
#define _table(obj) ((obj)._unVal.pTable)
|
||||
#define _closure(obj) ((obj)._unVal.pClosure)
|
||||
#define _generator(obj) ((obj)._unVal.pGenerator)
|
||||
|
@ -13,7 +13,7 @@
|
||||
rabbit::Hash rabbit::HashObj(const rabbit::ObjectPtr &key) {
|
||||
switch(sq_type(key)) {
|
||||
case rabbit::OT_STRING:
|
||||
return _string(key)->_hash;
|
||||
return key.toString()->_hash;
|
||||
case rabbit::OT_FLOAT:
|
||||
return (rabbit::Hash)((int64_t)key.toFloat());
|
||||
case rabbit::OT_BOOL:
|
||||
|
@ -344,7 +344,7 @@ bool rabbit::VirtualMachine::stringCat(const rabbit::ObjectPtr &str,const rabbit
|
||||
rabbit::ObjectPtr a, b;
|
||||
if(!toString(str, a)) return false;
|
||||
if(!toString(obj, b)) return false;
|
||||
int64_t l = _string(a)->_len , ol = _string(b)->_len;
|
||||
int64_t l = a.toString()->_len , ol = b.toString()->_len;
|
||||
char *s = _sp(sq_rsl(l + ol + 1));
|
||||
memcpy(s, _stringval(a), sq_rsl(l));
|
||||
memcpy(s + l, _stringval(b), sq_rsl(ol));
|
||||
@ -546,7 +546,7 @@ bool rabbit::VirtualMachine::FOREACH_OP(rabbit::ObjectPtr &o1,rabbit::ObjectPtr
|
||||
if((nrefidx = o1.toArray()->next(o4, o2, o3)) == -1) _FINISH(exitpos);
|
||||
o4 = (int64_t) nrefidx; _FINISH(1);
|
||||
case rabbit::OT_STRING:
|
||||
if((nrefidx = _string(o1)->next(o4, o2, o3)) == -1)_FINISH(exitpos);
|
||||
if((nrefidx = o1.toString()->next(o4, o2, o3)) == -1)_FINISH(exitpos);
|
||||
o4 = (int64_t)nrefidx; _FINISH(1);
|
||||
case rabbit::OT_CLASS:
|
||||
if((nrefidx = _class(o1)->next(o4, o2, o3)) == -1)_FINISH(exitpos);
|
||||
@ -1272,7 +1272,7 @@ bool rabbit::VirtualMachine::get(const rabbit::ObjectPtr &self, const rabbit::Ob
|
||||
case rabbit::OT_STRING:
|
||||
if(sq_isnumeric(key)){
|
||||
int64_t n = tointeger(key);
|
||||
int64_t len = _string(self)->_len;
|
||||
int64_t len = self.toString()->_len;
|
||||
if (n < 0) { n += len; }
|
||||
if (n >= 0 && n < len) {
|
||||
dest = int64_t(_stringval(self)[n]);
|
||||
|
@ -701,7 +701,7 @@ rabbit::Result rabbit::sq_getstringandsize(rabbit::VirtualMachine* v,int64_t idx
|
||||
rabbit::ObjectPtr *o = NULL;
|
||||
_GETSAFE_OBJ(v, idx, rabbit::OT_STRING,o);
|
||||
*c = _stringval(*o);
|
||||
*size = _string(*o)->_len;
|
||||
*size = o->toString()->_len;
|
||||
return SQ_OK;
|
||||
}
|
||||
|
||||
@ -737,7 +737,7 @@ int64_t rabbit::sq_getsize(rabbit::VirtualMachine* v, int64_t idx)
|
||||
rabbit::ObjectPtr &o = stack_get(v, idx);
|
||||
rabbit::ObjectType type = sq_type(o);
|
||||
switch(type) {
|
||||
case rabbit::OT_STRING: return _string(o)->_len;
|
||||
case rabbit::OT_STRING: return o.toString()->_len;
|
||||
case rabbit::OT_TABLE: return _table(o)->countUsed();
|
||||
case rabbit::OT_ARRAY: return o.toArray()->size();
|
||||
case rabbit::OT_USERDATA: return _userdata(o)->getsize();
|
||||
|
@ -847,7 +847,7 @@ static int64_t string_slice(rabbit::VirtualMachine* v)
|
||||
int64_t sidx,eidx;
|
||||
rabbit::ObjectPtr o;
|
||||
if(SQ_FAILED(get_slice_params(v,sidx,eidx,o)))return -1;
|
||||
int64_t slen = _string(o)->_len;
|
||||
int64_t slen = o.toString()->_len;
|
||||
if(sidx < 0)sidx = slen + sidx;
|
||||
if(eidx < 0)eidx = slen + eidx;
|
||||
if(eidx < sidx) return sq_throwerror(v,"wrong indexes");
|
||||
@ -879,12 +879,12 @@ static int64_t string_find(rabbit::VirtualMachine* v)
|
||||
int64_t sidx,eidx; \
|
||||
rabbit::ObjectPtr str; \
|
||||
if(SQ_FAILED(get_slice_params(v,sidx,eidx,str)))return -1; \
|
||||
int64_t slen = _string(str)->_len; \
|
||||
int64_t slen = str.toString()->_len; \
|
||||
if(sidx < 0)sidx = slen + sidx; \
|
||||
if(eidx < 0)eidx = slen + eidx; \
|
||||
if(eidx < sidx) return sq_throwerror(v,"wrong indexes"); \
|
||||
if(eidx > slen || sidx < 0) return sq_throwerror(v,"slice out of range"); \
|
||||
int64_t len=_string(str)->_len; \
|
||||
int64_t len=str.toString()->_len; \
|
||||
const char *sthis=_stringval(str); \
|
||||
char *snew=(_get_shared_state(v)->getScratchPad(sq_rsl(len))); \
|
||||
memcpy(snew,sthis,sq_rsl(len));\
|
||||
|
@ -88,7 +88,8 @@ void rabbit::VirtualMachine::raise_error(const rabbit::ObjectPtr &desc)
|
||||
rabbit::String *rabbit::VirtualMachine::printObjVal(const rabbit::ObjectPtr &o)
|
||||
{
|
||||
switch(sq_type(o)) {
|
||||
case rabbit::OT_STRING: return _string(o);
|
||||
case rabbit::OT_STRING:
|
||||
return const_cast<rabbit::String *>(o.toString());
|
||||
case rabbit::OT_INTEGER:
|
||||
snprintf(_sp(sq_rsl(NUMBER_UINT8_MAX+1)),sq_rsl(NUMBER_UINT8_MAX), _PRINT_INT_FMT, o.toInteger());
|
||||
return rabbit::String::create(_get_shared_state(this), _spval);
|
||||
|
Loading…
x
Reference in New Issue
Block a user