Changeset 5c4a3d98fdaf1b7afca36612d959cac32a144359
- Timestamp:
- 05/08/08 18:20:20 (4 months ago)
- git-parent:
- Files:
-
- include/vlc_configuration.h (modified) (1 diff)
- include/vlc_modules_macros.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
include/vlc_configuration.h
r62ba576 r5c4a3d9 237 237 #define config_ExistIntf(a,b) __config_ExistIntf(VLC_OBJECT(a),b) 238 238 239 enum vlc_config_properties240 {241 /* DO NOT EVER REMOVE, INSERT OR REPLACE ANY ITEM! It would break the ABI!242 * Append new items at the end ONLY. */243 244 VLC_CONFIG_NAME,245 /* command line name (args=const char *, vlc_callback_t) */246 247 VLC_CONFIG_DESC,248 /* description (args=const char *, const char *) */249 250 VLC_CONFIG_VALUE,251 /* actual value (args=int/double/const char *) */252 253 VLC_CONFIG_RANGE,254 /* minimum value (args=int/double/const char * twice) */255 256 VLC_CONFIG_ADVANCED,257 /* enable advanced flag (args=none) */258 259 VLC_CONFIG_VOLATILE,260 /* don't write variable to storage (args=none) */261 262 VLC_CONFIG_PERSISTENT,263 /* always write variable to storage (args=none) */264 265 VLC_CONFIG_RESTART,266 /* restart required to apply value change (args=none) */267 268 VLC_CONFIG_PRIVATE,269 /* hide from user (args=none) */270 271 VLC_CONFIG_REMOVED,272 /* tag as no longer supported (args=none) */273 274 VLC_CONFIG_CAPABILITY,275 /* capability for a module or list thereof (args=const char*) */276 277 VLC_CONFIG_SHORTCUT,278 /* one-character (short) command line option name (args=char) */279 280 VLC_CONFIG_LIST,281 /* possible values list282 * (args=size_t, const <type> *, const char *const *) */283 284 VLC_CONFIG_ADD_ACTION,285 /* add value change callback (args=vlc_callback_t, const char *) */286 287 VLC_CONFIG_OLDNAME,288 /* former option name (args=const char *) */289 290 VLC_CONFIG_SAFE,291 /* tag as modifiable by untrusted input item "sources" (args=none) */292 };293 294 295 VLC_EXPORT( module_config_t *, vlc_config_create, (module_t *, int type) );296 VLC_EXPORT( int, vlc_config_set, (module_config_t *, int, ...) );297 298 /*****************************************************************************299 * Macros used to build the configuration structure.300 *301 * Note that internally we support only 3 types of config data: int, float302 * and string.303 * The other types declared here just map to one of these 3 basic types but304 * have the advantage of also providing very good hints to a configuration305 * interface so as to make it more user friendly.306 * The configuration structure also includes category hints. These hints can307 * provide a configuration interface with some very useful data and again308 * allow for a more user friendly interface.309 *****************************************************************************/310 311 #define add_type_inner( type ) \312 p_config = vlc_config_create (p_module, type)313 314 #define add_typedesc_inner( type, text, longtext ) \315 add_type_inner( type ); \316 vlc_config_set (p_config, VLC_CONFIG_DESC, \317 (const char *)(text), (const char *)(longtext))318 319 #define add_typeadv_inner( type, text, longtext, advc ) \320 add_typedesc_inner( type, text, longtext ); \321 if (advc) vlc_config_set (p_config, VLC_CONFIG_ADVANCED)322 323 #define add_typename_inner( type, name, text, longtext, advc, cb ) \324 add_typeadv_inner( type, text, longtext, advc ); \325 vlc_config_set (p_config, VLC_CONFIG_NAME, \326 (const char *)(name), (vlc_callback_t)(cb))327 328 #define add_string_inner( type, name, text, longtext, advc, cb, v ) \329 add_typename_inner( type, name, text, longtext, advc, cb ); \330 vlc_config_set (p_config, VLC_CONFIG_VALUE, (const char *)(v))331 332 #define add_int_inner( type, name, text, longtext, advc, cb, v ) \333 add_typename_inner( type, name, text, longtext, advc, cb ); \334 vlc_config_set (p_config, VLC_CONFIG_VALUE, (int)(v))335 336 337 #define set_category( i_id ) \338 add_type_inner( CONFIG_CATEGORY ); \339 vlc_config_set (p_config, VLC_CONFIG_VALUE, (int)(i_id))340 341 #define set_subcategory( i_id ) \342 add_type_inner( CONFIG_SUBCATEGORY ); \343 vlc_config_set (p_config, VLC_CONFIG_VALUE, (int)(i_id))344 345 #define set_section( text, longtext ) \346 add_typedesc_inner( CONFIG_SECTION, text, longtext )347 348 #define add_category_hint( text, longtext, advc ) \349 add_typeadv_inner( CONFIG_HINT_CATEGORY, text, longtext, advc )350 351 #define add_subcategory_hint( text, longtext ) \352 add_typedesc_inner( CONFIG_HINT_SUBCATEGORY, text, longtext )353 354 #define end_subcategory_hint \355 add_type_inner( CONFIG_HINT_SUBCATEGORY_END )356 357 #define add_usage_hint( text ) \358 add_typedesc_inner( CONFIG_HINT_USAGE, text, NULL )359 360 #define add_string( name, value, p_callback, text, longtext, advc ) \361 add_string_inner( CONFIG_ITEM_STRING, name, text, longtext, advc, p_callback, value )362 363 #define add_password( name, value, p_callback, text, longtext, advc ) \364 add_string_inner( CONFIG_ITEM_PASSWORD, name, text, longtext, advc, p_callback, value )365 366 #define add_file( name, value, p_callback, text, longtext, advc ) \367 add_string_inner( CONFIG_ITEM_FILE, name, text, longtext, advc, p_callback, value )368 369 #define add_directory( name, value, p_callback, text, longtext, advc ) \370 add_string_inner( CONFIG_ITEM_DIRECTORY, name, text, longtext, advc, p_callback, value )371 372 #define add_module( name, psz_caps, value, p_callback, text, longtext, advc ) \373 add_string_inner( CONFIG_ITEM_MODULE, name, text, longtext, advc, p_callback, value ); \374 vlc_config_set (p_config, VLC_CONFIG_CAPABILITY, (const char *)(psz_caps))375 376 #define add_module_list( name, psz_caps, value, p_callback, text, longtext, advc ) \377 add_string_inner( CONFIG_ITEM_MODULE_LIST, name, text, longtext, advc, p_callback, value ); \378 vlc_config_set (p_config, VLC_CONFIG_CAPABILITY, (const char *)(psz_caps))379 380 #ifndef __PLUGIN__381 #define add_module_cat( name, i_subcategory, value, p_callback, text, longtext, advc ) \382 add_string_inner( CONFIG_ITEM_MODULE_CAT, name, text, longtext, advc, p_callback, value ); \383 p_config->min.i = i_subcategory /* gruik */384 385 #define add_module_list_cat( name, i_subcategory, value, p_callback, text, longtext, advc ) \386 add_string_inner( CONFIG_ITEM_MODULE_LIST_CAT, name, text, longtext, advc, p_callback, value ); \387 p_config->min.i = i_subcategory /* gruik */388 #endif389 390 #define add_integer( name, value, p_callback, text, longtext, advc ) \391 add_int_inner( CONFIG_ITEM_INTEGER, name, text, longtext, advc, p_callback, value )392 393 #define add_key( name, value, p_callback, text, longtext, advc ) \394 add_int_inner( CONFIG_ITEM_KEY, name, text, longtext, advc, p_callback, value )395 396 #define add_integer_with_range( name, value, i_min, i_max, p_callback, text, longtext, advc ) \397 add_integer( name, value, p_callback, text, longtext, advc ); \398 change_integer_range( i_min, i_max )399 400 #define add_float( name, v, p_callback, text, longtext, advc ) \401 add_typename_inner( CONFIG_ITEM_FLOAT, name, text, longtext, advc, p_callback ); \402 vlc_config_set (p_config, VLC_CONFIG_VALUE, (double)(v))403 404 #define add_float_with_range( name, value, f_min, f_max, p_callback, text, longtext, advc ) \405 add_float( name, value, p_callback, text, longtext, advc ); \406 change_float_range( f_min, f_max )407 408 #define add_bool( name, v, p_callback, text, longtext, advc ) \409 add_typename_inner( CONFIG_ITEM_BOOL, name, text, longtext, advc, p_callback ); \410 if (v) vlc_config_set (p_config, VLC_CONFIG_VALUE, (int)true)411 412 /* For removed option */413 #define add_obsolete_inner( name, type ) \414 add_type_inner( type ); \415 vlc_config_set (p_config, VLC_CONFIG_NAME, \416 (const char *)(name), (vlc_callback_t)NULL); \417 vlc_config_set (p_config, VLC_CONFIG_REMOVED)418 419 #define add_obsolete_bool( name ) \420 add_obsolete_inner( name, CONFIG_ITEM_BOOL )421 422 #define add_obsolete_integer( name ) \423 add_obsolete_inner( name, CONFIG_ITEM_INTEGER )424 425 #define add_obsolete_float( name ) \426 add_obsolete_inner( name, CONFIG_ITEM_FLOAT )427 428 #define add_obsolete_string( name ) \429 add_obsolete_inner( name, CONFIG_ITEM_STRING )430 431 /* Modifier macros for the config options (used for fine tuning) */432 433 #define add_deprecated_alias( name ) \434 vlc_config_set (p_config, VLC_CONFIG_OLDNAME, (const char *)(name))435 436 #define change_short( ch ) \437 vlc_config_set (p_config, VLC_CONFIG_SHORTCUT, (int)(ch))438 439 #define change_string_list( list, list_text, list_update_func ) \440 vlc_config_set (p_config, VLC_CONFIG_LIST, \441 (size_t)(sizeof (list) / sizeof (char *)), \442 (const char *const *)(list), \443 (const char *const *)(list_text), \444 list_update_func)445 446 #define change_integer_list( list, list_text, list_update_func ) \447 vlc_config_set (p_config, VLC_CONFIG_LIST, \448 (size_t)(sizeof (list) / sizeof (int)), \449 (const int *)(list), \450 (const char *const *)(list_text), \451 list_update_func)452 453 #define change_float_list( list, list_text, list_update_func ) \454 vlc_config_set (p_config, VLC_CONFIG_LIST, \455 (size_t)(sizeof (list) / sizeof (float)), \456 (const float *)(list), \457 (const char *const *)(list_text), \458 list_update_func)459 460 #define change_integer_range( minv, maxv ) \461 vlc_config_set (p_config, VLC_CONFIG_RANGE, (int)(minv), (int)(maxv))462 463 #define change_float_range( minv, maxv ) \464 vlc_config_set (p_config, VLC_CONFIG_RANGE, \465 (double)(minv), (double)(maxv))466 467 #define change_action_add( pf_action, text ) \468 vlc_config_set (p_config, VLC_CONFIG_ADD_ACTION, \469 (vlc_callback_t)(pf_action), (const char *)(text))470 471 #define change_internal() \472 vlc_config_set (p_config, VLC_CONFIG_PRIVATE)473 474 #define change_need_restart() \475 vlc_config_set (p_config, VLC_CONFIG_RESTART)476 477 #define change_autosave() \478 vlc_config_set (p_config, VLC_CONFIG_PERSISTENT)479 480 #define change_unsaveable() \481 vlc_config_set (p_config, VLC_CONFIG_VOLATILE)482 483 #define change_unsafe() (void)0 /* no-op */484 485 #define change_safe() \486 vlc_config_set (p_config, VLC_CONFIG_SAFE)487 488 239 /**************************************************************************** 489 240 * config_chain_t: include/vlc_modules_macros.h
r04fd6ff r5c4a3d9 165 165 VLC_EXPORT( module_t *, vlc_submodule_create, ( module_t * ) ); 166 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, ...) ); 167 169 168 170 enum vlc_module_properties … … 183 185 VLC_MODULE_NAME, 184 186 }; 185 #endif 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
