]> git.sesse.net Git - vlc/blobdiff - modules/misc/lua/libs/misc.c
LUA: store p_intf->p_sys separately
[vlc] / modules / misc / lua / libs / misc.c
index 3b1fbae65aa95697750d40189319385f05f37635..54bac3d2cec4902e06eebbf108ae1647a2b59896 100644 (file)
 #include "../vlc.h"
 #include "../libs.h"
 
-#undef vlclua_set_this
 /*****************************************************************************
  * Internal lua<->vlc utils
  *****************************************************************************/
-void vlclua_set_this( lua_State *L, vlc_object_t *p_this )
+static void vlclua_set_object( lua_State *L, void *id, void *value )
 {
-    lua_pushlightuserdata( L, vlclua_set_this );
-    lua_pushlightuserdata( L, p_this );
+    lua_pushlightuserdata( L, id );
+    lua_pushlightuserdata( L, value );
     lua_rawset( L, LUA_REGISTRYINDEX );
 }
 
-vlc_object_t * vlclua_get_this( lua_State *L )
+static void *vlclua_get_object( lua_State *L, void *id )
 {
-    lua_pushlightuserdata( L, vlclua_set_this );
+    lua_pushlightuserdata( L, id );
     lua_rawget( L, LUA_REGISTRYINDEX );
-    vlc_object_t *p_this = (vlc_object_t*)lua_topointer( L, -1 );
+    const void *p = lua_topointer( L, -1 );
     lua_pop( L, 1 );
-    return p_this;
+    return (void *)p;
+}
+
+#undef vlclua_set_this
+void vlclua_set_this( lua_State *L, vlc_object_t *p_this )
+{
+    vlclua_set_object( L, vlclua_set_this, p_this );
+}
+
+vlc_object_t * vlclua_get_this( lua_State *L )
+{
+    return vlclua_get_object( L, vlclua_set_this );
+}
+
+void vlclua_set_intf( lua_State *L, intf_sys_t *p_intf )
+{
+    vlclua_set_object( L, vlclua_set_intf, p_intf );
+}
+
+static intf_sys_t * vlclua_get_intf( lua_State *L )
+{
+    return vlclua_get_object( L, vlclua_set_intf );
 }
 
 /*****************************************************************************