Skip to main content
协议 1 是原始 VEF 接口。自 v0.0.1 版本起稳定,将在 0.0.5 版本后弃用。新的扩展应使用协议 3 API——基于模板的类型构建器,请参阅 创建扩展开发 指南。 本页面用于在处理基于协议 1 构建的现有扩展时提供参考。

函数指针类型 API

协议 1 中的自定义类型使用显式函数指针进行注册,而不是使用 vsql::make_type<> 模板。函数签名与协议 3 的等效签名不同——它们接受原始指针和长度,而不是 ArgResult 对象。

函数签名

注册

vsql::make_type<kMyTypeName>()(带有编译时字符串 NTTP)是首选形式。make_type(MYTYPE)(没有模板参数)是协议 1 形式——对它的支持将在 0.0.5 版本后弃用。

原始 ABI 样式(函数)

协议 1 VDF 实现可以直接传递原始 C 结构体,而不是使用类型化包装器。这种样式将在 0.0.5 版本后弃用——对于所有新代码,请使用 类型化包装器
注册与类型化包装器方法相同——构建器会自动检测签名。

协议 1 中的聚合注册

对于聚合,.clear<>().accumulate<>() 接受原始 ABI 函数指针签名。.prerun<>().postrun<>() 不接受——构建器需要类型化签名(void(PrerunArgs, PrerunResult)void(PostrunArgs)),即使对于协议 1 扩展也是如此。对于所有新代码,请使用 类型化聚合方法