[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()){
|
switch(o.getType()){
|
||||||
case rabbit::OT_STRING:
|
case rabbit::OT_STRING:
|
||||||
_CHECK_IO(SafeWrite(v,write,up,&o.toString()->_len,sizeof(int64_t)));
|
_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;
|
break;
|
||||||
case rabbit::OT_BOOL:
|
case rabbit::OT_BOOL:
|
||||||
case rabbit::OT_INTEGER:
|
case rabbit::OT_INTEGER:
|
||||||
|
@ -210,7 +210,7 @@ public:
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(_raiseerror && _get_shared_state(_vm)->_compilererrorhandler) {
|
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);
|
_lex._currentline, _lex._currentcolumn);
|
||||||
}
|
}
|
||||||
_vm->_lasterror = rabbit::String::create(_get_shared_state(_vm), _compilererror, -1);
|
_vm->_lasterror = rabbit::String::create(_get_shared_state(_vm), _compilererror, -1);
|
||||||
@ -789,7 +789,7 @@ public:
|
|||||||
constid = Expect(TK_IDENTIFIER);
|
constid = Expect(TK_IDENTIFIER);
|
||||||
if(!constant.toTable()->get(constid, constval)) {
|
if(!constant.toTable()->get(constid, constval)) {
|
||||||
constval.Null();
|
constval.Null();
|
||||||
error("invalid constant [%s.%s]", _stringval(id), _stringval(constid));
|
error("invalid constant [%s.%s]", id.getStringValue(), constid.getStringValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -101,7 +101,7 @@ void rabbit::FuncState::addInstruction(SQOpcode _op,int64_t arg0,int64_t arg1,in
|
|||||||
static void dumpLiteral(rabbit::ObjectPtr &o) {
|
static void dumpLiteral(rabbit::ObjectPtr &o) {
|
||||||
switch(o.getType()){
|
switch(o.getType()){
|
||||||
case rabbit::OT_STRING:
|
case rabbit::OT_STRING:
|
||||||
printf("\"%s\"",_stringval(o));
|
printf("\"%s\"",o.getStringValue());
|
||||||
break;
|
break;
|
||||||
case rabbit::OT_FLOAT:
|
case rabbit::OT_FLOAT:
|
||||||
printf("{%f}",o.toFloat());
|
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::Instruction sizeof %d\n",(int32_t)sizeof(rabbit::Instruction));
|
||||||
printf("rabbit::Object sizeof %d\n", (int32_t)sizeof(rabbit::Object));
|
printf("rabbit::Object sizeof %d\n", (int32_t)sizeof(rabbit::Object));
|
||||||
printf("--------------------------------------------------------------------\n");
|
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");
|
printf("-----LITERALS\n");
|
||||||
rabbit::ObjectPtr refidx,key,val;
|
rabbit::ObjectPtr refidx,key,val;
|
||||||
int64_t idx;
|
int64_t idx;
|
||||||
@ -181,7 +181,7 @@ void rabbit::FuncState::dump(rabbit::FunctionProto *func)
|
|||||||
printf("-----LOCALS\n");
|
printf("-----LOCALS\n");
|
||||||
for(si=0;si<func->_nlocalvarinfos;si++){
|
for(si=0;si<func->_nlocalvarinfos;si++){
|
||||||
rabbit::LocalVarInfo lvi=func->_localvarinfos[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++;
|
n++;
|
||||||
}
|
}
|
||||||
printf("-----LINE INFO\n");
|
printf("-----LINE INFO\n");
|
||||||
|
@ -75,7 +75,7 @@ const char* rabbit::FunctionProto::getLocal(rabbit::VirtualMachine *vm,uint64_t
|
|||||||
{
|
{
|
||||||
if(nseq==0){
|
if(nseq==0){
|
||||||
vm->push(vm->_stack[stackbase+_localvarinfos[i]._pos]);
|
vm->push(vm->_stack[stackbase+_localvarinfos[i]._pos]);
|
||||||
res=_stringval(_localvarinfos[i]._name);
|
res=_localvarinfos[i]._name.getStringValue();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
nseq--;
|
nseq--;
|
||||||
|
@ -105,7 +105,7 @@ const char *rabbit::Lexer::tok2Str(int64_t tok)
|
|||||||
while((nitr = _keywords->next(false,itr, key, val)) != -1) {
|
while((nitr = _keywords->next(false,itr, key, val)) != -1) {
|
||||||
itr = (int64_t)nitr;
|
itr = (int64_t)nitr;
|
||||||
if(((int64_t)val.toInteger()) == tok)
|
if(((int64_t)val.toInteger()) == tok)
|
||||||
return _stringval(key);
|
return key.getStringValue();
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -7,3 +7,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <rabbit/Object.hpp>
|
#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 {
|
const rabbit::String* toString() const {
|
||||||
return _unVal.pString;
|
return _unVal.pString;
|
||||||
}
|
}
|
||||||
|
const char* getStringValue() const;
|
||||||
|
char* getStringValue();
|
||||||
rabbit::Table*& toTable() {
|
rabbit::Table*& toTable() {
|
||||||
return _unVal.pTable;
|
return _unVal.pTable;
|
||||||
}
|
}
|
||||||
@ -216,6 +218,9 @@ namespace rabbit {
|
|||||||
rabbit::ObjectType getType() const {
|
rabbit::ObjectType getType() const {
|
||||||
return _type;
|
return _type;
|
||||||
}
|
}
|
||||||
|
rabbit::ObjectType getTypeRaw() const {
|
||||||
|
return rabbit::ObjectType(_type&_RT_MASK);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED)
|
#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 _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))
|
#define _userdataval(obj) ((rabbit::UserPointer)sq_aligning((obj)._unVal.pUserData + 1))
|
||||||
|
|
||||||
inline void _Swap(rabbit::Object &a,rabbit::Object &b)
|
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)
|
const char* rabbit::IdType2Name(rabbit::ObjectType type)
|
||||||
{
|
{
|
||||||
switch(_RAW_TYPE(type)) {
|
switch (type&_RT_MASK) {
|
||||||
case _RT_NULL:
|
case _RT_NULL:
|
||||||
return "null";
|
return "null";
|
||||||
case _RT_INTEGER:
|
case _RT_INTEGER:
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
#define SQ_MATCHTYPEMASKSTRING (-99999)
|
#define SQ_MATCHTYPEMASKSTRING (-99999)
|
||||||
|
|
||||||
#define _RT_MASK 0x00FFFFFF
|
#define _RT_MASK 0x00FFFFFF
|
||||||
#define _RAW_TYPE(type) (type&_RT_MASK)
|
|
||||||
|
|
||||||
#define _RT_NULL 0x00000001
|
#define _RT_NULL 0x00000001
|
||||||
#define _RT_INTEGER 0x00000002
|
#define _RT_INTEGER 0x00000002
|
||||||
|
@ -276,7 +276,7 @@ bool rabbit::Table::getStr(const char* key,int64_t keylen,rabbit::ObjectPtr &val
|
|||||||
_HashNode *res = NULL;
|
_HashNode *res = NULL;
|
||||||
do {
|
do {
|
||||||
if ( n->key.isString() == true
|
if ( n->key.isString() == true
|
||||||
&& strcmp(_stringval(n->key), key) == 0) {
|
&& strcmp(n->key.getStringValue(), key) == 0) {
|
||||||
res = n;
|
res = n;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -246,7 +246,7 @@ bool rabbit::VirtualMachine::objCmp(const rabbit::ObjectPtr &o1,const rabbit::Ob
|
|||||||
rabbit::ObjectPtr res;
|
rabbit::ObjectPtr res;
|
||||||
switch(t1){
|
switch(t1){
|
||||||
case rabbit::OT_STRING:
|
case rabbit::OT_STRING:
|
||||||
_RET_SUCCEED(strcmp(_stringval(o1),_stringval(o2)));
|
_RET_SUCCEED(strcmp(o1.getStringValue(),o2.getStringValue()));
|
||||||
case rabbit::OT_INTEGER:
|
case rabbit::OT_INTEGER:
|
||||||
_RET_SUCCEED((o1.toInteger()<o2.toInteger())?-1:1);
|
_RET_SUCCEED((o1.toInteger()<o2.toInteger())?-1:1);
|
||||||
case rabbit::OT_FLOAT:
|
case rabbit::OT_FLOAT:
|
||||||
@ -362,8 +362,8 @@ bool rabbit::VirtualMachine::stringCat(const rabbit::ObjectPtr &str,const rabbit
|
|||||||
if(!toString(obj, b)) return false;
|
if(!toString(obj, b)) return false;
|
||||||
int64_t l = a.toString()->_len , ol = b.toString()->_len;
|
int64_t l = a.toString()->_len , ol = b.toString()->_len;
|
||||||
char *s = _sp(sq_rsl(l + ol + 1));
|
char *s = _sp(sq_rsl(l + ol + 1));
|
||||||
memcpy(s, _stringval(a), sq_rsl(l));
|
memcpy(s, a.getStringValue(), sq_rsl(l));
|
||||||
memcpy(s + l, _stringval(b), sq_rsl(ol));
|
memcpy(s + l, b.getStringValue(), sq_rsl(ol));
|
||||||
dest = rabbit::String::create(_get_shared_state(this), _spval, l + ol);
|
dest = rabbit::String::create(_get_shared_state(this), _spval, l + ol);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1183,11 +1183,11 @@ void rabbit::VirtualMachine::callDebugHook(int64_t type,int64_t forcedline)
|
|||||||
if(_debughook_native) {
|
if(_debughook_native) {
|
||||||
const char* src = nullptr;
|
const char* src = nullptr;
|
||||||
if (func->_sourcename.isString() == true) {
|
if (func->_sourcename.isString() == true) {
|
||||||
src = _stringval(func->_sourcename);
|
src = func->_sourcename.getStringValue();
|
||||||
}
|
}
|
||||||
const char* fname = nullptr;
|
const char* fname = nullptr;
|
||||||
if (func->_name.isString() == true) {
|
if (func->_name.isString() == true) {
|
||||||
fname = _stringval(func->_name);
|
fname = func->_name.getStringValue();
|
||||||
}
|
}
|
||||||
int64_t line = forcedline?forcedline:func->getLine(ci->_ip);
|
int64_t line = forcedline?forcedline:func->getLine(ci->_ip);
|
||||||
_debughook_native(this,type,src,line,fname);
|
_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;
|
int64_t len = self.toString()->_len;
|
||||||
if (n < 0) { n += len; }
|
if (n < 0) { n += 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;
|
return true;
|
||||||
}
|
}
|
||||||
if ((getflags & GET_FLAG_DO_NOT_RAISE_ERROR) == 0) raise_Idxerror(key);
|
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 {
|
else {
|
||||||
rabbit::ObjectPtr oval = printObjVal(key);
|
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;
|
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_FLOAT: printf("FLOAT %.3f",obj.toFloat());break;
|
||||||
case rabbit::OT_INTEGER: printf("INTEGER " _PRINT_INT_FMT,obj.toInteger());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_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_NULL: printf("NULL"); break;
|
||||||
case rabbit::OT_TABLE: printf("TABLE %p[%p]",obj.toTable(),obj.toTable()->_delegate);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;
|
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);
|
*o = &stack_get(v,idx);
|
||||||
if((*o)->getType() != type){
|
if((*o)->getType() != type){
|
||||||
rabbit::ObjectPtr oval = v->printObjVal(**o);
|
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 false;
|
||||||
}
|
}
|
||||||
return true;
|
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)
|
const char * rabbit::sq_objtostring(const rabbit::Object *o)
|
||||||
{
|
{
|
||||||
if(o->isString() == true) {
|
if(o->isString() == true) {
|
||||||
return _stringval(*o);
|
return o->getStringValue();
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -718,7 +718,7 @@ rabbit::Result rabbit::sq_getstringandsize(rabbit::VirtualMachine* v,int64_t idx
|
|||||||
{
|
{
|
||||||
rabbit::ObjectPtr *o = NULL;
|
rabbit::ObjectPtr *o = NULL;
|
||||||
_GETSAFE_OBJ(v, idx, rabbit::OT_STRING,o);
|
_GETSAFE_OBJ(v, idx, rabbit::OT_STRING,o);
|
||||||
*c = _stringval(*o);
|
*c = o->getStringValue();
|
||||||
*size = o->toString()->_len;
|
*size = o->toString()->_len;
|
||||||
return SQ_OK;
|
return SQ_OK;
|
||||||
}
|
}
|
||||||
@ -727,7 +727,7 @@ rabbit::Result rabbit::sq_getstring(rabbit::VirtualMachine* v,int64_t idx,const
|
|||||||
{
|
{
|
||||||
rabbit::ObjectPtr *o = NULL;
|
rabbit::ObjectPtr *o = NULL;
|
||||||
_GETSAFE_OBJ(v, idx, rabbit::OT_STRING,o);
|
_GETSAFE_OBJ(v, idx, rabbit::OT_STRING,o);
|
||||||
*c = _stringval(*o);
|
*c = o->getStringValue();
|
||||||
return SQ_OK;
|
return SQ_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1171,7 +1171,7 @@ const char * rabbit::sq_getlocal(rabbit::VirtualMachine* v,uint64_t level,uint64
|
|||||||
rabbit::FunctionProto *func=c->_function;
|
rabbit::FunctionProto *func=c->_function;
|
||||||
if(func->_noutervalues > (int64_t)idx) {
|
if(func->_noutervalues > (int64_t)idx) {
|
||||||
v->push(*c->_outervalues[idx].toOuter()->_valptr);
|
v->push(*c->_outervalues[idx].toOuter()->_valptr);
|
||||||
return _stringval(func->_outervalues[idx]._name);
|
return func->_outervalues[idx]._name.getStringValue();
|
||||||
}
|
}
|
||||||
idx -= func->_noutervalues;
|
idx -= func->_noutervalues;
|
||||||
return func->getLocal(v,stackbase,idx,(int64_t)(ci._ip-func->_instructions)-1);
|
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) {
|
if(((uint64_t)fp->_noutervalues) > nval) {
|
||||||
v->push(*(clo->_outervalues[nval].toOuter()->_valptr));
|
v->push(*(clo->_outervalues[nval].toOuter()->_valptr));
|
||||||
rabbit::OuterVar &ov = fp->_outervalues[nval];
|
rabbit::OuterVar &ov = fp->_outervalues[nval];
|
||||||
name = _stringval(ov._name);
|
name = ov._name.getStringValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -347,7 +347,7 @@ static int64_t default_delegate_tofloat(rabbit::VirtualMachine* v)
|
|||||||
switch(o.getType()){
|
switch(o.getType()){
|
||||||
case rabbit::OT_STRING:{
|
case rabbit::OT_STRING:{
|
||||||
rabbit::ObjectPtr res;
|
rabbit::ObjectPtr res;
|
||||||
if(str2num(_stringval(o),res,10)){
|
if(str2num(o.getStringValue(),res,10)){
|
||||||
v->push(rabbit::ObjectPtr(res.toFloatValue()));
|
v->push(rabbit::ObjectPtr(res.toFloatValue()));
|
||||||
break;
|
break;
|
||||||
}}
|
}}
|
||||||
@ -377,7 +377,7 @@ static int64_t default_delegate_tointeger(rabbit::VirtualMachine* v)
|
|||||||
switch(o.getType()){
|
switch(o.getType()){
|
||||||
case rabbit::OT_STRING:{
|
case rabbit::OT_STRING:{
|
||||||
rabbit::ObjectPtr res;
|
rabbit::ObjectPtr res;
|
||||||
if(str2num(_stringval(o),res,base)){
|
if(str2num(o.getStringValue(),res,base)){
|
||||||
v->push(rabbit::ObjectPtr(res.toIntegerValue()));
|
v->push(rabbit::ObjectPtr(res.toIntegerValue()));
|
||||||
break;
|
break;
|
||||||
}}
|
}}
|
||||||
@ -856,7 +856,7 @@ static int64_t string_slice(rabbit::VirtualMachine* v)
|
|||||||
if(eidx < 0)eidx = slen + eidx;
|
if(eidx < 0)eidx = slen + eidx;
|
||||||
if(eidx < sidx) return sq_throwerror(v,"wrong indexes");
|
if(eidx < sidx) return sq_throwerror(v,"wrong indexes");
|
||||||
if(eidx > slen || sidx < 0) return sq_throwerror(v, "slice out of range");
|
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;
|
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 < sidx) return sq_throwerror(v,"wrong indexes"); \
|
||||||
if(eidx > slen || sidx < 0) return sq_throwerror(v,"slice out of range"); \
|
if(eidx > slen || sidx < 0) return sq_throwerror(v,"slice out of range"); \
|
||||||
int64_t len=str.toString()->_len; \
|
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))); \
|
char *snew=(_get_shared_state(v)->getScratchPad(sq_rsl(len))); \
|
||||||
memcpy(snew,sthis,sq_rsl(len));\
|
memcpy(snew,sthis,sq_rsl(len));\
|
||||||
for(int64_t i=sidx;i<eidx;i++) snew[i] = func(sthis[i]); \
|
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);
|
sq_settop(thread,threadtop);
|
||||||
if(thread->_lasterror.isString() == true) {
|
if(thread->_lasterror.isString() == true) {
|
||||||
sq_throwerror(v,_stringval(thread->_lasterror));
|
sq_throwerror(v,thread->_lasterror.getStringValue());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sq_throwerror(v,"unknown error");
|
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;
|
rabbit::FunctionProto *proto = c->_function;
|
||||||
fi->funcid = proto;
|
fi->funcid = proto;
|
||||||
if (proto->_name.isString() == true) {
|
if (proto->_name.isString() == true) {
|
||||||
fi->name = _stringval(proto->_name);
|
fi->name = proto->_name.getStringValue();
|
||||||
} else {
|
} else {
|
||||||
fi->name = "unknown";
|
fi->name = "unknown";
|
||||||
}
|
}
|
||||||
if (proto->_sourcename.isString() == true) {
|
if (proto->_sourcename.isString() == true) {
|
||||||
fi->source = _stringval(proto->_sourcename);
|
fi->source = proto->_sourcename.getStringValue();
|
||||||
} else {
|
} else {
|
||||||
fi->source = "unknown";
|
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;
|
rabbit::FunctionProto *func = ci._closure.toClosure()->_function;
|
||||||
if (func->_name.isString() == true) {
|
if (func->_name.isString() == true) {
|
||||||
si->funcname = _stringval(func->_name);
|
si->funcname = func->_name.getStringValue();
|
||||||
}
|
}
|
||||||
if (func->_sourcename.isString() == true) {
|
if (func->_sourcename.isString() == true) {
|
||||||
si->source = _stringval(func->_sourcename);
|
si->source = func->_sourcename.getStringValue();
|
||||||
}
|
}
|
||||||
si->line = func->getLine(ci._ip);
|
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->source = "NATIVE";
|
||||||
si->funcname = "unknown";
|
si->funcname = "unknown";
|
||||||
if(ci._closure.toNativeClosure()->_name.isString() == true) {
|
if(ci._closure.toNativeClosure()->_name.isString() == true) {
|
||||||
si->funcname = _stringval(ci._closure.toNativeClosure()->_name);
|
si->funcname = ci._closure.toNativeClosure()->_name.getStringValue();
|
||||||
}
|
}
|
||||||
si->line = -1;
|
si->line = -1;
|
||||||
break;
|
break;
|
||||||
@ -119,13 +119,13 @@ rabbit::String *rabbit::VirtualMachine::printObjVal(const rabbit::ObjectPtr &o)
|
|||||||
void rabbit::VirtualMachine::raise_Idxerror(const rabbit::ObjectPtr &o)
|
void rabbit::VirtualMachine::raise_Idxerror(const rabbit::ObjectPtr &o)
|
||||||
{
|
{
|
||||||
rabbit::ObjectPtr oval = printObjVal(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)
|
void rabbit::VirtualMachine::raise_Compareerror(const rabbit::Object &o1, const rabbit::Object &o2)
|
||||||
{
|
{
|
||||||
rabbit::ObjectPtr oval1 = printObjVal(o1), oval2 = printObjVal(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);
|
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