* modules.h : Module management functions.
*****************************************************************************
* Copyright (C) 2001 the VideoLAN team
- * $Id: modules.h 17958 2006-11-22 17:13:24Z courmisch $
+ * $Id$
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
+#if defined(__PLUGIN__) || defined(__BUILTIN__) || !defined(__LIBVLC__)
+# error This header file can only be included from LibVLC.
+#endif
+
+#ifndef __LIBVLC_MODULES_H
+# define __LIBVLC_MODULES_H 1
+
+
/* Number of tries before we unload an unused module */
#define MODULE_HIDE_DELAY 50
VLC_COMMON_MEMBERS
int i_usage;
-#ifndef HAVE_SHARED_LIBVLC
- module_symbols_t symbols;
-#endif
- vlc_bool_t b_main;
- vlc_bool_t b_builtins;
- vlc_bool_t b_plugins;
+ bool b_builtins;
+ bool b_plugins;
/* Plugins cache */
- vlc_bool_t b_cache;
- vlc_bool_t b_cache_dirty;
- vlc_bool_t b_cache_delete;
+ bool b_cache;
+ bool b_cache_dirty;
+ bool b_cache_delete;
int i_cache;
module_cache_t **pp_cache;
char *psz_file;
int64_t i_time;
int64_t i_size;
- vlc_bool_t b_junk;
+ bool b_junk;
/* Optional extra data */
module_t *p_module;
- vlc_bool_t b_used;
+ bool b_used;
};
-#if 0
#define MODULE_SHORTCUT_MAX 50
/* The module handle type. */
/*
* Variables set by the module to identify itself
*/
- const char *psz_shortname; /**< Module name */
- const char *psz_longname; /**< Module descriptive name */
- const char *psz_help; /**< Long help string for "special" modules */
-
- /*
- * Variables set by the module to tell us what it can do
- */
- const char *psz_program; /**< Program name which will activate the module */
+ char *psz_shortname; /**< Module name */
+ char *psz_longname; /**< Module descriptive name */
+ char *psz_help; /**< Long help string for "special" modules */
/** Shortcuts to the module */
- const char *pp_shortcuts[ MODULE_SHORTCUT_MAX ];
+ char *pp_shortcuts[ MODULE_SHORTCUT_MAX ];
- const char *psz_capability; /**< Capability */
+ char *psz_capability; /**< Capability */
int i_score; /**< Score for the capability */
uint32_t i_cpu; /**< Required CPU capabilities */
- vlc_bool_t b_unloadable; /**< Can we be dlclosed? */
- vlc_bool_t b_reentrant; /**< Are we reentrant? */
- vlc_bool_t b_submodule; /**< Is this a submodule? */
+ bool b_unloadable; /**< Can we be dlclosed? */
+ bool b_reentrant; /**< Are we reentrant? */
+ bool b_submodule; /**< Is this a submodule? */
/* Callbacks */
int ( * pf_activate ) ( vlc_object_t * );
module_handle_t handle; /* Unique handle */
char * psz_filename; /* Module filename */
- vlc_bool_t b_builtin; /* Set to true if the module is built in */
- vlc_bool_t b_loaded; /* Set to true if the dll is loaded */
-
-#ifndef HAVE_SHARED_LIBVLC
- /* Legacy symbols table */
- module_symbols_t *p_symbols;
-#endif
+ bool b_builtin; /* Set to true if the module is built in */
+ bool b_loaded; /* Set to true if the dll is loaded */
};
-#endif
#define module_InitBank(a) __module_InitBank(VLC_OBJECT(a))
void __module_EndBank ( vlc_object_t * );
#define module_ResetBank(a) __module_ResetBank(VLC_OBJECT(a))
void __module_ResetBank ( vlc_object_t * );
+
+/* Low-level OS-dependent handler */
+int module_Call (module_t *);
+int module_Load (vlc_object_t *, const char *, module_handle_t *);
+void module_Unload (module_handle_t);
+
+/* Plugins cache */
+void CacheMerge (vlc_object_t *, module_t *, module_t *);
+void CacheLoad (vlc_object_t * );
+void CacheSave (vlc_object_t * );
+module_cache_t * CacheFind (const char *, int64_t, int64_t);
+
+#endif /* !__LIBVLC_MODULES_H */