从 Lua 脚本反射 Lua 桥接 类

Reflecting LuaBridge classes from Lua scripts

2019 年 4 月之前,Lua 脚本可以使用字符串键 __parent__class__propget__propset。这是一个非常有用的工具,可用于创建测试脚本和开发工具,以维护导出到 Lua.

的大型 class 框架。

通过查看 LuaBridge 的发行说明,似乎出于安全原因删除了字符串键。但我发现自己更重视从脚本中反映 classes 的能力,而不是脚本是否可以在对象模型中乱搞。特别是在开发模式下。

LuaBridge Reference Manual implies C/C++ 程序有一种公开元表的方法,但我一直无法弄清楚如何去做。我对 C 和 Lua(或 LuaBridge)之间的接口很陌生,所以我感到困惑并不奇怪。如果有人可以分享如何执行此操作的示例,我将不胜感激。

由于似乎没有人提出好的建议,我意识到我可以自己思考属性、方法和常量的 名称。出于我的目的,我真的不需要执行或访问它们。

因此,我没有在 LuaBridge 内部乱搞,而是向框架中的每个 class 添加了 __class__propget__propset 静态属性。这些 return a table 使用 LuaBridge 支持的 std::map 实现。 tables simple 将名称作为键和一个虚拟值。

我发现的一个警告是,在使用 deriveClass 创建派生 class 时,您必须向派生 classes 添加静态属性。如果您稍后尝试添加它们(使用 beginClass),LuaBridge 会抛出一个断言。