mirror of https://github.com/OpenTTD/OpenTTD
Codechange: use std::string_view for squirrel compilation
parent
26a4da9b01
commit
3020e615a9
|
@ -173,7 +173,7 @@ typedef struct SQVM* HSQUIRRELVM;
|
||||||
typedef SQObject HSQOBJECT;
|
typedef SQObject HSQOBJECT;
|
||||||
typedef SQInteger (*SQFUNCTION)(HSQUIRRELVM);
|
typedef SQInteger (*SQFUNCTION)(HSQUIRRELVM);
|
||||||
typedef SQInteger (*SQRELEASEHOOK)(SQUserPointer,SQInteger size);
|
typedef SQInteger (*SQRELEASEHOOK)(SQUserPointer,SQInteger size);
|
||||||
typedef void (*SQCOMPILERERROR)(HSQUIRRELVM,const SQChar * /*desc*/,const SQChar * /*source*/,SQInteger /*line*/,SQInteger /*column*/);
|
typedef void (*SQCOMPILERERROR)(HSQUIRRELVM,std::string_view /*desc*/,std::string_view /*source*/,SQInteger /*line*/,SQInteger /*column*/);
|
||||||
typedef void (*SQPRINTFUNCTION)(HSQUIRRELVM,std::string_view);
|
typedef void (*SQPRINTFUNCTION)(HSQUIRRELVM,std::string_view);
|
||||||
|
|
||||||
typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger);
|
typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger);
|
||||||
|
@ -213,8 +213,8 @@ SQInteger sq_getvmstate(HSQUIRRELVM v);
|
||||||
void sq_decreaseops(HSQUIRRELVM v, int amount);
|
void sq_decreaseops(HSQUIRRELVM v, int amount);
|
||||||
|
|
||||||
/*compiler*/
|
/*compiler*/
|
||||||
SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror);
|
SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,std::string_view sourcename,SQBool raiseerror);
|
||||||
SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror);
|
SQRESULT sq_compilebuffer(HSQUIRRELVM v,std::string_view buffer,std::string_view sourcename,SQBool raiseerror);
|
||||||
void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable);
|
void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable);
|
||||||
void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable);
|
void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable);
|
||||||
void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f);
|
void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f);
|
||||||
|
|
|
@ -132,7 +132,7 @@ static SQInteger _sqstd_aux_printerror(HSQUIRRELVM v)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _sqstd_compiler_error(HSQUIRRELVM v,const SQChar *sErr,const SQChar *sSource,SQInteger line,SQInteger column)
|
void _sqstd_compiler_error(HSQUIRRELVM v,std::string_view sErr,std::string_view sSource,SQInteger line,SQInteger column)
|
||||||
{
|
{
|
||||||
SQPRINTFUNCTION pf = sq_getprintfunc(v);
|
SQPRINTFUNCTION pf = sq_getprintfunc(v);
|
||||||
if(pf) {
|
if(pf) {
|
||||||
|
|
|
@ -132,7 +132,7 @@ void sq_close(HSQUIRRELVM v)
|
||||||
sq_delete(ss, SQSharedState);
|
sq_delete(ss, SQSharedState);
|
||||||
}
|
}
|
||||||
|
|
||||||
SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror)
|
SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,std::string_view sourcename,SQBool raiseerror)
|
||||||
{
|
{
|
||||||
SQObjectPtr o;
|
SQObjectPtr o;
|
||||||
if(Compile(v, read, p, sourcename, o, raiseerror != 0, _ss(v)->_debuginfo)) {
|
if(Compile(v, read, p, sourcename, o, raiseerror != 0, _ss(v)->_debuginfo)) {
|
||||||
|
@ -1261,8 +1261,8 @@ char32_t buf_lexfeed(SQUserPointer file)
|
||||||
return consumer.AnyBytesLeft() ? consumer.ReadUtf8(-1) : 0;
|
return consumer.AnyBytesLeft() ? consumer.ReadUtf8(-1) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror) {
|
SQRESULT sq_compilebuffer(HSQUIRRELVM v,std::string_view buffer,std::string_view sourcename,SQBool raiseerror) {
|
||||||
StringConsumer consumer(s, size);
|
StringConsumer consumer{buffer};
|
||||||
return sq_compile(v, buf_lexfeed, &consumer, sourcename, raiseerror);
|
return sq_compile(v, buf_lexfeed, &consumer, sourcename, raiseerror);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -188,7 +188,7 @@ static SQInteger base_compilestring(HSQUIRRELVM v)
|
||||||
if(nargs>2){
|
if(nargs>2){
|
||||||
sq_getstring(v,3,name);
|
sq_getstring(v,3,name);
|
||||||
}
|
}
|
||||||
if(SQ_SUCCEEDED(sq_compilebuffer(v,src,size,name,SQFalse)))
|
if(SQ_SUCCEEDED(sq_compilebuffer(v,src.substr(0, size),name,SQFalse)))
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
return SQ_ERROR;
|
return SQ_ERROR;
|
||||||
|
|
|
@ -57,7 +57,7 @@ typedef sqvector<ExpState> ExpStateVec;
|
||||||
class SQCompiler
|
class SQCompiler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SQCompiler(SQVM *v, SQLEXREADFUNC rg, SQUserPointer up, const SQChar* sourcename, bool raiseerror, bool lineinfo) : _token(0), _fs(nullptr), _lex(_ss(v), rg, up), _debugline(0), _debugop(0)
|
SQCompiler(SQVM *v, SQLEXREADFUNC rg, SQUserPointer up, std::string_view sourcename, bool raiseerror, bool lineinfo) : _token(0), _fs(nullptr), _lex(_ss(v), rg, up), _debugline(0), _debugop(0)
|
||||||
{
|
{
|
||||||
_vm=v;
|
_vm=v;
|
||||||
_sourcename = SQString::Create(_ss(v), sourcename);
|
_sourcename = SQString::Create(_ss(v), sourcename);
|
||||||
|
@ -1346,7 +1346,7 @@ private:
|
||||||
SQVM *_vm;
|
SQVM *_vm;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool Compile(SQVM *vm,SQLEXREADFUNC rg, SQUserPointer up, const SQChar *sourcename, SQObjectPtr &out, bool raiseerror, bool lineinfo)
|
bool Compile(SQVM *vm,SQLEXREADFUNC rg, SQUserPointer up, std::string_view sourcename, SQObjectPtr &out, bool raiseerror, bool lineinfo)
|
||||||
{
|
{
|
||||||
SQCompiler p(vm, rg, up, sourcename, raiseerror, lineinfo);
|
SQCompiler p(vm, rg, up, sourcename, raiseerror, lineinfo);
|
||||||
return p.Compile(out);
|
return p.Compile(out);
|
||||||
|
|
|
@ -73,5 +73,5 @@ struct SQVM;
|
||||||
|
|
||||||
using CompileException = std::runtime_error;
|
using CompileException = std::runtime_error;
|
||||||
|
|
||||||
bool Compile(SQVM *vm, SQLEXREADFUNC rg, SQUserPointer up, const SQChar *sourcename, SQObjectPtr &out, bool raiseerror, bool lineinfo);
|
bool Compile(SQVM *vm, SQLEXREADFUNC rg, SQUserPointer up, std::string_view sourcename, SQObjectPtr &out, bool raiseerror, bool lineinfo);
|
||||||
#endif //_SQCOMPILER_H_
|
#endif //_SQCOMPILER_H_
|
||||||
|
|
|
@ -42,7 +42,7 @@ void Script_CreateDummyInfo(HSQUIRRELVM vm, std::string_view type, std::string_v
|
||||||
sq_pushroottable(vm);
|
sq_pushroottable(vm);
|
||||||
|
|
||||||
/* Load and run the script */
|
/* Load and run the script */
|
||||||
if (SQ_SUCCEEDED(sq_compilebuffer(vm, dummy_script.data(), dummy_script.size(), "dummy", SQTrue))) {
|
if (SQ_SUCCEEDED(sq_compilebuffer(vm, dummy_script, "dummy", SQTrue))) {
|
||||||
sq_push(vm, -2);
|
sq_push(vm, -2);
|
||||||
if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue))) {
|
if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue))) {
|
||||||
sq_pop(vm, 1);
|
sq_pop(vm, 1);
|
||||||
|
@ -101,7 +101,7 @@ void Script_CreateDummy(HSQUIRRELVM vm, StringID string, std::string_view type)
|
||||||
|
|
||||||
/* 3) Finally we load and run the script */
|
/* 3) Finally we load and run the script */
|
||||||
sq_pushroottable(vm);
|
sq_pushroottable(vm);
|
||||||
if (SQ_SUCCEEDED(sq_compilebuffer(vm, dummy_script.data(), dummy_script.size(), "dummy", SQTrue))) {
|
if (SQ_SUCCEEDED(sq_compilebuffer(vm, dummy_script, "dummy", SQTrue))) {
|
||||||
sq_push(vm, -2);
|
sq_push(vm, -2);
|
||||||
if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue))) {
|
if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue))) {
|
||||||
sq_pop(vm, 1);
|
sq_pop(vm, 1);
|
||||||
|
|
|
@ -179,7 +179,7 @@ size_t Squirrel::GetAllocatedMemory() const noexcept
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Squirrel::CompileError(HSQUIRRELVM vm, const SQChar *desc, const SQChar *source, SQInteger line, SQInteger column)
|
void Squirrel::CompileError(HSQUIRRELVM vm, std::string_view desc, std::string_view source, SQInteger line, SQInteger column)
|
||||||
{
|
{
|
||||||
std::string msg = fmt::format("Error {}:{}/{}: {}", source, line, column, desc);
|
std::string msg = fmt::format("Error {}:{}/{}: {}", source, line, column, desc);
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ protected:
|
||||||
/**
|
/**
|
||||||
* The CompileError handler.
|
* The CompileError handler.
|
||||||
*/
|
*/
|
||||||
static void CompileError(HSQUIRRELVM vm, const SQChar *desc, const SQChar *source, SQInteger line, SQInteger column);
|
static void CompileError(HSQUIRRELVM vm, std::string_view desc, std::string_view source, SQInteger line, SQInteger column);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The RunError handler.
|
* The RunError handler.
|
||||||
|
|
|
@ -64,7 +64,7 @@ static std::optional<std::string> TestScriptAdminMakeJSON(std::string_view squir
|
||||||
sq_pop(vm, 1);
|
sq_pop(vm, 1);
|
||||||
|
|
||||||
/* Compile the snippet. */
|
/* Compile the snippet. */
|
||||||
REQUIRE(sq_compilebuffer(vm, buffer.data(), buffer.size(), "test", SQTrue) == SQ_OK);
|
REQUIRE(sq_compilebuffer(vm, buffer, "test", SQTrue) == SQ_OK);
|
||||||
/* Execute the snippet, capturing the return value. */
|
/* Execute the snippet, capturing the return value. */
|
||||||
sq_pushroottable(vm);
|
sq_pushroottable(vm);
|
||||||
REQUIRE(sq_call(vm, 1, SQTrue, SQTrue) == SQ_OK);
|
REQUIRE(sq_call(vm, 1, SQTrue, SQTrue) == SQ_OK);
|
||||||
|
|
Loading…
Reference in New Issue