带有自定义值的Java类型枚举和C ++中的构造函数

时间:2017-10-27 09:21:31

标签: java c++ 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;
    }
}

我想生成一个有效的C ++< - >使用Djinni的Java接口,但由于djinni的枚举在Java中生成public enum(在我的情况下是正确的),在C ++中生成enum class(具有int底层类型) ,它无法运作。

这甚至可能吗?或者我是否必须使用手工制作的#34;绑定"来创建带有Java和C ++实现的Djinni interface

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这种包含许多字段的enum对于Java来说是一个非常独特的概念,而Djinni公开了所有语言中常见的概念,它支持只有int值的枚举。如果你想要的是一个包含多种不同类型字段的对象,那么在Djinni中你会想要record。如果要公开自定义行为的方法,可以使用接口,但不需要纯数据。

无论如何,Djinni会产生自己的类型。它无意将现有类型直接暴露给其他语言,因此如果您不想使用该记录,则需要编写自己的转换函数将参数转换为Djinni记录直接