Java-在 C++ 中具有自定义值和构造函数的类型枚举
Java-type enum with custom values and constructor in C++
我有这个 Java enum
我需要与之交互:
// Parameter.java
public enum Parameter {
ExampleParameter1(45920L, 3, 127, ValueFormat.BINARY, true),
ExampleParameter2(45703L, 6, 6, ValueFormat.NUMERIC, true),
ExampleParameter3(73L, 4, 4, ValueFormat.ALPHANUMERIC, true),
ExampleParameter3(4512L, 2, 11, ValueFormat.ALPHANUMERIC, true);
( . . . )
private ValueFormat a
private int b;
private long c;
private boolean d;
private Parameter(long tag, int param, int min, ValueFormat format, boolean boo)
{
this.a = format;
this.b = min;
this.c = tag;
this.d = boo;
}
}
我想使用 Djinni 生成一个有效的 C++ <-> Java 接口,但是由于 djinni
的枚举在 Java 中生成了 public enum
(在我的情况)和 C++ 中的 enum class
(具有 int
基础类型),它无法工作。
这可能吗?或者我必须用 Java 创建 Djinni interface
和用手动制作的 C++ 实现 "bindings"?
在此先感谢您的帮助。
这种包含许多字段的 enum
对 Java 来说是一个非常独特的概念,而 Djinni 公开了所有语言通用的概念,它支持只有一个 int 值的枚举.如果你想要的是一个包含多个不同类型字段的对象,在 Djinni 中你会想要一个 record
。如果您想为自定义行为公开方法,则可以使用接口,但不需要为纯数据公开。
无论如何,Djinni 都会生成自己的类型。它无意将现有类型直接公开为其他语言,因此如果您不想直接使用该记录,则需要编写自己的转换函数将您的参数转换为 Djinni 记录。
我有这个 Java enum
我需要与之交互:
// Parameter.java
public enum Parameter {
ExampleParameter1(45920L, 3, 127, ValueFormat.BINARY, true),
ExampleParameter2(45703L, 6, 6, ValueFormat.NUMERIC, true),
ExampleParameter3(73L, 4, 4, ValueFormat.ALPHANUMERIC, true),
ExampleParameter3(4512L, 2, 11, ValueFormat.ALPHANUMERIC, true);
( . . . )
private ValueFormat a
private int b;
private long c;
private boolean d;
private Parameter(long tag, int param, int min, ValueFormat format, boolean boo)
{
this.a = format;
this.b = min;
this.c = tag;
this.d = boo;
}
}
我想使用 Djinni 生成一个有效的 C++ <-> Java 接口,但是由于 djinni
的枚举在 Java 中生成了 public enum
(在我的情况)和 C++ 中的 enum class
(具有 int
基础类型),它无法工作。
这可能吗?或者我必须用 Java 创建 Djinni interface
和用手动制作的 C++ 实现 "bindings"?
在此先感谢您的帮助。
这种包含许多字段的 enum
对 Java 来说是一个非常独特的概念,而 Djinni 公开了所有语言通用的概念,它支持只有一个 int 值的枚举.如果你想要的是一个包含多个不同类型字段的对象,在 Djinni 中你会想要一个 record
。如果您想为自定义行为公开方法,则可以使用接口,但不需要为纯数据公开。
无论如何,Djinni 都会生成自己的类型。它无意将现有类型直接公开为其他语言,因此如果您不想直接使用该记录,则需要编写自己的转换函数将您的参数转换为 Djinni 记录。