[DEV] remove to_string()
This commit is contained in:
parent
fa37b1fedb
commit
48c38c1797
@ -66,7 +66,7 @@ bool rabbit::WriteObject(rabbit::VirtualMachine* v,rabbit::UserPointer up,SQWRIT
|
||||
switch(o.getType()){
|
||||
case rabbit::OT_STRING:
|
||||
_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)));
|
||||
_CHECK_IO(SafeWrite(v,write,up,o.getStringValue(),sq_rsl(o.toString()->_len)));
|
||||
break;
|
||||
case rabbit::OT_BOOL:
|
||||
case rabbit::OT_INTEGER:
|
||||
|
@ -210,7 +210,7 @@ public:
|
||||
}
|
||||
else {
|
||||
if(_raiseerror && _get_shared_state(_vm)->_compilererrorhandler) {
|
||||
_get_shared_state(_vm)->_compilererrorhandler(_vm, _compilererror, _sourcename.isString() == true?_stringval(_sourcename):"unknown",
|
||||
_get_shared_state(_vm)->_compilererrorhandler(_vm, _compilererror, _sourcename.isString() == true?_sourcename.getStringValue():"unknown",
|
||||
_lex._currentline, _lex._currentcolumn);
|
||||
}
|
||||
_vm->_lasterror = rabbit::String::create(_get_shared_state(_vm), _compilererror, -1);
|
||||
@ -789,7 +789,7 @@ public:
|
||||
constid = Expect(TK_IDENTIFIER);
|
||||
if(!constant.toTable()->get(constid, constval)) {
|
||||
constval.Null();
|
||||
error("invalid constant [%s.%s]", _stringval(id), _stringval(constid));
|
||||
error("invalid constant [%s.%s]", id.getStringValue(), constid.getStringValue());
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -101,7 +101,7 @@ void rabbit::FuncState::addInstruction(SQOpcode _op,int64_t arg0,int64_t arg1,in
|
||||
static void dumpLiteral(rabbit::ObjectPtr &o) {
|
||||
switch(o.getType()){
|
||||
case rabbit::OT_STRING:
|
||||
printf("\"%s\"",_stringval(o));
|
||||
printf("\"%s\"",o.getStringValue());
|
||||
break;
|
||||
case rabbit::OT_FLOAT:
|
||||
printf("{%f}",o.toFloat());
|
||||
@ -152,7 +152,7 @@ void rabbit::FuncState::dump(rabbit::FunctionProto *func)
|
||||
printf("rabbit::Instruction sizeof %d\n",(int32_t)sizeof(rabbit::Instruction));
|
||||
printf("rabbit::Object sizeof %d\n", (int32_t)sizeof(rabbit::Object));
|
||||
printf("--------------------------------------------------------------------\n");
|
||||
printf("*****FUNCTION [%s]\n",func->_name.isString() == true?_stringval(func->_name):"unknown");
|
||||
printf("*****FUNCTION [%s]\n",func->_name.isString() == true?func->_name.getStringValue():"unknown");
|
||||
printf("-----LITERALS\n");
|
||||
rabbit::ObjectPtr refidx,key,val;
|
||||
int64_t idx;
|
||||
@ -181,7 +181,7 @@ void rabbit::FuncState::dump(rabbit::FunctionProto *func)
|
||||
printf("-----LOCALS\n");
|
||||
for(si=0;si<func->_nlocalvarinfos;si++){
|
||||
rabbit::LocalVarInfo lvi=func->_localvarinfos[si];
|
||||
printf("[%d] %s \t%d %d\n", (int32_t)lvi._pos,_stringval(lvi._name), (int32_t)lvi._start_op, (int32_t)lvi._end_op);
|
||||
printf("[%d] %s \t%d %d\n", (int32_t)lvi._pos,lvi._name.getStringValue(), (int32_t)lvi._start_op, (int32_t)lvi._end_op);
|
||||
n++;
|
||||
}
|
||||
printf("-----LINE INFO\n");
|
||||
|
@ -75,7 +75,7 @@ const char* rabbit::FunctionProto::getLocal(rabbit::VirtualMachine *vm,uint64_t
|
||||
{
|
||||
if(nseq==0){
|
||||
vm->push(vm->_stack[stackbase+_localvarinfos[i]._pos]);
|
||||
res=_stringval(_localvarinfos[i]._name);
|
||||
res=_localvarinfos[i]._name.getStringValue();
|
||||
break;
|
||||
}
|
||||
nseq--;
|
||||
|
@ -105,7 +105,7 @@ const char *rabbit::Lexer::tok2Str(int64_t tok)
|
||||
while((nitr = _keywords->next(false,itr, key, val)) != -1) {
|
||||
itr = (int64_t)nitr;
|
||||
if(((int64_t)val.toInteger()) == tok)
|
||||
return _stringval(key);
|
||||
return key.getStringValue();
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
@ -7,3 +7,12 @@
|
||||
*/
|
||||
|
||||
#include <rabbit/Object.hpp>
|
||||
#include <rabbit/String.hpp>
|
||||
|
||||
const char* rabbit::Object::getStringValue() const {
|
||||
return (const char*)&_unVal.pString->_val[0];
|
||||
}
|
||||
|
||||
char* rabbit::Object::getStringValue() {
|
||||
return (char*)&_unVal.pString->_val[0];
|
||||
}
|
@ -54,6 +54,8 @@ namespace rabbit {
|
||||
const rabbit::String* toString() const {
|
||||
return _unVal.pString;
|
||||
}
|
||||
const char* getStringValue() const;
|
||||
char* getStringValue();
|
||||
rabbit::Table*& toTable() {
|
||||
return _unVal.pTable;
|
||||
}
|
||||
@ -216,6 +218,9 @@ namespace rabbit {
|
||||
rabbit::ObjectType getType() const {
|
||||
return _type;
|
||||
}
|
||||
rabbit::ObjectType getTypeRaw() const {
|
||||
return rabbit::ObjectType(_type&_RT_MASK);
|
||||
}
|
||||
};
|
||||
|
||||
#define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED)
|
||||
@ -232,9 +237,6 @@ namespace rabbit {
|
||||
|
||||
#define _realval(o) ((o).isWeakRef() == false?(rabbit::Object)o:(o).toWeakRef()->_obj)
|
||||
|
||||
#define raw_type(obj) _RAW_TYPE((obj)._type)
|
||||
|
||||
#define _stringval(obj) (obj)._unVal.pString->_val
|
||||
#define _userdataval(obj) ((rabbit::UserPointer)sq_aligning((obj)._unVal.pUserData + 1))
|
||||
|
||||
inline void _Swap(rabbit::Object &a,rabbit::Object &b)
|
||||
|
@ -155,7 +155,7 @@ uint64_t rabbit::translateIndex(const rabbit::ObjectPtr &idx) {
|
||||
|
||||
const char* rabbit::IdType2Name(rabbit::ObjectType type)
|
||||
{
|
||||
switch(_RAW_TYPE(type)) {
|
||||
switch (type&_RT_MASK) {
|
||||
case _RT_NULL:
|
||||
return "null";
|
||||
case _RT_INTEGER:
|
||||
|
@ -17,7 +17,6 @@
|
||||
#define SQ_MATCHTYPEMASKSTRING (-99999)
|
||||
|
||||
#define _RT_MASK 0x00FFFFFF
|
||||
#define _RAW_TYPE(type) (type&_RT_MASK)
|
||||
|
||||
#define _RT_NULL 0x00000001
|
||||
#define _RT_INTEGER 0x00000002
|
||||
|
@ -276,7 +276,7 @@ bool rabbit::Table::getStr(const char* key,int64_t keylen,rabbit::ObjectPtr &val
|
||||
_HashNode *res = NULL;
|
||||
do {
|
||||
if ( n->key.isString() == true
|
||||
&& strcmp(_stringval(n->key), key) == 0) {
|
||||
&& strcmp(n->key.getStringValue(), key) == 0) {
|
||||
res = n;
|
||||
break;
|
||||
}
|
||||
|
@ -246,7 +246,7 @@ bool rabbit::VirtualMachine::objCmp(const rabbit::ObjectPtr &o1,const rabbit::Ob
|
||||
rabbit::ObjectPtr res;
|
||||
switch(t1){
|
||||
case rabbit::OT_STRING:
|
||||
_RET_SUCCEED(strcmp(_stringval(o1),_stringval(o2)));
|
||||
_RET_SUCCEED(strcmp(o1.getStringValue(),o2.getStringValue()));
|
||||
case rabbit::OT_INTEGER:
|
||||
_RET_SUCCEED((o1.toInteger()<o2.toInteger())?-1:1);
|
||||
case rabbit::OT_FLOAT:
|
||||
@ -362,8 +362,8 @@ bool rabbit::VirtualMachine::stringCat(const rabbit::ObjectPtr &str,const rabbit
|
||||
if(!toString(obj, b)) return false;
|
||||
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));
|
||||
memcpy(s, a.getStringValue(), sq_rsl(l));
|
||||
memcpy(s + l, b.getStringValue(), sq_rsl(ol));
|
||||
dest = rabbit::String::create(_get_shared_state(this), _spval, l + ol);
|
||||
return true;
|
||||
}
|
||||
@ -1183,11 +1183,11 @@ void rabbit::VirtualMachine::callDebugHook(int64_t type,int64_t forcedline)
|
||||
if(_debughook_native) {
|
||||
const char* src = nullptr;
|
||||
if (func->_sourcename.isString() == true) {
|
||||
src = _stringval(func->_sourcename);
|
||||
src = func->_sourcename.getStringValue();
|
||||
}
|
||||
const char* fname = nullptr;
|
||||
if (func->_name.isString() == true) {
|
||||
fname = _stringval(func->_name);
|
||||
fname = func->_name.getStringValue();
|
||||
}
|
||||
int64_t line = forcedline?forcedline:func->getLine(ci->_ip);
|
||||
_debughook_native(this,type,src,line,fname);
|
||||
@ -1330,7 +1330,7 @@ bool rabbit::VirtualMachine::get(const rabbit::ObjectPtr &self, const rabbit::Ob
|
||||
int64_t len = self.toString()->_len;
|
||||
if (n < 0) { n += len; }
|
||||
if (n >= 0 && n < len) {
|
||||
dest = int64_t(_stringval(self)[n]);
|
||||
dest = int64_t(self.getStringValue()[n]);
|
||||
return true;
|
||||
}
|
||||
if ((getflags & GET_FLAG_DO_NOT_RAISE_ERROR) == 0) raise_Idxerror(key);
|
||||
@ -1605,7 +1605,7 @@ bool rabbit::VirtualMachine::newSlot(const rabbit::ObjectPtr &self,const rabbit:
|
||||
}
|
||||
else {
|
||||
rabbit::ObjectPtr oval = printObjVal(key);
|
||||
raise_error("the property '%s' already exists",_stringval(oval));
|
||||
raise_error("the property '%s' already exists",oval.getStringValue());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -1849,7 +1849,7 @@ void rabbit::VirtualMachine::dumpstack(int64_t stackbase,bool dumpall)
|
||||
case rabbit::OT_FLOAT: printf("FLOAT %.3f",obj.toFloat());break;
|
||||
case rabbit::OT_INTEGER: printf("INTEGER " _PRINT_INT_FMT,obj.toInteger());break;
|
||||
case rabbit::OT_BOOL: printf("BOOL %s",obj.toInteger()?"true":"false");break;
|
||||
case rabbit::OT_STRING: printf("STRING %s",_stringval(obj));break;
|
||||
case rabbit::OT_STRING: printf("STRING %s",obj.getStringValue());break;
|
||||
case rabbit::OT_NULL: printf("NULL"); break;
|
||||
case rabbit::OT_TABLE: printf("TABLE %p[%p]",obj.toTable(),obj.toTable()->_delegate);break;
|
||||
case rabbit::OT_ARRAY: printf("ARRAY %p",obj.toArray());break;
|
||||
|
@ -35,7 +35,7 @@ static bool sq_aux_gettypedarg(rabbit::VirtualMachine* v,int64_t idx,rabbit::Obj
|
||||
*o = &stack_get(v,idx);
|
||||
if((*o)->getType() != type){
|
||||
rabbit::ObjectPtr oval = v->printObjVal(**o);
|
||||
v->raise_error("wrong argument type, expected '%s' got '%.50s'",IdType2Name(type),_stringval(oval));
|
||||
v->raise_error("wrong argument type, expected '%s' got '%.50s'",IdType2Name(type),oval.getStringValue());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@ -209,7 +209,7 @@ uint64_t rabbit::sq_getvmrefcount(rabbit::VirtualMachine* SQ_UNUSED_ARG(v), cons
|
||||
const char * rabbit::sq_objtostring(const rabbit::Object *o)
|
||||
{
|
||||
if(o->isString() == true) {
|
||||
return _stringval(*o);
|
||||
return o->getStringValue();
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@ -718,7 +718,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);
|
||||
*c = o->getStringValue();
|
||||
*size = o->toString()->_len;
|
||||
return SQ_OK;
|
||||
}
|
||||
@ -727,7 +727,7 @@ rabbit::Result rabbit::sq_getstring(rabbit::VirtualMachine* v,int64_t idx,const
|
||||
{
|
||||
rabbit::ObjectPtr *o = NULL;
|
||||
_GETSAFE_OBJ(v, idx, rabbit::OT_STRING,o);
|
||||
*c = _stringval(*o);
|
||||
*c = o->getStringValue();
|
||||
return SQ_OK;
|
||||
}
|
||||
|
||||
@ -1171,7 +1171,7 @@ const char * rabbit::sq_getlocal(rabbit::VirtualMachine* v,uint64_t level,uint64
|
||||
rabbit::FunctionProto *func=c->_function;
|
||||
if(func->_noutervalues > (int64_t)idx) {
|
||||
v->push(*c->_outervalues[idx].toOuter()->_valptr);
|
||||
return _stringval(func->_outervalues[idx]._name);
|
||||
return func->_outervalues[idx]._name.getStringValue();
|
||||
}
|
||||
idx -= func->_noutervalues;
|
||||
return func->getLocal(v,stackbase,idx,(int64_t)(ci._ip-func->_instructions)-1);
|
||||
@ -1417,7 +1417,7 @@ const char * rabbit::sq_getfreevariable(rabbit::VirtualMachine* v,int64_t idx,ui
|
||||
if(((uint64_t)fp->_noutervalues) > nval) {
|
||||
v->push(*(clo->_outervalues[nval].toOuter()->_valptr));
|
||||
rabbit::OuterVar &ov = fp->_outervalues[nval];
|
||||
name = _stringval(ov._name);
|
||||
name = ov._name.getStringValue();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -347,7 +347,7 @@ static int64_t default_delegate_tofloat(rabbit::VirtualMachine* v)
|
||||
switch(o.getType()){
|
||||
case rabbit::OT_STRING:{
|
||||
rabbit::ObjectPtr res;
|
||||
if(str2num(_stringval(o),res,10)){
|
||||
if(str2num(o.getStringValue(),res,10)){
|
||||
v->push(rabbit::ObjectPtr(res.toFloatValue()));
|
||||
break;
|
||||
}}
|
||||
@ -377,7 +377,7 @@ static int64_t default_delegate_tointeger(rabbit::VirtualMachine* v)
|
||||
switch(o.getType()){
|
||||
case rabbit::OT_STRING:{
|
||||
rabbit::ObjectPtr res;
|
||||
if(str2num(_stringval(o),res,base)){
|
||||
if(str2num(o.getStringValue(),res,base)){
|
||||
v->push(rabbit::ObjectPtr(res.toIntegerValue()));
|
||||
break;
|
||||
}}
|
||||
@ -856,7 +856,7 @@ static int64_t string_slice(rabbit::VirtualMachine* v)
|
||||
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");
|
||||
v->push(rabbit::String::create(_get_shared_state(v),&_stringval(o)[sidx],eidx-sidx));
|
||||
v->push(rabbit::String::create(_get_shared_state(v),&o.getStringValue()[sidx],eidx-sidx));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -889,7 +889,7 @@ static int64_t string_find(rabbit::VirtualMachine* v)
|
||||
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=str.toString()->_len; \
|
||||
const char *sthis=_stringval(str); \
|
||||
const char *sthis=str.getStringValue(); \
|
||||
char *snew=(_get_shared_state(v)->getScratchPad(sq_rsl(len))); \
|
||||
memcpy(snew,sthis,sq_rsl(len));\
|
||||
for(int64_t i=sidx;i<eidx;i++) snew[i] = func(sthis[i]); \
|
||||
@ -1187,7 +1187,7 @@ static int64_t thread_getstackinfos(rabbit::VirtualMachine* v)
|
||||
{
|
||||
sq_settop(thread,threadtop);
|
||||
if(thread->_lasterror.isString() == true) {
|
||||
sq_throwerror(v,_stringval(thread->_lasterror));
|
||||
sq_throwerror(v,thread->_lasterror.getStringValue());
|
||||
}
|
||||
else {
|
||||
sq_throwerror(v,"unknown error");
|
||||
|
@ -32,12 +32,12 @@ rabbit::Result rabbit::sq_getfunctioninfo(rabbit::VirtualMachine* v,int64_t leve
|
||||
rabbit::FunctionProto *proto = c->_function;
|
||||
fi->funcid = proto;
|
||||
if (proto->_name.isString() == true) {
|
||||
fi->name = _stringval(proto->_name);
|
||||
fi->name = proto->_name.getStringValue();
|
||||
} else {
|
||||
fi->name = "unknown";
|
||||
}
|
||||
if (proto->_sourcename.isString() == true) {
|
||||
fi->source = _stringval(proto->_sourcename);
|
||||
fi->source = proto->_sourcename.getStringValue();
|
||||
} else {
|
||||
fi->source = "unknown";
|
||||
}
|
||||
@ -59,10 +59,10 @@ rabbit::Result rabbit::sq_stackinfos(rabbit::VirtualMachine* v, int64_t level, r
|
||||
{
|
||||
rabbit::FunctionProto *func = ci._closure.toClosure()->_function;
|
||||
if (func->_name.isString() == true) {
|
||||
si->funcname = _stringval(func->_name);
|
||||
si->funcname = func->_name.getStringValue();
|
||||
}
|
||||
if (func->_sourcename.isString() == true) {
|
||||
si->source = _stringval(func->_sourcename);
|
||||
si->source = func->_sourcename.getStringValue();
|
||||
}
|
||||
si->line = func->getLine(ci._ip);
|
||||
}
|
||||
@ -71,7 +71,7 @@ rabbit::Result rabbit::sq_stackinfos(rabbit::VirtualMachine* v, int64_t level, r
|
||||
si->source = "NATIVE";
|
||||
si->funcname = "unknown";
|
||||
if(ci._closure.toNativeClosure()->_name.isString() == true) {
|
||||
si->funcname = _stringval(ci._closure.toNativeClosure()->_name);
|
||||
si->funcname = ci._closure.toNativeClosure()->_name.getStringValue();
|
||||
}
|
||||
si->line = -1;
|
||||
break;
|
||||
@ -119,13 +119,13 @@ rabbit::String *rabbit::VirtualMachine::printObjVal(const rabbit::ObjectPtr &o)
|
||||
void rabbit::VirtualMachine::raise_Idxerror(const rabbit::ObjectPtr &o)
|
||||
{
|
||||
rabbit::ObjectPtr oval = printObjVal(o);
|
||||
raise_error("the index '%.50s' does not exist", _stringval(oval));
|
||||
raise_error("the index '%.50s' does not exist", oval.getStringValue());
|
||||
}
|
||||
|
||||
void rabbit::VirtualMachine::raise_Compareerror(const rabbit::Object &o1, const rabbit::Object &o2)
|
||||
{
|
||||
rabbit::ObjectPtr oval1 = printObjVal(o1), oval2 = printObjVal(o2);
|
||||
raise_error("comparison between '%.50s' and '%.50s'", _stringval(oval1), _stringval(oval2));
|
||||
raise_error("comparison between '%.50s' and '%.50s'", oval1.getStringValue(), oval2.getStringValue());
|
||||
}
|
||||
|
||||
|
||||
@ -142,5 +142,5 @@ void rabbit::VirtualMachine::raise_ParamTypeerror(int64_t nparam,int64_t typemas
|
||||
stringCat(exptypes,rabbit::String::create(_get_shared_state(this), IdType2Name((rabbit::ObjectType)mask), -1), exptypes);
|
||||
}
|
||||
}
|
||||
raise_error("parameter %d has an invalid type '%s' ; expected: '%s'", nparam, IdType2Name((rabbit::ObjectType)type), _stringval(exptypes));
|
||||
raise_error("parameter %d has an invalid type '%s' ; expected: '%s'", nparam, IdType2Name((rabbit::ObjectType)type), exptypes.getStringValue());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user