2 个版本
0.0.1 | 2020 年 3 月 9 日 |
---|---|
0.0.0-占位符 | 2019 年 9 月 13 日 |
#346 in #simulation
225KB
6K SLoC
bve-native
bve-rs 的 C 接口。
lib.rs
:
BVE-Reborn 高性能库的 C/C++ API。
此库不是直接从 Rust 使用,如果从 Rust 使用,实际上可以很容易地创建 UB。C/C++ 头文件将由 bve-native/include
中的 bve-build
生成。
文档会自动复制到 C 头文件中,但缺少模块文档。因此建议在编写 C/C++ 时使用此库的 Rust 文档。已尽量使从 Rust 文档中了解要编写的 C/C++ 代码尽可能容易。
虽然 Rust 文档中将代码分为模块,但所有函数和类型都被导出到 C++ 的全局作用域,并且没有名称混淆。
模块与 bve
包中的模块一一对应。
使用警告
在调用 INIT 之前不要调用任何其他函数.
库 必须 在调用任何其他函数之前通过调用 bve_init
进行初始化。库不需要反初始化。如果不这样做,可能会在 C -> Rust 边界处传播恐慌,导致未定义行为。
API 基础
API 尽量保持一致性和可预测性。
在 C 模式下,所有结构都以 BVE_
为前缀,以帮助消除冲突。C++ 代码都在 bve
命名空间中。类型名称尽可能简短,同时与底层的 Rust 代码保持清晰的联系。
自由函数的 Rust 路径在名称中大致编码。例如 bve::parse::mesh::mesh_from_str
是 bve_parse_mesh_from_string
。删除重复的名称,并将惯用法改为从接口语言可理解。
充当成员函数的自由函数形式为 BVE_Struct_Name_member_function_name
。它们通过指针接收第一个参数。
所有指针都假设不接收所有权,除非另有说明。文档中将注明不明显的生命周期。
依赖关系
~19MB
~399K SLoC