mirror of https://github.com/OpenTTD/OpenTTD
Codechange: use std::string_view for sq_getstring
parent
f4f05dea33
commit
278aee2c19
|
@ -174,7 +174,7 @@ 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,const SQChar * /*desc*/,const SQChar * /*source*/,SQInteger /*line*/,SQInteger /*column*/);
|
||||||
typedef void (*SQPRINTFUNCTION)(HSQUIRRELVM,const std::string &);
|
typedef void (*SQPRINTFUNCTION)(HSQUIRRELVM,std::string_view);
|
||||||
|
|
||||||
typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger);
|
typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger);
|
||||||
typedef SQInteger (*SQREADFUNC)(SQUserPointer,SQUserPointer,SQInteger);
|
typedef SQInteger (*SQREADFUNC)(SQUserPointer,SQUserPointer,SQInteger);
|
||||||
|
@ -250,7 +250,7 @@ SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx);
|
||||||
SQBool sq_instanceof(HSQUIRRELVM v);
|
SQBool sq_instanceof(HSQUIRRELVM v);
|
||||||
void sq_tostring(HSQUIRRELVM v,SQInteger idx);
|
void sq_tostring(HSQUIRRELVM v,SQInteger idx);
|
||||||
void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b);
|
void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b);
|
||||||
SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c);
|
SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,std::string_view &str);
|
||||||
SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i);
|
SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i);
|
||||||
SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f);
|
SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f);
|
||||||
SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b);
|
SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b);
|
||||||
|
|
|
@ -16,7 +16,6 @@ void sqstd_printcallstack(HSQUIRRELVM v)
|
||||||
SQInteger i;
|
SQInteger i;
|
||||||
SQBool b;
|
SQBool b;
|
||||||
SQFloat f;
|
SQFloat f;
|
||||||
const SQChar *s;
|
|
||||||
SQInteger level=1; //1 is to skip this function that is level 0
|
SQInteger level=1; //1 is to skip this function that is level 0
|
||||||
const SQChar *name=nullptr;
|
const SQChar *name=nullptr;
|
||||||
SQInteger seq=0;
|
SQInteger seq=0;
|
||||||
|
@ -66,10 +65,12 @@ void sqstd_printcallstack(HSQUIRRELVM v)
|
||||||
case OT_USERPOINTER:
|
case OT_USERPOINTER:
|
||||||
pf(v,fmt::format("[{}] USERPOINTER\n",name));
|
pf(v,fmt::format("[{}] USERPOINTER\n",name));
|
||||||
break;
|
break;
|
||||||
case OT_STRING:
|
case OT_STRING: {
|
||||||
sq_getstring(v,-1,&s);
|
std::string_view view;
|
||||||
pf(v,fmt::format("[{}] \"{}\"\n",name,s));
|
sq_getstring(v,-1,view);
|
||||||
|
pf(v,fmt::format("[{}] \"{}\"\n",name,view));
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case OT_TABLE:
|
case OT_TABLE:
|
||||||
pf(v,fmt::format("[{}] TABLE\n",name));
|
pf(v,fmt::format("[{}] TABLE\n",name));
|
||||||
break;
|
break;
|
||||||
|
@ -117,10 +118,10 @@ static SQInteger _sqstd_aux_printerror(HSQUIRRELVM v)
|
||||||
{
|
{
|
||||||
SQPRINTFUNCTION pf = sq_getprintfunc(v);
|
SQPRINTFUNCTION pf = sq_getprintfunc(v);
|
||||||
if(pf) {
|
if(pf) {
|
||||||
const SQChar *sErr = nullptr;
|
std::string_view error;
|
||||||
if(sq_gettop(v)>=1) {
|
if(sq_gettop(v)>=1) {
|
||||||
if(SQ_SUCCEEDED(sq_getstring(v,2,&sErr))) {
|
if(SQ_SUCCEEDED(sq_getstring(v,2,error))) {
|
||||||
pf(v,fmt::format("\nAN ERROR HAS OCCURRED [{}]\n",sErr));
|
pf(v,fmt::format("\nAN ERROR HAS OCCURRED [{}]\n",error));
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
pf(v,"\nAN ERROR HAS OCCURRED [unknown]\n");
|
pf(v,"\nAN ERROR HAS OCCURRED [unknown]\n");
|
||||||
|
|
|
@ -553,11 +553,11 @@ SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b)
|
||||||
return SQ_ERROR;
|
return SQ_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c)
|
SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,std::string_view &str)
|
||||||
{
|
{
|
||||||
SQObjectPtr *o = nullptr;
|
SQObjectPtr *o = nullptr;
|
||||||
_GETSAFE_OBJ(v, idx, OT_STRING,o);
|
_GETSAFE_OBJ(v, idx, OT_STRING,o);
|
||||||
*c = _stringval(*o);
|
str = _stringval(*o);
|
||||||
return SQ_OK;
|
return SQ_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -170,9 +170,9 @@ static SQInteger get_slice_params(HSQUIRRELVM v,SQInteger &sidx,SQInteger &eidx,
|
||||||
|
|
||||||
static SQInteger base_print(HSQUIRRELVM v)
|
static SQInteger base_print(HSQUIRRELVM v)
|
||||||
{
|
{
|
||||||
const SQChar *str;
|
std::string_view str;
|
||||||
sq_tostring(v,2);
|
sq_tostring(v,2);
|
||||||
sq_getstring(v,-1,&str);
|
sq_getstring(v,-1,str);
|
||||||
if(_ss(v)->_printfunc) _ss(v)->_printfunc(v,str);
|
if(_ss(v)->_printfunc) _ss(v)->_printfunc(v,str);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -181,12 +181,12 @@ static SQInteger base_print(HSQUIRRELVM v)
|
||||||
static SQInteger base_compilestring(HSQUIRRELVM v)
|
static SQInteger base_compilestring(HSQUIRRELVM v)
|
||||||
{
|
{
|
||||||
SQInteger nargs=sq_gettop(v);
|
SQInteger nargs=sq_gettop(v);
|
||||||
const SQChar *src=nullptr,*name="unnamedbuffer";
|
std::string_view src, name="unnamedbuffer";
|
||||||
SQInteger size;
|
SQInteger size;
|
||||||
sq_getstring(v,2,&src);
|
sq_getstring(v,2,src);
|
||||||
size=sq_getsize(v,2);
|
size=sq_getsize(v,2);
|
||||||
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,size,name,SQFalse)))
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -649,13 +649,13 @@ static SQInteger string_slice(HSQUIRRELVM v)
|
||||||
static SQInteger string_find(HSQUIRRELVM v)
|
static SQInteger string_find(HSQUIRRELVM v)
|
||||||
{
|
{
|
||||||
SQInteger top,start_idx=0;
|
SQInteger top,start_idx=0;
|
||||||
const SQChar *str,*substr,*ret;
|
std::string_view str,substr;
|
||||||
if(((top=sq_gettop(v))>1) && SQ_SUCCEEDED(sq_getstring(v,1,&str)) && SQ_SUCCEEDED(sq_getstring(v,2,&substr))){
|
if(((top=sq_gettop(v))>1) && SQ_SUCCEEDED(sq_getstring(v,1,str)) && SQ_SUCCEEDED(sq_getstring(v,2,substr))){
|
||||||
if(top>2)sq_getinteger(v,3,&start_idx);
|
if(top>2)sq_getinteger(v,3,&start_idx);
|
||||||
if((sq_getsize(v,1)>start_idx) && (start_idx>=0)){
|
if((sq_getsize(v,1)>start_idx) && (start_idx>=0)){
|
||||||
ret=strstr(&str[start_idx],substr);
|
auto ret = str.find(substr, start_idx);
|
||||||
if(ret){
|
if(ret != std::string_view::npos){
|
||||||
sq_pushinteger(v,(SQInteger)(ret-str));
|
sq_pushinteger(v,static_cast<SQInteger>(ret));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,10 +45,10 @@ bool ScriptAdminMakeJSON(nlohmann::json &json, HSQUIRRELVM vm, SQInteger index,
|
||||||
}
|
}
|
||||||
|
|
||||||
case OT_STRING: {
|
case OT_STRING: {
|
||||||
const SQChar *buf;
|
std::string_view view;
|
||||||
sq_getstring(vm, index, &buf);
|
sq_getstring(vm, index, view);
|
||||||
|
|
||||||
json = std::string(buf);
|
json = view;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,9 +78,9 @@ bool ScriptAdminMakeJSON(nlohmann::json &json, HSQUIRRELVM vm, SQInteger index,
|
||||||
sq_pushnull(vm);
|
sq_pushnull(vm);
|
||||||
while (SQ_SUCCEEDED(sq_next(vm, index - 1))) {
|
while (SQ_SUCCEEDED(sq_next(vm, index - 1))) {
|
||||||
sq_tostring(vm, -2);
|
sq_tostring(vm, -2);
|
||||||
const SQChar *buf;
|
std::string_view view;
|
||||||
sq_getstring(vm, -1, &buf);
|
sq_getstring(vm, -1, view);
|
||||||
std::string key = std::string(buf);
|
std::string key{view};
|
||||||
sq_pop(vm, 1);
|
sq_pop(vm, 1);
|
||||||
|
|
||||||
nlohmann::json value;
|
nlohmann::json value;
|
||||||
|
|
|
@ -60,10 +60,10 @@ SQInteger ScriptText::_SetParam(int parameter, HSQUIRRELVM vm)
|
||||||
|
|
||||||
switch (sq_gettype(vm, -1)) {
|
switch (sq_gettype(vm, -1)) {
|
||||||
case OT_STRING: {
|
case OT_STRING: {
|
||||||
const SQChar *value;
|
std::string_view view;
|
||||||
sq_getstring(vm, -1, &value);
|
sq_getstring(vm, -1, view);
|
||||||
|
|
||||||
this->param[parameter] = StrMakeValid(value);
|
this->param[parameter] = StrMakeValid(view);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,10 +135,10 @@ SQInteger ScriptText::_set(HSQUIRRELVM vm)
|
||||||
int32_t k;
|
int32_t k;
|
||||||
|
|
||||||
if (sq_gettype(vm, 2) == OT_STRING) {
|
if (sq_gettype(vm, 2) == OT_STRING) {
|
||||||
const SQChar *key_string;
|
std::string_view view;
|
||||||
sq_getstring(vm, 2, &key_string);
|
sq_getstring(vm, 2, view);
|
||||||
|
|
||||||
std::string str = StrMakeValid(key_string);
|
std::string str = StrMakeValid(view);
|
||||||
if (!str.starts_with("param_") || str.size() > 8) return SQ_ERROR;
|
if (!str.starts_with("param_") || str.size() > 8) return SQ_ERROR;
|
||||||
|
|
||||||
k = stoi(str.substr(6));
|
k = stoi(str.substr(6));
|
||||||
|
|
|
@ -105,13 +105,13 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm)
|
||||||
/* Read the table, and find all properties we care about */
|
/* Read the table, and find all properties we care about */
|
||||||
sq_pushnull(vm);
|
sq_pushnull(vm);
|
||||||
while (SQ_SUCCEEDED(sq_next(vm, -2))) {
|
while (SQ_SUCCEEDED(sq_next(vm, -2))) {
|
||||||
const SQChar *key_string;
|
std::string_view key_string;
|
||||||
if (SQ_FAILED(sq_getstring(vm, -2, &key_string))) return SQ_ERROR;
|
if (SQ_FAILED(sq_getstring(vm, -2, key_string))) return SQ_ERROR;
|
||||||
std::string key = StrMakeValid(key_string);
|
std::string key = StrMakeValid(key_string);
|
||||||
|
|
||||||
if (key == "name") {
|
if (key == "name") {
|
||||||
const SQChar *sqvalue;
|
std::string_view sqvalue;
|
||||||
if (SQ_FAILED(sq_getstring(vm, -1, &sqvalue))) return SQ_ERROR;
|
if (SQ_FAILED(sq_getstring(vm, -1, sqvalue))) return SQ_ERROR;
|
||||||
|
|
||||||
/* Don't allow '=' and ',' in configure setting names, as we need those
|
/* Don't allow '=' and ',' in configure setting names, as we need those
|
||||||
* 2 chars to nicely store the settings as a string. */
|
* 2 chars to nicely store the settings as a string. */
|
||||||
|
@ -120,8 +120,8 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm)
|
||||||
std::replace_if(config.name.begin(), config.name.end(), replace_with_underscore, '_');
|
std::replace_if(config.name.begin(), config.name.end(), replace_with_underscore, '_');
|
||||||
present.Set(ScriptConfigItemKey::Name);
|
present.Set(ScriptConfigItemKey::Name);
|
||||||
} else if (key == "description") {
|
} else if (key == "description") {
|
||||||
const SQChar *sqdescription;
|
std::string_view sqdescription;
|
||||||
if (SQ_FAILED(sq_getstring(vm, -1, &sqdescription))) return SQ_ERROR;
|
if (SQ_FAILED(sq_getstring(vm, -1, sqdescription))) return SQ_ERROR;
|
||||||
config.description = StrMakeValid(sqdescription);
|
config.description = StrMakeValid(sqdescription);
|
||||||
present.Set(ScriptConfigItemKey::Description);
|
present.Set(ScriptConfigItemKey::Description);
|
||||||
} else if (key == "min_value") {
|
} else if (key == "min_value") {
|
||||||
|
@ -199,9 +199,9 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm)
|
||||||
|
|
||||||
SQInteger ScriptInfo::AddLabels(HSQUIRRELVM vm)
|
SQInteger ScriptInfo::AddLabels(HSQUIRRELVM vm)
|
||||||
{
|
{
|
||||||
const SQChar *setting_name_str;
|
std::string_view setting_name_view;
|
||||||
if (SQ_FAILED(sq_getstring(vm, -2, &setting_name_str))) return SQ_ERROR;
|
if (SQ_FAILED(sq_getstring(vm, -2, setting_name_view))) return SQ_ERROR;
|
||||||
std::string setting_name = StrMakeValid(setting_name_str);
|
std::string setting_name = StrMakeValid(setting_name_view);
|
||||||
|
|
||||||
ScriptConfigItem *config = nullptr;
|
ScriptConfigItem *config = nullptr;
|
||||||
for (auto &item : this->config_list) {
|
for (auto &item : this->config_list) {
|
||||||
|
@ -217,18 +217,18 @@ SQInteger ScriptInfo::AddLabels(HSQUIRRELVM vm)
|
||||||
/* Read the table and find all labels */
|
/* Read the table and find all labels */
|
||||||
sq_pushnull(vm);
|
sq_pushnull(vm);
|
||||||
while (SQ_SUCCEEDED(sq_next(vm, -2))) {
|
while (SQ_SUCCEEDED(sq_next(vm, -2))) {
|
||||||
const SQChar *key_string;
|
std::string_view key_string;
|
||||||
const SQChar *label;
|
std::string_view label;
|
||||||
if (SQ_FAILED(sq_getstring(vm, -2, &key_string))) return SQ_ERROR;
|
if (SQ_FAILED(sq_getstring(vm, -2, key_string))) return SQ_ERROR;
|
||||||
if (SQ_FAILED(sq_getstring(vm, -1, &label))) return SQ_ERROR;
|
if (SQ_FAILED(sq_getstring(vm, -1, label))) return SQ_ERROR;
|
||||||
/* Because squirrel doesn't support identifiers starting with a digit,
|
/* Because squirrel doesn't support identifiers starting with a digit,
|
||||||
* we skip the first character. */
|
* we skip the first character. */
|
||||||
key_string++;
|
key_string.remove_prefix(1);
|
||||||
int sign = 1;
|
int sign = 1;
|
||||||
if (*key_string == '_') {
|
if (key_string.starts_with('_')) {
|
||||||
/* When the second character is '_', it indicates the value is negative. */
|
/* When the second character is '_', it indicates the value is negative. */
|
||||||
sign = -1;
|
sign = -1;
|
||||||
key_string++;
|
key_string.remove_prefix(1);
|
||||||
}
|
}
|
||||||
auto key = ParseInteger<int>(key_string);
|
auto key = ParseInteger<int>(key_string);
|
||||||
if (!key.has_value()) return SQ_ERROR;
|
if (!key.has_value()) return SQ_ERROR;
|
||||||
|
|
|
@ -40,10 +40,10 @@ ScriptStorage::~ScriptStorage() = default;
|
||||||
* @param error_msg Is this an error message?
|
* @param error_msg Is this an error message?
|
||||||
* @param message The actual message text.
|
* @param message The actual message text.
|
||||||
*/
|
*/
|
||||||
static void PrintFunc(bool error_msg, const std::string &message)
|
static void PrintFunc(bool error_msg, std::string_view message)
|
||||||
{
|
{
|
||||||
/* Convert to OpenTTD internal capable string */
|
/* Convert to OpenTTD internal capable string */
|
||||||
ScriptController::Print(error_msg, message);
|
ScriptController::Print(error_msg, std::string{message});
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptInstance::ScriptInstance(std::string_view api_name)
|
ScriptInstance::ScriptInstance(std::string_view api_name)
|
||||||
|
@ -383,9 +383,9 @@ static const SaveLoad _script_byte[] = {
|
||||||
_script_sl_byte = SQSL_STRING;
|
_script_sl_byte = SQSL_STRING;
|
||||||
SlObject(nullptr, _script_byte);
|
SlObject(nullptr, _script_byte);
|
||||||
}
|
}
|
||||||
const SQChar *buf;
|
std::string_view view;
|
||||||
sq_getstring(vm, index, &buf);
|
sq_getstring(vm, index, view);
|
||||||
size_t len = strlen(buf) + 1;
|
size_t len = view.size() + 1;
|
||||||
if (len >= 255) {
|
if (len >= 255) {
|
||||||
ScriptLog::Error("Maximum string length is 254 chars. No data saved.");
|
ScriptLog::Error("Maximum string length is 254 chars. No data saved.");
|
||||||
return false;
|
return false;
|
||||||
|
@ -393,7 +393,7 @@ static const SaveLoad _script_byte[] = {
|
||||||
if (!test) {
|
if (!test) {
|
||||||
_script_sl_byte = (uint8_t)len;
|
_script_sl_byte = (uint8_t)len;
|
||||||
SlObject(nullptr, _script_byte);
|
SlObject(nullptr, _script_byte);
|
||||||
SlCopy(const_cast<char *>(buf), len, SLE_CHAR);
|
SlCopy(const_cast<char *>(view.data()), len, SLE_CHAR);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -678,10 +678,10 @@ bool ScriptInstance::IsPaused()
|
||||||
case SQSL_INSTANCE: {
|
case SQSL_INSTANCE: {
|
||||||
SQInteger top = sq_gettop(this->vm);
|
SQInteger top = sq_gettop(this->vm);
|
||||||
LoadObjects(this->vm, this->data);
|
LoadObjects(this->vm, this->data);
|
||||||
const SQChar *buf;
|
std::string_view view;
|
||||||
sq_getstring(this->vm, -1, &buf);
|
sq_getstring(this->vm, -1, view);
|
||||||
Squirrel *engine = static_cast<Squirrel *>(sq_getforeignptr(this->vm));
|
Squirrel *engine = static_cast<Squirrel *>(sq_getforeignptr(this->vm));
|
||||||
std::string class_name = fmt::format("{}{}", engine->GetAPIName(), buf);
|
std::string class_name = fmt::format("{}{}", engine->GetAPIName(), view);
|
||||||
sq_pushroottable(this->vm);
|
sq_pushroottable(this->vm);
|
||||||
sq_pushstring(this->vm, class_name);
|
sq_pushstring(this->vm, class_name);
|
||||||
if (SQ_FAILED(sq_get(this->vm, -2))) throw Script_FatalError(fmt::format("'{}' doesn't exist", class_name));
|
if (SQ_FAILED(sq_get(this->vm, -2))) throw Script_FatalError(fmt::format("'{}' doesn't exist", class_name));
|
||||||
|
|
|
@ -194,7 +194,7 @@ void Squirrel::CompileError(HSQUIRRELVM vm, const SQChar *desc, const SQChar *so
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Squirrel::ErrorPrintFunc(HSQUIRRELVM vm, const std::string &s)
|
void Squirrel::ErrorPrintFunc(HSQUIRRELVM vm, std::string_view s)
|
||||||
{
|
{
|
||||||
/* Check if we have a custom print function */
|
/* Check if we have a custom print function */
|
||||||
SQPrintFunc *func = ((Squirrel *)sq_getforeignptr(vm))->print_func;
|
SQPrintFunc *func = ((Squirrel *)sq_getforeignptr(vm))->print_func;
|
||||||
|
@ -205,7 +205,7 @@ void Squirrel::ErrorPrintFunc(HSQUIRRELVM vm, const std::string &s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Squirrel::RunError(HSQUIRRELVM vm, const SQChar *error)
|
void Squirrel::RunError(HSQUIRRELVM vm, std::string_view error)
|
||||||
{
|
{
|
||||||
/* Set the print function to something that prints to stderr */
|
/* Set the print function to something that prints to stderr */
|
||||||
SQPRINTFUNCTION pf = sq_getprintfunc(vm);
|
SQPRINTFUNCTION pf = sq_getprintfunc(vm);
|
||||||
|
@ -229,11 +229,11 @@ void Squirrel::RunError(HSQUIRRELVM vm, const SQChar *error)
|
||||||
|
|
||||||
SQInteger Squirrel::_RunError(HSQUIRRELVM vm)
|
SQInteger Squirrel::_RunError(HSQUIRRELVM vm)
|
||||||
{
|
{
|
||||||
const SQChar *sErr = nullptr;
|
std::string_view view;
|
||||||
|
|
||||||
if (sq_gettop(vm) >= 1) {
|
if (sq_gettop(vm) >= 1) {
|
||||||
if (SQ_SUCCEEDED(sq_getstring(vm, -1, &sErr))) {
|
if (SQ_SUCCEEDED(sq_getstring(vm, -1, view))) {
|
||||||
Squirrel::RunError(vm, sErr);
|
Squirrel::RunError(vm, view);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -242,7 +242,7 @@ SQInteger Squirrel::_RunError(HSQUIRRELVM vm)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Squirrel::PrintFunc(HSQUIRRELVM vm, const std::string &s)
|
void Squirrel::PrintFunc(HSQUIRRELVM vm, std::string_view s)
|
||||||
{
|
{
|
||||||
/* Check if we have a custom print function */
|
/* Check if we have a custom print function */
|
||||||
SQPrintFunc *func = ((Squirrel *)sq_getforeignptr(vm))->print_func;
|
SQPrintFunc *func = ((Squirrel *)sq_getforeignptr(vm))->print_func;
|
||||||
|
|
|
@ -26,7 +26,7 @@ class Squirrel {
|
||||||
friend class ScriptInstance;
|
friend class ScriptInstance;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef void (SQPrintFunc)(bool error_msg, const std::string &message);
|
using SQPrintFunc = void (bool error_msg, std::string_view message);
|
||||||
|
|
||||||
HSQUIRRELVM vm; ///< The VirtualMachine instance for squirrel
|
HSQUIRRELVM vm; ///< The VirtualMachine instance for squirrel
|
||||||
void *global_pointer; ///< Can be set by who ever initializes Squirrel
|
void *global_pointer; ///< Can be set by who ever initializes Squirrel
|
||||||
|
@ -60,17 +60,17 @@ protected:
|
||||||
/**
|
/**
|
||||||
* The RunError handler.
|
* The RunError handler.
|
||||||
*/
|
*/
|
||||||
static void RunError(HSQUIRRELVM vm, const SQChar *error);
|
static void RunError(HSQUIRRELVM vm, std::string_view error);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If a user runs 'print' inside a script, this function gets the params.
|
* If a user runs 'print' inside a script, this function gets the params.
|
||||||
*/
|
*/
|
||||||
static void PrintFunc(HSQUIRRELVM vm, const std::string &s);
|
static void PrintFunc(HSQUIRRELVM vm, std::string_view s);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If an error has to be print, this function is called.
|
* If an error has to be print, this function is called.
|
||||||
*/
|
*/
|
||||||
static void ErrorPrintFunc(HSQUIRRELVM vm, const std::string &s);
|
static void ErrorPrintFunc(HSQUIRRELVM vm, std::string_view s);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Squirrel(std::string_view api_name);
|
Squirrel(std::string_view api_name);
|
||||||
|
|
|
@ -110,9 +110,9 @@ namespace SQConvert {
|
||||||
/* Convert what-ever there is as parameter to a string */
|
/* Convert what-ever there is as parameter to a string */
|
||||||
sq_tostring(vm, index);
|
sq_tostring(vm, index);
|
||||||
|
|
||||||
const SQChar *tmp;
|
std::string_view view;
|
||||||
sq_getstring(vm, -1, &tmp);
|
sq_getstring(vm, -1, view);
|
||||||
std::string result = StrMakeValid(tmp);
|
std::string result = StrMakeValid(view);
|
||||||
sq_poptop(vm);
|
sq_poptop(vm);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,9 +41,9 @@ SQInteger SquirrelStd::max(HSQUIRRELVM vm)
|
||||||
SQInteger SquirrelStd::require(HSQUIRRELVM vm)
|
SQInteger SquirrelStd::require(HSQUIRRELVM vm)
|
||||||
{
|
{
|
||||||
SQInteger top = sq_gettop(vm);
|
SQInteger top = sq_gettop(vm);
|
||||||
const SQChar *filename;
|
std::string_view filename;
|
||||||
|
|
||||||
sq_getstring(vm, 2, &filename);
|
sq_getstring(vm, 2, filename);
|
||||||
|
|
||||||
/* Get the script-name of the current file, so we can work relative from it */
|
/* Get the script-name of the current file, so we can work relative from it */
|
||||||
SQStackInfos si;
|
SQStackInfos si;
|
||||||
|
|
Loading…
Reference in New Issue