2024-12-02 23:18:40 +08:00
|
|
|
/* SPDX-License-Identifier: Apache-2.0 OR MIT */
|
|
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2024 Rockchip Electronics Co., Ltd.
|
|
|
|
|
*/
|
|
|
|
|
|
2025-05-26 18:01:28 +08:00
|
|
|
#include "kmpp_obj_macro.h"
|
|
|
|
|
|
2025-04-01 16:47:22 +08:00
|
|
|
#ifndef KMPP_OBJ_NAME
|
|
|
|
|
#error "KMPP_OBJ_NAME must be defined on using kmpp_obj_func.h"
|
2024-12-02 23:18:40 +08:00
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifndef KMPP_OBJ_INTF_TYPE
|
2025-04-01 16:47:22 +08:00
|
|
|
#error "KMPP_OBJ_INTF_TYPE must be defined on using kmpp_obj_func.h"
|
2024-12-02 23:18:40 +08:00
|
|
|
#endif
|
|
|
|
|
|
2025-05-26 18:01:28 +08:00
|
|
|
#include "rk_type.h"
|
2024-12-02 23:18:40 +08:00
|
|
|
|
2025-05-26 18:01:28 +08:00
|
|
|
/* always define object common function */
|
2025-04-01 16:47:22 +08:00
|
|
|
#define KMPP_OBJ_FUNC_DEFINE(prefix) \
|
2025-05-26 18:01:28 +08:00
|
|
|
rk_s32 CONCAT_US(prefix, size)(void); \
|
|
|
|
|
rk_s32 CONCAT_US(prefix, get)(KMPP_OBJ_INTF_TYPE *p); \
|
|
|
|
|
rk_s32 CONCAT_US(prefix, assign)(KMPP_OBJ_INTF_TYPE *p, void *buf, rk_s32 size); \
|
|
|
|
|
rk_s32 CONCAT_US(prefix, put)(KMPP_OBJ_INTF_TYPE p); \
|
|
|
|
|
rk_s32 CONCAT_US(prefix, dump)(KMPP_OBJ_INTF_TYPE p, const char *caller);
|
2024-12-02 23:18:40 +08:00
|
|
|
|
2025-09-11 14:25:13 +08:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-04-01 16:47:22 +08:00
|
|
|
KMPP_OBJ_FUNC_DEFINE(KMPP_OBJ_NAME)
|
2025-09-11 14:25:13 +08:00
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-05-26 18:01:28 +08:00
|
|
|
#undef KMPP_OBJ_FUNC_DEFINE
|
2024-12-02 23:18:40 +08:00
|
|
|
|
2025-09-11 18:08:24 +08:00
|
|
|
/* entry and hook access functions */
|
2025-04-01 16:47:22 +08:00
|
|
|
#ifdef KMPP_OBJ_ENTRY_TABLE
|
2025-05-26 18:01:28 +08:00
|
|
|
/* disable all hierarchy macro in header */
|
|
|
|
|
#define CFG_DEF_START(...)
|
|
|
|
|
#define CFG_DEF_END(...)
|
|
|
|
|
#define STRUCT_START(...)
|
|
|
|
|
#define STRUCT_END(...)
|
2025-04-01 16:47:22 +08:00
|
|
|
|
2025-05-26 18:01:28 +08:00
|
|
|
#define ENTRY_DECLARE(prefix, ftype, type, name, flag, ...) \
|
|
|
|
|
rk_s32 CONCAT_US(prefix, set, __VA_ARGS__)(KMPP_OBJ_INTF_TYPE p, type val); \
|
|
|
|
|
rk_s32 CONCAT_US(prefix, get, __VA_ARGS__)(KMPP_OBJ_INTF_TYPE p, type* val); \
|
|
|
|
|
rk_s32 CONCAT_US(prefix, test, __VA_ARGS__)(KMPP_OBJ_INTF_TYPE p);
|
2024-12-02 23:18:40 +08:00
|
|
|
|
2025-05-26 18:01:28 +08:00
|
|
|
#define STRCT_DECLARE(prefix, ftype, type, name, flag, ...) \
|
|
|
|
|
rk_s32 CONCAT_US(prefix, set, __VA_ARGS__)(KMPP_OBJ_INTF_TYPE p, type* val); \
|
|
|
|
|
rk_s32 CONCAT_US(prefix, get, __VA_ARGS__)(KMPP_OBJ_INTF_TYPE p, type* val); \
|
|
|
|
|
rk_s32 CONCAT_US(prefix, test, __VA_ARGS__)(KMPP_OBJ_INTF_TYPE p);
|
2025-04-01 16:47:22 +08:00
|
|
|
|
2025-05-26 18:01:28 +08:00
|
|
|
#define ALIAS_DECLARE(prefix, ftype, type, name, flag, ...)
|
2025-04-01 16:47:22 +08:00
|
|
|
|
2025-05-26 18:01:28 +08:00
|
|
|
KMPP_OBJ_ENTRY_TABLE(KMPP_OBJ_NAME, ENTRY_DECLARE, STRCT_DECLARE,
|
|
|
|
|
ENTRY_DECLARE, STRCT_DECLARE, ALIAS_DECLARE)
|
2025-04-01 16:47:22 +08:00
|
|
|
|
2025-05-26 18:01:28 +08:00
|
|
|
#undef ENTRY_DECLARE
|
|
|
|
|
#undef ENTRY_TO_ALIAS
|
|
|
|
|
#undef STRCT_DECLARE
|
2025-04-01 16:47:22 +08:00
|
|
|
|
2025-05-26 18:01:28 +08:00
|
|
|
#undef CFG_DEF_START
|
|
|
|
|
#undef CFG_DEF_END
|
|
|
|
|
#undef STRUCT_START
|
|
|
|
|
#undef STRUCT_END
|
2025-04-01 16:47:22 +08:00
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#undef KMPP_OBJ_NAME
|
|
|
|
|
#undef KMPP_OBJ_INTF_TYPE
|
2025-05-26 18:01:28 +08:00
|
|
|
#undef KMPP_OBJ_ENTRY_TABLE
|