00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #define MODULE_HIDE_DELAY 50
00030 #define MODULE_SHORTCUT_MAX 50
00031
00032
00033 #if defined(HAVE_DL_DYLD)
00034 # if defined (HAVE_MACH_O_DYLD_H)
00035 # include <mach-o/dyld.h>
00036 # endif
00037 typedef NSModule module_handle_t;
00038 #elif defined(HAVE_IMAGE_H)
00039 typedef int module_handle_t;
00040 #elif defined(WIN32) || defined(UNDER_CE)
00041 typedef void * module_handle_t;
00042 #elif defined(HAVE_DL_DLOPEN)
00043 typedef void * module_handle_t;
00044 #elif defined(HAVE_DL_SHL_LOAD)
00045 typedef shl_t module_handle_t;
00046 #endif
00047
00048
00049
00050
00051
00052
00053 struct module_bank_t
00054 {
00055 VLC_COMMON_MEMBERS
00056
00057 int i_usage;
00058 #ifndef HAVE_SHARED_LIBVLC
00059 module_symbols_t symbols;
00060 #endif
00061
00062 vlc_bool_t b_main;
00063 vlc_bool_t b_builtins;
00064 vlc_bool_t b_plugins;
00065
00066
00067 vlc_bool_t b_cache;
00068 vlc_bool_t b_cache_dirty;
00069 vlc_bool_t b_cache_delete;
00070
00071 int i_cache;
00072 module_cache_t **pp_cache;
00073
00074 int i_loaded_cache;
00075 module_cache_t **pp_loaded_cache;
00076 };
00077
00078
00079
00080
00081 struct module_t
00082 {
00083 VLC_COMMON_MEMBERS
00084
00085
00086
00087
00088 char *psz_shortname;
00089 char *psz_longname;
00090
00091
00092
00093
00094 char *psz_program;
00095
00096 char *pp_shortcuts[ MODULE_SHORTCUT_MAX ];
00097
00098 char *psz_capability;
00099 int i_score;
00100 uint32_t i_cpu;
00101
00102 vlc_bool_t b_unloadable;
00103 vlc_bool_t b_reentrant;
00104 vlc_bool_t b_submodule;
00105
00106
00107 int ( * pf_activate ) ( vlc_object_t * );
00108 void ( * pf_deactivate ) ( vlc_object_t * );
00109
00110
00111
00112
00113 module_config_t *p_config;
00114 unsigned int i_config_items;
00115 unsigned int i_bool_items;
00116
00117
00118
00119
00120
00121 module_handle_t handle;
00122 char * psz_filename;
00123
00124 vlc_bool_t b_builtin;
00125 vlc_bool_t b_loaded;
00126
00127
00128
00129
00130 module_symbols_t *p_symbols;
00131 };
00132
00133
00134
00135
00136 struct module_cache_t
00137 {
00138
00139 char *psz_file;
00140 int64_t i_time;
00141 int64_t i_size;
00142 vlc_bool_t b_junk;
00143
00144
00145 module_t *p_module;
00146 };
00147
00148
00149
00150
00151 #define module_InitBank(a) __module_InitBank(VLC_OBJECT(a))
00152 void __module_InitBank ( vlc_object_t * );
00153 #define module_LoadMain(a) __module_LoadMain(VLC_OBJECT(a))
00154 void __module_LoadMain ( vlc_object_t * );
00155 #define module_LoadBuiltins(a) __module_LoadBuiltins(VLC_OBJECT(a))
00156 void __module_LoadBuiltins ( vlc_object_t * );
00157 #define module_LoadPlugins(a) __module_LoadPlugins(VLC_OBJECT(a))
00158 void __module_LoadPlugins ( vlc_object_t * );
00159 #define module_EndBank(a) __module_EndBank(VLC_OBJECT(a))
00160 void __module_EndBank ( vlc_object_t * );
00161 #define module_ResetBank(a) __module_ResetBank(VLC_OBJECT(a))
00162 void __module_ResetBank ( vlc_object_t * );
00163
00164 #define module_Need(a,b,c,d) __module_Need(VLC_OBJECT(a),b,c,d)
00165 VLC_EXPORT( module_t *, __module_Need, ( vlc_object_t *, const char *, const char *, vlc_bool_t ) );
00166 #define module_Unneed(a,b) __module_Unneed(VLC_OBJECT(a),b)
00167 VLC_EXPORT( void, __module_Unneed, ( vlc_object_t *, module_t * ) );
00168