| 22 | | #ifndef _VLC_PLUGIN_H |
|---|
| 23 | | # define _VLC_PLUGIN_H 1 |
|---|
| 24 | | |
|---|
| 25 | | #include <vlc_modules.h> |
|---|
| 26 | | #include <vlc_configuration.h> |
|---|
| 27 | | |
|---|
| 28 | | #endif |
|---|
| | 24 | #ifndef LIBVLC_MODULES_MACROS_H |
|---|
| | 25 | # define LIBVLC_MODULES_MACROS_H 1 |
|---|
| | 26 | |
|---|
| | 27 | /***************************************************************************** |
|---|
| | 28 | * If we are not within a module, assume we're in the vlc core. |
|---|
| | 29 | *****************************************************************************/ |
|---|
| | 30 | #if !defined( __PLUGIN__ ) && !defined( __BUILTIN__ ) |
|---|
| | 31 | # define MODULE_NAME main |
|---|
| | 32 | #endif |
|---|
| | 33 | |
|---|
| | 34 | /** |
|---|
| | 35 | * Current plugin ABI version |
|---|
| | 36 | */ |
|---|
| | 37 | # define MODULE_SYMBOL 0_9_0k |
|---|
| | 38 | # define MODULE_SUFFIX "__0_9_0k" |
|---|
| | 39 | |
|---|
| | 40 | /***************************************************************************** |
|---|
| | 41 | * Add a few defines. You do not want to read this section. Really. |
|---|
| | 42 | *****************************************************************************/ |
|---|
| | 43 | |
|---|
| | 44 | /* Explanation: |
|---|
| | 45 | * |
|---|
| | 46 | * if user has #defined MODULE_NAME foo, then we will need: |
|---|
| | 47 | * #define MODULE_STRING "foo" |
|---|
| | 48 | * |
|---|
| | 49 | * and, if HAVE_DYNAMIC_PLUGINS is NOT set, we will also need: |
|---|
| | 50 | * #define MODULE_FUNC( zog ) module_foo_zog |
|---|
| | 51 | * |
|---|
| | 52 | * this can't easily be done with the C preprocessor, thus a few ugly hacks. |
|---|
| | 53 | */ |
|---|
| | 54 | |
|---|
| | 55 | /* I can't believe I need to do this to change « foo » to « "foo" » */ |
|---|
| | 56 | #define STRINGIFY( z ) UGLY_KLUDGE( z ) |
|---|
| | 57 | #define UGLY_KLUDGE( z ) #z |
|---|
| | 58 | /* And I need to do _this_ to change « foo bar » to « module_foo_bar » ! */ |
|---|
| | 59 | #define CONCATENATE( y, z ) CRUDE_HACK( y, z ) |
|---|
| | 60 | #define CRUDE_HACK( y, z ) y##__##z |
|---|
| | 61 | |
|---|
| | 62 | /* If the module is built-in, then we need to define foo_InitModule instead |
|---|
| | 63 | * of InitModule. Same for Activate- and DeactivateModule. */ |
|---|
| | 64 | #ifdef __PLUGIN__ |
|---|
| | 65 | # define E_( function ) CONCATENATE( function, MODULE_SYMBOL ) |
|---|
| | 66 | # define __VLC_SYMBOL( symbol ) CONCATENATE( symbol, MODULE_SYMBOL ) |
|---|
| | 67 | #else |
|---|
| | 68 | # define E_( function ) CONCATENATE( function, MODULE_NAME ) |
|---|
| | 69 | # define __VLC_SYMBOL( symbol ) CONCATENATE( symbol, MODULE_NAME ) |
|---|
| | 70 | #endif |
|---|
| | 71 | |
|---|
| | 72 | #if defined( __PLUGIN__ ) && ( defined( WIN32 ) || defined( UNDER_CE ) ) |
|---|
| | 73 | # define DLL_SYMBOL __declspec(dllexport) |
|---|
| | 74 | # define CDECL_SYMBOL __cdecl |
|---|
| | 75 | #elif defined (HAVE_ATTRIBUTE_VISIBILITY) |
|---|
| | 76 | # define DLL_SYMBOL __attribute__((visibility("default"))) |
|---|
| | 77 | # define CDECL_SYMBOL |
|---|
| | 78 | #else |
|---|
| | 79 | # define DLL_SYMBOL |
|---|
| | 80 | # define CDECL_SYMBOL |
|---|
| | 81 | #endif |
|---|
| | 82 | |
|---|
| | 83 | #if defined( __cplusplus ) |
|---|
| | 84 | # define EXTERN_SYMBOL extern "C" |
|---|
| | 85 | #else |
|---|
| | 86 | # define EXTERN_SYMBOL |
|---|
| | 87 | #endif |
|---|
| | 88 | |
|---|
| | 89 | #define MODULE_STRING STRINGIFY( MODULE_NAME ) |
|---|
| | 90 | |
|---|
| | 91 | /* |
|---|
| | 92 | * InitModule: this function is called once and only once, when the module |
|---|
| | 93 | * is looked at for the first time. We get the useful data from it, for |
|---|
| | 94 | * instance the module name, its shortcuts, its capabilities... we also create |
|---|
| | 95 | * a copy of its config because the module can be unloaded at any time. |
|---|
| | 96 | */ |
|---|
| | 97 | #if defined (__PLUGIN__) || defined (__BUILTIN__) |
|---|
| | 98 | EXTERN_SYMBOL DLL_SYMBOL int CDECL_SYMBOL |
|---|
| | 99 | E_(vlc_entry) ( module_t *p_module ); |
|---|
| | 100 | #endif |
|---|
| | 101 | |
|---|
| | 102 | #define vlc_module_begin( ) \ |
|---|
| | 103 | EXTERN_SYMBOL DLL_SYMBOL int CDECL_SYMBOL \ |
|---|
| | 104 | __VLC_SYMBOL(vlc_entry) ( module_t *p_module ) \ |
|---|
| | 105 | { \ |
|---|
| | 106 | module_config_t *p_config = NULL; \ |
|---|
| | 107 | if (vlc_module_set (p_module, VLC_MODULE_NAME, \ |
|---|
| | 108 | (const char *)(MODULE_STRING))) \ |
|---|
| | 109 | goto error; \ |
|---|
| | 110 | { \ |
|---|
| | 111 | module_t *p_submodule = p_module /* the ; gets added */ |
|---|
| | 112 | |
|---|
| | 113 | #define vlc_module_end( ) \ |
|---|
| | 114 | } \ |
|---|
| | 115 | (void)p_config; \ |
|---|
| | 116 | return VLC_SUCCESS; \ |
|---|
| | 117 | \ |
|---|
| | 118 | error: \ |
|---|
| | 119 | return VLC_EGENERIC; \ |
|---|
| | 120 | } \ |
|---|
| | 121 | struct _u_n_u_s_e_d_ /* the ; gets added */ |
|---|
| | 122 | |
|---|
| | 123 | |
|---|
| | 124 | #define add_submodule( ) \ |
|---|
| | 125 | p_submodule = vlc_submodule_create( p_module ) |
|---|
| | 126 | |
|---|
| | 127 | #define add_requirement( cap ) \ |
|---|
| | 128 | if (vlc_module_set (p_module, VLC_MODULE_CPU_REQUIREMENT, \ |
|---|
| | 129 | (int)(CPU_CAPABILITY_##cap))) \ |
|---|
| | 130 | goto error |
|---|
| | 131 | |
|---|
| | 132 | #define add_shortcut( shortcut ) \ |
|---|
| | 133 | if (vlc_module_set (p_submodule, VLC_MODULE_SHORTCUT, (int)(shortcut))) \ |
|---|
| | 134 | goto error |
|---|
| | 135 | |
|---|
| | 136 | #define set_shortname( shortname ) \ |
|---|
| | 137 | if (vlc_module_set (p_submodule, VLC_MODULE_SHORTNAME, \ |
|---|
| | 138 | (const char *)(shortname))) \ |
|---|
| | 139 | goto error |
|---|
| | 140 | |
|---|
| | 141 | #define set_description( desc ) \ |
|---|
| | 142 | if (vlc_module_set (p_submodule, VLC_MODULE_DESCRIPTION, \ |
|---|
| | 143 | (const char *)(desc))) \ |
|---|
| | 144 | goto error |
|---|
| | 145 | |
|---|
| | 146 | #define set_help( help ) \ |
|---|
| | 147 | if (vlc_module_set (p_submodule, VLC_MODULE_HELP, (const char *)(help))) \ |
|---|
| | 148 | goto error |
|---|
| | 149 | |
|---|
| | 150 | #define set_capability( cap, score ) \ |
|---|
| | 151 | if (vlc_module_set (p_submodule, VLC_MODULE_CAPABILITY, (int)(cap)) \ |
|---|
| | 152 | || vlc_module_set (p_submodule, VLC_MODULE_SCORE, (int)(score))) \ |
|---|
| | 153 | goto error |
|---|
| | 154 | |
|---|
| | 155 | #define set_callbacks( activate, deactivate ) \ |
|---|
| | 156 | if (vlc_module_set (p_submodule, VLC_MODULE_CB_OPEN, activate) \ |
|---|
| | 157 | || vlc_module_set (p_submodule, VLC_MODULE_CB_CLOSE, deactivate)) \ |
|---|
| | 158 | goto error |
|---|
| | 159 | |
|---|
| | 160 | #define linked_with_a_crap_library_which_uses_atexit( ) \ |
|---|
| | 161 | if (vlc_module_set (p_submodule, VLC_MODULE_NO_UNLOAD)) \ |
|---|
| | 162 | goto error |
|---|
| | 163 | |
|---|
| | 164 | VLC_EXPORT( module_t *, vlc_module_create, ( vlc_object_t * ) ); |
|---|
| | 165 | VLC_EXPORT( module_t *, vlc_submodule_create, ( module_t * ) ); |
|---|
| | 166 | VLC_EXPORT( int, vlc_module_set, (module_t *module, int propid, ...) ); |
|---|
| | 167 | VLC_EXPORT( module_config_t *, vlc_config_create, (module_t *, int type) ); |
|---|
| | 168 | VLC_EXPORT( int, vlc_config_set, (module_config_t *, int, ...) ); |
|---|
| | 169 | |
|---|
| | 170 | enum vlc_module_properties |
|---|
| | 171 | { |
|---|
| | 172 | /* DO NOT EVER REMOVE, INSERT OR REPLACE ANY ITEM! It would break the ABI! |
|---|
| | 173 | * Append new items at the end ONLY. */ |
|---|
| | 174 | VLC_MODULE_CPU_REQUIREMENT, |
|---|
| | 175 | VLC_MODULE_SHORTCUT, |
|---|
| | 176 | VLC_MODULE_SHORTNAME, |
|---|
| | 177 | VLC_MODULE_DESCRIPTION, |
|---|
| | 178 | VLC_MODULE_HELP, |
|---|
| | 179 | VLC_MODULE_CAPABILITY, |
|---|
| | 180 | VLC_MODULE_SCORE, |
|---|
| | 181 | VLC_MODULE_PROGRAM, |
|---|
| | 182 | VLC_MODULE_CB_OPEN, |
|---|
| | 183 | VLC_MODULE_CB_CLOSE, |
|---|
| | 184 | VLC_MODULE_NO_UNLOAD, |
|---|
| | 185 | VLC_MODULE_NAME, |
|---|
| | 186 | }; |
|---|
| | 187 | |
|---|
| | 188 | enum vlc_config_properties |
|---|
| | 189 | { |
|---|
| | 190 | /* DO NOT EVER REMOVE, INSERT OR REPLACE ANY ITEM! It would break the ABI! |
|---|
| | 191 | * Append new items at the end ONLY. */ |
|---|
| | 192 | |
|---|
| | 193 | VLC_CONFIG_NAME, |
|---|
| | 194 | /* command line name (args=const char *, vlc_callback_t) */ |
|---|
| | 195 | |
|---|
| | 196 | VLC_CONFIG_DESC, |
|---|
| | 197 | /* description (args=const char *, const char *) */ |
|---|
| | 198 | |
|---|
| | 199 | VLC_CONFIG_VALUE, |
|---|
| | 200 | /* actual value (args=int/double/const char *) */ |
|---|
| | 201 | |
|---|
| | 202 | VLC_CONFIG_RANGE, |
|---|
| | 203 | /* minimum value (args=int/double/const char * twice) */ |
|---|
| | 204 | |
|---|
| | 205 | VLC_CONFIG_ADVANCED, |
|---|
| | 206 | /* enable advanced flag (args=none) */ |
|---|
| | 207 | |
|---|
| | 208 | VLC_CONFIG_VOLATILE, |
|---|
| | 209 | /* don't write variable to storage (args=none) */ |
|---|
| | 210 | |
|---|
| | 211 | VLC_CONFIG_PERSISTENT, |
|---|
| | 212 | /* always write variable to storage (args=none) */ |
|---|
| | 213 | |
|---|
| | 214 | VLC_CONFIG_RESTART, |
|---|
| | 215 | /* restart required to apply value change (args=none) */ |
|---|
| | 216 | |
|---|
| | 217 | VLC_CONFIG_PRIVATE, |
|---|
| | 218 | /* hide from user (args=none) */ |
|---|
| | 219 | |
|---|
| | 220 | VLC_CONFIG_REMOVED, |
|---|
| | 221 | /* tag as no longer supported (args=none) */ |
|---|
| | 222 | |
|---|
| | 223 | VLC_CONFIG_CAPABILITY, |
|---|
| | 224 | /* capability for a module or list thereof (args=const char*) */ |
|---|
| | 225 | |
|---|
| | 226 | VLC_CONFIG_SHORTCUT, |
|---|
| | 227 | /* one-character (short) command line option name (args=char) */ |
|---|
| | 228 | |
|---|
| | 229 | VLC_CONFIG_LIST, |
|---|
| | 230 | /* possible values list |
|---|
| | 231 | * (args=size_t, const <type> *, const char *const *) */ |
|---|
| | 232 | |
|---|
| | 233 | VLC_CONFIG_ADD_ACTION, |
|---|
| | 234 | /* add value change callback (args=vlc_callback_t, const char *) */ |
|---|
| | 235 | |
|---|
| | 236 | VLC_CONFIG_OLDNAME, |
|---|
| | 237 | /* former option name (args=const char *) */ |
|---|
| | 238 | |
|---|
| | 239 | VLC_CONFIG_SAFE, |
|---|
| | 240 | /* tag as modifiable by untrusted input item "sources" (args=none) */ |
|---|
| | 241 | }; |
|---|
| | 242 | |
|---|
| | 243 | /***************************************************************************** |
|---|
| | 244 | * Macros used to build the configuration structure. |
|---|
| | 245 | * |
|---|
| | 246 | * Note that internally we support only 3 types of config data: int, float |
|---|
| | 247 | * and string. |
|---|
| | 248 | * The other types declared here just map to one of these 3 basic types but |
|---|
| | 249 | * have the advantage of also providing very good hints to a configuration |
|---|
| | 250 | * interface so as to make it more user friendly. |
|---|
| | 251 | * The configuration structure also includes category hints. These hints can |
|---|
| | 252 | * provide a configuration interface with some very useful data and again |
|---|
| | 253 | * allow for a more user friendly interface. |
|---|
| | 254 | *****************************************************************************/ |
|---|
| | 255 | |
|---|
| | 256 | #define add_type_inner( type ) \ |
|---|
| | 257 | p_config = vlc_config_create (p_module, type) |
|---|
| | 258 | |
|---|
| | 259 | #define add_typedesc_inner( type, text, longtext ) \ |
|---|
| | 260 | add_type_inner( type ); \ |
|---|
| | 261 | vlc_config_set (p_config, VLC_CONFIG_DESC, \ |
|---|
| | 262 | (const char *)(text), (const char *)(longtext)) |
|---|
| | 263 | |
|---|
| | 264 | #define add_typeadv_inner( type, text, longtext, advc ) \ |
|---|
| | 265 | add_typedesc_inner( type, text, longtext ); \ |
|---|
| | 266 | if (advc) vlc_config_set (p_config, VLC_CONFIG_ADVANCED) |
|---|
| | 267 | |
|---|
| | 268 | #define add_typename_inner( type, name, text, longtext, advc, cb ) \ |
|---|
| | 269 | add_typeadv_inner( type, text, longtext, advc ); \ |
|---|
| | 270 | vlc_config_set (p_config, VLC_CONFIG_NAME, \ |
|---|
| | 271 | (const char *)(name), (vlc_callback_t)(cb)) |
|---|
| | 272 | |
|---|
| | 273 | #define add_string_inner( type, name, text, longtext, advc, cb, v ) \ |
|---|
| | 274 | add_typename_inner( type, name, text, longtext, advc, cb ); \ |
|---|
| | 275 | vlc_config_set (p_config, VLC_CONFIG_VALUE, (const char *)(v)) |
|---|
| | 276 | |
|---|
| | 277 | #define add_int_inner( type, name, text, longtext, advc, cb, v ) \ |
|---|
| | 278 | add_typename_inner( type, name, text, longtext, advc, cb ); \ |
|---|
| | 279 | vlc_config_set (p_config, VLC_CONFIG_VALUE, (int)(v)) |
|---|
| | 280 | |
|---|
| | 281 | |
|---|
| | 282 | #define set_category( i_id ) \ |
|---|
| | 283 | add_type_inner( CONFIG_CATEGORY ); \ |
|---|
| | 284 | vlc_config_set (p_config, VLC_CONFIG_VALUE, (int)(i_id)) |
|---|
| | 285 | |
|---|
| | 286 | #define set_subcategory( i_id ) \ |
|---|
| | 287 | add_type_inner( CONFIG_SUBCATEGORY ); \ |
|---|
| | 288 | vlc_config_set (p_config, VLC_CONFIG_VALUE, (int)(i_id)) |
|---|
| | 289 | |
|---|
| | 290 | #define set_section( text, longtext ) \ |
|---|
| | 291 | add_typedesc_inner( CONFIG_SECTION, text, longtext ) |
|---|
| | 292 | |
|---|
| | 293 | #define add_category_hint( text, longtext, advc ) \ |
|---|
| | 294 | add_typeadv_inner( CONFIG_HINT_CATEGORY, text, longtext, advc ) |
|---|
| | 295 | |
|---|
| | 296 | #define add_subcategory_hint( text, longtext ) \ |
|---|
| | 297 | add_typedesc_inner( CONFIG_HINT_SUBCATEGORY, text, longtext ) |
|---|
| | 298 | |
|---|
| | 299 | #define end_subcategory_hint \ |
|---|
| | 300 | add_type_inner( CONFIG_HINT_SUBCATEGORY_END ) |
|---|
| | 301 | |
|---|
| | 302 | #define add_usage_hint( text ) \ |
|---|
| | 303 | add_typedesc_inner( CONFIG_HINT_USAGE, text, NULL ) |
|---|
| | 304 | |
|---|
| | 305 | #define add_string( name, value, p_callback, text, longtext, advc ) \ |
|---|
| | 306 | add_string_inner( CONFIG_ITEM_STRING, name, text, longtext, advc, p_callback, value ) |
|---|
| | 307 | |
|---|
| | 308 | #define add_password( name, value, p_callback, text, longtext, advc ) \ |
|---|
| | 309 | add_string_inner( CONFIG_ITEM_PASSWORD, name, text, longtext, advc, p_callback, value ) |
|---|
| | 310 | |
|---|
| | 311 | #define add_file( name, value, p_callback, text, longtext, advc ) \ |
|---|
| | 312 | add_string_inner( CONFIG_ITEM_FILE, name, text, longtext, advc, p_callback, value ) |
|---|
| | 313 | |
|---|
| | 314 | #define add_directory( name, value, p_callback, text, longtext, advc ) \ |
|---|
| | 315 | add_string_inner( CONFIG_ITEM_DIRECTORY, name, text, longtext, advc, p_callback, value ) |
|---|
| | 316 | |
|---|
| | 317 | #define add_module( name, psz_caps, value, p_callback, text, longtext, advc ) \ |
|---|
| | 318 | add_string_inner( CONFIG_ITEM_MODULE, name, text, longtext, advc, p_callback, value ); \ |
|---|
| | 319 | vlc_config_set (p_config, VLC_CONFIG_CAPABILITY, (const char *)(psz_caps)) |
|---|
| | 320 | |
|---|
| | 321 | #define add_module_list( name, psz_caps, value, p_callback, text, longtext, advc ) \ |
|---|
| | 322 | add_string_inner( CONFIG_ITEM_MODULE_LIST, name, text, longtext, advc, p_callback, value ); \ |
|---|
| | 323 | vlc_config_set (p_config, VLC_CONFIG_CAPABILITY, (const char *)(psz_caps)) |
|---|
| | 324 | |
|---|
| | 325 | #ifndef __PLUGIN__ |
|---|
| | 326 | #define add_module_cat( name, i_subcategory, value, p_callback, text, longtext, advc ) \ |
|---|
| | 327 | add_string_inner( CONFIG_ITEM_MODULE_CAT, name, text, longtext, advc, p_callback, value ); \ |
|---|
| | 328 | p_config->min.i = i_subcategory /* gruik */ |
|---|
| | 329 | |
|---|
| | 330 | #define add_module_list_cat( name, i_subcategory, value, p_callback, text, longtext, advc ) \ |
|---|
| | 331 | add_string_inner( CONFIG_ITEM_MODULE_LIST_CAT, name, text, longtext, advc, p_callback, value ); \ |
|---|
| | 332 | p_config->min.i = i_subcategory /* gruik */ |
|---|
| | 333 | #endif |
|---|
| | 334 | |
|---|
| | 335 | #define add_integer( name, value, p_callback, text, longtext, advc ) \ |
|---|
| | 336 | add_int_inner( CONFIG_ITEM_INTEGER, name, text, longtext, advc, p_callback, value ) |
|---|
| | 337 | |
|---|
| | 338 | #define add_key( name, value, p_callback, text, longtext, advc ) \ |
|---|
| | 339 | add_int_inner( CONFIG_ITEM_KEY, name, text, longtext, advc, p_callback, value ) |
|---|
| | 340 | |
|---|
| | 341 | #define add_integer_with_range( name, value, i_min, i_max, p_callback, text, longtext, advc ) \ |
|---|
| | 342 | add_integer( name, value, p_callback, text, longtext, advc ); \ |
|---|
| | 343 | change_integer_range( i_min, i_max ) |
|---|
| | 344 | |
|---|
| | 345 | #define add_float( name, v, p_callback, text, longtext, advc ) \ |
|---|
| | 346 | add_typename_inner( CONFIG_ITEM_FLOAT, name, text, longtext, advc, p_callback ); \ |
|---|
| | 347 | vlc_config_set (p_config, VLC_CONFIG_VALUE, (double)(v)) |
|---|
| | 348 | |
|---|
| | 349 | #define add_float_with_range( name, value, f_min, f_max, p_callback, text, longtext, advc ) \ |
|---|
| | 350 | add_float( name, value, p_callback, text, longtext, advc ); \ |
|---|
| | 351 | change_float_range( f_min, f_max ) |
|---|
| | 352 | |
|---|
| | 353 | #define add_bool( name, v, p_callback, text, longtext, advc ) \ |
|---|
| | 354 | add_typename_inner( CONFIG_ITEM_BOOL, name, text, longtext, advc, p_callback ); \ |
|---|
| | 355 | if (v) vlc_config_set (p_config, VLC_CONFIG_VALUE, (int)true) |
|---|
| | 356 | |
|---|
| | 357 | /* For removed option */ |
|---|
| | 358 | #define add_obsolete_inner( name, type ) \ |
|---|
| | 359 | add_type_inner( type ); \ |
|---|
| | 360 | vlc_config_set (p_config, VLC_CONFIG_NAME, \ |
|---|
| | 361 | (const char *)(name), (vlc_callback_t)NULL); \ |
|---|
| | 362 | vlc_config_set (p_config, VLC_CONFIG_REMOVED) |
|---|
| | 363 | |
|---|
| | 364 | #define add_obsolete_bool( name ) \ |
|---|
| | 365 | add_obsolete_inner( name, CONFIG_ITEM_BOOL ) |
|---|
| | 366 | |
|---|
| | 367 | #define add_obsolete_integer( name ) \ |
|---|
| | 368 | add_obsolete_inner( name, CONFIG_ITEM_INTEGER ) |
|---|
| | 369 | |
|---|
| | 370 | #define add_obsolete_float( name ) \ |
|---|
| | 371 | add_obsolete_inner( name, CONFIG_ITEM_FLOAT ) |
|---|
| | 372 | |
|---|
| | 373 | #define add_obsolete_string( name ) \ |
|---|
| | 374 | add_obsolete_inner( name, CONFIG_ITEM_STRING ) |
|---|
| | 375 | |
|---|
| | 376 | /* Modifier macros for the config options (used for fine tuning) */ |
|---|
| | 377 | |
|---|
| | 378 | #define add_deprecated_alias( name ) \ |
|---|
| | 379 | vlc_config_set (p_config, VLC_CONFIG_OLDNAME, (const char *)(name)) |
|---|
| | 380 | |
|---|
| | 381 | #define change_short( ch ) \ |
|---|
| | 382 | vlc_config_set (p_config, VLC_CONFIG_SHORTCUT, (int)(ch)) |
|---|
| | 383 | |
|---|
| | 384 | #define change_string_list( list, list_text, list_update_func ) \ |
|---|
| | 385 | vlc_config_set (p_config, VLC_CONFIG_LIST, \ |
|---|
| | 386 | (size_t)(sizeof (list) / sizeof (char *)), \ |
|---|
| | 387 | (const char *const *)(list), \ |
|---|
| | 388 | (const char *const *)(list_text), \ |
|---|
| | 389 | list_update_func) |
|---|
| | 390 | |
|---|
| | 391 | #define change_integer_list( list, list_text, list_update_func ) \ |
|---|
| | 392 | vlc_config_set (p_config, VLC_CONFIG_LIST, \ |
|---|
| | 393 | (size_t)(sizeof (list) / sizeof (int)), \ |
|---|
| | 394 | (const int *)(list), \ |
|---|
| | 395 | (const char *const *)(list_text), \ |
|---|
| | 396 | list_update_func) |
|---|
| | 397 | |
|---|
| | 398 | #define change_float_list( list, list_text, list_update_func ) \ |
|---|
| | 399 | vlc_config_set (p_config, VLC_CONFIG_LIST, \ |
|---|
| | 400 | (size_t)(sizeof (list) / sizeof (float)), \ |
|---|
| | 401 | (const float *)(list), \ |
|---|
| | 402 | (const char *const *)(list_text), \ |
|---|
| | 403 | list_update_func) |
|---|
| | 404 | |
|---|
| | 405 | #define change_integer_range( minv, maxv ) \ |
|---|
| | 406 | vlc_config_set (p_config, VLC_CONFIG_RANGE, (int)(minv), (int)(maxv)) |
|---|
| | 407 | |
|---|
| | 408 | #define change_float_range( minv, maxv ) \ |
|---|
| | 409 | vlc_config_set (p_config, VLC_CONFIG_RANGE, \ |
|---|
| | 410 | (double)(minv), (double)(maxv)) |
|---|
| | 411 | |
|---|
| | 412 | #define change_action_add( pf_action, text ) \ |
|---|
| | 413 | vlc_config_set (p_config, VLC_CONFIG_ADD_ACTION, \ |
|---|
| | 414 | (vlc_callback_t)(pf_action), (const char *)(text)) |
|---|
| | 415 | |
|---|
| | 416 | #define change_internal() \ |
|---|
| | 417 | vlc_config_set (p_config, VLC_CONFIG_PRIVATE) |
|---|
| | 418 | |
|---|
| | 419 | #define change_need_restart() \ |
|---|
| | 420 | vlc_config_set (p_config, VLC_CONFIG_RESTART) |
|---|
| | 421 | |
|---|
| | 422 | #define change_autosave() \ |
|---|
| | 423 | vlc_config_set (p_config, VLC_CONFIG_PERSISTENT) |
|---|
| | 424 | |
|---|
| | 425 | #define change_unsaveable() \ |
|---|
| | 426 | vlc_config_set (p_config, VLC_CONFIG_VOLATILE) |
|---|
| | 427 | |
|---|
| | 428 | #define change_unsafe() (void)0 /* no-op */ |
|---|
| | 429 | |
|---|
| | 430 | #define change_safe() \ |
|---|
| | 431 | vlc_config_set (p_config, VLC_CONFIG_SAFE) |
|---|
| | 432 | |
|---|
| | 433 | #endif |
|---|