我用一个公共枚举
绑定一个类class Foo {
public:
Foo();
enum class Bar { ALPHA, BRAVO }
};
Foo::Foo() { }
EMSCRIPTEN_BINDINGS(Foo) {
.enum_<Foo::Bar>("FooBar")
.value("ALPHA", Foo::Bar::ALPHA)
.value("BRAVO", Foo::Bar::BRAVO);
}
现在我可以通过以下方式访问Javascript中的枚举:
Module.FooBar.ALPHA
但实际上我想通过以下方式访问它:
Module.Foo.Bar.ALPHA
有没有机会通过Emscripten Bindings实现这一目标,还是以下hackish JS代码是唯一的方法?
Module.Foo.Bar = Module.FooBar;
delete Module.FooBar;
答案 0 :(得分:2)
jj
我不认为embind目前有这样的命名空间机制。 JS 你呈现的代码片段看起来是一个好方法(如果它被测试 工作?)。要很好地封装它,你应该能够放置它 按顺序在绑定函数末尾的EM_ASM()块内部 使其自包含,而不必保持它们同步 多个地方。
因此,补丁的结果是:
EMSCRIPTEN_BINDINGS(Foo) {
.class_<Foo>("Foo");
.enum_<Foo::Bar>("Foo.Bar")
.value("ALPHA", Foo::Bar::ALPHA)
.value("BRAVO", Foo::Bar::BRAVO);
EM_ASM(
Module['Foo']['Bar'] = Module['Foo.Bar'];
delete Module['Foo.Bar'];
);
}