]> git.sesse.net Git - vlc/blobdiff - modules/misc/lua/vlc.h
Add --data-path option. Access the src share directory now works from build tree.
[vlc] / modules / misc / lua / vlc.h
index 0c52cc85cf04cc3a1b1296cb4460230cf05698f1..f455f4e0dc84dda7cd3e7c94592c05d9f29a24c2 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
- * luameta.c: Get meta/artwork using lua scripts
+ * vlc.h: VLC specific lua library functions.
  *****************************************************************************
- * Copyright (C) 2007 the VideoLAN team
+ * Copyright (C) 2007-2008 the VideoLAN team
  * $Id$
  *
  * Authors: Antoine Cellerier <dionoea at videolan tod org>
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#ifndef VLCLUA_H
+#ifndef VLC_LUA_H
 #define VLC_LUA_H
 /*****************************************************************************
  * Preamble
  *****************************************************************************/
-#ifndef  _GNU_SOURCE
-#   define  _GNU_SOURCE
-#endif
 
-#include <vlc/vlc.h>
+#include <vlc_common.h>
 #include <vlc_input.h>
 #include <vlc_playlist.h>
 #include <vlc_meta.h>
 /*****************************************************************************
  * Module entry points
  *****************************************************************************/
-int E_(FindArt)( vlc_object_t * );
-int E_(FindMeta)( vlc_object_t * );
+int FindArt( vlc_object_t * );
 
-int E_(Import_LuaPlaylist)( vlc_object_t * );
-void E_(Close_LuaPlaylist)( vlc_object_t * );
+int Import_LuaPlaylist( vlc_object_t * );
+void Close_LuaPlaylist( vlc_object_t * );
 
-int E_(Open_LuaIntf)( vlc_object_t * );
-void E_(Close_LuaIntf)( vlc_object_t * );
+int Open_LuaIntf( vlc_object_t * );
+void Close_LuaIntf( vlc_object_t * );
 
 
 /*****************************************************************************
@@ -66,13 +62,9 @@ void E_(Close_LuaIntf)( vlc_object_t * );
  *****************************************************************************/
 static inline void lua_Dbg( vlc_object_t * p_this, const char * ppz_fmt, ... )
 {
-    if( p_this->p_libvlc->i_verbose < 3 )
-        return;
-
     va_list ap;
     va_start( ap, ppz_fmt );
-    __msg_GenericVa( ( vlc_object_t *)p_this, MSG_QUEUE_NORMAL,
-                      VLC_MSG_DBG, MODULE_STRING,
+    __msg_GenericVa( ( vlc_object_t *)p_this, VLC_MSG_DBG, MODULE_STRING,
                       ppz_fmt, ap );
     va_end( ap );
 }
@@ -86,94 +78,26 @@ static inline int luaL_checkboolean( lua_State *L, int narg )
     return lua_toboolean( L, narg );
 }
 
-static inline const void *luaL_checklightuserdata( lua_State *L, int narg )
+static inline int luaL_optboolean( lua_State *L, int narg, int def )
 {
-    luaL_checktype( L, narg, LUA_TLIGHTUSERDATA ); /* can raise an error */
-    return lua_topointer( L, narg );
+    return luaL_opt( L, luaL_checkboolean, narg, def );
 }
 
-static inline const void *luaL_checkuserdata( lua_State *L, int narg, size_t size )
+static inline const char *luaL_nilorcheckstring( lua_State *L, int narg )
 {
-    luaL_checktype( L, narg, LUA_TUSERDATA ); /* can raise an error */
-    if( size && size != lua_objlen( L, narg ) ) /* this isn't worth much ... but it might still prevent a few errors */
-        luaL_error( L, "user data size doesn't match" );
-    return lua_topointer( L, narg );
+    if( lua_isnil( L, narg ) )
+        return NULL;
+    return luaL_checkstring( L, narg );
 }
 
