我正在尝试将 ac 结构映射到 Java 类。到目前为止一切正常,但我不知道如何映射具有另一个结构作为成员的结构。
在 Struct 类 javadoc 中有一个包含指向同一结构的指针的结构示例(使用类 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,但它没有成功。
这样做的正确方法是什么?
先感谢您
更新
正如主要开发人员 Jean-Marie Dautelle 向我指出的那样,这是通过使用内部方法完全支持的:
public final Composite _otherStruct = inner(new Composite());
这完美地工作