[DEV] remote _string()

This commit is contained in:
Edouard DUPIN 2018-07-03 21:53:06 +02:00
parent 0f930d76f7
commit 7a589d9a98
8 changed files with 15 additions and 15 deletions

View File

@ -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:

View File

@ -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;

View File

@ -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)

View File

@ -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:

View File

@ -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]);

View File

@ -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();

View File

@ -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));\

View File

@ -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);