Как объявить вложенную структуру C в классе Java
Я пытаюсь сопоставить структуру ac с классом Java. Пока все работает нормально, но я не знаю, как отобразить структуру, в которой член имеет другую структуру.
В javadoc класса Struct есть пример структуры, содержащей указатель на ту же структуру (с использованием класса Reference32), но это не то, что мне нужно.
Я не могу найти дополнительную документацию о том, как этого добиться.
Это упрощенный пример:
// c types --------------------------------
enum Enum16{VALUE1, VALUE2, VALUE3};
struct t_composite {
int number;
char text[20];
};
struct t_demo {
char _char2[2];
char _char14[14];
int _int;
float _float;
double _double;
enum Enum16 enum16;
struct t_composite _otherStruct;
};
// Java class -------------------------
public class Composite extends Struct {
public final Signed32 number = new Signed32();
public final UTF8String text = new UTF8String(20);
// ...
}
public class Demo extends Struct {
public enum EnumValues {
VALUE1, VALUE2, VALUE3
};
public final UTF8String _char2 = new UTF8String(2);
public final UTF8String _char15 = new UTF8String(14);
public final Signed32 _int = new Signed32();
public final Float32 _float = new Float32();
public final Float64 _double = new Float64();
public final Enum32<EnumValues> _enum32 = new Enum32<EnumValues>(EnumValues.values());
// public final Reference32<Composite> _otherStruct = new Reference32<Composite>(); // incorrect
public final Composite _otherStruct = new Composite(); // doesn't work
// ....
}
Переменная "_otherStruct" никогда не заполняется в Java. Я попытался определить переменную java как класс Composite вместо Reference32, но это не сработало.
Как правильно это сделать?
заранее спасибо
ОБНОВИТЬ
Как указал мне главный разработчик Жан-Мари Даутель, это полностью поддерживается за счет использования внутреннего метода:
public final Composite _otherStruct = inner(new Composite());
Это отлично работает