vlc_variables.h

Go to the documentation of this file.
00001 /*****************************************************************************
00002  * variables.h: variables handling
00003  *****************************************************************************
00004  * Copyright (C) 2002-2004 the VideoLAN team
00005  * $Id: 21c32f3ecce1f57d22710e551fbb8d39c5b77b68 $
00006  *
00007  * Authors: Samuel Hocevar <sam@zoy.org>
00008  *          Gildas Bazin <gbazin@netcourrier.com>
00009  *
00010  * This program is free software; you can redistribute it and/or modify
00011  * it under the terms of the GNU General Public License as published by
00012  * the Free Software Foundation; either version 2 of the License, or
00013  * (at your option) any later version.
00014  *
00015  * This program is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  * GNU General Public License for more details.
00019  *
00020  * You should have received a copy of the GNU General Public License
00021  * along with this program; if not, write to the Free Software
00022  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
00023  *****************************************************************************/
00024 
00025 #ifndef VLC_VARIABLES_H
00026 #define VLC_VARIABLES_H 1
00027 
00028 /**
00029  * \file
00030  * This file defines functions and structures for dynamic variables in vlc
00031  */
00032 
00033 /**
00034  * \defgroup variables Variables
00035  *
00036  * Functions for using the object variables in vlc.
00037  *
00038  * Vlc have a very powerful "object variable" infrastructure useful
00039  * for many things.
00040  *
00041  * @{
00042  */
00043 
00044 /*****************************************************************************
00045  * Variable types - probably very incomplete
00046  *****************************************************************************/
00047 #define VLC_VAR_TYPE      0x00ff
00048 #define VLC_VAR_CLASS     0x00f0
00049 #define VLC_VAR_FLAGS     0xff00
00050 
00051 /** \defgroup var_flags Additive flags
00052  * These flags are added to the type field of the variable. Most as a result of
00053  * a __var_Change() call, but some may be added at creation time
00054  * @{
00055  */
00056 #define VLC_VAR_HASCHOICE 0x0100
00057 #define VLC_VAR_HASMIN    0x0200
00058 #define VLC_VAR_HASMAX    0x0400
00059 #define VLC_VAR_HASSTEP   0x0800
00060 
00061 #define VLC_VAR_ISCOMMAND 0x2000
00062 
00063 /** Creation flag */
00064 /* If the variable is not found on the current module
00065    search all parents and finally module config until found */
00066 #define VLC_VAR_DOINHERIT 0x8000
00067 /**@}*/
00068 
00069 /**
00070  * \defgroup var_action Variable actions
00071  * These are the different actions that can be used with __var_Change().
00072  * The parameters given are the meaning of the two last parameters of
00073  * __var_Change() when this action is being used.
00074  * @{
00075  */
00076 
00077 /**
00078  * Set the minimum value of this variable
00079  * \param p_val The new minimum value
00080  * \param p_val2 Unused
00081  */
00082 #define VLC_VAR_SETMIN              0x0010
00083 /**
00084  * Set the maximum value of this variable
00085  * \param p_val The new maximum value
00086  * \param p_val2 Unused
00087  */
00088 #define VLC_VAR_SETMAX              0x0011
00089 #define VLC_VAR_SETSTEP             0x0012
00090 
00091 /**
00092  * Set the value of this variable without triggering any callbacks
00093  * \param p_val The new value
00094  * \param p_val2 Unused
00095  */
00096 #define VLC_VAR_SETVALUE            0x0013
00097 
00098 #define VLC_VAR_SETTEXT             0x0014
00099 #define VLC_VAR_GETTEXT             0x0015
00100 
00101 #define VLC_VAR_GETMIN              0x0016
00102 #define VLC_VAR_GETMAX              0x0017
00103 #define VLC_VAR_GETSTEP             0x0018
00104 
00105 #define VLC_VAR_ADDCHOICE           0x0020
00106 #define VLC_VAR_DELCHOICE           0x0021
00107 #define VLC_VAR_CLEARCHOICES        0x0022
00108 #define VLC_VAR_SETDEFAULT          0x0023
00109 #define VLC_VAR_GETCHOICES          0x0024
00110 #define VLC_VAR_GETLIST             0x0025
00111 #define VLC_VAR_CHOICESCOUNT        0x0026
00112 
00113 #define VLC_VAR_INHERITVALUE        0x0030
00114 
00115 #define VLC_VAR_SETISCOMMAND        0x0040
00116 /**@}*/
00117 
00118 /** \defgroup var_GetAndSet Variable actions
00119  * These are the different actions that can be used with __var_GetAndSet()
00120  * @{
00121  */
00122 /**
00123  * Toggle the value of this boolean
00124  * \param val Unused
00125  */
00126 #define VLC_VAR_TOGGLE_BOOL         0x0010
00127 /**
00128  * Increment or decrement an integer of a given value
00129  * \param val the value
00130  */
00131 #define VLC_VAR_INTEGER_INCDEC      0x0020
00132 /**@}*/
00133 
00134 /*****************************************************************************
00135  * Prototypes
00136  *****************************************************************************/
00137 VLC_EXPORT( int, __var_Create, ( vlc_object_t *, const char *, int ) );
00138 VLC_EXPORT( int, __var_Destroy, ( vlc_object_t *, const char * ) );
00139 
00140 VLC_EXPORT( int, __var_Change, ( vlc_object_t *, const char *, int, vlc_value_t *, vlc_value_t * ) );
00141 
00142 VLC_EXPORT( int, __var_Type, ( vlc_object_t *, const char * ) LIBVLC_USED );
00143 VLC_EXPORT( int, __var_Set, ( vlc_object_t *, const char *, vlc_value_t ) );
00144 VLC_EXPORT( int, __var_Get, ( vlc_object_t *, const char *, vlc_value_t * ) );
00145 VLC_EXPORT( int, var_SetChecked, ( vlc_object_t *, const char *, int, vlc_value_t ) );
00146 VLC_EXPORT( int, var_GetChecked, ( vlc_object_t *, const char *, int, vlc_value_t * ) );
00147 VLC_EXPORT( int, __var_GetAndSet, ( vlc_object_t *, const char *, int, vlc_value_t ) );
00148 
00149 #define var_Command(a,b,c,d,e) __var_Command( VLC_OBJECT( a ), b, c, d, e )
00150 VLC_EXPORT( int, __var_Command, ( vlc_object_t *, const char *, const char *, const char *, char ** ) );
00151 
00152 VLC_EXPORT( void, var_FreeList, ( vlc_value_t *, vlc_value_t * ) );
00153 
00154 /**
00155  * __var_Create() with automatic casting.
00156  */
00157 #define var_Create(a,b,c) __var_Create( VLC_OBJECT(a), b, c )
00158 /**
00159  * __var_Destroy() with automatic casting
00160  */
00161 #define var_Destroy(a,b) __var_Destroy( VLC_OBJECT(a), b )
00162 
00163 /**
00164  * __var_Change() with automatic casting
00165  */
00166 #define var_Change(a,b,c,d,e) __var_Change( VLC_OBJECT(a), b, c, d, e )
00167 
00168 /**
00169  * __var_Type() with automatic casting
00170  */
00171 #define var_Type(a,b) __var_Type( VLC_OBJECT(a), b )
00172 /**
00173  * __var_Set() with automatic casting
00174  */
00175 #define var_Set(a,b,c) __var_Set( VLC_OBJECT(a), b, c )
00176 /**
00177  * __var_Get() with automatic casting
00178  */
00179 #define var_Get(a,b,c) __var_Get( VLC_OBJECT(a), b, c )
00180 /**
00181  * __var_GetAndSet() with automatic casting
00182  */
00183 #define var_GetAndSet(a,b,c,d) __var_GetAndSet(VLC_OBJECT(a), b, c, d)
00184 
00185 /*****************************************************************************
00186  * Variable callbacks
00187  *****************************************************************************
00188  * int MyCallback( vlc_object_t *p_this,
00189  *                 char const *psz_variable,
00190  *                 vlc_value_t oldvalue,
00191  *                 vlc_value_t newvalue,
00192  *                 void *p_data);
00193  *****************************************************************************/
00194 VLC_EXPORT( int, __var_AddCallback, ( vlc_object_t *, const char *, vlc_callback_t, void * ) );
00195 VLC_EXPORT( int, __var_DelCallback, ( vlc_object_t *, const char *, vlc_callback_t, void * ) );
00196 VLC_EXPORT( int, __var_TriggerCallback, ( vlc_object_t *, const char * ) );
00197 
00198 /**
00199  * __var_AddCallback() with automatic casting
00200  */
00201 #define var_AddCallback(a,b,c,d) __var_AddCallback( VLC_OBJECT(a), b, c, d )
00202 /**
00203  * __var_DelCallback() with automatic casting
00204  */
00205 #define var_DelCallback(a,b,c,d) __var_DelCallback( VLC_OBJECT(a), b, c, d )
00206 /**
00207  * __var_TriggerCallback() with automatic casting
00208  */
00209 #define var_TriggerCallback(a,b) __var_TriggerCallback( VLC_OBJECT(a), b )
00210 
00211 /*****************************************************************************
00212  * helpers functions
00213  *****************************************************************************/
00214 
00215 /**
00216  * Set the value of an integer variable
00217  *
00218  * \param p_obj The object that holds the variable
00219  * \param psz_name The name of the variable
00220  * \param i The new integer value of this variable
00221  */
00222 static inline int __var_SetInteger( vlc_object_t *p_obj, const char *psz_name, int i )
00223 {
00224     vlc_value_t val;
00225     val.i_int = i;
00226     return var_SetChecked( p_obj, psz_name, VLC_VAR_INTEGER, val );
00227 }
00228 
00229 /**
00230  * Set the value of an boolean variable
00231  *
00232  * \param p_obj The object that holds the variable
00233  * \param psz_name The name of the variable
00234  * \param b The new boolean value of this variable
00235  */
00236 static inline int __var_SetBool( vlc_object_t *p_obj, const char *psz_name, bool b )
00237 {
00238     vlc_value_t val;
00239     val.b_bool = b;
00240     return var_SetChecked( p_obj, psz_name, VLC_VAR_BOOL, val );
00241 }
00242 
00243 /**
00244  * Set the value of a time variable
00245  *
00246  * \param p_obj The object that holds the variable
00247  * \param psz_name The name of the variable
00248  * \param i The new time value of this variable
00249  */
00250 static inline int __var_SetTime( vlc_object_t *p_obj, const char *psz_name, int64_t i )
00251 {
00252     vlc_value_t val;
00253     val.i_time = i;
00254     return var_SetChecked( p_obj, psz_name, VLC_VAR_TIME, val );
00255 }
00256 
00257 /**
00258  * Set the value of a float variable
00259  *
00260  * \param p_obj The object that holds the variable
00261  * \param psz_name The name of the variable
00262  * \param f The new float value of this variable
00263  */
00264 static inline int __var_SetFloat( vlc_object_t *p_obj, const char *psz_name, float f )
00265 {
00266     vlc_value_t val;
00267     val.f_float = f;
00268     return var_SetChecked( p_obj, psz_name, VLC_VAR_FLOAT, val );
00269 }
00270 
00271 /**
00272  * Set the value of a string variable
00273  *
00274  * \param p_obj The object that holds the variable
00275  * \param psz_name The name of the variable
00276  * \param psz_string The new string value of this variable
00277  */
00278 static inline int __var_SetString( vlc_object_t *p_obj, const char *psz_name, const char *psz_string )
00279 {
00280     vlc_value_t val;
00281     val.psz_string = (char *)psz_string;
00282     return var_SetChecked( p_obj, psz_name, VLC_VAR_STRING, val );
00283 }
00284 
00285 /**
00286  * Set the value of a pointer variable
00287  *
00288  * \param p_obj The object that holds the variable
00289  * \param psz_name The name of the variable
00290  * \param ptr The new pointer value of this variable
00291  */
00292 static inline
00293 int __var_SetAddress( vlc_object_t *p_obj, const char *psz_name, void *ptr )
00294 {
00295     vlc_value_t val;
00296     val.p_address = ptr;
00297     return var_SetChecked( p_obj, psz_name, VLC_VAR_ADDRESS, val );
00298 }
00299 
00300 /**
00301  * __var_SetInteger() with automatic casting
00302  */
00303 #define var_SetInteger(a,b,c)   __var_SetInteger( VLC_OBJECT(a),b,c)
00304 /**
00305  * __var_SetBool() with automatic casting
00306  */
00307 #define var_SetBool(a,b,c)      __var_SetBool( VLC_OBJECT(a),b,c)
00308 /**
00309  * __var_SetTime() with automatic casting
00310  */
00311 #define var_SetTime(a,b,c)      __var_SetTime( VLC_OBJECT(a),b,c)
00312 /**
00313  * __var_SetFloat() with automatic casting
00314  */
00315 #define var_SetFloat(a,b,c)     __var_SetFloat( VLC_OBJECT(a),b,c)
00316 /**
00317  * __var_SetString() with automatic casting
00318  */
00319 #define var_SetString(a,b,c)    __var_SetString( VLC_OBJECT(a),b,c)
00320 /**
00321  * __var_SetAddress() with automatic casting
00322  */
00323 #define var_SetAddress(o, n, p) __var_SetAddress(VLC_OBJECT(o), n, p)
00324 
00325 
00326 /**
00327  * Get an integer value
00328 *
00329  * \param p_obj The object that holds the variable
00330  * \param psz_name The name of the variable
00331  */
00332 LIBVLC_USED
00333 static inline int __var_GetInteger( vlc_object_t *p_obj, const char *psz_name )
00334 {
00335     vlc_value_t val;
00336     if( !var_GetChecked( p_obj, psz_name, VLC_VAR_INTEGER, &val ) )
00337         return val.i_int;
00338     else
00339         return 0;
00340 }
00341 
00342 /**
00343  * Get a boolean value
00344  *
00345  * \param p_obj The object that holds the variable
00346  * \param psz_name The name of the variable
00347  */
00348 LIBVLC_USED
00349 static inline bool __var_GetBool( vlc_object_t *p_obj, const char *psz_name )
00350 {
00351     vlc_value_t val; val.b_bool = false;
00352 
00353     if( !var_GetChecked( p_obj, psz_name, VLC_VAR_BOOL, &val ) )
00354         return val.b_bool;
00355     else
00356         return false;
00357 }
00358 
00359 /**
00360  * Get a time value
00361  *
00362  * \param p_obj The object that holds the variable
00363  * \param psz_name The name of the variable
00364  */
00365 LIBVLC_USED
00366 static inline int64_t __var_GetTime( vlc_object_t *p_obj, const char *psz_name )
00367 {
00368     vlc_value_t val; val.i_time = 0L;
00369     if( !var_GetChecked( p_obj, psz_name, VLC_VAR_TIME, &val ) )
00370         return val.i_time;
00371     else
00372         return 0;
00373 }
00374 
00375 /**
00376  * Get a float value
00377  *
00378  * \param p_obj The object that holds the variable
00379  * \param psz_name The name of the variable
00380  */
00381 LIBVLC_USED
00382 static inline float __var_GetFloat( vlc_object_t *p_obj, const char *psz_name )
00383 {
00384     vlc_value_t val; val.f_float = 0.0;
00385     if( !var_GetChecked( p_obj, psz_name, VLC_VAR_FLOAT, &val ) )
00386         return val.f_float;
00387     else
00388         return 0.0;
00389 }
00390 
00391 /**
00392  * Get a string value
00393  *
00394  * \param p_obj The object that holds the variable
00395  * \param psz_name The name of the variable
00396  */
00397 LIBVLC_USED
00398 static inline char *__var_GetString( vlc_object_t *p_obj, const char *psz_name )
00399 {
00400     vlc_value_t val; val.psz_string = NULL;
00401     if( var_GetChecked( p_obj, psz_name, VLC_VAR_STRING, &val ) )
00402         return NULL;
00403     else
00404         return val.psz_string;
00405 }
00406 
00407 LIBVLC_USED
00408 static inline char *__var_GetNonEmptyString( vlc_object_t *p_obj, const char *psz_name )
00409 {
00410     vlc_value_t val;
00411     if( var_GetChecked( p_obj, psz_name, VLC_VAR_STRING, &val ) )
00412         return NULL;
00413     if( val.psz_string && *val.psz_string )
00414         return val.psz_string;
00415     free( val.psz_string );
00416     return NULL;
00417 }
00418 
00419 LIBVLC_USED
00420 static inline void *__var_GetAddress( vlc_object_t *p_obj, const char *psz_name )
00421 {
00422     vlc_value_t val;
00423     if( var_GetChecked( p_obj, psz_name, VLC_VAR_ADDRESS, &val ) )
00424         return NULL;
00425     else
00426         return val.p_address;
00427 }
00428 
00429 /**
00430  * __var_GetInteger() with automatic casting
00431  */
00432 #define var_GetInteger(a,b)   __var_GetInteger( VLC_OBJECT(a),b)
00433 /**
00434  * __var_GetBool() with automatic casting
00435  */
00436 #define var_GetBool(a,b)   __var_GetBool( VLC_OBJECT(a),b)
00437 /**
00438  * __var_GetTime() with automatic casting
00439  */
00440 #define var_GetTime(a,b)   __var_GetTime( VLC_OBJECT(a),b)
00441 /**
00442  * __var_GetFloat() with automatic casting
00443  */
00444 #define var_GetFloat(a,b)   __var_GetFloat( VLC_OBJECT(a),b)
00445 /**
00446  * __var_GetString() with automatic casting
00447  */
00448 #define var_GetString(a,b)   __var_GetString( VLC_OBJECT(a),b)
00449 #define var_GetNonEmptyString(a,b)   __var_GetNonEmptyString( VLC_OBJECT(a),b)
00450 /**
00451  * __var_GetAddress() with automatic casting
00452  */
00453 #define var_GetAddress(a,b)  __var_GetAddress( VLC_OBJECT(a),b)
00454 
00455 
00456 
00457 /**
00458  * Increment an integer variable
00459  * \param p_obj the object that holds the variable
00460  * \param psz_name the name of the variable
00461  */
00462 static inline void __var_IncInteger( vlc_object_t *p_obj, const char *psz_name )
00463 {
00464     vlc_value_t val;
00465     val.i_int = 1;
00466     __var_GetAndSet( p_obj, psz_name, VLC_VAR_INTEGER_INCDEC, val );
00467 }
00468 #define var_IncInteger(a,b) __var_IncInteger( VLC_OBJECT(a), b )
00469 
00470 /**
00471  * Decrement an integer variable
00472  * \param p_obj the object that holds the variable
00473  * \param psz_name the name of the variable
00474  */
00475 static inline void __var_DecInteger( vlc_object_t *p_obj, const char *psz_name )
00476 {
00477     vlc_value_t val;
00478     val.i_int = -1;
00479     __var_GetAndSet( p_obj, psz_name, VLC_VAR_INTEGER_INCDEC, val );
00480 }
00481 #define var_DecInteger(a,b) __var_DecInteger( VLC_OBJECT(a), b )
00482 
00483 /**
00484  * Create a integer variable with inherit and get its value.
00485  *
00486  * \param p_obj The object that holds the variable
00487  * \param psz_name The name of the variable
00488  */
00489 LIBVLC_USED
00490 static inline int __var_CreateGetInteger( vlc_object_t *p_obj, const char *psz_name )
00491 {
00492     __var_Create( p_obj, psz_name, VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
00493     return __var_GetInteger( p_obj, psz_name );
00494 }
00495 
00496 /**
00497  * Create a boolean variable with inherit and get its value.
00498  *
00499  * \param p_obj The object that holds the variable
00500  * \param psz_name The name of the variable
00501  */
00502 LIBVLC_USED
00503 static inline bool __var_CreateGetBool( vlc_object_t *p_obj, const char *psz_name )
00504 {
00505     __var_Create( p_obj, psz_name, VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
00506     return __var_GetBool( p_obj, psz_name );
00507 }
00508 
00509 /**
00510  * Create a time variable with inherit and get its value.
00511  *
00512  * \param p_obj The object that holds the variable
00513  * \param psz_name The name of the variable
00514  */
00515 LIBVLC_USED
00516 static inline int64_t __var_CreateGetTime( vlc_object_t *p_obj, const char *psz_name )
00517 {
00518     __var_Create( p_obj, psz_name, VLC_VAR_TIME | VLC_VAR_DOINHERIT );
00519     return __var_GetTime( p_obj, psz_name );
00520 }
00521 
00522 /**
00523  * Create a float variable with inherit and get its value.
00524  *
00525  * \param p_obj The object that holds the variable
00526  * \param psz_name The name of the variable
00527  */
00528 LIBVLC_USED
00529 static inline float __var_CreateGetFloat( vlc_object_t *p_obj, const char *psz_name )
00530 {
00531     __var_Create( p_obj, psz_name, VLC_VAR_FLOAT | VLC_VAR_DOINHERIT );
00532     return __var_GetFloat( p_obj, psz_name );
00533 }
00534 
00535 /**
00536  * Create a string variable with inherit and get its value.
00537  *
00538  * \param p_obj The object that holds the variable
00539  * \param psz_name The name of the variable
00540  */
00541 LIBVLC_USED
00542 static inline char *__var_CreateGetString( vlc_object_t *p_obj,
00543                                            const char *psz_name )
00544 {
00545     __var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT );
00546     return __var_GetString( p_obj, psz_name );
00547 }
00548 
00549 LIBVLC_USED
00550 static inline char *__var_CreateGetNonEmptyString( vlc_object_t *p_obj,
00551                                                    const char *psz_name )
00552 {
00553     __var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT );
00554     return __var_GetNonEmptyString( p_obj, psz_name );
00555 }
00556 
00557 /**
00558  * Create an address variable with inherit and get its value.
00559  *
00560  * \param p_obj The object that holds the variable
00561  * \param psz_name The name of the variable
00562  */
00563 LIBVLC_USED
00564 static inline void *__var_CreateGetAddress( vlc_object_t *p_obj,
00565                                            const char *psz_name )
00566 {
00567     __var_Create( p_obj, psz_name, VLC_VAR_ADDRESS | VLC_VAR_DOINHERIT );
00568     return __var_GetAddress( p_obj, psz_name );
00569 }
00570 
00571 /**
00572  * __var_CreateGetInteger() with automatic casting
00573  */
00574 #define var_CreateGetInteger(a,b)   __var_CreateGetInteger( VLC_OBJECT(a),b)
00575 /**
00576  * __var_CreateGetBool() with automatic casting
00577  */
00578 #define var_CreateGetBool(a,b)   __var_CreateGetBool( VLC_OBJECT(a),b)
00579 /**
00580  * __var_CreateGetTime() with automatic casting
00581  */
00582 #define var_CreateGetTime(a,b)   __var_CreateGetTime( VLC_OBJECT(a),b)
00583 /**
00584  * __var_CreateGetFloat() with automatic casting
00585  */
00586 #define var_CreateGetFloat(a,b)   __var_CreateGetFloat( VLC_OBJECT(a),b)
00587 /**
00588  * __var_CreateGetString() with automatic casting
00589  */
00590 #define var_CreateGetString(a,b)   __var_CreateGetString( VLC_OBJECT(a),b)
00591 #define var_CreateGetNonEmptyString(a,b)   __var_CreateGetNonEmptyString( VLC_OBJECT(a),b)
00592 /**
00593  * __var_CreateGetString() with automatic casting
00594  */
00595 #define var_CreateGetAddress(a,b)  __var_CreateGetAddress( VLC_OBJECT(a),b)
00596 
00597 /**
00598  * Create a integer command variable with inherit and get its value.
00599  *
00600  * \param p_obj The object that holds the variable
00601  * \param psz_name The name of the variable
00602  */
00603 LIBVLC_USED
00604 static inline int __var_CreateGetIntegerCommand( vlc_object_t *p_obj, const char *psz_name )
00605 {
00606     __var_Create( p_obj, psz_name, VLC_VAR_INTEGER | VLC_VAR_DOINHERIT
00607                                    | VLC_VAR_ISCOMMAND );
00608     return __var_GetInteger( p_obj, psz_name );
00609 }
00610 
00611 /**
00612  * Create a boolean command variable with inherit and get its value.
00613  *
00614  * \param p_obj The object that holds the variable
00615  * \param psz_name The name of the variable
00616  */
00617 LIBVLC_USED
00618 static inline bool __var_CreateGetBoolCommand( vlc_object_t *p_obj, const char *psz_name )
00619 {
00620     __var_Create( p_obj, psz_name, VLC_VAR_BOOL | VLC_VAR_DOINHERIT
00621                                    | VLC_VAR_ISCOMMAND );
00622     return __var_GetBool( p_obj, psz_name );
00623 }
00624 
00625 /**
00626  * Create a time command variable with inherit and get its value.
00627  *
00628  * \param p_obj The object that holds the variable
00629  * \param psz_name The name of the variable
00630  */
00631 LIBVLC_USED
00632 static inline int64_t __var_CreateGetTimeCommand( vlc_object_t *p_obj, const char *psz_name )
00633 {
00634     __var_Create( p_obj, psz_name, VLC_VAR_TIME | VLC_VAR_DOINHERIT
00635                                    | VLC_VAR_ISCOMMAND );
00636     return __var_GetTime( p_obj, psz_name );
00637 }
00638 
00639 /**
00640  * Create a float command variable with inherit and get its value.
00641  *
00642  * \param p_obj The object that holds the variable
00643  * \param psz_name The name of the variable
00644  */
00645 LIBVLC_USED
00646 static inline float __var_CreateGetFloatCommand( vlc_object_t *p_obj, const char *psz_name )
00647 {
00648     __var_Create( p_obj, psz_name, VLC_VAR_FLOAT | VLC_VAR_DOINHERIT
00649                                    | VLC_VAR_ISCOMMAND );
00650     return __var_GetFloat( p_obj, psz_name );
00651 }
00652 
00653 /**
00654  * Create a string command variable with inherit and get its value.
00655  *
00656  * \param p_obj The object that holds the variable
00657  * \param psz_name The name of the variable
00658  */
00659 LIBVLC_USED
00660 static inline char *__var_CreateGetStringCommand( vlc_object_t *p_obj,
00661                                            const char *psz_name )
00662 {
00663     __var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT
00664                                    | VLC_VAR_ISCOMMAND );
00665     return __var_GetString( p_obj, psz_name );
00666 }
00667 
00668 LIBVLC_USED
00669 static inline char *__var_CreateGetNonEmptyStringCommand( vlc_object_t *p_obj,
00670                                                    const char *psz_name )
00671 {
00672     __var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT
00673                                    | VLC_VAR_ISCOMMAND );
00674     return __var_GetNonEmptyString( p_obj, psz_name );
00675 }
00676 
00677 /**
00678  * __var_CreateGetInteger() with automatic casting
00679  */
00680 #define var_CreateGetIntegerCommand(a,b)   __var_CreateGetIntegerCommand( VLC_OBJECT(a),b)
00681 /**
00682  * __var_CreateGetBoolCommand() with automatic casting
00683  */
00684 #define var_CreateGetBoolCommand(a,b)   __var_CreateGetBoolCommand( VLC_OBJECT(a),b)
00685 /**
00686  * __var_CreateGetTimeCommand() with automatic casting
00687  */
00688 #define var_CreateGetTimeCommand(a,b)   __var_CreateGetTimeCommand( VLC_OBJECT(a),b)
00689 /**
00690  * __var_CreateGetFloat() with automatic casting
00691  */
00692 #define var_CreateGetFloatCommand(a,b)   __var_CreateGetFloatCommand( VLC_OBJECT(a),b)
00693 /**
00694  * __var_CreateGetStringCommand() with automatic casting
00695  */
00696 #define var_CreateGetStringCommand(a,b)   __var_CreateGetStringCommand( VLC_OBJECT(a),b)
00697 #define var_CreateGetNonEmptyStringCommand(a,b)   __var_CreateGetNonEmptyStringCommand( VLC_OBJECT(a),b)
00698 
00699 LIBVLC_USED
00700 static inline int __var_CountChoices( vlc_object_t *p_obj, const char *psz_name )
00701 {
00702     vlc_value_t count;
00703     if( __var_Change( p_obj, psz_name, VLC_VAR_CHOICESCOUNT, &count, NULL ) )
00704         return 0;
00705     return count.i_int;
00706 }
00707 /**
00708  * __var_CountChoices() with automatic casting
00709  */
00710 #define var_CountChoices(a,b) __var_CountChoices( VLC_OBJECT(a),b)
00711 
00712 
00713 static inline int __var_ToggleBool( vlc_object_t *p_obj, const char *psz_name )
00714 {
00715     vlc_value_t val;
00716     return __var_GetAndSet( p_obj, psz_name, VLC_VAR_TOGGLE_BOOL, val );
00717 }
00718 /**
00719  * __var_ToggleBool() with automatic casting
00720  */
00721 #define var_ToggleBool(a,b) __var_ToggleBool( VLC_OBJECT(a),b )
00722 /**
00723  * @}
00724  */
00725 #endif /*  _VLC_VARIABLES_H */

Generated on Sat Nov 21 08:05:14 2009 for VLC by  doxygen 1.5.6