У меня есть эта 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 ++ <-> Java интерфейс с использованием Джинни, но так как djinni
Перечисления генерируют public enum
в Java (правильно в моем случае) и enum class
в C ++ (с int
базовый тип), он не может работать.
Это вообще возможно? Или я должен создать Джинни interface
с реализацией Java и C ++ с «привязками», сделанными вручную?
Заранее благодарю за любую помощь.
Этот вид enum
Содержать много полей — довольно уникальная концепция для Java, в то время как Джинни раскрывает концепцию, которая является общей для всех языков и поддерживает перечисление, имеющее только значение int. Если вам нужен объект, который содержит несколько полей разных типов, в Джинни вам понадобится record
, Вы можете использовать интерфейс, если хотите предоставить методы для пользовательского поведения, но не должны использовать их для чистых данных.
В любом случае, Джинни генерирует свои типы. Он не предназначен для прямого представления существующих типов на других языках, поэтому вам нужно написать собственную функцию преобразования, чтобы превратить ваш параметр в запись Джинни, если вы не хотите использовать запись напрямую.
Других решений пока нет …