aboutsummaryrefslogtreecommitdiff
path: root/src/script/lua_api/l_metadata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/script/lua_api/l_metadata.cpp')
-rw-r--r--src/script/lua_api/l_metadata.cpp36
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)
{