* 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
+enum {
+ VLC_VAR_BOOL_TOGGLE, /**< Invert a boolean value (param ignored) */
+ VLC_VAR_INTEGER_ADD, /**< Add parameter to an integer value */
+ VLC_VAR_INTEGER_OR, /**< Binary OR over an integer bits field */
+ VLC_VAR_INTEGER_NAND,/**< Binary NAND over an integer bits field */
+};
/**@}*/
/*****************************************************************************
#define var_Get(a,b,c) var_Get( VLC_OBJECT(a), b, c )
VLC_EXPORT( int, var_SetChecked, ( vlc_object_t *, const char *, int, vlc_value_t ) );
+#define var_SetChecked(o,n,t,v) var_SetChecked(VLC_OBJECT(o),n,t,v)
VLC_EXPORT( int, var_GetChecked, ( vlc_object_t *, const char *, int, vlc_value_t * ) );
-VLC_EXPORT( int, var_GetAndSet, ( vlc_object_t *, const char *, int, vlc_value_t ) );
-#define var_GetAndSet(a,b,c,d) var_GetAndSet(VLC_OBJECT(a), b, c, d)
+#define var_GetChecked(o,n,t,v) var_GetChecked(VLC_OBJECT(o),n,t,v)
+VLC_EXPORT( int, var_GetAndSet, ( vlc_object_t *, const char *, int, vlc_value_t * ) );
VLC_EXPORT( int, var_Inherit, ( vlc_object_t *, const char *, int, vlc_value_t * ) );
* \param psz_name The name of the variable
* \param i The new integer value of this variable
*/
-static inline int var_SetInteger( vlc_object_t *p_obj, const char *psz_name, int i )
+static inline int var_SetInteger( vlc_object_t *p_obj, const char *psz_name,
+ int64_t i )
{
vlc_value_t val;
val.i_int = i;
return var_SetChecked( p_obj, psz_name, VLC_VAR_TIME, val );
}
+static inline int var_SetCoords( vlc_object_t *obj, const char *name,
+ int32_t x, int32_t y )
+{
+ vlc_value_t val;
+ val.coords.x = x;
+ val.coords.y = y;
+ return var_SetChecked (obj, name, VLC_VAR_COORDS, val);
+}
+#define var_SetCoords(o,n,x,y) var_SetCoords(VLC_OBJECT(o),n,x,y)
+
/**
* Set the value of a float variable
*
* \param psz_name The name of the variable
*/
LIBVLC_USED
-static inline int var_GetInteger( vlc_object_t *p_obj, const char *psz_name )
+static inline int64_t var_GetInteger( vlc_object_t *p_obj, const char *psz_name )
{
vlc_value_t val;
if( !var_GetChecked( p_obj, psz_name, VLC_VAR_INTEGER, &val ) )
return 0;
}
+static inline void var_GetCoords( vlc_object_t *obj, const char *name,
+ int32_t *px, int32_t *py )
+{
+ vlc_value_t val;
+
+ if (likely(!var_GetChecked (obj, name, VLC_VAR_COORDS, &val)))
+ {
+ *px = val.coords.x;
+ *py = val.coords.y;
+ }
+ else
+ *px = *py = 0;
+}
+#define var_GetCoords(o,n,x,y) var_GetCoords(VLC_OBJECT(o),n,x,y)
+
/**
* Get a float value
*
* \param p_obj The object that holds the variable
* \param psz_name The name of the variable
*/
-LIBVLC_USED
+LIBVLC_USED LIBVLC_MALLOC
static inline char *var_GetString( vlc_object_t *p_obj, const char *psz_name )
{
vlc_value_t val; val.psz_string = NULL;
return val.psz_string;
}
-LIBVLC_USED
+LIBVLC_USED LIBVLC_MALLOC
static inline char *var_GetNonEmptyString( vlc_object_t *p_obj, const char *psz_name )
{
vlc_value_t val;
* \param p_obj the object that holds the variable
* \param psz_name the name of the variable
*/
-static inline void var_IncInteger( vlc_object_t *p_obj, const char *psz_name )
+static inline int64_t var_IncInteger( vlc_object_t *p_obj, const char *psz_name )
{
vlc_value_t val;
val.i_int = 1;
- var_GetAndSet( p_obj, psz_name, VLC_VAR_INTEGER_INCDEC, val );
+ var_GetAndSet( p_obj, psz_name, VLC_VAR_INTEGER_ADD, &val );
+ return val.i_int;
}
#define var_IncInteger(a,b) var_IncInteger( VLC_OBJECT(a), b )
* \param p_obj the object that holds the variable
* \param psz_name the name of the variable
*/
-static inline void var_DecInteger( vlc_object_t *p_obj, const char *psz_name )
+static inline int64_t var_DecInteger( vlc_object_t *p_obj, const char *psz_name )
{
vlc_value_t val;
val.i_int = -1;
- var_GetAndSet( p_obj, psz_name, VLC_VAR_INTEGER_INCDEC, val );
+ var_GetAndSet( p_obj, psz_name, VLC_VAR_INTEGER_ADD, &val );
+ return val.i_int;
}
#define var_DecInteger(a,b) var_DecInteger( VLC_OBJECT(a), b )
+static inline uint64_t var_OrInteger( vlc_object_t *obj, const char *name,
+ unsigned v )
+{
+ vlc_value_t val;
+ val.i_int = v;
+ var_GetAndSet( obj, name, VLC_VAR_INTEGER_OR, &val );
+ return val.i_int;
+}
+#define var_OrInteger(a,b,c) var_OrInteger(VLC_OBJECT(a),b,c)
+
+static inline uint64_t var_NAndInteger( vlc_object_t *obj, const char *name,
+ unsigned v )
+{
+ vlc_value_t val;
+ val.i_int = v;
+ var_GetAndSet( obj, name, VLC_VAR_INTEGER_NAND, &val );
+ return val.i_int;
+}
+#define var_NAndInteger(a,b,c) var_NAndInteger(VLC_OBJECT(a),b,c)
+
/**
* Create a integer variable with inherit and get its value.
*
* \param psz_name The name of the variable
*/
LIBVLC_USED
-static inline int var_CreateGetInteger( vlc_object_t *p_obj, const char *psz_name )
+static inline int64_t var_CreateGetInteger( vlc_object_t *p_obj, const char *psz_name )
{
var_Create( p_obj, psz_name, VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
return var_GetInteger( p_obj, psz_name );
* \param p_obj The object that holds the variable
* \param psz_name The name of the variable
*/
-LIBVLC_USED
+LIBVLC_USED LIBVLC_MALLOC
static inline char *var_CreateGetString( vlc_object_t *p_obj,
const char *psz_name )
{
return var_GetString( p_obj, psz_name );
}
-LIBVLC_USED
+LIBVLC_USED LIBVLC_MALLOC
static inline char *var_CreateGetNonEmptyString( vlc_object_t *p_obj,
const char *psz_name )
{
* \param psz_name The name of the variable
*/
LIBVLC_USED
-static inline int var_CreateGetIntegerCommand( vlc_object_t *p_obj, const char *psz_name )
+static inline int64_t var_CreateGetIntegerCommand( vlc_object_t *p_obj, const char *psz_name )
{
var_Create( p_obj, psz_name, VLC_VAR_INTEGER | VLC_VAR_DOINHERIT
| VLC_VAR_ISCOMMAND );
* \param p_obj The object that holds the variable
* \param psz_name The name of the variable
*/
-LIBVLC_USED
+LIBVLC_USED LIBVLC_MALLOC
static inline char *var_CreateGetStringCommand( vlc_object_t *p_obj,
const char *psz_name )
{
return var_GetString( p_obj, psz_name );
}
-LIBVLC_USED
+LIBVLC_USED LIBVLC_MALLOC
static inline char *var_CreateGetNonEmptyStringCommand( vlc_object_t *p_obj,
const char *psz_name )
{
#define var_CountChoices(a,b) var_CountChoices( VLC_OBJECT(a),b)
-static inline int var_ToggleBool( vlc_object_t *p_obj, const char *psz_name )
+static inline bool 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_GetAndSet( p_obj, psz_name, VLC_VAR_BOOL_TOGGLE, &val );
+ return val.b_bool;
}
#define var_ToggleBool(a,b) var_ToggleBool( VLC_OBJECT(a),b )
#define var_InheritBool(o, n) var_InheritBool(VLC_OBJECT(o), n)
LIBVLC_USED
-static inline int var_InheritInteger( vlc_object_t *obj, const char *name )
+static inline int64_t var_InheritInteger( vlc_object_t *obj, const char *name )
{
vlc_value_t val;
}
#define var_InheritString(o, n) var_InheritString(VLC_OBJECT(o), n)
+LIBVLC_USED
static inline mtime_t var_InheritTime( vlc_object_t *obj, const char *name )
{
vlc_value_t val;
}
#define var_InheritTime(o, n) var_InheritTime(VLC_OBJECT(o), n)
+LIBVLC_USED
+static inline void *var_InheritAddress( vlc_object_t *obj, const char *name )
+{
+ vlc_value_t val;
+
+ if( var_Inherit( obj, name, VLC_VAR_ADDRESS, &val ) )
+ val.p_address = NULL;
+ return val.p_address;
+}
+#define var_InheritAddress(o, n) var_InheritAddress(VLC_OBJECT(o), n)
+
+VLC_EXPORT( int, var_InheritURational, ( vlc_object_t *, unsigned *num, unsigned *den, const char *var ) );
+#define var_InheritURational(a,b,c,d) var_InheritURational(VLC_OBJECT(a), b, c, d)
+
#define var_GetInteger(a,b) var_GetInteger( VLC_OBJECT(a),b)
#define var_GetBool(a,b) var_GetBool( VLC_OBJECT(a),b)
#define var_GetTime(a,b) var_GetTime( VLC_OBJECT(a),b)