-#define MODULE_SHORTCUT_MAX 50
-
-/* The module handle type. */
-#if defined(HAVE_DL_DYLD)
-# if defined (HAVE_MACH_O_DYLD_H)
-# include <mach-o/dyld.h>
-# endif
-typedef NSModule module_handle_t;
-#elif defined(HAVE_IMAGE_H)
-typedef int module_handle_t;
-#elif defined(WIN32) || defined(UNDER_CE)
-typedef void * module_handle_t;
-#elif defined(HAVE_DL_DLOPEN)
-typedef void * module_handle_t;
-#elif defined(HAVE_DL_SHL_LOAD)
-typedef shl_t module_handle_t;
-#endif
-
-/**
- * Module descriptor
- */
-struct module_t
-{
- VLC_COMMON_MEMBERS
-
- /*
- * 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 */
-
- /** Shortcuts to the module */
- const char *pp_shortcuts[ MODULE_SHORTCUT_MAX ];
-
- const char *psz_capability; /**< Capability */
- int i_score; /**< Score for the capability */
- uint32_t i_cpu; /**< Required CPU capabilities */
+/*****************************************************************************
+ * Exported functions.
+ *****************************************************************************/
+#define module_Need(a,b,c,d) __module_Need(VLC_OBJECT(a),b,c,d)
+VLC_EXPORT( module_t *, __module_Need, ( vlc_object_t *, const char *, const char *, bool ) );
+#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( bool, __module_Exists, ( vlc_object_t *, const char * ) );