Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
尘离序散
obs-studio
提交
a6b52156
O
obs-studio
项目概览
尘离序散
/
obs-studio
与 Fork 源项目一致
从无法访问的项目Fork
通知
30
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
obs-studio
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a6b52156
编写于
6月 15, 2014
作者:
P
Palana
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Move obs-data accessor value handling logic into static helper functions
上级
7cbc260f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
90 addition
and
29 deletion
+90
-29
libobs/obs-data.c
libobs/obs-data.c
+90
-29
未找到文件。
libobs/obs-data.c
浏览文件 @
a6b52156
...
...
@@ -898,15 +898,20 @@ static inline bool item_valid(struct obs_data_item *item,
return
item
&&
item
->
type
==
type
;
}
const
char
*
obs_data_item_getstring
(
obs_data_item_t
item
)
typedef
void
*
(
*
get_data_t
)(
obs_data_item_t
);
static
inline
const
char
*
data_item_get_string
(
obs_data_item_t
item
,
get_data_t
get_data
)
{
return
item_valid
(
item
,
OBS_DATA_STRING
)
?
get_item_data
(
item
)
:
""
;
return
item_valid
(
item
,
OBS_DATA_STRING
)
&&
get_data
(
item
)
?
get_data
(
item
)
:
""
;
}
static
inline
long
long
item_int
(
struct
obs_data_item
*
item
)
static
inline
long
long
item_int
(
struct
obs_data_item
*
item
,
get_data_t
get_data
)
{
if
(
item
)
{
struct
obs_data_number
*
num
=
get_
item_
data
(
item
);
if
(
item
&&
get_data
(
item
)
)
{
struct
obs_data_number
*
num
=
get_data
(
item
);
return
(
num
->
type
==
OBS_DATA_NUM_INT
)
?
num
->
int_val
:
(
long
long
)
num
->
double_val
;
}
...
...
@@ -914,16 +919,18 @@ static inline long long item_int(struct obs_data_item *item)
return
0
;
}
long
long
obs_data_item_getint
(
obs_data_item_t
item
)
static
inline
long
long
data_item_get_int
(
obs_data_item_t
item
,
get_data_t
get_data
)
{
return
item_
valid
(
item
,
OBS_DATA_NUMBER
)
?
item_int
(
item
)
:
0
;
return
item_
int
(
item_valid
(
item
,
OBS_DATA_NUMBER
)
?
item
:
NULL
,
get_data
)
;
}
static
inline
double
item_double
(
struct
obs_data_item
*
item
)
static
inline
double
item_double
(
struct
obs_data_item
*
item
,
get_data_t
get_data
)
{
if
(
item
)
{
struct
obs_data_number
*
num
=
get_
item_
data
(
item
);
if
(
item
&&
get_data
(
item
)
)
{
struct
obs_data_number
*
num
=
get_data
(
item
);
return
(
num
->
type
==
OBS_DATA_NUM_INT
)
?
(
double
)
num
->
int_val
:
num
->
double_val
;
}
...
...
@@ -931,38 +938,70 @@ static inline double item_double(struct obs_data_item *item)
return
0
.
0
;
}
double
obs_data_item_getdouble
(
obs_data_item_t
item
)
static
inline
double
data_item_get_double
(
obs_data_item_t
item
,
get_data_t
get_data
)
{
return
item_
valid
(
item
,
OBS_DATA_NUMBER
)
?
item_double
(
item
)
:
0
.
0
;
return
item_
double
(
item_valid
(
item
,
OBS_DATA_NUMBER
)
?
item
:
NULL
,
get_data
)
;
}
bool
obs_data_item_getbool
(
obs_data_item_t
item
)
static
inline
bool
data_item_get_bool
(
obs_data_item_t
item
,
get_data_t
get_data
)
{
return
item_valid
(
item
,
OBS_DATA_BOOLEAN
)
?
*
(
bool
*
)
get_
item_
data
(
item
)
:
false
;
return
item_valid
(
item
,
OBS_DATA_BOOLEAN
)
&&
get_data
(
item
)
?
*
(
bool
*
)
get_data
(
item
)
:
false
;
}
obs_data_t
obs_data_item_getobj
(
obs_data_item_t
item
)
typedef
obs_data_t
(
*
get_obj_t
)(
obs_data_item_t
);
static
inline
obs_data_t
data_item_get_obj
(
obs_data_item_t
item
,
get_obj_t
get_obj
)
{
obs_data_t
obj
=
item_valid
(
item
,
OBS_DATA_OBJECT
)
?
get_
item_
obj
(
item
)
:
NULL
;
get_obj
(
item
)
:
NULL
;
if
(
obj
)
os_atomic_inc_long
(
&
obj
->
ref
);
return
obj
;
}
obs_data_array_t
obs_data_item_getarray
(
obs_data_item_t
item
)
typedef
obs_data_array_t
(
*
get_array_t
)(
obs_data_item_t
);
static
inline
obs_data_array_t
data_item_get_array
(
obs_data_item_t
item
,
get_array_t
get_array
)
{
obs_data_array_t
array
=
item_valid
(
item
,
OBS_DATA_ARRAY
)
?
get_
item_
array
(
item
)
:
NULL
;
get_array
(
item
)
:
NULL
;
if
(
array
)
os_atomic_inc_long
(
&
array
->
ref
);
return
array
;
}
const
char
*
obs_data_item_getstring
(
obs_data_item_t
item
)
{
return
data_item_get_string
(
item
,
get_item_data
);
}
long
long
obs_data_item_getint
(
obs_data_item_t
item
)
{
return
data_item_get_int
(
item
,
get_item_data
);
}
double
obs_data_item_getdouble
(
obs_data_item_t
item
)
{
return
data_item_get_double
(
item
,
get_item_data
);
}
bool
obs_data_item_getbool
(
obs_data_item_t
item
)
{
return
data_item_get_bool
(
item
,
get_item_data
);
}
obs_data_t
obs_data_item_getobj
(
obs_data_item_t
item
)
{
return
data_item_get_obj
(
item
,
get_item_obj
);
}
/* ------------------------------------------------------------------------- */
/* Helper functions for certain structures */
...
...
@@ -1061,9 +1100,8 @@ void obs_data_set_default_quat(obs_data_t data, const char *name,
set_quat
(
data
,
name
,
val
,
obs_data_set_default_obj
);
}
void
obs_data_get_vec2
(
obs_data_t
data
,
const
char
*
name
,
struct
vec2
*
val
)
static
inline
void
get_vec2
(
obs_data_t
obj
,
struct
vec2
*
val
)
{
obs_data_t
obj
=
obs_data_getobj
(
data
,
name
);
if
(
!
obj
)
return
;
val
->
x
=
(
float
)
obs_data_getdouble
(
obj
,
"x"
);
...
...
@@ -1071,9 +1109,8 @@ void obs_data_get_vec2(obs_data_t data, const char *name, struct vec2 *val)
obs_data_release
(
obj
);
}
void
obs_data_get_vec3
(
obs_data_t
data
,
const
char
*
name
,
struct
vec3
*
val
)
static
inline
void
get_vec3
(
obs_data_t
obj
,
struct
vec3
*
val
)
{
obs_data_t
obj
=
obs_data_getobj
(
data
,
name
);
if
(
!
obj
)
return
;
val
->
x
=
(
float
)
obs_data_getdouble
(
obj
,
"x"
);
...
...
@@ -1082,9 +1119,8 @@ void obs_data_get_vec3(obs_data_t data, const char *name, struct vec3 *val)
obs_data_release
(
obj
);
}
void
obs_data_get_vec4
(
obs_data_t
data
,
const
char
*
name
,
struct
vec4
*
val
)
static
inline
void
get_vec4
(
obs_data_t
obj
,
struct
vec4
*
val
)
{
obs_data_t
obj
=
obs_data_getobj
(
data
,
name
);
if
(
!
obj
)
return
;
val
->
x
=
(
float
)
obs_data_getdouble
(
obj
,
"x"
);
...
...
@@ -1094,9 +1130,8 @@ void obs_data_get_vec4(obs_data_t data, const char *name, struct vec4 *val)
obs_data_release
(
obj
);
}
void
obs_data_get_quat
(
obs_data_t
data
,
const
char
*
name
,
struct
quat
*
val
)
static
inline
void
get_quat
(
obs_data_t
obj
,
struct
quat
*
val
)
{
obs_data_t
obj
=
obs_data_getobj
(
data
,
name
);
if
(
!
obj
)
return
;
val
->
x
=
(
float
)
obs_data_getdouble
(
obj
,
"x"
);
...
...
@@ -1105,3 +1140,29 @@ void obs_data_get_quat(obs_data_t data, const char *name, struct quat *val)
val
->
w
=
(
float
)
obs_data_getdouble
(
obj
,
"w"
);
obs_data_release
(
obj
);
}
void
obs_data_get_vec2
(
obs_data_t
data
,
const
char
*
name
,
struct
vec2
*
val
)
{
get_vec2
(
obs_data_getobj
(
data
,
name
),
val
);
}
void
obs_data_get_vec3
(
obs_data_t
data
,
const
char
*
name
,
struct
vec3
*
val
)
{
get_vec3
(
obs_data_getobj
(
data
,
name
),
val
);
}
void
obs_data_get_vec4
(
obs_data_t
data
,
const
char
*
name
,
struct
vec4
*
val
)
{
get_vec4
(
obs_data_getobj
(
data
,
name
),
val
);
}
void
obs_data_get_quat
(
obs_data_t
data
,
const
char
*
name
,
struct
quat
*
val
)
{
get_quat
(
obs_data_getobj
(
data
,
name
),
val
);
}
void
obs_data_get_default_vec2
(
obs_data_t
data
,
const
char
*
name
,
struct
vec2
*
val
)
{
get_vec2
(
obs_data_get_default_obj
(
data
,
name
),
val
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录