Changeset 5c4a3d98fdaf1b7afca36612d959cac32a144359

Show
Ignore:
Timestamp:
05/08/08 18:20:20 (4 months ago)
Author:
Rémi Denis-Courmont <rem@videolan.org>
git-committer:
Rémi Denis-Courmont <rem@videolan.org> 1210263620 +0300
git-parent:

[04fd6ff851d1b6e932a1dc08f3858ec64ced0d11]

git-author:
Rémi Denis-Courmont <rem@videolan.org> 1210259769 +0300
Message:

Merge the plugins macros into one header

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • include/vlc_configuration.h

    r62ba576 r5c4a3d9  
    237237#define config_ExistIntf(a,b) __config_ExistIntf(VLC_OBJECT(a),b) 
    238238 
    239 enum vlc_config_properties 
    240 { 
    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 list 
    282      * (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, float 
    302  *   and string. 
    303  *   The other types declared here just map to one of these 3 basic types but 
    304  *   have the advantage of also providing very good hints to a configuration 
    305  *   interface so as to make it more user friendly. 
    306  * The configuration structure also includes category hints. These hints can 
    307  *   provide a configuration interface with some very useful data and again 
    308  *   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 #endif 
    389  
    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  
    488239/**************************************************************************** 
    489240 * config_chain_t: 
  • include/vlc_modules_macros.h

    r04fd6ff r5c4a3d9  
    165165VLC_EXPORT( module_t *, vlc_submodule_create, ( module_t * ) ); 
    166166VLC_EXPORT( int, vlc_module_set, (module_t *module, int propid, ...) ); 
     167VLC_EXPORT( module_config_t *, vlc_config_create, (module_t *, int type) ); 
     168VLC_EXPORT( int, vlc_config_set, (module_config_t *, int, ...) ); 
    167169 
    168170enum vlc_module_properties 
     
    183185    VLC_MODULE_NAME, 
    184186}; 
    185 #endif 
     187 
     188enum 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