-/*****************************************************************************
- * Lua vlc_object_t wrapper
- *****************************************************************************/
-int __vlclua_push_vlc_object( lua_State *L, vlc_object_t *p_obj,
-                              lua_CFunction pf_gc );
-#define vlclua_push_vlc_object( a, b, c ) \
-        __vlclua_push_vlc_object( a, VLC_OBJECT( b ), c )
-vlc_object_t *vlclua_checkobject( lua_State *L, int narg, int i_type );
-int vlclua_gc_release( lua_State *L );
-int vlclua_object_find( lua_State *L );
-int vlclua_object_find_name( lua_State *L );
-
-int vlclua_add_callback( lua_State * );
-int vlclua_del_callback( lua_State * );
-
-int vlclua_url_parse( lua_State * );
-int vlclua_net_listen_tcp( lua_State * );
-int vlclua_net_listen_close( lua_State * );
-int vlclua_net_accept( lua_State * );
-int vlclua_net_close( lua_State * );
-int vlclua_net_send( lua_State * );
-int vlclua_net_recv( lua_State * );
-int vlclua_net_select( lua_State * );
-
-int vlclua_fd_set_new( lua_State * );
-int vlclua_fd_clr( lua_State * );
-int vlclua_fd_isset( lua_State * );
-int vlclua_fd_set( lua_State * );
-int vlclua_fd_zero( lua_State * );
-int vlclua_fd_read( lua_State * );
-int vlclua_fd_write( lua_State * );
-
-int vlclua_vlm_new( lua_State * );
-int vlclua_vlm_delete( lua_State * );
-int vlclua_vlm_execute_command( lua_State * );
+vlc_object_t * vlclua_get_this( lua_State * );
 
 /*****************************************************************************
  * Lua function bridge
  *****************************************************************************/
-vlc_object_t * vlclua_get_this( lua_State * );
 #define vlclua_error( L ) luaL_error( L, "VLC lua error in file %s line %d (function %s)", __FILE__, __LINE__, __func__ )
 int vlclua_push_ret( lua_State *, int i_error );
 
-int vlclua_version( lua_State * );
-int vlclua_quit( lua_State * );
-
-int vlclua_pushvalue( lua_State *L, int i_type, vlc_value_t val ); /* internal use only */
-int vlclua_var_get( lua_State * );
-int vlclua_var_get_list( lua_State * );
-int vlclua_var_set( lua_State * );
-int vlclua_module_command( lua_State * );
-int vlclua_libvlc_command( lua_State * );
-
-int vlclua_config_get( lua_State * );
-int vlclua_config_set( lua_State * );
-
-int vlclua_volume_set( lua_State * );
-int vlclua_volume_get( lua_State * );
-int vlclua_volume_up( lua_State * );
-int vlclua_volume_down( lua_State * );
-
-int vlclua_stream_new( lua_State * );
-int vlclua_stream_read( lua_State * );
-int vlclua_stream_readline( lua_State * );
-int vlclua_stream_delete( lua_State * );
-
-int vlclua_decode_uri( lua_State * );
-int vlclua_resolve_xml_special_chars( lua_State * );
-
-int vlclua_msg_dbg( lua_State * );
-int vlclua_msg_warn( lua_State * );
-int vlclua_msg_err( lua_State * );
-int vlclua_msg_info( lua_State * );
-
 /*****************************************************************************
  * Will execute func on all scripts in luadirname, and stop if func returns
  * success.
@@ -182,6 +106,7 @@ int vlclua_scripts_batch_execute( vlc_object_t *p_this, const char * luadirname,
         int (*func)(vlc_object_t *, const char *, lua_State *, void *),
         lua_State * L, void * user_data );
 int vlclua_dir_list( vlc_object_t *p_this, const char *luadirname, char **ppsz_dir_list );
+void vlclua_dir_list_free( char **ppsz_dir_list );
 
 /*****************************************************************************
  * Playlist and meta data internal utilities.
@@ -194,9 +119,22 @@ void __vlclua_read_custom_meta_data( vlc_object_t *, lua_State *,
                                      input_item_t *);
 #define vlclua_read_custom_meta_data(a,b,c) __vlclua_read_custom_meta_data(VLC_OBJECT(a),b,c)
 int __vlclua_playlist_add_internal( vlc_object_t *, lua_State *, playlist_t *,
-                                    input_item_t *, vlc_bool_t );
+                                    input_item_t *, bool );
 #define vlclua_playlist_add_internal(a,b,c,d,e) __vlclua_playlist_add_internal(VLC_OBJECT(a),b,c,d,e)
 
+/**
+ * Per-interface private state
+ */
+struct intf_sys_t
+{
+    char *psz_filename;
+    lua_State *L;
+
+    vlc_thread_t thread;
+    vlc_mutex_t lock;
+    vlc_cond_t wait;
+    bool exiting;
+};
 
 #endif /* VLC_LUA_H */