vlc_variables.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:20k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * variables.h: variables handling
  3.  *****************************************************************************
  4.  * Copyright (C) 2002-2004 the VideoLAN team
  5.  * $Id: a7ce058cfdcdaf608eea9ce30501fcd0f3834875 $
  6.  *
  7.  * Authors: Samuel Hocevar <sam@zoy.org>
  8.  *          Gildas Bazin <gbazin@netcourrier.com>
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; if not, write to the Free Software
  22.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  23.  *****************************************************************************/
  24. #ifndef VLC_VARIABLES_H
  25. #define VLC_VARIABLES_H 1
  26. /**
  27.  * file
  28.  * This file defines functions and structures for dynamic variables in vlc
  29.  */
  30. /**
  31.  * defgroup variables Variables
  32.  *
  33.  * Functions for using the object variables in vlc.
  34.  *
  35.  * Vlc have a very powerful "object variable" infrastructure useful
  36.  * for many things.
  37.  *
  38.  * @{
  39.  */
  40. /*****************************************************************************
  41.  * Variable types - probably very incomplete
  42.  *****************************************************************************/
  43. #define VLC_VAR_TYPE      0x00ff
  44. #define VLC_VAR_CLASS     0x00f0
  45. #define VLC_VAR_FLAGS     0xff00
  46. /** defgroup var_flags Additive flags
  47.  * These flags are added to the type field of the variable. Most as a result of
  48.  * a __var_Change() call, but some may be added at creation time
  49.  * @{
  50.  */
  51. #define VLC_VAR_HASCHOICE 0x0100
  52. #define VLC_VAR_HASMIN    0x0200
  53. #define VLC_VAR_HASMAX    0x0400
  54. #define VLC_VAR_HASSTEP   0x0800
  55. #define VLC_VAR_ISCOMMAND 0x2000
  56. /** Creation flag */
  57. /* If the variable is not found on the current module
  58.    search all parents and finally module config until found */
  59. #define VLC_VAR_DOINHERIT 0x8000
  60. /**@}*/
  61. /**
  62.  * defgroup var_action Variable actions
  63.  * These are the different actions that can be used with __var_Change().
  64.  * The parameters given are the meaning of the two last parameters of
  65.  * __var_Change() when this action is being used.
  66.  * @{
  67.  */
  68. /**
  69.  * Set the minimum value of this variable
  70.  * param p_val The new minimum value
  71.  * param p_val2 Unused
  72.  */
  73. #define VLC_VAR_SETMIN              0x0010
  74. /**
  75.  * Set the maximum value of this variable
  76.  * param p_val The new maximum value
  77.  * param p_val2 Unused
  78.  */
  79. #define VLC_VAR_SETMAX              0x0011
  80. #define VLC_VAR_SETSTEP             0x0012
  81. /**
  82.  * Set the value of this variable without triggering any callbacks
  83.  * param p_val The new value
  84.  * param p_val2 Unused
  85.  */
  86. #define VLC_VAR_SETVALUE            0x0013
  87. #define VLC_VAR_SETTEXT             0x0014
  88. #define VLC_VAR_GETTEXT             0x0015
  89. #define VLC_VAR_GETMIN              0x0016
  90. #define VLC_VAR_GETMAX              0x0017
  91. #define VLC_VAR_GETSTEP             0x0018
  92. #define VLC_VAR_ADDCHOICE           0x0020
  93. #define VLC_VAR_DELCHOICE           0x0021
  94. #define VLC_VAR_CLEARCHOICES        0x0022
  95. #define VLC_VAR_SETDEFAULT          0x0023
  96. #define VLC_VAR_GETCHOICES          0x0024
  97. #define VLC_VAR_FREECHOICES         0x0025
  98. #define VLC_VAR_GETLIST             0x0026
  99. #define VLC_VAR_FREELIST            0x0027
  100. #define VLC_VAR_CHOICESCOUNT        0x0028
  101. #define VLC_VAR_INHERITVALUE        0x0030
  102. #define VLC_VAR_SETISCOMMAND        0x0040
  103. /**@}*/
  104. /*****************************************************************************
  105.  * Prototypes
  106.  *****************************************************************************/
  107. VLC_EXPORT( int, __var_Create, ( vlc_object_t *, const char *, int ) );
  108. VLC_EXPORT( int, __var_Destroy, ( vlc_object_t *, const char * ) );
  109. VLC_EXPORT( int, __var_Change, ( vlc_object_t *, const char *, int, vlc_value_t *, vlc_value_t * ) );
  110. VLC_EXPORT( int, __var_Type, ( vlc_object_t *, const char * ) LIBVLC_USED );
  111. VLC_EXPORT( int, __var_Set, ( vlc_object_t *, const char *, vlc_value_t ) );
  112. VLC_EXPORT( int, __var_Get, ( vlc_object_t *, const char *, vlc_value_t * ) );
  113. VLC_EXPORT( int, var_SetChecked, ( vlc_object_t *, const char *, int, vlc_value_t ) );
  114. VLC_EXPORT( int, var_GetChecked, ( vlc_object_t *, const char *, int, vlc_value_t * ) );
  115. #define var_Command(a,b,c,d,e) __var_Command( VLC_OBJECT( a ), b, c, d, e )
  116. VLC_EXPORT( int, __var_Command, ( vlc_object_t *, const char *, const char *, const char *, char ** ) );
  117. /**
  118.  * __var_Create() with automatic casting.
  119.  */
  120. #define var_Create(a,b,c) __var_Create( VLC_OBJECT(a), b, c )
  121. /**
  122.  * __var_Destroy() with automatic casting
  123.  */
  124. #define var_Destroy(a,b) __var_Destroy( VLC_OBJECT(a), b )
  125. /**
  126.  * __var_Change() with automatic casting
  127.  */
  128. #define var_Change(a,b,c,d,e) __var_Change( VLC_OBJECT(a), b, c, d, e )
  129. /**
  130.  * __var_Type() with automatic casting
  131.  */
  132. #define var_Type(a,b) __var_Type( VLC_OBJECT(a), b )
  133. /**
  134.  * __var_Set() with automatic casting
  135.  */
  136. #define var_Set(a,b,c) __var_Set( VLC_OBJECT(a), b, c )
  137. /**
  138.  * __var_Get() with automatic casting
  139.  */
  140. #define var_Get(a,b,c) __var_Get( VLC_OBJECT(a), b, c )
  141. /*****************************************************************************
  142.  * Variable callbacks
  143.  *****************************************************************************
  144.  * int MyCallback( vlc_object_t *p_this,
  145.  *                 char const *psz_variable,
  146.  *                 vlc_value_t oldvalue,
  147.  *                 vlc_value_t newvalue,
  148.  *                 void *p_data);
  149.  *****************************************************************************/
  150. VLC_EXPORT( int, __var_AddCallback, ( vlc_object_t *, const char *, vlc_callback_t, void * ) );
  151. VLC_EXPORT( int, __var_DelCallback, ( vlc_object_t *, const char *, vlc_callback_t, void * ) );
  152. VLC_EXPORT( int, __var_TriggerCallback, ( vlc_object_t *, const char * ) );
  153. /**
  154.  * __var_AddCallback() with automatic casting
  155.  */
  156. #define var_AddCallback(a,b,c,d) __var_AddCallback( VLC_OBJECT(a), b, c, d )
  157. /**
  158.  * __var_DelCallback() with automatic casting
  159.  */
  160. #define var_DelCallback(a,b,c,d) __var_DelCallback( VLC_OBJECT(a), b, c, d )
  161. /**
  162.  * __var_TriggerCallback() with automatic casting
  163.  */
  164. #define var_TriggerCallback(a,b) __var_TriggerCallback( VLC_OBJECT(a), b )
  165. /*****************************************************************************
  166.  * helpers functions
  167.  *****************************************************************************/
  168. /**
  169.  * Set the value of an integer variable
  170.  *
  171.  * param p_obj The object that holds the variable
  172.  * param psz_name The name of the variable
  173.  * param i The new integer value of this variable
  174.  */
  175. static inline int __var_SetInteger( vlc_object_t *p_obj, const char *psz_name, int i )
  176. {
  177.     vlc_value_t val;
  178.     val.i_int = i;
  179.     return var_SetChecked( p_obj, psz_name, VLC_VAR_INTEGER, val );
  180. }
  181. #define var_SetInteger(a,b,c)   __var_SetInteger( VLC_OBJECT(a),b,c)
  182. /**
  183.  * Set the value of an boolean variable
  184.  *
  185.  * param p_obj The object that holds the variable
  186.  * param psz_name The name of the variable
  187.  * param b The new boolean value of this variable
  188.  */
  189. static inline int __var_SetBool( vlc_object_t *p_obj, const char *psz_name, bool b )
  190. {
  191.     vlc_value_t val;
  192.     val.b_bool = b;
  193.     return var_SetChecked( p_obj, psz_name, VLC_VAR_BOOL, val );
  194. }
  195. /**
  196.  * Set the value of a time variable
  197.  *
  198.  * param p_obj The object that holds the variable
  199.  * param psz_name The name of the variable
  200.  * param i The new time value of this variable
  201.  */
  202. static inline int __var_SetTime( vlc_object_t *p_obj, const char *psz_name, int64_t i )
  203. {
  204.     vlc_value_t val;
  205.     val.i_time = i;
  206.     return var_SetChecked( p_obj, psz_name, VLC_VAR_TIME, val );
  207. }
  208. /**
  209.  * Set the value of a float variable
  210.  *
  211.  * param p_obj The object that holds the variable
  212.  * param psz_name The name of the variable
  213.  * param f The new float value of this variable
  214.  */
  215. static inline int __var_SetFloat( vlc_object_t *p_obj, const char *psz_name, float f )
  216. {
  217.     vlc_value_t val;
  218.     val.f_float = f;
  219.     return var_SetChecked( p_obj, psz_name, VLC_VAR_FLOAT, val );
  220. }
  221. /**
  222.  * Set the value of a string variable
  223.  *
  224.  * param p_obj The object that holds the variable
  225.  * param psz_name The name of the variable
  226.  * param psz_string The new string value of this variable
  227.  */
  228. static inline int __var_SetString( vlc_object_t *p_obj, const char *psz_name, const char *psz_string )
  229. {
  230.     vlc_value_t val;
  231.     val.psz_string = (char *)psz_string;
  232.     return var_SetChecked( p_obj, psz_name, VLC_VAR_STRING, val );
  233. }
  234. /**
  235.  * Trigger the callbacks on a void variable
  236.  *
  237.  * param p_obj The object that holds the variable
  238.  * param psz_name The name of the variable
  239.  */
  240. static inline int __var_SetVoid( vlc_object_t *p_obj, const char *psz_name )
  241. {
  242.     vlc_value_t val;
  243.     val.b_bool = true;
  244.     return var_SetChecked( p_obj, psz_name, VLC_VAR_VOID, val );
  245. }
  246. #define var_SetVoid(a,b)        __var_SetVoid( VLC_OBJECT(a),b)
  247. /**
  248.  * Set the value of a pointer variable
  249.  *
  250.  * param p_obj The object that holds the variable
  251.  * param psz_name The name of the variable
  252.  * param ptr The new pointer value of this variable
  253.  */
  254. static inline
  255. int var_SetAddress( vlc_object_t *p_obj, const char *psz_name, void *ptr )
  256. {
  257.     vlc_value_t val;
  258.     val.p_address = ptr;
  259.     return var_SetChecked( p_obj, psz_name, VLC_VAR_ADDRESS, val );
  260. }
  261. #define var_SetAddress(o, n, p) var_SetAddress(VLC_OBJECT(o), n, p)
  262. /**
  263.  * __var_SetBool() with automatic casting
  264.  */
  265. #define var_SetBool(a,b,c)   __var_SetBool( VLC_OBJECT(a),b,c)
  266. /**
  267.  * __var_SetTime() with automatic casting
  268.  */
  269. #define var_SetTime(a,b,c)      __var_SetTime( VLC_OBJECT(a),b,c)
  270. /**
  271.  * __var_SetFloat() with automatic casting
  272.  */
  273. #define var_SetFloat(a,b,c)     __var_SetFloat( VLC_OBJECT(a),b,c)
  274. /**
  275.  * __var_SetString() with automatic casting
  276.  */
  277. #define var_SetString(a,b,c)     __var_SetString( VLC_OBJECT(a),b,c)
  278. /**
  279.  * Get an integer value
  280. *
  281.  * param p_obj The object that holds the variable
  282.  * param psz_name The name of the variable
  283.  */
  284. LIBVLC_USED
  285. static inline int __var_GetInteger( vlc_object_t *p_obj, const char *psz_name )
  286. {
  287.     vlc_value_t val;
  288.     if( !var_GetChecked( p_obj, psz_name, VLC_VAR_INTEGER, &val ) )
  289.         return val.i_int;
  290.     else
  291.         return 0;
  292. }
  293. /**
  294.  * Get a boolean value
  295.  *
  296.  * param p_obj The object that holds the variable
  297.  * param psz_name The name of the variable
  298.  */
  299. LIBVLC_USED
  300. static inline bool __var_GetBool( vlc_object_t *p_obj, const char *psz_name )
  301. {
  302.     vlc_value_t val; val.b_bool = false;
  303.     if( !var_GetChecked( p_obj, psz_name, VLC_VAR_BOOL, &val ) )
  304.         return val.b_bool;
  305.     else
  306.         return false;
  307. }
  308. /**
  309.  * Get a time value
  310.  *
  311.  * param p_obj The object that holds the variable
  312.  * param psz_name The name of the variable
  313.  */
  314. LIBVLC_USED
  315. static inline int64_t __var_GetTime( vlc_object_t *p_obj, const char *psz_name )
  316. {
  317.     vlc_value_t val; val.i_time = 0L;
  318.     if( !var_GetChecked( p_obj, psz_name, VLC_VAR_TIME, &val ) )
  319.         return val.i_time;
  320.     else
  321.         return 0;
  322. }
  323. /**
  324.  * Get a float value
  325.  *
  326.  * param p_obj The object that holds the variable
  327.  * param psz_name The name of the variable
  328.  */
  329. LIBVLC_USED
  330. static inline float __var_GetFloat( vlc_object_t *p_obj, const char *psz_name )
  331. {
  332.     vlc_value_t val; val.f_float = 0.0;
  333.     if( !var_GetChecked( p_obj, psz_name, VLC_VAR_FLOAT, &val ) )
  334.         return val.f_float;
  335.     else
  336.         return 0.0;
  337. }
  338. /**
  339.  * Get a string value
  340.  *
  341.  * param p_obj The object that holds the variable
  342.  * param psz_name The name of the variable
  343.  */
  344. LIBVLC_USED
  345. static inline char *__var_GetString( vlc_object_t *p_obj, const char *psz_name )
  346. {
  347.     vlc_value_t val; val.psz_string = NULL;
  348.     if( var_GetChecked( p_obj, psz_name, VLC_VAR_STRING, &val ) )
  349.         return NULL;
  350.     else
  351.         return val.psz_string;
  352. }
  353. LIBVLC_USED
  354. static inline char *__var_GetNonEmptyString( vlc_object_t *p_obj, const char *psz_name )
  355. {
  356.     vlc_value_t val;
  357.     if( var_GetChecked( p_obj, psz_name, VLC_VAR_STRING, &val ) )
  358.         return NULL;
  359.     if( val.psz_string && *val.psz_string )
  360.         return val.psz_string;
  361.     free( val.psz_string );
  362.     return NULL;
  363. }
  364. /**
  365.  * __var_GetInteger() with automatic casting
  366.  */
  367. #define var_GetInteger(a,b)   __var_GetInteger( VLC_OBJECT(a),b)
  368. /**
  369.  * __var_GetBool() with automatic casting
  370.  */
  371. #define var_GetBool(a,b)   __var_GetBool( VLC_OBJECT(a),b)
  372. /**
  373.  * __var_GetTime() with automatic casting
  374.  */
  375. #define var_GetTime(a,b)   __var_GetTime( VLC_OBJECT(a),b)
  376. /**
  377.  * __var_GetFloat() with automatic casting
  378.  */
  379. #define var_GetFloat(a,b)   __var_GetFloat( VLC_OBJECT(a),b)
  380. /**
  381.  * __var_GetString() with automatic casting
  382.  */
  383. #define var_GetString(a,b)   __var_GetString( VLC_OBJECT(a),b)
  384. #define var_GetNonEmptyString(a,b)   __var_GetNonEmptyString( VLC_OBJECT(a),b)
  385. /**
  386.  * Increment an integer variable
  387.  * param p_obj the object that holds the variable
  388.  * param psz_name the name of the variable
  389.  */
  390. static inline void __var_IncInteger( vlc_object_t *p_obj, const char *psz_name )
  391. {
  392.     int i_val = __var_GetInteger( p_obj, psz_name );
  393.     __var_SetInteger( p_obj, psz_name, ++i_val );
  394. }
  395. #define var_IncInteger(a,b) __var_IncInteger( VLC_OBJECT(a), b )
  396. /**
  397.  * Decrement an integer variable
  398.  * param p_obj the object that holds the variable
  399.  * param psz_name the name of the variable
  400.  */
  401. static inline void __var_DecInteger( vlc_object_t *p_obj, const char *psz_name )
  402. {
  403.     int i_val = __var_GetInteger( p_obj, psz_name );
  404.     __var_SetInteger( p_obj, psz_name, --i_val );
  405. }
  406. #define var_DecInteger(a,b) __var_DecInteger( VLC_OBJECT(a), b )
  407. /**
  408.  * Create a integer variable with inherit and get its value.
  409.  *
  410.  * param p_obj The object that holds the variable
  411.  * param psz_name The name of the variable
  412.  */
  413. LIBVLC_USED
  414. static inline int __var_CreateGetInteger( vlc_object_t *p_obj, const char *psz_name )
  415. {
  416.     __var_Create( p_obj, psz_name, VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
  417.     return __var_GetInteger( p_obj, psz_name );
  418. }
  419. /**
  420.  * Create a boolean variable with inherit and get its value.
  421.  *
  422.  * param p_obj The object that holds the variable
  423.  * param psz_name The name of the variable
  424.  */
  425. LIBVLC_USED
  426. static inline bool __var_CreateGetBool( vlc_object_t *p_obj, const char *psz_name )
  427. {
  428.     __var_Create( p_obj, psz_name, VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
  429.     return __var_GetBool( p_obj, psz_name );
  430. }
  431. /**
  432.  * Create a time variable with inherit and get its value.
  433.  *
  434.  * param p_obj The object that holds the variable
  435.  * param psz_name The name of the variable
  436.  */
  437. LIBVLC_USED
  438. static inline int64_t __var_CreateGetTime( vlc_object_t *p_obj, const char *psz_name )
  439. {
  440.     __var_Create( p_obj, psz_name, VLC_VAR_TIME | VLC_VAR_DOINHERIT );
  441.     return __var_GetTime( p_obj, psz_name );
  442. }
  443. /**
  444.  * Create a float variable with inherit and get its value.
  445.  *
  446.  * param p_obj The object that holds the variable
  447.  * param psz_name The name of the variable
  448.  */
  449. LIBVLC_USED
  450. static inline float __var_CreateGetFloat( vlc_object_t *p_obj, const char *psz_name )
  451. {
  452.     __var_Create( p_obj, psz_name, VLC_VAR_FLOAT | VLC_VAR_DOINHERIT );
  453.     return __var_GetFloat( p_obj, psz_name );
  454. }
  455. /**
  456.  * Create a string variable with inherit and get its value.
  457.  *
  458.  * param p_obj The object that holds the variable
  459.  * param psz_name The name of the variable
  460.  */
  461. LIBVLC_USED
  462. static inline char *__var_CreateGetString( vlc_object_t *p_obj,
  463.                                            const char *psz_name )
  464. {
  465.     __var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT );
  466.     return __var_GetString( p_obj, psz_name );
  467. }
  468. LIBVLC_USED
  469. static inline char *__var_CreateGetNonEmptyString( vlc_object_t *p_obj,
  470.                                                    const char *psz_name )
  471. {
  472.     __var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT );
  473.     return __var_GetNonEmptyString( p_obj, psz_name );
  474. }
  475. /**
  476.  * __var_CreateGetInteger() with automatic casting
  477.  */
  478. #define var_CreateGetInteger(a,b)   __var_CreateGetInteger( VLC_OBJECT(a),b)
  479. /**
  480.  * __var_CreateGetBool() with automatic casting
  481.  */
  482. #define var_CreateGetBool(a,b)   __var_CreateGetBool( VLC_OBJECT(a),b)
  483. /**
  484.  * __var_CreateGetTime() with automatic casting
  485.  */
  486. #define var_CreateGetTime(a,b)   __var_CreateGetTime( VLC_OBJECT(a),b)
  487. /**
  488.  * __var_CreateGetFloat() with automatic casting
  489.  */
  490. #define var_CreateGetFloat(a,b)   __var_CreateGetFloat( VLC_OBJECT(a),b)
  491. /**
  492.  * __var_CreateGetString() with automatic casting
  493.  */
  494. #define var_CreateGetString(a,b)   __var_CreateGetString( VLC_OBJECT(a),b)
  495. #define var_CreateGetNonEmptyString(a,b)   __var_CreateGetNonEmptyString( VLC_OBJECT(a),b)
  496. /**
  497.  * Create a integer command variable with inherit and get its value.
  498.  *
  499.  * param p_obj The object that holds the variable
  500.  * param psz_name The name of the variable
  501.  */
  502. LIBVLC_USED
  503. static inline int __var_CreateGetIntegerCommand( vlc_object_t *p_obj, const char *psz_name )
  504. {
  505.     __var_Create( p_obj, psz_name, VLC_VAR_INTEGER | VLC_VAR_DOINHERIT
  506.                                    | VLC_VAR_ISCOMMAND );
  507.     return __var_GetInteger( p_obj, psz_name );
  508. }
  509. /**
  510.  * Create a boolean command variable with inherit and get its value.
  511.  *
  512.  * param p_obj The object that holds the variable
  513.  * param psz_name The name of the variable
  514.  */
  515. LIBVLC_USED
  516. static inline bool __var_CreateGetBoolCommand( vlc_object_t *p_obj, const char *psz_name )
  517. {
  518.     __var_Create( p_obj, psz_name, VLC_VAR_BOOL | VLC_VAR_DOINHERIT
  519.                                    | VLC_VAR_ISCOMMAND );
  520.     return __var_GetBool( p_obj, psz_name );
  521. }
  522. /**
  523.  * Create a time command variable with inherit and get its value.
  524.  *
  525.  * param p_obj The object that holds the variable
  526.  * param psz_name The name of the variable
  527.  */
  528. LIBVLC_USED
  529. static inline int64_t __var_CreateGetTimeCommand( vlc_object_t *p_obj, const char *psz_name )
  530. {
  531.     __var_Create( p_obj, psz_name, VLC_VAR_TIME | VLC_VAR_DOINHERIT
  532.                                    | VLC_VAR_ISCOMMAND );
  533.     return __var_GetTime( p_obj, psz_name );
  534. }
  535. /**
  536.  * Create a float command variable with inherit and get its value.
  537.  *
  538.  * param p_obj The object that holds the variable
  539.  * param psz_name The name of the variable
  540.  */
  541. LIBVLC_USED
  542. static inline float __var_CreateGetFloatCommand( vlc_object_t *p_obj, const char *psz_name )
  543. {
  544.     __var_Create( p_obj, psz_name, VLC_VAR_FLOAT | VLC_VAR_DOINHERIT
  545.                                    | VLC_VAR_ISCOMMAND );
  546.     return __var_GetFloat( p_obj, psz_name );
  547. }
  548. /**
  549.  * Create a string command variable with inherit and get its value.
  550.  *
  551.  * param p_obj The object that holds the variable
  552.  * param psz_name The name of the variable
  553.  */
  554. LIBVLC_USED
  555. static inline char *__var_CreateGetStringCommand( vlc_object_t *p_obj,
  556.                                            const char *psz_name )
  557. {
  558.     __var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT
  559.                                    | VLC_VAR_ISCOMMAND );
  560.     return __var_GetString( p_obj, psz_name );
  561. }
  562. LIBVLC_USED
  563. static inline char *__var_CreateGetNonEmptyStringCommand( vlc_object_t *p_obj,
  564.                                                    const char *psz_name )
  565. {
  566.     __var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT
  567.                                    | VLC_VAR_ISCOMMAND );
  568.     return __var_GetNonEmptyString( p_obj, psz_name );
  569. }
  570. /**
  571.  * __var_CreateGetInteger() with automatic casting
  572.  */
  573. #define var_CreateGetIntegerCommand(a,b)   __var_CreateGetIntegerCommand( VLC_OBJECT(a),b)
  574. /**
  575.  * __var_CreateGetBoolCommand() with automatic casting
  576.  */
  577. #define var_CreateGetBoolCommand(a,b)   __var_CreateGetBoolCommand( VLC_OBJECT(a),b)
  578. /**
  579.  * __var_CreateGetTimeCommand() with automatic casting
  580.  */
  581. #define var_CreateGetTimeCommand(a,b)   __var_CreateGetTimeCommand( VLC_OBJECT(a),b)
  582. /**
  583.  * __var_CreateGetFloat() with automatic casting
  584.  */
  585. #define var_CreateGetFloatCommand(a,b)   __var_CreateGetFloatCommand( VLC_OBJECT(a),b)
  586. /**
  587.  * __var_CreateGetStringCommand() with automatic casting
  588.  */
  589. #define var_CreateGetStringCommand(a,b)   __var_CreateGetStringCommand( VLC_OBJECT(a),b)
  590. #define var_CreateGetNonEmptyStringCommand(a,b)   __var_CreateGetNonEmptyStringCommand( VLC_OBJECT(a),b)
  591. static inline int __var_CountChoices( vlc_object_t *p_obj, const char *psz_name )
  592. {
  593.     vlc_value_t count;
  594.     if( __var_Change( p_obj, psz_name, VLC_VAR_CHOICESCOUNT, &count, NULL ) )
  595.         return 0;
  596.     return count.i_int;
  597. }
  598. /**
  599.  * __var_CountChoices() with automatic casting
  600.  */
  601. #define var_CountChoices(a,b) __var_CountChoices( VLC_OBJECT(a),b)
  602. /**
  603.  * @}
  604.  */
  605. #endif /*  _VLC_VARIABLES_H */