#define VLC_VAR_CLEARCHOICES 0x0022
#define VLC_VAR_SETDEFAULT 0x0023
#define VLC_VAR_GETCHOICES 0x0024
#define VLC_VAR_CLEARCHOICES 0x0022
#define VLC_VAR_SETDEFAULT 0x0023
#define VLC_VAR_GETCHOICES 0x0024
-#define VLC_VAR_FREECHOICES 0x0025
-#define VLC_VAR_GETLIST 0x0026
-#define VLC_VAR_CHOICESCOUNT 0x0027
+#define VLC_VAR_GETLIST 0x0025
+#define VLC_VAR_CHOICESCOUNT 0x0026
+/** \defgroup var_GetAndSet Variable actions
+ * These are the different actions that can be used with __var_GetAndSet()
+ * @{
+ */
+/**
+ * Toggle the value of this boolean
+ * \param val Unused
+ */
+#define VLC_VAR_TOGGLE_BOOL 0x0010
+/**
+ * Increment or decrement an integer of a given value
+ * \param val the value
+ */
+#define VLC_VAR_INTEGER_INCDEC 0x0020
+/**@}*/
+
/*****************************************************************************
* Prototypes
*****************************************************************************/
/*****************************************************************************
* Prototypes
*****************************************************************************/
VLC_EXPORT( int, __var_Get, ( vlc_object_t *, const char *, vlc_value_t * ) );
VLC_EXPORT( int, var_SetChecked, ( vlc_object_t *, const char *, int, vlc_value_t ) );
VLC_EXPORT( int, var_GetChecked, ( vlc_object_t *, const char *, int, vlc_value_t * ) );
VLC_EXPORT( int, __var_Get, ( vlc_object_t *, const char *, vlc_value_t * ) );
VLC_EXPORT( int, var_SetChecked, ( vlc_object_t *, const char *, int, vlc_value_t ) );
VLC_EXPORT( int, var_GetChecked, ( vlc_object_t *, const char *, int, vlc_value_t * ) );
#define var_Command(a,b,c,d,e) __var_Command( VLC_OBJECT( a ), b, c, d, e )
VLC_EXPORT( int, __var_Command, ( vlc_object_t *, const char *, const char *, const char *, char ** ) );
#define var_Command(a,b,c,d,e) __var_Command( VLC_OBJECT( a ), b, c, d, e )
VLC_EXPORT( int, __var_Command, ( vlc_object_t *, const char *, const char *, const char *, char ** ) );
* __var_Get() with automatic casting
*/
#define var_Get(a,b,c) __var_Get( VLC_OBJECT(a), b, c )
* __var_Get() with automatic casting
*/
#define var_Get(a,b,c) __var_Get( VLC_OBJECT(a), b, c )
+/**
+ * __var_GetAndSet() with automatic casting
+ */
+#define var_GetAndSet(a,b,c,d) __var_GetAndSet(VLC_OBJECT(a), b, c, d)
* __var_AddCallback() with automatic casting
*/
#define var_AddCallback(a,b,c,d) __var_AddCallback( VLC_OBJECT(a), b, c, d )
* __var_AddCallback() with automatic casting
*/
#define var_AddCallback(a,b,c,d) __var_AddCallback( VLC_OBJECT(a), b, c, d )
/**
* __var_DelCallback() with automatic casting
*/
#define var_DelCallback(a,b,c,d) __var_DelCallback( VLC_OBJECT(a), b, c, d )
/**
* __var_DelCallback() with automatic casting
*/
#define var_DelCallback(a,b,c,d) __var_DelCallback( VLC_OBJECT(a), b, c, d )
val.i_int = i;
return var_SetChecked( p_obj, psz_name, VLC_VAR_INTEGER, val );
}
val.i_int = i;
return var_SetChecked( p_obj, psz_name, VLC_VAR_INTEGER, val );
}
return var_SetChecked( p_obj, psz_name, VLC_VAR_STRING, val );
}
return var_SetChecked( p_obj, psz_name, VLC_VAR_STRING, val );
}
-/**
- * Trigger the callbacks on a void variable
- *
- * \param p_obj The object that holds the variable
- * \param psz_name The name of the variable
- */
-static inline int __var_SetVoid( vlc_object_t *p_obj, const char *psz_name )
-{
- vlc_value_t val;
- val.b_bool = true;
- return var_SetChecked( p_obj, psz_name, VLC_VAR_VOID, val );
-}
-#define var_SetVoid(a,b) __var_SetVoid( VLC_OBJECT(a),b)
-
{
vlc_value_t val;
val.p_address = ptr;
return var_SetChecked( p_obj, psz_name, VLC_VAR_ADDRESS, val );
}
{
vlc_value_t val;
val.p_address = ptr;
return var_SetChecked( p_obj, psz_name, VLC_VAR_ADDRESS, val );
}
-#define var_SetBool(a,b,c) __var_SetBool( VLC_OBJECT(a),b,c)
-
+#define var_SetBool(a,b,c) __var_SetBool( VLC_OBJECT(a),b,c)
-#define var_SetString(a,b,c) __var_SetString( VLC_OBJECT(a),b,c)
+#define var_SetString(a,b,c) __var_SetString( VLC_OBJECT(a),b,c)
+/**
+ * __var_SetAddress() with automatic casting
+ */
+#define var_SetAddress(o, n, p) __var_SetAddress(VLC_OBJECT(o), n, p)
+
- int i_val = __var_GetInteger( p_obj, psz_name );
- __var_SetInteger( p_obj, psz_name, ++i_val );
+ vlc_value_t val;
+ val.i_int = 1;
+ __var_GetAndSet( p_obj, psz_name, VLC_VAR_INTEGER_INCDEC, val );
- int i_val = __var_GetInteger( p_obj, psz_name );
- __var_SetInteger( p_obj, psz_name, --i_val );
+ vlc_value_t val;
+ val.i_int = -1;
+ __var_GetAndSet( p_obj, psz_name, VLC_VAR_INTEGER_INCDEC, val );
#define var_CreateGetStringCommand(a,b) __var_CreateGetStringCommand( VLC_OBJECT(a),b)
#define var_CreateGetNonEmptyStringCommand(a,b) __var_CreateGetNonEmptyStringCommand( VLC_OBJECT(a),b)
#define var_CreateGetStringCommand(a,b) __var_CreateGetStringCommand( VLC_OBJECT(a),b)
#define var_CreateGetNonEmptyStringCommand(a,b) __var_CreateGetNonEmptyStringCommand( VLC_OBJECT(a),b)
+
+static inline int __var_ToggleBool( vlc_object_t *p_obj, const char *psz_name )
+{
+ vlc_value_t val;
+ return __var_GetAndSet( p_obj, psz_name, VLC_VAR_TOGGLE_BOOL, val );
+}
+/**
+ * __var_ToggleBool() with automatic casting
+ */
+#define var_ToggleBool(a,b) __var_ToggleBool( VLC_OBJECT(a),b )