Further hide module_t layout from plugins
[vlc.git] / include / vlc_modules.h
index c6ea64e..c8c1acd 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
+#if !defined( __LIBVLC__ )
+  #error You are not libvlc or one of its plugins. You cannot include this file
+#endif
+
 #define MODULE_SHORTCUT_MAX 50
 
 /* The module handle type. */
@@ -91,10 +95,10 @@ struct module_t
     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 */
 
-    /*
-     * Symbol table we send to the module so that it can access vlc symbols
-     */
+#ifndef HAVE_SHARED_LIBVLC
+    /* Legacy symbols table */
     module_symbols_t *p_symbols;
+#endif
 };
 
 /*****************************************************************************
@@ -104,3 +108,28 @@ struct module_t
 VLC_EXPORT( module_t *, __module_Need, ( vlc_object_t *, const char *, const char *, vlc_bool_t ) );
 #define module_Unneed(a,b) __module_Unneed(VLC_OBJECT(a),b)
 VLC_EXPORT( void, __module_Unneed, ( vlc_object_t *, module_t * ) );
+#define module_Exists(a,b) __module_Exists(VLC_OBJECT(a),b)
+VLC_EXPORT( vlc_bool_t,  __module_Exists, ( vlc_object_t *, const char * ) );
+
+VLC_EXPORT( module_t *, vlc_module_create, ( vlc_object_t * ) );
+VLC_EXPORT( module_t *, vlc_submodule_create, ( module_t * ) );
+VLC_EXPORT( int, vlc_module_set, (module_t *module, int propid, void *value) );
+
+enum
+{
+    /* DO NOT EVER REMOVE, INSERT OR REPLACE ANY ITEM! It would break the ABI!
+     * Append new items at the end ONLY. */
+    VLC_MODULE_CPU_REQUIREMENT,
+    VLC_MODULE_SHORTCUT,
+    VLC_MODULE_SHORTNAME,
+    VLC_MODULE_DESCRIPTION,
+    VLC_MODULE_HELP,
+    VLC_MODULE_CAPABILITY,
+    VLC_MODULE_SCORE,
+    VLC_MODULE_PROGRAM,
+    VLC_MODULE_CB_OPEN,
+    VLC_MODULE_CB_CLOSE,
+    VLC_MODULE_UNLOADABLE,
+    VLC_MODULE_NAME
+};
+