如何在SWIG Java目标中包装对枚举的所有引用

How to wrap all references to enums in SWIG Java target?

本文关键字:枚举 引用 包装 SWIG Java 目标      更新时间:2023-10-16

我有一个enum myEnum,以及c++中的以下方法:

void MyClass::SetValue(myEnum newValue);
void MyClass::GetValue(myEnum& theValue);

我使用的是"enum"。"i",并且myEnum已正确转换为Java enumSetValue工作正常,但GetValue采取一个奇怪的SWIGTYPE_p_myEnum_ptr类,我不能创建。

是否有一种方法可以自动为所有enum引用创建包装器?类似于包含枚举值的类,所以它可以被传递和修改?

查看Swig文档中的类型映射(特别是Swig 3的10.1.1节),有一个类型映射可以自动将void f(T&)公开为T f(),您必须告诉Swig将其用于您的类型。您将在您的类型上使用OUTPUT类型映射的%apply,沿着

的行
%apply MyEnum& OUTPUT {MyEnum& theValue};