Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
81c4815f
Commit
81c4815f
authored
Sep 17, 2008
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Assert variable type in var_Set/GetXYZ.
It will allow detecting stupid typos.
parent
2ada5d84
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
31 additions
and
4 deletions
+31
-4
include/vlc_variables.h
include/vlc_variables.h
+29
-2
src/misc/objects.c
src/misc/objects.c
+1
-1
src/misc/variables.c
src/misc/variables.c
+1
-1
No files found.
include/vlc_variables.h
View file @
81c4815f
...
...
@@ -25,6 +25,8 @@
#ifndef VLC_VARIABLES_H
#define VLC_VARIABLES_H 1
#include <assert.h>
/**
* \file
* This file defines functions and structures for dynamic variables in vlc
...
...
@@ -45,6 +47,7 @@
* Variable types - probably very incomplete
*****************************************************************************/
#define VLC_VAR_TYPE 0x00ff
#define VLC_VAR_CLASS 0x00f0
#define VLC_VAR_FLAGS 0xff00
/** \defgroup var_flags Additive flags
...
...
@@ -208,6 +211,17 @@ VLC_EXPORT( int, __var_TriggerCallback, ( vlc_object_t *, const char * ) );
* helpers functions
*****************************************************************************/
/**
* This function assert the variable is of the expected type or it
* is not defined
*/
static
inline
void
__var_AssertType
(
vlc_object_t
*
p_obj
,
const
char
*
psz_name
,
int
i_expected
)
{
const
int
i_type
=
__var_Type
(
p_obj
,
psz_name
)
&
VLC_VAR_CLASS
;
assert
(
i_type
==
0
||
i_type
==
(
i_expected
&
VLC_VAR_CLASS
)
);
}
/**
* Set the value of an integer variable
*
...
...
@@ -219,6 +233,7 @@ static inline int __var_SetInteger( vlc_object_t *p_obj, const char *psz_name, i
{
vlc_value_t
val
;
val
.
i_int
=
i
;
__var_AssertType
(
p_obj
,
psz_name
,
VLC_VAR_INTEGER
);
return
__var_Set
(
p_obj
,
psz_name
,
val
);
}
#define var_SetInteger(a,b,c) __var_SetInteger( VLC_OBJECT(a),b,c)
...
...
@@ -233,6 +248,7 @@ static inline int __var_SetBool( vlc_object_t *p_obj, const char *psz_name, bool
{
vlc_value_t
val
;
val
.
b_bool
=
b
;
__var_AssertType
(
p_obj
,
psz_name
,
VLC_VAR_BOOL
);
return
__var_Set
(
p_obj
,
psz_name
,
val
);
}
...
...
@@ -247,6 +263,7 @@ static inline int __var_SetTime( vlc_object_t *p_obj, const char *psz_name, int6
{
vlc_value_t
val
;
val
.
i_time
=
i
;
__var_AssertType
(
p_obj
,
psz_name
,
VLC_VAR_TIME
);
return
__var_Set
(
p_obj
,
psz_name
,
val
);
}
...
...
@@ -261,6 +278,7 @@ static inline int __var_SetFloat( vlc_object_t *p_obj, const char *psz_name, flo
{
vlc_value_t
val
;
val
.
f_float
=
f
;
__var_AssertType
(
p_obj
,
psz_name
,
VLC_VAR_FLOAT
);
return
__var_Set
(
p_obj
,
psz_name
,
val
);
}
...
...
@@ -275,6 +293,7 @@ static inline int __var_SetString( vlc_object_t *p_obj, const char *psz_name, co
{
vlc_value_t
val
;
val
.
psz_string
=
(
char
*
)
psz_string
;
__var_AssertType
(
p_obj
,
psz_name
,
VLC_VAR_STRING
);
return
__var_Set
(
p_obj
,
psz_name
,
val
);
}
...
...
@@ -288,6 +307,7 @@ static inline int __var_SetVoid( vlc_object_t *p_obj, const char *psz_name )
{
vlc_value_t
val
;
val
.
b_bool
=
true
;
__var_AssertType
(
p_obj
,
psz_name
,
VLC_VAR_VOID
);
return
__var_Set
(
p_obj
,
psz_name
,
val
);
}
#define var_SetVoid(a,b) __var_SetVoid( VLC_OBJECT(a),b)
...
...
@@ -320,6 +340,7 @@ LIBVLC_USED
static
inline
int
__var_GetInteger
(
vlc_object_t
*
p_obj
,
const
char
*
psz_name
)
{
vlc_value_t
val
;
val
.
i_int
=
0
;
__var_AssertType
(
p_obj
,
psz_name
,
VLC_VAR_INTEGER
);
if
(
!
__var_Get
(
p_obj
,
psz_name
,
&
val
)
)
return
val
.
i_int
;
else
...
...
@@ -336,6 +357,8 @@ LIBVLC_USED
static
inline
int
__var_GetBool
(
vlc_object_t
*
p_obj
,
const
char
*
psz_name
)
{
vlc_value_t
val
;
val
.
b_bool
=
false
;
__var_AssertType
(
p_obj
,
psz_name
,
VLC_VAR_BOOL
);
if
(
!
__var_Get
(
p_obj
,
psz_name
,
&
val
)
)
return
val
.
b_bool
;
else
...
...
@@ -352,6 +375,7 @@ LIBVLC_USED
static
inline
int64_t
__var_GetTime
(
vlc_object_t
*
p_obj
,
const
char
*
psz_name
)
{
vlc_value_t
val
;
val
.
i_time
=
0L
;
__var_AssertType
(
p_obj
,
psz_name
,
VLC_VAR_TIME
);
if
(
!
__var_Get
(
p_obj
,
psz_name
,
&
val
)
)
return
val
.
i_time
;
else
...
...
@@ -368,6 +392,7 @@ LIBVLC_USED
static
inline
float
__var_GetFloat
(
vlc_object_t
*
p_obj
,
const
char
*
psz_name
)
{
vlc_value_t
val
;
val
.
f_float
=
0
.
0
;
__var_AssertType
(
p_obj
,
psz_name
,
VLC_VAR_FLOAT
);
if
(
!
__var_Get
(
p_obj
,
psz_name
,
&
val
)
)
return
val
.
f_float
;
else
...
...
@@ -384,6 +409,7 @@ LIBVLC_USED
static
inline
char
*
__var_GetString
(
vlc_object_t
*
p_obj
,
const
char
*
psz_name
)
{
vlc_value_t
val
;
val
.
psz_string
=
NULL
;
__var_AssertType
(
p_obj
,
psz_name
,
VLC_VAR_STRING
);
if
(
__var_Get
(
p_obj
,
psz_name
,
&
val
)
)
return
NULL
;
else
...
...
@@ -391,10 +417,11 @@ static inline char *__var_GetString( vlc_object_t *p_obj, const char *psz_name )
}
LIBVLC_USED
static
inline
char
*
__var_GetNonEmptyString
(
vlc_object_t
*
obj
,
const
char
*
name
)
static
inline
char
*
__var_GetNonEmptyString
(
vlc_object_t
*
p_obj
,
const
char
*
psz_
name
)
{
vlc_value_t
val
;
if
(
__var_Get
(
obj
,
name
,
&
val
)
)
__var_AssertType
(
p_obj
,
psz_name
,
VLC_VAR_STRING
);
if
(
__var_Get
(
p_obj
,
psz_name
,
&
val
)
)
return
NULL
;
if
(
*
val
.
psz_string
)
return
val
.
psz_string
;
...
...
src/misc/objects.c
View file @
81c4815f
...
...
@@ -1016,7 +1016,7 @@ static int DumpCommand( vlc_object_t *p_this, char const *psz_cmd,
printf
(
", command"
);
if
(
p_var
->
i_entries
)
printf
(
", %d callbacks"
,
p_var
->
i_entries
);
switch
(
p_var
->
i_type
&
0x00f0
)
switch
(
p_var
->
i_type
&
VLC_VAR_CLASS
)
{
case
VLC_VAR_VOID
:
case
VLC_VAR_MUTEX
:
...
...
src/misc/variables.c
View file @
81c4815f
...
...
@@ -1573,7 +1573,7 @@ int __var_Command( vlc_object_t *p_this, const char *psz_name,
return
VLC_EGENERIC
;
}
i_type
&=
0xf0
;
i_type
&=
VLC_VAR_CLASS
;
switch
(
i_type
)
{
case
VLC_VAR_INTEGER
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment