mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-06 17:41:04 +00:00
Introduce std::string_view
into wider use (#14368)
This commit is contained in:
parent
fa47af737f
commit
6ca214fefc
74 changed files with 501 additions and 456 deletions
|
@ -1664,7 +1664,7 @@ Pointabilities read_pointabilities(lua_State *L, int index)
|
|||
std::string name = luaL_checkstring(L, -2);
|
||||
|
||||
// handle groups
|
||||
if(std::string_view(name).substr(0,6)=="group:") {
|
||||
if (str_starts_with(name, "group:")) {
|
||||
pointabilities.node_groups[name.substr(6)] = read_pointability_type(L, -1);
|
||||
} else {
|
||||
pointabilities.nodes[name] = read_pointability_type(L, -1);
|
||||
|
@ -1685,7 +1685,7 @@ Pointabilities read_pointabilities(lua_State *L, int index)
|
|||
std::string name = luaL_checkstring(L, -2);
|
||||
|
||||
// handle groups
|
||||
if(std::string_view(name).substr(0,6)=="group:") {
|
||||
if (str_starts_with(name, "group:")) {
|
||||
pointabilities.object_groups[name.substr(6)] = read_pointability_type(L, -1);
|
||||
} else {
|
||||
pointabilities.objects[name] = read_pointability_type(L, -1);
|
||||
|
|
|
@ -25,6 +25,7 @@ extern "C" {
|
|||
#include <cmath>
|
||||
#include <irr_v2d.h>
|
||||
#include <irr_v3d.h>
|
||||
#include <string_view>
|
||||
#include "c_converter.h"
|
||||
#include "c_types.h"
|
||||
|
||||
|
@ -78,11 +79,16 @@ v3f LuaHelper::readParam(lua_State *L, int index)
|
|||
}
|
||||
|
||||
template <>
|
||||
std::string LuaHelper::readParam(lua_State *L, int index)
|
||||
std::string_view LuaHelper::readParam(lua_State *L, int index)
|
||||
{
|
||||
size_t length;
|
||||
std::string result;
|
||||
const char *str = luaL_checklstring(L, index, &length);
|
||||
result.assign(str, length);
|
||||
return result;
|
||||
return std::string_view(str, length);
|
||||
}
|
||||
|
||||
template <>
|
||||
std::string LuaHelper::readParam(lua_State *L, int index)
|
||||
{
|
||||
auto sv = readParam<std::string_view>(L, index);
|
||||
return std::string(sv); // a copy
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <string_view>
|
||||
|
||||
extern "C" {
|
||||
#include <lua.h>
|
||||
}
|
||||
|
@ -27,23 +29,22 @@ class LuaHelper
|
|||
{
|
||||
protected:
|
||||
/**
|
||||
* Read a value using a template type T from Lua State L and index
|
||||
*
|
||||
* Read a value using a template type T from Lua state L at index
|
||||
*
|
||||
* @tparam T type to read from Lua
|
||||
* @param L Lua state
|
||||
* @param index Lua Index to read
|
||||
* @param index Lua index to read
|
||||
* @return read value from Lua
|
||||
*/
|
||||
template <typename T>
|
||||
static T readParam(lua_State *L, int index);
|
||||
|
||||
/**
|
||||
* Read a value using a template type T from Lua State L and index
|
||||
* Read a value using a template type T from Lua state L at index
|
||||
*
|
||||
* @tparam T type to read from Lua
|
||||
* @param L Lua state
|
||||
* @param index Lua Index to read
|
||||
* @param index Lua index to read
|
||||
* @param default_value default value to apply if nil
|
||||
* @return read value from Lua or default value if nil
|
||||
*/
|
||||
|
@ -53,3 +54,18 @@ protected:
|
|||
return lua_isnoneornil(L, index) ? default_value : readParam<T>(L, index);
|
||||
}
|
||||
};
|
||||
|
||||
// (only declared for documentation purposes:)
|
||||
|
||||
/**
|
||||
* Read a string from Lua state L at index without copying it.
|
||||
*
|
||||
* Note that the returned string view is only valid as long as the value is on
|
||||
* the stack and has not been modified. Be careful.
|
||||
*
|
||||
* @param L Lua state
|
||||
* @param index Lua index to read
|
||||
* @return string view
|
||||
*/
|
||||
template <>
|
||||
std::string_view LuaHelper::readParam(lua_State *L, int index);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue