Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
1f25cac3
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1f25cac3
编写于
2月 28, 2022
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
func
上级
68f3de61
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
28 addition
and
31 deletion
+28
-31
include/util/tfunctional.h
include/util/tfunctional.h
+17
-17
source/util/src/tfunctional.c
source/util/src/tfunctional.c
+11
-14
未找到文件。
include/util/tfunctional.h
浏览文件 @
1f25cac3
...
...
@@ -12,45 +12,45 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TD_UTIL_FUNCTIONAL_H
#define _TD_UTIL_FUNCTIONAL_H
#ifndef _TD_UTIL_FUNCTIONAL_H_
#define _TD_UTIL_FUNCTIONAL_H_
#include "os.h"
#ifdef __cplusplus
extern
"C"
{
#endif
#include "os.h"
//TODO: hard to use, trying to rewrite it using va_list
// TODO: hard to use, trying to rewrite it using va_list
typedef
void
*
(
*
GenericVaFunc
)(
void
*
args
[]);
typedef
int32_t
(
*
I32VaFunc
)
(
void
*
args
[]);
typedef
void
(
*
VoidVaFunc
)
(
void
*
args
[]);
typedef
int32_t
(
*
I32VaFunc
)(
void
*
args
[]);
typedef
void
(
*
VoidVaFunc
)(
void
*
args
[]);
typedef
struct
GenericSavedFunc
{
GenericVaFunc
func
;
void
*
args
[];
void
*
args
[];
}
tGenericSavedFunc
;
typedef
struct
I32SavedFunc
{
I32VaFunc
func
;
void
*
args
[];
void
*
args
[];
}
tI32SavedFunc
;
typedef
struct
VoidSavedFunc
{
VoidVaFunc
func
;
void
*
args
[];
void
*
args
[];
}
tVoidSavedFunc
;
tGenericSavedFunc
*
genericSavedFuncInit
(
GenericVaFunc
func
,
int
numOfArgs
);
tI32SavedFunc
*
i32SavedFuncInit
(
I32VaFunc
func
,
in
t
numOfArgs
);
tVoidSavedFunc
*
voidSavedFuncInit
(
VoidVaFunc
func
,
in
t
numOfArgs
);
void
*
genericInvoke
(
tGenericSavedFunc
*
const
pSavedFunc
);
int32_t
i32Invoke
(
tI32SavedFunc
*
const
pSavedFunc
);
void
voidInvoke
(
tVoidSavedFunc
*
const
pSavedFunc
);
tGenericSavedFunc
*
genericSavedFuncInit
(
GenericVaFunc
func
,
int
32_t
numOfArgs
);
tI32SavedFunc
*
i32SavedFuncInit
(
I32VaFunc
func
,
int32_
t
numOfArgs
);
tVoidSavedFunc
*
voidSavedFuncInit
(
VoidVaFunc
func
,
int32_
t
numOfArgs
);
void
*
genericInvoke
(
tGenericSavedFunc
*
const
pSavedFunc
);
int32_t
i32Invoke
(
tI32SavedFunc
*
const
pSavedFunc
);
void
voidInvoke
(
tVoidSavedFunc
*
const
pSavedFunc
);
#ifdef __cplusplus
}
#endif
#endif
/*_TD_UTIL_FUNCTIONAL_H*/
#endif
/*_TD_UTIL_FUNCTIONAL_H
_
*/
source/util/src/tfunctional.c
浏览文件 @
1f25cac3
...
...
@@ -13,37 +13,34 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define _DEFAULT_SOURCE
#include "tfunctional.h"
tGenericSavedFunc
*
genericSavedFuncInit
(
GenericVaFunc
func
,
int
numOfArgs
)
{
tGenericSavedFunc
*
genericSavedFuncInit
(
GenericVaFunc
func
,
int
32_t
numOfArgs
)
{
tGenericSavedFunc
*
pSavedFunc
=
malloc
(
sizeof
(
tGenericSavedFunc
)
+
numOfArgs
*
(
sizeof
(
void
*
)));
if
(
pSavedFunc
==
NULL
)
return
NULL
;
if
(
pSavedFunc
==
NULL
)
return
NULL
;
pSavedFunc
->
func
=
func
;
return
pSavedFunc
;
}
tI32SavedFunc
*
i32SavedFuncInit
(
I32VaFunc
func
,
int
numOfArgs
)
{
tI32SavedFunc
*
pSavedFunc
=
malloc
(
sizeof
(
tI32SavedFunc
)
+
numOfArgs
*
sizeof
(
void
*
));
if
(
pSavedFunc
==
NULL
)
return
NULL
;
tI32SavedFunc
*
i32SavedFuncInit
(
I32VaFunc
func
,
int
32_t
numOfArgs
)
{
tI32SavedFunc
*
pSavedFunc
=
malloc
(
sizeof
(
tI32SavedFunc
)
+
numOfArgs
*
sizeof
(
void
*
));
if
(
pSavedFunc
==
NULL
)
return
NULL
;
pSavedFunc
->
func
=
func
;
return
pSavedFunc
;
}
tVoidSavedFunc
*
voidSavedFuncInit
(
VoidVaFunc
func
,
int
numOfArgs
)
{
tVoidSavedFunc
*
voidSavedFuncInit
(
VoidVaFunc
func
,
int
32_t
numOfArgs
)
{
tVoidSavedFunc
*
pSavedFunc
=
malloc
(
sizeof
(
tVoidSavedFunc
)
+
numOfArgs
*
sizeof
(
void
*
));
if
(
pSavedFunc
==
NULL
)
return
NULL
;
if
(
pSavedFunc
==
NULL
)
return
NULL
;
pSavedFunc
->
func
=
func
;
return
pSavedFunc
;
}
FORCE_INLINE
void
*
genericInvoke
(
tGenericSavedFunc
*
const
pSavedFunc
)
{
return
pSavedFunc
->
func
(
pSavedFunc
->
args
);
}
FORCE_INLINE
void
*
genericInvoke
(
tGenericSavedFunc
*
const
pSavedFunc
)
{
return
pSavedFunc
->
func
(
pSavedFunc
->
args
);
}
FORCE_INLINE
int32_t
i32Invoke
(
tI32SavedFunc
*
const
pSavedFunc
)
{
return
pSavedFunc
->
func
(
pSavedFunc
->
args
);
}
FORCE_INLINE
int32_t
i32Invoke
(
tI32SavedFunc
*
const
pSavedFunc
)
{
return
pSavedFunc
->
func
(
pSavedFunc
->
args
);
}
FORCE_INLINE
void
voidInvoke
(
tVoidSavedFunc
*
const
pSavedFunc
)
{
if
(
pSavedFunc
)
pSavedFunc
->
func
(
pSavedFunc
->
args
);
if
(
pSavedFunc
)
pSavedFunc
->
func
(
pSavedFunc
->
args
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录