mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
MetaDataRef: Add contains() and get() (#7214)
This commit is contained in:
parent
54606e103d
commit
0b5b32b026
8 changed files with 72 additions and 6 deletions
|
@ -123,6 +123,8 @@ void ItemStackMetaRef::Register(lua_State *L)
|
|||
|
||||
const char ItemStackMetaRef::className[] = "ItemStackMetaRef";
|
||||
const luaL_Reg ItemStackMetaRef::methods[] = {
|
||||
luamethod(MetaDataRef, contains),
|
||||
luamethod(MetaDataRef, get),
|
||||
luamethod(MetaDataRef, get_string),
|
||||
luamethod(MetaDataRef, set_string),
|
||||
luamethod(MetaDataRef, get_int),
|
||||
|
|
|
@ -51,6 +51,42 @@ MetaDataRef* MetaDataRef::checkobject(lua_State *L, int narg)
|
|||
|
||||
// Exported functions
|
||||
|
||||
// contains(self, name)
|
||||
int MetaDataRef::l_contains(lua_State *L)
|
||||
{
|
||||
MAP_LOCK_REQUIRED;
|
||||
|
||||
MetaDataRef *ref = checkobject(L, 1);
|
||||
std::string name = luaL_checkstring(L, 2);
|
||||
|
||||
Metadata *meta = ref->getmeta(false);
|
||||
if (meta == NULL)
|
||||
return 0;
|
||||
|
||||
lua_pushboolean(L, meta->contains(name));
|
||||
return 1;
|
||||
}
|
||||
|
||||
// get(self, name)
|
||||
int MetaDataRef::l_get(lua_State *L)
|
||||
{
|
||||
MAP_LOCK_REQUIRED;
|
||||
|
||||
MetaDataRef *ref = checkobject(L, 1);
|
||||
std::string name = luaL_checkstring(L, 2);
|
||||
|
||||
Metadata *meta = ref->getmeta(false);
|
||||
if (meta == NULL)
|
||||
return 0;
|
||||
|
||||
std::string str;
|
||||
if (meta->getStringToRef(name, str)) {
|
||||
lua_pushlstring(L, str.c_str(), str.size());
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// get_string(self, name)
|
||||
int MetaDataRef::l_get_string(lua_State *L)
|
||||
{
|
||||
|
|
|
@ -46,6 +46,12 @@ protected:
|
|||
|
||||
// Exported functions
|
||||
|
||||
// contains(self, name)
|
||||
static int l_contains(lua_State *L);
|
||||
|
||||
// get(self, name)
|
||||
static int l_get(lua_State *L);
|
||||
|
||||
// get_string(self, name)
|
||||
static int l_get_string(lua_State *L);
|
||||
|
||||
|
|
|
@ -242,6 +242,8 @@ void NodeMetaRef::Register(lua_State *L)
|
|||
|
||||
|
||||
const luaL_Reg NodeMetaRef::methodsServer[] = {
|
||||
luamethod(MetaDataRef, contains),
|
||||
luamethod(MetaDataRef, get),
|
||||
luamethod(MetaDataRef, get_string),
|
||||
luamethod(MetaDataRef, set_string),
|
||||
luamethod(MetaDataRef, get_int),
|
||||
|
@ -266,6 +268,8 @@ void NodeMetaRef::RegisterClient(lua_State *L)
|
|||
|
||||
|
||||
const luaL_Reg NodeMetaRef::methodsClient[] = {
|
||||
luamethod(MetaDataRef, contains),
|
||||
luamethod(MetaDataRef, get),
|
||||
luamethod(MetaDataRef, get_string),
|
||||
luamethod(MetaDataRef, get_int),
|
||||
luamethod(MetaDataRef, get_float),
|
||||
|
|
|
@ -107,6 +107,8 @@ void PlayerMetaRef::Register(lua_State *L)
|
|||
// clang-format off
|
||||
const char PlayerMetaRef::className[] = "PlayerMetaRef";
|
||||
const luaL_Reg PlayerMetaRef::methods[] = {
|
||||
luamethod(MetaDataRef, contains),
|
||||
luamethod(MetaDataRef, get),
|
||||
luamethod(MetaDataRef, get_string),
|
||||
luamethod(MetaDataRef, set_string),
|
||||
luamethod(MetaDataRef, get_int),
|
||||
|
|
|
@ -134,6 +134,8 @@ void StorageRef::clearMeta()
|
|||
|
||||
const char StorageRef::className[] = "StorageRef";
|
||||
const luaL_Reg StorageRef::methods[] = {
|
||||
luamethod(MetaDataRef, contains),
|
||||
luamethod(MetaDataRef, get),
|
||||
luamethod(MetaDataRef, get_string),
|
||||
luamethod(MetaDataRef, set_string),
|
||||
luamethod(MetaDataRef, get_int),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue