_plugin_registerexprfunctionex
此函数用于注册由插件定义的表达式函数,以便用户可以在表达式中使用该函数。与 _plugin_registerexprfunction 不同的是,此函数还可以注册处理字符串参数类型的表达式函数。
bool _plugin_registerexprfunctionex(
int pluginHandle, //插件句柄
const char* name, //表达式函数的名称
const ValueType & returnType, //返回值类型
const ValueType* argTypes, //参数类型数组
size_t argc, //参数数量
CBPLUGINEXPRFUNCTIONEX cbFunction, //回调函数
void* userdata //用户数据
);
参数
- pluginHandle:
调用插件的句柄。
- name:
表达式函数的名称。
- returnType:
返回值类型。ValueType 的定义如下:
typedef enum
{
ValueTypeNumber,
ValueTypeString,
// 以下类型不能用于值,仅用于注册
ValueTypeAny,
ValueTypeOptionalNumber,
ValueTypeOptionalString,
ValueTypeOptionalAny,
} ValueType;
- argTypes:
参数类型数组
- argc:
表达式函数的参数数量。
- cbFunction:
回调函数,具有以下类型定义:
typedef struct
{
const char* ptr; // 应使用 BridgeAlloc 分配
bool isOwner; // 当设置为 true 时,将对 ptr 调用 BridgeFree
} StringValue;
typedef struct
{
ValueType type;
duint number;
StringValue string;
} ExpressionValue;
typedef bool(*CBPLUGINEXPRFUNCTIONEX)(ExpressionValue* result, int argc, const ExpressionValue* argv, void* userdata);
- userdata:
传递给回调函数的指针值,可供插件用来传递附加信息。
返回值
注册成功时返回 true,否则返回 false。