From 3020e615a933864b960e5631d039ffd7c38df754 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sat, 3 May 2025 13:05:34 +0200 Subject: [PATCH] Codechange: use std::string_view for squirrel compilation --- src/3rdparty/squirrel/include/squirrel.h | 6 +++--- src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp | 2 +- src/3rdparty/squirrel/squirrel/sqapi.cpp | 6 +++--- src/3rdparty/squirrel/squirrel/sqbaselib.cpp | 2 +- src/3rdparty/squirrel/squirrel/sqcompiler.cpp | 4 ++-- src/3rdparty/squirrel/squirrel/sqcompiler.h | 2 +- src/script/script_info_dummy.cpp | 4 ++-- src/script/squirrel.cpp | 2 +- src/script/squirrel.hpp | 2 +- src/tests/test_script_admin.cpp | 2 +- 10 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/3rdparty/squirrel/include/squirrel.h b/src/3rdparty/squirrel/include/squirrel.h index 07c2c98a06..b07ab4e667 100644 --- a/src/3rdparty/squirrel/include/squirrel.h +++ b/src/3rdparty/squirrel/include/squirrel.h @@ -173,7 +173,7 @@ typedef struct SQVM* HSQUIRRELVM; typedef SQObject HSQOBJECT; typedef SQInteger (*SQFUNCTION)(HSQUIRRELVM); 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 SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger); @@ -213,8 +213,8 @@ SQInteger sq_getvmstate(HSQUIRRELVM v); void sq_decreaseops(HSQUIRRELVM v, int amount); /*compiler*/ -SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror); -SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,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,std::string_view buffer,std::string_view sourcename,SQBool raiseerror); void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable); void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable); void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f); diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp b/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp index 1d1c70e2f9..78c3dc6cc4 100644 --- a/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp +++ b/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp @@ -132,7 +132,7 @@ static SQInteger _sqstd_aux_printerror(HSQUIRRELVM v) 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); if(pf) { diff --git a/src/3rdparty/squirrel/squirrel/sqapi.cpp b/src/3rdparty/squirrel/squirrel/sqapi.cpp index e6eaf7406c..b14ce9e394 100644 --- a/src/3rdparty/squirrel/squirrel/sqapi.cpp +++ b/src/3rdparty/squirrel/squirrel/sqapi.cpp @@ -132,7 +132,7 @@ void sq_close(HSQUIRRELVM v) 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; 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; } -SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror) { - StringConsumer consumer(s, size); +SQRESULT sq_compilebuffer(HSQUIRRELVM v,std::string_view buffer,std::string_view sourcename,SQBool raiseerror) { + StringConsumer consumer{buffer}; return sq_compile(v, buf_lexfeed, &consumer, sourcename, raiseerror); } diff --git a/src/3rdparty/squirrel/squirrel/sqbaselib.cpp b/src/3rdparty/squirrel/squirrel/sqbaselib.cpp index 8f95b8d631..a5d14cd617 100644 --- a/src/3rdparty/squirrel/squirrel/sqbaselib.cpp +++ b/src/3rdparty/squirrel/squirrel/sqbaselib.cpp @@ -188,7 +188,7 @@ static SQInteger base_compilestring(HSQUIRRELVM v) if(nargs>2){ 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; else return SQ_ERROR; diff --git a/src/3rdparty/squirrel/squirrel/sqcompiler.cpp b/src/3rdparty/squirrel/squirrel/sqcompiler.cpp index 560edfc66b..0605005db7 100644 --- a/src/3rdparty/squirrel/squirrel/sqcompiler.cpp +++ b/src/3rdparty/squirrel/squirrel/sqcompiler.cpp @@ -57,7 +57,7 @@ typedef sqvector ExpStateVec; class SQCompiler { 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; _sourcename = SQString::Create(_ss(v), sourcename); @@ -1346,7 +1346,7 @@ private: 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); return p.Compile(out); diff --git a/src/3rdparty/squirrel/squirrel/sqcompiler.h b/src/3rdparty/squirrel/squirrel/sqcompiler.h index cdb6b1d65c..de3f2eb215 100644 --- a/src/3rdparty/squirrel/squirrel/sqcompiler.h +++ b/src/3rdparty/squirrel/squirrel/sqcompiler.h @@ -73,5 +73,5 @@ struct SQVM; 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_ diff --git a/src/script/script_info_dummy.cpp b/src/script/script_info_dummy.cpp index e9463c7b8f..df7519bcaf 100644 --- a/src/script/script_info_dummy.cpp +++ b/src/script/script_info_dummy.cpp @@ -42,7 +42,7 @@ void Script_CreateDummyInfo(HSQUIRRELVM vm, std::string_view type, std::string_v sq_pushroottable(vm); /* 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); if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue))) { 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 */ 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); if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue))) { sq_pop(vm, 1); diff --git a/src/script/squirrel.cpp b/src/script/squirrel.cpp index 727b8faee2..6df4274204 100644 --- a/src/script/squirrel.cpp +++ b/src/script/squirrel.cpp @@ -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); diff --git a/src/script/squirrel.hpp b/src/script/squirrel.hpp index fdc0aee701..8feb22e8d9 100644 --- a/src/script/squirrel.hpp +++ b/src/script/squirrel.hpp @@ -55,7 +55,7 @@ protected: /** * 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. diff --git a/src/tests/test_script_admin.cpp b/src/tests/test_script_admin.cpp index 3c57d81536..fc3b6a08fe 100644 --- a/src/tests/test_script_admin.cpp +++ b/src/tests/test_script_admin.cpp @@ -64,7 +64,7 @@ static std::optional TestScriptAdminMakeJSON(std::string_view squir sq_pop(vm, 1); /* 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. */ sq_pushroottable(vm); REQUIRE(sq_call(vm, 1, SQTrue, SQTrue) == SQ_OK);