]> git.sesse.net Git - vlc/commitdiff
lua: expose var_Inherit()
authorPierre Ynard <linkfanel@yahoo.fr>
Thu, 15 Sep 2011 18:35:34 +0000 (20:35 +0200)
committerPierre Ynard <linkfanel@yahoo.fr>
Thu, 15 Sep 2011 18:35:34 +0000 (20:35 +0200)
Similar functionality wasn't quite available by combining
vlc.var.create() and vlc.var.get()

modules/lua/libs/variables.c
share/lua/README.txt

index 40f42384012d67601e19479a3a720c3033d5b539..f3becaeafd672fa01aad0d81461f775935a1c5be 100644 (file)
@@ -130,6 +130,27 @@ static int vlclua_tovalue( lua_State *L, int i_type, vlc_value_t *val )
     return 1;
 }
 
+static int vlclua_var_inherit( lua_State *L )
+{
+    vlc_value_t val;
+    vlc_object_t *p_obj;
+    if( lua_type( L, 1 ) == LUA_TNIL )
+        p_obj = vlclua_get_this( L );
+    else
+    {
+        vlc_object_t **pp_obj = luaL_checkudata( L, 1, "vlc_object" );
+        p_obj = *pp_obj;
+    }
+    const char *psz_var = luaL_checkstring( L, 2 );
+
+    int i_type = config_GetType( p_obj, psz_var );
+    if( var_Inherit( p_obj, psz_var, i_type, &val ) != VLC_SUCCESS )
+        return 0;
+
+    lua_pop( L, 2 );
+    return vlclua_pushvalue( L, i_type, val, true );
+}
+
 static int vlclua_var_get( lua_State *L )
 {
     vlc_value_t val;
@@ -611,6 +632,7 @@ static int vlclua_togglebool( lua_State *L )
  *
  *****************************************************************************/
 static const luaL_Reg vlclua_var_reg[] = {
+    { "inherit", vlclua_var_inherit },
     { "get", vlclua_var_get },
     { "get_list", vlclua_var_get_list },
     { "set", vlclua_var_set },
index 23e139479a0121f4c5795ca985ab989e10a5b5df..76a1469d29065c6680d7043344a6968a2b0ad5bf 100644 (file)
@@ -375,6 +375,8 @@ strings.from_charset( charset, str ): convert a string from a specified
 
 Variables
 ---------
+var.inherit( object, name ): Find the variable "name"'s value inherited by
+  the object. If object is unset, the current module's object will be used.
 var.get( object, name ): Get the object's variable "name"'s value.
 var.get_list( object, name ): Get the object's variable "name"'s value list.
   1st return value is the value list, 2nd return value is the text list.