diff options
author | rubenwardy <rw@rubenwardy.com> | 2018-04-30 17:42:51 +0100 |
---|---|---|
committer | SmallJoker <SmallJoker@users.noreply.github.com> | 2018-04-30 18:42:51 +0200 |
commit | 0b5b32b026291d5bd8e47acebca10259a379fc1c (patch) | |
tree | 6e308bb5ccf3fb3050a40cd784456387c67b106e /src/script/lua_api/l_metadata.cpp | |
parent | 54606e103d5b2d2bace6d57c45e48804c5dec487 (diff) | |
download | hax-minetest-server-0b5b32b026291d5bd8e47acebca10259a379fc1c.tar.gz hax-minetest-server-0b5b32b026291d5bd8e47acebca10259a379fc1c.zip |
MetaDataRef: Add contains() and get() (#7214)
Diffstat (limited to '')
-rw-r--r-- | src/script/lua_api/l_metadata.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/script/lua_api/l_metadata.cpp b/src/script/lua_api/l_metadata.cpp index 69f495c4a..3901ac2cf 100644 --- a/src/script/lua_api/l_metadata.cpp +++ b/src/script/lua_api/l_metadata.cpp @@ -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) { |